Compare commits

..

56 Commits

Author SHA1 Message Date
Kalista Payne 005d14f6e8 5.43.4 2026-01-20 14:36:36 -06:00
Weblate c05a96ce6c Translated using Weblate (Polish)
Currently translated at 100.0% (131 of 131 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (131 of 131 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (131 of 131 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (245 of 245 strings)

Translated using Weblate (Portuguese)

Currently translated at 23.7% (60 of 253 strings)

Translated using Weblate (Portuguese)

Currently translated at 23.7% (60 of 253 strings)

Translated using Weblate (Portuguese)

Currently translated at 23.7% (60 of 253 strings)

Translated using Weblate (Portuguese)

Currently translated at 90.5% (183 of 202 strings)

Translated using Weblate (Ukrainian)

Currently translated at 99.1% (113 of 114 strings)

Translated using Weblate (Portuguese)

Currently translated at 27.6% (70 of 253 strings)

Translated using Weblate (Portuguese)

Currently translated at 92.9% (106 of 114 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (253 of 253 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 94.8% (3318 of 3497 strings)

Translated using Weblate (Ukrainian)

Currently translated at 98.6% (143 of 145 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 94.8% (3317 of 3497 strings)

Translated using Weblate (English (United Kingdom))

Currently translated at 96.8% (245 of 253 strings)

Translated using Weblate (English (United Kingdom))

Currently translated at 94.0% (190 of 202 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (245 of 245 strings)

Translated using Weblate (Portuguese)

Currently translated at 50.1% (1753 of 3497 strings)

Translated using Weblate (French)

Currently translated at 100.0% (3497 of 3497 strings)

Translated using Weblate (Indonesian)

Currently translated at 97.1% (238 of 245 strings)

Translated using Weblate (Ukrainian)

Currently translated at 79.3% (150 of 189 strings)

Translated using Weblate (Ukrainian)

Currently translated at 99.5% (928 of 932 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (430 of 430 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (932 of 932 strings)

Co-authored-by: Ashlynn <ashlynn.samuella@gmail.com>
Co-authored-by: Cezary Polakowski <arutha86@gmail.com>
Co-authored-by: Daniel Costa Carvalho <danielcostacarvalho@gmail.com>
Co-authored-by: Illana Beatriz Rocha de Oliveira <dev.illanabeatriz@gmail.com>
Co-authored-by: Lu dG <ludgs@outlook.fr>
Co-authored-by: Lyam Santos Peres <karinesanper@gmail.com>
Co-authored-by: Maria Morant <luisa.morant@yahoo.com>
Co-authored-by: Nina Łapaj <ninapaj@gmail.com>
Co-authored-by: Ri Vargas <goldenhaitang@gmail.com>
Co-authored-by: Sonia <sophishport@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: いんこ <ayakabooker@gmail.com>
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/character/en_GB/
Translate-URL: https://translate.habitica.com/projects/habitica/character/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/en_GB/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/front/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/
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/generic/id/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/pl/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/pl/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/uk/
Translation: Habitica/Backgrounds
Translation: Habitica/Challenge
Translation: Habitica/Character
Translation: Habitica/Faq
Translation: Habitica/Front
Translation: Habitica/Gear
Translation: Habitica/Generic
Translation: Habitica/Groups
Translation: Habitica/Npc
Translation: Habitica/Tasks
2026-01-20 21:33:14 +01:00
Fiz ba9a1ab2a9 Merge pull request #15583 from HabitRPG/kalista/username-sanitize
Sanitize usernames come from social auth
2026-01-15 12:00:56 -06:00
Kalista Payne 4767461c4f 5.43.3 2026-01-14 14:19:54 -06:00
Weblate 847c97dc8f Translated using Weblate (Portuguese (Brazil))
Currently translated at 94.7% (3314 of 3497 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (189 of 189 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (932 of 932 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (932 of 932 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (932 of 932 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (430 of 430 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (862 of 862 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (430 of 430 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (288 of 288 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (430 of 430 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (288 of 288 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (275 of 275 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (430 of 430 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (276 of 276 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (94 of 94 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (288 of 288 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (430 of 430 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (430 of 430 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 94.7% (3314 of 3497 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (253 of 253 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (862 of 862 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (91 of 91 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (202 of 202 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (932 of 932 strings)

Translated using Weblate (Indonesian)

Currently translated at 93.0% (228 of 245 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (145 of 145 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (202 of 202 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (932 of 932 strings)

Translated using Weblate (Polish)

Currently translated at 98.9% (272 of 275 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (202 of 202 strings)

Translated using Weblate (Danish)

Currently translated at 88.1% (178 of 202 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (131 of 131 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (288 of 288 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (202 of 202 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (202 of 202 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (202 of 202 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (145 of 145 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (145 of 145 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (58 of 58 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (15 of 15 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (932 of 932 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (932 of 932 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (932 of 932 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (932 of 932 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (932 of 932 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (167 of 167 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (167 of 167 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (167 of 167 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (167 of 167 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (167 of 167 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (167 of 167 strings)

Translated using Weblate (Danish)

Currently translated at 66.5% (183 of 275 strings)

Translated using Weblate (German)

Currently translated at 98.9% (3461 of 3497 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (253 of 253 strings)

Translated using Weblate (Danish)

Currently translated at 92.5% (175 of 189 strings)

Translated using Weblate (Danish)

Currently translated at 9.0% (23 of 253 strings)

Translated using Weblate (German)

Currently translated at 99.0% (200 of 202 strings)

Translated using Weblate (German)

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Danish)

Currently translated at 62.5% (172 of 275 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (91 of 91 strings)

Translated using Weblate (Japanese)

Currently translated at 96.5% (195 of 202 strings)

Translated using Weblate (Japanese)

Currently translated at 98.4% (249 of 253 strings)

Translated using Weblate (French)

Currently translated at 100.0% (3497 of 3497 strings)

Translated using Weblate (German)

Currently translated at 98.3% (3440 of 3497 strings)

Translated using Weblate (French)

Currently translated at 100.0% (253 of 253 strings)

Translated using Weblate (French)

Currently translated at 100.0% (202 of 202 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 94.7% (3314 of 3497 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (253 of 253 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (202 of 202 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (253 of 253 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (202 of 202 strings)

Co-authored-by: Ashlynn <ashlynn.samuella@gmail.com>
Co-authored-by: Douglas Meneghetti <douglasrizzom@gmail.com>
Co-authored-by: Gabriela <gabisouzars5@gmail.com>
Co-authored-by: Helene Bæck Christensen <helene.baeck@gmail.com>
Co-authored-by: Henrique Ferreira <pedroferreira217.ph@gmail.com>
Co-authored-by: Illana Beatriz Rocha de Oliveira <dev.illanabeatriz@gmail.com>
Co-authored-by: Isabela de Carvalho <isabela.c.escritora@gmail.com>
Co-authored-by: Joanna K <joanna.kociolek0@gmail.com>
Co-authored-by: Kenvinn <kevinsavio514@gmail.com>
Co-authored-by: Lucas Rafaldini <lucas.rafaldini@gmail.com>
Co-authored-by: Luã Fhelyp Guimarães <fhelypg@gmail.com>
Co-authored-by: Lyam Santos Peres <kaka1213spaenrteoss@gmail.com>
Co-authored-by: Lyam Santos Peres <karinesanper@gmail.com>
Co-authored-by: Maycon Douglas Silva Santos <maycondss@live.com>
Co-authored-by: Ri Vargas <goldenhaitang@gmail.com>
Co-authored-by: Rodrigo Gonçalves Braga <rgbraga@gmail.com>
Co-authored-by: Sophie LE MASLE <sophiesuff@gmail.com>
Co-authored-by: Summer_GUI <heyang94@163.com>
Co-authored-by: Thiago Braga <thibraga06@gmail.com>
Co-authored-by: Toro Mor <thomas.bizer@gmx.de>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: purea <g@agaric.eu>
Co-authored-by: いんこ <ayakabooker@gmail.com>
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pl/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/de/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/id/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/pl/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/character/da/
Translate-URL: https://translate.habitica.com/projects/habitica/character/de/
Translate-URL: https://translate.habitica.com/projects/habitica/character/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/character/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/character/pl/
Translate-URL: https://translate.habitica.com/projects/habitica/character/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/id/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/death/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/da/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/id/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/front/da/
Translate-URL: https://translate.habitica.com/projects/habitica/front/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/id/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/messages/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/overview/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/quests/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/da/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/pl/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/pl/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/pt_BR/
Translation: Habitica/Achievements
Translation: Habitica/Backgrounds
Translation: Habitica/Challenge
Translation: Habitica/Character
Translation: Habitica/Communityguidelines
Translation: Habitica/Death
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/Quests
Translation: Habitica/Questscontent
Translation: Habitica/Settings
Translation: Habitica/Subscriber
Translation: Habitica/Tasks
2026-01-14 21:18:58 +01:00
Kalista Payne 215b26acac fix(auth): run the actual verify check 2026-01-13 17:01:09 -06:00
Phillip Thelen e223e7821a add config to disable ssl and base_url enforcement (#15587) 2026-01-13 16:44:23 -06:00
Fiz 8134fa7c00 Chat optimization (#15545)
* fix(content): textual tweaks and updates

* fix(link): direct to FAQ instead of wiki

* fix(faq): correct Markdown

* Show orb of rebirth confirmation modal after use (window refresh)

* Set and check rebirth confirmation modal from localstorage

Set and check rebirth confirmation modal from localstorage after window reload

* Don't show orb of rebirth confirmation modal until page reloads

* message effective limit optimization

* Keep max limit for web (400 recent messages)

* Fix amount of messages initially being shown

* PM_PER_PAGE set to 50

* Increases number of messages in inbox test

* Increases number of messages for inbox pagination test

* Set and check rebirth confirmation modal from localstorage

Set and check rebirth confirmation modal from localstorage after window reload

* Don't show orb of rebirth confirmation modal until page reloads

* message effective limit optimization

* Keep max limit for web (400 recent messages)

* Add UUID validation for 'before' query parameter

* add party message stress test tool in admin panel

* lint

* add MAX_PM_COUNT of 400, admin tool for stress testing messages

* comment

* update stress test inbox message tool to use logged in user

* comment

---------

Co-authored-by: Kalista Payne <kalista@habitica.com>
2026-01-13 14:43:09 -06:00
Kalista Payne 84208f612e 5.43.2 2026-01-09 10:43:36 -06:00
Hafiz 57e06334c0 Update allocation option label 2026-01-09 09:05:00 -06:00
Kalista Payne be695d25b3 5.43.1 2026-01-08 16:08:52 -06:00
Kalista Payne 77ee83f467 fix(privacy): ensure opt-in for analytics in modal 2026-01-08 15:40:09 -06:00
Kalista Payne 86556e346b 5.43.0 2026-01-08 14:22:27 -06:00
Weblate 2007a872c6 Merge branch 'origin/develop' into Weblate. 2026-01-08 21:20:01 +01:00
Weblate a8348038de Translated using Weblate (Italian)
Currently translated at 80.8% (2829 of 3497 strings)

Translated using Weblate (Italian)

Currently translated at 80.4% (2813 of 3497 strings)

Translated using Weblate (French)

Currently translated at 100.0% (202 of 202 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (145 of 145 strings)

Translated using Weblate (Italian)

Currently translated at 79.5% (2781 of 3497 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (245 of 245 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (202 of 202 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Indonesian)

Currently translated at 96.4% (110 of 114 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (145 of 145 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (288 of 288 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 94.6% (3310 of 3497 strings)

Translated using Weblate (German)

Currently translated at 98.3% (3438 of 3497 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (245 of 245 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (202 of 202 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (French)

Currently translated at 100.0% (202 of 202 strings)

Translated using Weblate (French)

Currently translated at 100.0% (145 of 145 strings)

Translated using Weblate (French)

Currently translated at 100.0% (245 of 245 strings)

Translated using Weblate (French)

Currently translated at 93.0% (188 of 202 strings)

Translated using Weblate (French)

Currently translated at 100.0% (114 of 114 strings)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Translated using Weblate (Italian)

Currently translated at 100.0% (932 of 932 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 93.4% (3268 of 3497 strings)

Translated using Weblate (Korean)

Currently translated at 99.7% (930 of 932 strings)

Translated using Weblate (Korean)

Currently translated at 72.1% (622 of 862 strings)

Translated using Weblate (Korean)

Currently translated at 75.8% (326 of 430 strings)

Translated using Weblate (Korean)

Currently translated at 97.7% (129 of 132 strings)

Translated using Weblate (Korean)

Currently translated at 37.2% (92 of 247 strings)

Translated using Weblate (Korean)

Currently translated at 93.6% (104 of 111 strings)

Translated using Weblate (Korean)

Currently translated at 97.5% (909 of 932 strings)

Translated using Weblate (Korean)

Currently translated at 91.4% (86 of 94 strings)

Translated using Weblate (Korean)

Currently translated at 60.9% (173 of 284 strings)

Translated using Weblate (Korean)

Currently translated at 72.5% (312 of 430 strings)

Translated using Weblate (Korean)

Currently translated at 49.7% (1739 of 3497 strings)

Translated using Weblate (Korean)

Currently translated at 100.0% (15 of 15 strings)

Translated using Weblate (Korean)

Currently translated at 63.7% (58 of 91 strings)

Translated using Weblate (Turkish)

Currently translated at 55.5% (160 of 288 strings)

Translated using Weblate (Turkish)

Currently translated at 34.8% (86 of 247 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 76.1% (188 of 247 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 92.7% (3243 of 3497 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 92.6% (3240 of 3497 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 92.4% (3233 of 3497 strings)

Translated using Weblate (Turkish)

Currently translated at 72.7% (627 of 862 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (276 of 276 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (862 of 862 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (288 of 288 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (430 of 430 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 92.3% (3229 of 3497 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 92.3% (3229 of 3497 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (932 of 932 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 90.5% (3165 of 3497 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 90.5% (3165 of 3497 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 98.6% (284 of 288 strings)

Translated using Weblate (Korean)

Currently translated at 70.7% (610 of 862 strings)

Translated using Weblate (Korean)

Currently translated at 71.3% (307 of 430 strings)

Translated using Weblate (Korean)

Currently translated at 49.6% (1737 of 3497 strings)

Translated using Weblate (Turkish)

Currently translated at 71.6% (618 of 862 strings)

Translated using Weblate (Romanian)

Currently translated at 56.5% (156 of 276 strings)

Translated using Weblate (Romanian)

Currently translated at 91.2% (104 of 114 strings)

Translated using Weblate (Romanian)

Currently translated at 98.2% (57 of 58 strings)

Translated using Weblate (Japanese)

Currently translated at 98.1% (3432 of 3497 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Turkish)

Currently translated at 63.9% (551 of 862 strings)

Translated using Weblate (Japanese)

Currently translated at 97.9% (3427 of 3497 strings)

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (430 of 430 strings)

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (275 of 275 strings)

Translated using Weblate (Japanese)

Currently translated at 97.8% (3423 of 3497 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 98.2% (57 of 58 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 89.3% (218 of 244 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 77.2% (146 of 189 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 82.1% (708 of 862 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 96.7% (88 of 91 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (193 of 193 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 95.4% (106 of 111 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 71.6% (197 of 275 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (3497 of 3497 strings)

Translated using Weblate (Spanish)

Currently translated at 99.9% (3495 of 3497 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (132 of 132 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (47 of 47 strings)

Translated using Weblate (Turkish)

Currently translated at 87.3% (241 of 276 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (91 of 91 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (111 of 111 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (276 of 276 strings)

Translated using Weblate (English (United Kingdom))

Currently translated at 69.9% (2446 of 3497 strings)

Translated using Weblate (German)

Currently translated at 98.2% (3436 of 3497 strings)

Translated using Weblate (Turkish)

Currently translated at 74.6% (206 of 276 strings)

Translated using Weblate (Turkish)

Currently translated at 74.6% (206 of 276 strings)

Translated using Weblate (Turkish)

Currently translated at 69.5% (192 of 276 strings)

Translated using Weblate (Turkish)

Currently translated at 65.9% (182 of 276 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (193 of 193 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (932 of 932 strings)

Translated using Weblate (Turkish)

Currently translated at 85.5% (797 of 932 strings)

Co-authored-by: Ashlynn <ashlynn.samuella@gmail.com>
Co-authored-by: Begümay Çınar <begumay@proton.me>
Co-authored-by: Céu <marcel.ufscar@gmail.com>
Co-authored-by: Douglas Meneghetti <douglasrizzom@gmail.com>
Co-authored-by: Frodo <Zatriel@outlook.com.br>
Co-authored-by: Israel Silva Araújo <yisrael.araujo@gmail.com>
Co-authored-by: Jaime Martí <jaumemarti77@icloud.com>
Co-authored-by: John B <habitica.quarters574@passmail.net>
Co-authored-by: Lucas Lo <lucas1020.rabbit@gmail.com>
Co-authored-by: Luizo <t.czj2019@gmail.com>
Co-authored-by: Lyam Santos Peres <kaka1213spaenrteoss@gmail.com>
Co-authored-by: Márcio Ramos Corrêa <marcio.ramos.correa@gmail.com>
Co-authored-by: Omar Bertolla <scaram@icloud.com>
Co-authored-by: Sefa Uğurlu <ugurlusefa2@gmail.com>
Co-authored-by: Seohee <ka011215@naver.com>
Co-authored-by: Sophie LE MASLE <sophiesuff@gmail.com>
Co-authored-by: Summer_GUI <heyang94@163.com>
Co-authored-by: Toro Mor <thomas.bizer@gmx.de>
Co-authored-by: Trần Thu Trúc <ngw.nah@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: ‌ <e0gla0f@gmail.com>
Co-authored-by: いんこ <ayakabooker@gmail.com>
Co-authored-by: 張鈞崴 <qoo94230@gmail.com>
Co-authored-by: 강아름 <sick_kar@naver.com>
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/it/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/tr/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/id/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/character/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/character/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/character/tr/
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/character/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/tr/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/id/
Translate-URL: https://translate.habitica.com/projects/habitica/death/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/tr/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/en_GB/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/es/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/it/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/en_GB/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/tr/
Translate-URL: https://translate.habitica.com/projects/habitica/messages/ro/
Translate-URL: https://translate.habitica.com/projects/habitica/messages/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/id/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/overview/tr/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/id/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/ro/
Translate-URL: https://translate.habitica.com/projects/habitica/quests/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/tr/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/en_GB/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ro/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/tr/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/zh_Hans/
Translation: Habitica/Backgrounds
Translation: Habitica/Challenge
Translation: Habitica/Character
Translation: Habitica/Communityguidelines
Translation: Habitica/Contrib
Translation: Habitica/Death
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/Quests
Translation: Habitica/Questscontent
Translation: Habitica/Settings
Translation: Habitica/Subscriber
Translation: Habitica/Tasks
2026-01-08 20:28:08 +01:00
Hafiz 87bcd69979 stat allocation wording 2026-01-08 12:35:31 -06:00
Hafiz 8f8e84d0c7 Stat allocation selection lowercase/capitalization 2026-01-08 11:51:21 -06:00
Hafiz 2c18cb00cc capitalization 2026-01-08 11:27:35 -06:00
Hafiz daa0fd18c0 Remove "points" from task allocation dropdown item title 2026-01-07 19:30:20 -06:00
Kalista Payne 5c555cbf88 fix(auth): revert attempted perf tweak 2026-01-07 17:52:33 -06:00
Kalista Payne 7379c7b230 fix(auth): handle potential collisions on username 2026-01-07 17:26:42 -06:00
Kalista Payne c055537c38 fix(lint): whitespace 2026-01-07 16:49:22 -06:00
Kalista Payne 7559feec8e Revert "fix(lint): whitespace; also revert username fix for further QA"
This reverts commit dcd15a58ebf41d9e44c89c675419ecb7d36b946d.
2026-01-07 16:49:22 -06:00
Kalista Payne 43808696a8 fix(lint): whitespace; also revert username fix for further QA 2026-01-07 16:49:22 -06:00
Kalista Payne 72fb41c7e0 fix(lint): missing variable declaration 2026-01-07 16:45:19 -06:00
Kalista Payne 3bf18e09ed fix(auth): strip invalid characters during social reg 2026-01-07 16:45:19 -06:00
Kalista Payne 407a901883 feat(faq): add detail on stats and allocation 2026-01-07 15:30:37 -06:00
Kalista Payne 81a008906b fix(lint): max-len 2026-01-07 14:36:51 -06:00
Kalista Payne 992a978923 Squashed commit of the following:
commit dcd15a58ebf41d9e44c89c675419ecb7d36b946d
Author: Kalista Payne <kalista@habitica.com>
Date:   Wed Jan 7 14:11:29 2026 -0600

    fix(lint): whitespace; also revert username fix for further QA

commit 8af109f3c358418a778d4dc8387524840343f046
Author: Kalista Payne <kalista@habitica.com>
Date:   Mon Jan 5 15:04:30 2026 -0600

    fix(footer): better hover looks

commit 87518d335967a90d3049cfde9160b341cbf55417
Author: Kalista Payne <kalista@habitica.com>
Date:   Tue Dec 30 15:10:14 2025 -0600

    fix(footer): change to flex layout for better alignment

commit 45ab33c1afaa5b34c56fb09cdcd0f4c12fee0893
Author: Kalista Payne <kalista@habitica.com>
Date:   Tue Dec 30 13:03:56 2025 -0600

    fix(lint): whitespace

commit c9d20e86d29d89b881813a2579ec1ba61acc82cc
Author: Kalista Payne <kalista@habitica.com>
Date:   Tue Dec 30 12:54:04 2025 -0600

    fix(lint): unused var and whitespace

commit 05dc11fd11a530b0b460a951a8be32fe6f4e190e
Author: Kalista Payne <kalista@habitica.com>
Date:   Tue Dec 30 12:48:26 2025 -0600

    fix(footer): rearrange social block, clean up unused donate css

commit 131cda6bb99b4eb53fdadf551bfddc3f712e81e8
Author: Kalista Payne <kalista@habitica.com>
Date:   Mon Dec 29 16:19:18 2025 -0600

    fix(login): move password flows into static wrapper

commit 563ed9fa02a34bbad53421795415e43c955813c1
Author: Kalista Payne <kalista@habitica.com>
Date:   Mon Dec 29 16:02:41 2025 -0600

    fix(login): resetPassword not reset-password route name

commit d23b64a03ec48b5634f05b4500153ed54a0ba6e7
Author: Kalista Payne <kalista@habitica.com>
Date:   Mon Dec 29 15:48:51 2025 -0600

    fix(login): add missing footer, remove dono button

commit 55e841252fbaafdccf75828b7ce87946c185792a
Author: Kalista Payne <kalista@habitica.com>
Date:   Fri Dec 19 15:58:52 2025 -0600

    fix(passwords): standardize styling for reset pass form

commit 7e84a54f104191d6e6d2e86f25070847e1c1c674
Author: Kalista Payne <kalista@habitica.com>
Date:   Tue Dec 16 16:21:50 2025 -0600

    fix(lint): missing variable declaration

commit 777f8f13d7b3b889b5637102b8258b20020c6c6d
Author: Kalista Payne <kalista@habitica.com>
Date:   Tue Dec 16 16:17:19 2025 -0600

    fix(auth): strip invalid characters during social reg
2026-01-07 14:13:47 -06:00
Fiz a8062ad615 Implement stat allocation & auto stat allocation (#15551)
* fix(responsive): adjustments for small screens by @Hafizzle

* Fixed cut off modal issues

- Fixed limited time banner being cut off on smaller devices
- Fixed Pin on purchase quest modal being cut off

* Update order of views on Stats tab

* Update styling of stat boxes & add stat allocation info

* Live stat allocation & auto allocation implemented

- Update stat allocation UI/UX cont.
- Update stats live (versus pressing save)
- Dynamically show the distribute dropdown based on if auto allocate switch is enabled

* Remove duplicate string value, convert line endings

* Fix auto allocation toggle alignment

* lint fixes

* Auto allocate UI fixes

- remove info icon in each dropdown option, and replace info below each option
- disable auto allocate dropdown instead of hiding it
- removed radio buttons drop auto allocate options dropdown
- Points available & auto allocate text share same baseline now

* Stat allocation updates

* Assigned Stat

* lint fixes

* stat feedback UI updates

* tweak

* stat allocation UI tweaks

refactor allocation mode selection with selectList component & other UI tweaks

* Fix hover dropdown padding & stat allocation chip always showing

* Update stat allocation dropdown styling

* Remove bold text on hover

* Stat allocation by task dropdown

* remove empty lines

* show selected attribute on component itself

* task stat selection UI updates

* fix(cr): remove weird line endings

---------

Co-authored-by: Kalista Payne <kalista@habitica.com>
2026-01-06 16:08:34 -06:00
Fiz 781a904583 Replace browser confirmations with confirmation modals (#15544)
* Set and check rebirth confirmation modal from localstorage

Set and check rebirth confirmation modal from localstorage after window reload

* Don't show orb of rebirth confirmation modal until page reloads

* Confirmation prompts (replace browser confirmation prompts)

* lint

* lint

* Fix confirmation modal not showing for items w/gems

* Updated delete and confirmation modals

* lint

* Fix top bar on color on confirmation prompt clipping

* Show currency amount on purchase confirmation modals

* confirmation modals using existing components

* lint

* Broken task confirmation modal

* Replace class change confirmation with modal

* fix(style): correct indentation

* Replace warning svg w/ existing alert svg, and reset language strings

* fix(json): json doesn't like comma dangles

---------

Co-authored-by: Kalista Payne <kalista@habitica.com>
Co-authored-by: Kalista Payne <sabrecat@gmail.com>
2026-01-06 15:19:30 -06:00
Kalista Payne d87946d912 5.42.4 2025-12-19 14:11:46 -06:00
Fiz 7456ff2def Fix g1g1 notification not staying dismissed (#15580)
- use localStorage instead of sessionStorage so dismissal persists across browser sessions
- Add .stop modifier to close button click
2025-12-19 13:57:35 -06:00
Kalista Payne e0af620b40 5.42.3 2025-12-18 12:24:15 -06:00
Weblate bb295551b5 Merge branch 'origin/develop' into Weblate. 2025-12-18 19:22:25 +01:00
Kalista Payne fce400f323 Squashed commit of the following:
commit 6d4accc43d20bb89b0496cec81e3b7d2a80c51b2
Author: Kalista Payne <kalista@habitica.com>
Date:   Tue Dec 16 17:00:37 2025 -0600

    fix(front): add some spacing to account for removed pieces

commit 800d8c20c9705b39438866dca360d2d2bbbbf8de
Author: Kalista Payne <kalista@habitica.com>
Date:   Tue Dec 16 16:21:50 2025 -0600

    fix(lint): missing variable declaration

commit c16ff32d49fc11cf1fc737c242522485ecf3ef5d
Author: Kalista Payne <kalista@habitica.com>
Date:   Mon Dec 15 17:21:00 2025 -0600

    fix(vue): markdownContainer TypeError

commit 5b4cf689b80c92e7163bcfd12b2c09f582d895f6
Author: Kalista Payne <kalista@habitica.com>
Date:   Tue Dec 16 15:07:43 2025 -0600

    fix(auth): debounce password reset request
2025-12-18 10:32:08 -06:00
Weblate c0ffb8b968 Translated using Weblate (Chinese (Traditional))
Currently translated at 85.8% (237 of 276 strings)

Translated using Weblate (English (United Kingdom))

Currently translated at 69.9% (2446 of 3497 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 76.1% (188 of 247 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (54 of 54 strings)

Translated using Weblate (Spanish)

Currently translated at 99.7% (3488 of 3497 strings)

Translated using Weblate (Japanese)

Currently translated at 97.7% (3419 of 3497 strings)

Translated using Weblate (German)

Currently translated at 98.2% (3435 of 3497 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 47.3% (117 of 247 strings)

Translated using Weblate (Italian)

Currently translated at 29.9% (74 of 247 strings)

Translated using Weblate (Polish)

Currently translated at 50.5% (1767 of 3497 strings)

Translated using Weblate (Polish)

Currently translated at 94.7% (273 of 288 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (15 of 15 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (91 of 91 strings)

Translated using Weblate (Turkish)

Currently translated at 79.0% (340 of 430 strings)

Translated using Weblate (Turkish)

Currently translated at 79.0% (340 of 430 strings)

Translated using Weblate (Turkish)

Currently translated at 84.0% (783 of 932 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (932 of 932 strings)

Translated using Weblate (Turkish)

Currently translated at 68.3% (294 of 430 strings)

Translated using Weblate (Turkish)

Currently translated at 80.7% (753 of 932 strings)

Translated using Weblate (Turkish)

Currently translated at 75.7% (706 of 932 strings)

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (932 of 932 strings)

Translated using Weblate (Japanese)

Currently translated at 97.7% (3417 of 3497 strings)

Translated using Weblate (Turkish)

Currently translated at 63.7% (176 of 276 strings)

Translated using Weblate (Turkish)

Currently translated at 32.7% (81 of 247 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (244 of 244 strings)

Translated using Weblate (Turkish)

Currently translated at 32.7% (81 of 247 strings)

Translated using Weblate (Turkish)

Currently translated at 75.2% (701 of 932 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (862 of 862 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (275 of 275 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (189 of 189 strings)

Translated using Weblate (Turkish)

Currently translated at 75.8% (69 of 91 strings)

Translated using Weblate (Turkish)

Currently translated at 73.1% (682 of 932 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (275 of 275 strings)

Translated using Weblate (Russian)

Currently translated at 98.6% (919 of 932 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (932 of 932 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (862 of 862 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (275 of 275 strings)

Translated using Weblate (German)

Currently translated at 98.1% (3434 of 3497 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 45.7% (113 of 247 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (15 of 15 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 94.7% (883 of 932 strings)

Translated using Weblate (Japanese)

Currently translated at 98.9% (272 of 275 strings)

Translated using Weblate (Japanese)

Currently translated at 97.6% (3416 of 3497 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (189 of 189 strings)

Translated using Weblate (Turkish)

Currently translated at 68.1% (62 of 91 strings)

Translated using Weblate (Spanish)

Currently translated at 99.0% (3463 of 3497 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (244 of 244 strings)

Translated using Weblate (Turkish)

Currently translated at 92.0% (174 of 189 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (412 of 412 strings)

Translated using Weblate (Turkish)

Currently translated at 66.3% (618 of 932 strings)

Translated using Weblate (German)

Currently translated at 100.0% (862 of 862 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (276 of 276 strings)

Translated using Weblate (German)

Currently translated at 100.0% (276 of 276 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (288 of 288 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (430 of 430 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (3497 of 3497 strings)

Translated using Weblate (Turkish)

Currently translated at 50.0% (138 of 276 strings)

Translated using Weblate (Turkish)

Currently translated at 87.8% (166 of 189 strings)

Translated using Weblate (Turkish)

Currently translated at 32.7% (81 of 247 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (15 of 15 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (111 of 111 strings)

Translated using Weblate (Turkish)

Currently translated at 62.2% (580 of 932 strings)

Translated using Weblate (Japanese)

Currently translated at 97.4% (3409 of 3497 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (288 of 288 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (247 of 247 strings)

Translated using Weblate (German)

Currently translated at 98.9% (273 of 276 strings)

Translated using Weblate (German)

Currently translated at 100.0% (932 of 932 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 82.9% (239 of 288 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 66.8% (2338 of 3497 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 66.4% (2323 of 3497 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 82.0% (707 of 862 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 89.4% (834 of 932 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 81.9% (706 of 862 strings)

Translated using Weblate (Japanese)

Currently translated at 97.4% (3408 of 3497 strings)

Translated using Weblate (Italian)

Currently translated at 86.2% (163 of 189 strings)

Translated using Weblate (Italian)

Currently translated at 99.4% (927 of 932 strings)

Translated using Weblate (Japanese)

Currently translated at 99.6% (275 of 276 strings)

Translated using Weblate (French)

Currently translated at 100.0% (276 of 276 strings)

Translated using Weblate (Japanese)

Currently translated at 97.0% (3395 of 3497 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (275 of 275 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (430 of 430 strings)

Translated using Weblate (Spanish)

Currently translated at 98.9% (3462 of 3497 strings)

Translated using Weblate (Japanese)

Currently translated at 97.0% (3395 of 3497 strings)

Translated using Weblate (German)

Currently translated at 98.1% (3432 of 3497 strings)

Translated using Weblate (German)

Currently translated at 98.0% (845 of 862 strings)

Translated using Weblate (Portuguese)

Currently translated at 87.5% (7 of 8 strings)

Translated using Weblate (Portuguese)

Currently translated at 38.4% (95 of 247 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (932 of 932 strings)

Translated using Weblate (German)

Currently translated at 100.0% (288 of 288 strings)

Translated using Weblate (German)

Currently translated at 100.0% (430 of 430 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (932 of 932 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (932 of 932 strings)

Translated using Weblate (Japanese)

Currently translated at 96.6% (3380 of 3497 strings)

Translated using Weblate (Dutch)

Currently translated at 46.1% (114 of 247 strings)

Translated using Weblate (Dutch)

Currently translated at 95.6% (87 of 91 strings)

Translated using Weblate (French)

Currently translated at 100.0% (275 of 275 strings)

Translated using Weblate (French)

Currently translated at 100.0% (288 of 288 strings)

Translated using Weblate (French)

Currently translated at 100.0% (430 of 430 strings)

Translated using Weblate (French)

Currently translated at 100.0% (3497 of 3497 strings)

Translated using Weblate (Spanish)

Currently translated at 99.6% (274 of 275 strings)

Translated using Weblate (Spanish)

Currently translated at 98.1% (3431 of 3497 strings)

Translated using Weblate (Japanese)

Currently translated at 99.6% (274 of 275 strings)

Co-authored-by: Aahzmandia <aahzmandia@gmail.com>
Co-authored-by: Ashlynn <ashlynn.samuella@gmail.com>
Co-authored-by: Azuthrax <azuthrax@gmail.com>
Co-authored-by: Begümay Çınar <begumay@proton.me>
Co-authored-by: Deleted User <noreply+908@weblate.org>
Co-authored-by: Eduardo Ariel Santos da Silva <are3380@gmail.com>
Co-authored-by: Jaime Martí <jaumemarti77@icloud.com>
Co-authored-by: Jakub <jakubrymuza@gmail.com>
Co-authored-by: Jan Freihöfer <jan.stauch.is@gmail.com>
Co-authored-by: Kaakaa <misaka.hibiki@gmail.com>
Co-authored-by: Kubo Mizuki <m.kubo.0916@gmail.com>
Co-authored-by: Kwix26 <damiandamian2133@gmail.com>
Co-authored-by: Manuel <zappyccino@proton.me>
Co-authored-by: Michael <mikosanjp@gmail.com>
Co-authored-by: Riccardo DD <emvadraen@hotmail.com>
Co-authored-by: Sam Zhong <sam.zhongzishen@gmail.com>
Co-authored-by: Sophie LE MASLE <sophiesuff@gmail.com>
Co-authored-by: Summer_GUI <heyang94@163.com>
Co-authored-by: Toro Mor <thomas.bizer@gmx.de>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: lhh <7012605@gmail.com>
Co-authored-by: nina van dijck laurijssen <n.vandijcklaurijssen@sintmartinusscholen.be>
Co-authored-by: いんこ <ayakabooker@gmail.com>
Co-authored-by: ? <importantdata78@gmail.com>
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/de/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/en_GB/
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/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/tr/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/tr/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/nl/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/pl/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/tr/
Translate-URL: https://translate.habitica.com/projects/habitica/content/tr/
Translate-URL: https://translate.habitica.com/projects/habitica/death/pl/
Translate-URL: https://translate.habitica.com/projects/habitica/death/tr/
Translate-URL: https://translate.habitica.com/projects/habitica/death/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/it/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/nl/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/tr/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/front/it/
Translate-URL: https://translate.habitica.com/projects/habitica/front/tr/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/en_GB/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/es/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pl/
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/tr/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/de/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/es/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/tr/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/de/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/pl/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/overview/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/de/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/tr/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/de/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/es/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/tr/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hant/
Translation: Habitica/Backgrounds
Translation: Habitica/Challenge
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/Limited
Translation: Habitica/Overview
Translation: Habitica/Questscontent
Translation: Habitica/Settings
Translation: Habitica/Subscriber
2025-12-18 03:50:38 +01:00
Kalista Payne 72539f9ba3 5.42.2 2025-12-10 14:16:53 -06:00
Kalista Payne dabd466719 Revert "Chat optimization (#15545)"
This reverts commit 2917955ef0.
2025-12-10 14:16:48 -06:00
Kalista Payne 8bf2304330 chore(event): G1G1 date tweaks 2025-12-10 14:15:48 -06:00
Kalista Payne 6937dc4e4e fix(subscription): couple more layout tweaks 2025-12-08 16:37:04 -06:00
Fiz 2917955ef0 Chat optimization (#15545)
* fix(content): textual tweaks and updates

* fix(link): direct to FAQ instead of wiki

* fix(faq): correct Markdown

* Show orb of rebirth confirmation modal after use (window refresh)

* Set and check rebirth confirmation modal from localstorage

Set and check rebirth confirmation modal from localstorage after window reload

* Don't show orb of rebirth confirmation modal until page reloads

* message effective limit optimization

* Keep max limit for web (400 recent messages)

* Fix amount of messages initially being shown

* PM_PER_PAGE set to 50

* Increases number of messages in inbox test

* Increases number of messages for inbox pagination test

* Set and check rebirth confirmation modal from localstorage

Set and check rebirth confirmation modal from localstorage after window reload

* Don't show orb of rebirth confirmation modal until page reloads

* message effective limit optimization

* Keep max limit for web (400 recent messages)

* Add UUID validation for 'before' query parameter

* add party message stress test tool in admin panel

* lint

* add MAX_PM_COUNT of 400, admin tool for stress testing messages

* comment

* update stress test inbox message tool to use logged in user

* comment

---------

Co-authored-by: Kalista Payne <kalista@habitica.com>
2025-12-05 16:12:23 -06:00
Kalista Payne 55d13e44d4 fix(subs): strings and alignments 2025-12-03 17:12:08 -06:00
Kalista Payne 90096f995f 5.42.1 2025-12-03 16:42:22 -06:00
Kalista Payne 5c74c2b914 fix(typo): gooals 2025-12-03 15:36:04 -06:00
Kalista Payne 1f1a44e16f 5.42.0 2025-11-25 19:48:43 -06:00
Weblate a275109a3e Merge branch 'origin/develop' into Weblate. 2025-11-26 02:46:05 +01:00
Weblate c65457690b Translated using Weblate (Japanese)
Currently translated at 99.6% (287 of 288 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (288 of 288 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (862 of 862 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (932 of 932 strings)

Translated using Weblate (Korean)

Currently translated at 100.0% (193 of 193 strings)

Translated using Weblate (Korean)

Currently translated at 89.1% (99 of 111 strings)

Translated using Weblate (Korean)

Currently translated at 70.5% (608 of 862 strings)

Translated using Weblate (Korean)

Currently translated at 100.0% (167 of 167 strings)

Translated using Weblate (Korean)

Currently translated at 100.0% (167 of 167 strings)

Translated using Weblate (Korean)

Currently translated at 58.0% (165 of 284 strings)

Translated using Weblate (French)

Currently translated at 100.0% (862 of 862 strings)

Translated using Weblate (German)

Currently translated at 99.7% (930 of 932 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (862 of 862 strings)

Translated using Weblate (French)

Currently translated at 98.2% (847 of 862 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (932 of 932 strings)

Translated using Weblate (French)

Currently translated at 100.0% (932 of 932 strings)

Translated using Weblate (Spanish)

Currently translated at 98.9% (853 of 862 strings)

Translated using Weblate (Japanese)

Currently translated at 99.7% (860 of 862 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (932 of 932 strings)

Translated using Weblate (English (United Kingdom))

Currently translated at 99.3% (926 of 932 strings)

Translated using Weblate (Korean)

Currently translated at 96.3% (889 of 923 strings)

Translated using Weblate (Korean)

Currently translated at 86.4% (798 of 923 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (923 of 923 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (247 of 247 strings)

Translated using Weblate (Indonesian)

Currently translated at 97.5% (241 of 247 strings)

Translated using Weblate (Spanish (Latin America))

Currently translated at 100.0% (167 of 167 strings)

Translated using Weblate (Spanish (Latin America))

Currently translated at 100.0% (167 of 167 strings)

Translated using Weblate (Spanish (Latin America))

Currently translated at 100.0% (167 of 167 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (167 of 167 strings)

Translated using Weblate (Indonesian)

Currently translated at 96.7% (239 of 247 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 91.3% (3143 of 3441 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 91.3% (3143 of 3441 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (412 of 412 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 91.0% (3134 of 3441 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (271 of 271 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (271 of 271 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (284 of 284 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 90.4% (3112 of 3441 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 90.4% (3112 of 3441 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (275 of 275 strings)

Translated using Weblate (Ukrainian)

Currently translated at 54.7% (1883 of 3441 strings)

Translated using Weblate (German)

Currently translated at 100.0% (189 of 189 strings)

Translated using Weblate (German)

Currently translated at 100.0% (189 of 189 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (428 of 428 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 90.4% (3111 of 3441 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (189 of 189 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (862 of 862 strings)

Translated using Weblate (Portuguese)

Currently translated at 77.7% (147 of 189 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (247 of 247 strings)

Translated using Weblate (Spanish (Latin America))

Currently translated at 75.6% (143 of 189 strings)

Translated using Weblate (Spanish (Latin America))

Currently translated at 74.0% (140 of 189 strings)

Translated using Weblate (Spanish (Latin America))

Currently translated at 100.0% (167 of 167 strings)

Translated using Weblate (Spanish (Latin America))

Currently translated at 100.0% (167 of 167 strings)

Translated using Weblate (Spanish (Latin America))

Currently translated at 71.9% (136 of 189 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 90.3% (3110 of 3441 strings)

Translated using Weblate (English (United Kingdom))

Currently translated at 71.2% (2452 of 3441 strings)

Translated using Weblate (Indonesian)

Currently translated at 92.7% (229 of 247 strings)

Translated using Weblate (German)

Currently translated at 100.0% (189 of 189 strings)

Translated using Weblate (Korean)

Currently translated at 68.0% (187 of 275 strings)

Translated using Weblate (Korean)

Currently translated at 67.2% (185 of 275 strings)

Translated using Weblate (Korean)

Currently translated at 83.2% (768 of 923 strings)

Translated using Weblate (Korean)

Currently translated at 67.2% (185 of 275 strings)

Co-authored-by: Ashlynn <ashlynn.samuella@gmail.com>
Co-authored-by: Douglas Meneghetti <douglasrizzom@gmail.com>
Co-authored-by: Gustavo Angelo <gustavoangeloow@gmail.com>
Co-authored-by: Israel Silva Araújo <yisrael.araujo@gmail.com>
Co-authored-by: Jaime Martí <jaumemarti77@icloud.com>
Co-authored-by: Jan Freihöfer <jan.stauch.is@gmail.com>
Co-authored-by: Judes Martinez <pivet50811@limtu.com>
Co-authored-by: Lapin <sirocuro01@gmail.com>
Co-authored-by: Laura Fleckenstein <fleckenstein_laura@web.de>
Co-authored-by: Leslie Munguía <moongeeuh@gmail.com>
Co-authored-by: Lio Zam <zerofux@web.de>
Co-authored-by: Raul Fogaça Sanches <raul.fsanches@hotmail.com>
Co-authored-by: Ri Vargas <goldenhaitang@gmail.com>
Co-authored-by: Sophie LE MASLE <sophiesuff@gmail.com>
Co-authored-by: Summer_GUI <heyang94@163.com>
Co-authored-by: Toro Mor <thomas.bizer@gmx.de>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: Witza <witza87@gmail.com>
Co-authored-by: hyrge <mmsg4561@gmail.com>
Co-authored-by: いんこ <ayakabooker@gmail.com>
Co-authored-by: 이승연 <opus456@naver.com>
Co-authored-by: 이영지 <oukig2036@naver.com>
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/es/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/es_419/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/de/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/en_GB/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/es/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/character/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/content/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/id/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/front/de/
Translate-URL: https://translate.habitica.com/projects/habitica/front/es_419/
Translate-URL: https://translate.habitica.com/projects/habitica/front/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/front/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/en_GB/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/es/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/es/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/pt_BR/
Translation: Habitica/Achievements
Translation: Habitica/Backgrounds
Translation: Habitica/Challenge
Translation: Habitica/Character
Translation: Habitica/Content
Translation: Habitica/Faq
Translation: Habitica/Front
Translation: Habitica/Gear
Translation: Habitica/Groups
Translation: Habitica/Limited
Translation: Habitica/Questscontent
Translation: Habitica/Settings
Translation: Habitica/Subscriber
2025-11-26 00:18:11 +01:00
Kalista Payne f740f12b97 fix(subs): missing warn text 2025-11-25 15:12:52 -06:00
Kalista Payne 9fd0bfae46 Squashed commit of the following:
commit 05933be205
Author: Kalista Payne <kalista@habitica.com>
Date:   Tue Nov 25 11:46:16 2025 -0600

    fix(layout): contrast

commit f36f3c8a21
Author: Kalista Payne <kalista@habitica.com>
Date:   Thu Nov 20 17:29:06 2025 -0600

    fix(layout): less ridiculous flow

commit 74fcbe9494
Author: Kalista Payne <kalista@habitica.com>
Date:   Thu Nov 20 17:19:23 2025 -0600

    fix(billing): adjust placement and copy

commit c0c1ea4309
Author: Kalista Payne <kalista@habitica.com>
Date:   Thu Nov 20 10:48:45 2025 -0600

    fix(groups): fine print about billing
2025-11-25 11:47:13 -06:00
Kalista Payne bee23efbef feat(content): Winter Wonderland 2025-6 2025-11-19 13:34:50 -06:00
Kalista Payne a504b18ce4 5.41.6 2025-11-06 09:28:00 -06:00
Weblate f556b102c6 Translated using Weblate (Indonesian)
Currently translated at 85.7% (162 of 189 strings)

Translated using Weblate (Indonesian)

Currently translated at 84.6% (160 of 189 strings)

Translated using Weblate (Indonesian)

Currently translated at 97.8% (46 of 47 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (244 of 244 strings)

Translated using Weblate (Bulgarian)

Currently translated at 74.2% (124 of 167 strings)

Translated using Weblate (Bulgarian)

Currently translated at 74.2% (124 of 167 strings)

Translated using Weblate (Bulgarian)

Currently translated at 73.0% (122 of 167 strings)

Translated using Weblate (German)

Currently translated at 100.0% (189 of 189 strings)

Translated using Weblate (German)

Currently translated at 100.0% (189 of 189 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (15 of 15 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (56 of 56 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (1 of 1 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (13 of 13 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (94 of 94 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (58 of 58 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (56 of 56 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (56 of 56 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (56 of 56 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (140 of 140 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (140 of 140 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (140 of 140 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (140 of 140 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (140 of 140 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (140 of 140 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (140 of 140 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (140 of 140 strings)

Translated using Weblate (Croatian)

Currently translated at 72.8% (199 of 273 strings)

Translated using Weblate (Croatian)

Currently translated at 72.8% (199 of 273 strings)

Translated using Weblate (Croatian)

Currently translated at 69.9% (191 of 273 strings)

Translated using Weblate (Croatian)

Currently translated at 69.2% (189 of 273 strings)

Translated using Weblate (Croatian)

Currently translated at 69.2% (189 of 273 strings)

Translated using Weblate (Croatian)

Currently translated at 68.1% (186 of 273 strings)

Translated using Weblate (Croatian)

Currently translated at 67.7% (185 of 273 strings)

Translated using Weblate (Croatian)

Currently translated at 67.3% (184 of 273 strings)

Translated using Weblate (Croatian)

Currently translated at 66.3% (181 of 273 strings)

Translated using Weblate (Croatian)

Currently translated at 65.9% (180 of 273 strings)

Translated using Weblate (Croatian)

Currently translated at 65.2% (178 of 273 strings)

Translated using Weblate (Croatian)

Currently translated at 60.0% (164 of 273 strings)

Translated using Weblate (Croatian)

Currently translated at 58.9% (161 of 273 strings)

Translated using Weblate (Croatian)

Currently translated at 56.4% (154 of 273 strings)

Translated using Weblate (Croatian)

Currently translated at 55.6% (152 of 273 strings)

Translated using Weblate (Croatian)

Currently translated at 54.9% (150 of 273 strings)

Translated using Weblate (Croatian)

Currently translated at 54.9% (150 of 273 strings)

Translated using Weblate (Croatian)

Currently translated at 53.8% (147 of 273 strings)

Translated using Weblate (Croatian)

Currently translated at 53.8% (147 of 273 strings)

Translated using Weblate (French)

Currently translated at 100.0% (189 of 189 strings)

Translated using Weblate (Portuguese)

Currently translated at 55.7% (151 of 271 strings)

Translated using Weblate (Portuguese)

Currently translated at 54.6% (148 of 271 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 94.7% (269 of 284 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (189 of 189 strings)

Translated using Weblate (Croatian)

Currently translated at 17.4% (43 of 247 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (111 of 111 strings)

Translated using Weblate (Russian)

Currently translated at 76.1% (188 of 247 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (271 of 271 strings)

Translated using Weblate (Russian)

Currently translated at 98.5% (267 of 271 strings)

Translated using Weblate (Russian)

Currently translated at 97.7% (265 of 271 strings)

Translated using Weblate (Russian)

Currently translated at 97.4% (264 of 271 strings)

Translated using Weblate (Russian)

Currently translated at 96.3% (261 of 271 strings)

Translated using Weblate (Russian)

Currently translated at 95.5% (259 of 271 strings)

Translated using Weblate (Russian)

Currently translated at 93.7% (254 of 271 strings)

Translated using Weblate (Russian)

Currently translated at 91.5% (248 of 271 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (189 of 189 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (189 of 189 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (189 of 189 strings)

Translated using Weblate (English (United Kingdom))

Currently translated at 95.5% (259 of 271 strings)

Translated using Weblate (English (United Kingdom))

Currently translated at 71.2% (2450 of 3441 strings)

Translated using Weblate (English (United Kingdom))

Currently translated at 91.1% (247 of 271 strings)

Translated using Weblate (English (United Kingdom))

Currently translated at 89.6% (243 of 271 strings)

Translated using Weblate (English (United Kingdom))

Currently translated at 87.8% (238 of 271 strings)

Translated using Weblate (English (United Kingdom))

Currently translated at 98.9% (272 of 275 strings)

Translated using Weblate (English (United Kingdom))

Currently translated at 97.0% (267 of 275 strings)

Translated using Weblate (English (United Kingdom))

Currently translated at 96.3% (265 of 275 strings)

Translated using Weblate (English (United Kingdom))

Currently translated at 98.9% (187 of 189 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (284 of 284 strings)

Translated using Weblate (Russian)

Currently translated at 98.9% (281 of 284 strings)

Translated using Weblate (Russian)

Currently translated at 98.2% (279 of 284 strings)

Translated using Weblate (Russian)

Currently translated at 97.8% (278 of 284 strings)

Translated using Weblate (Russian)

Currently translated at 96.4% (274 of 284 strings)

Translated using Weblate (Russian)

Currently translated at 94.7% (269 of 284 strings)

Translated using Weblate (Russian)

Currently translated at 87.6% (249 of 284 strings)

Translated using Weblate (Indonesian)

Currently translated at 88.6% (219 of 247 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (275 of 275 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (428 of 428 strings)

Translated using Weblate (Russian)

Currently translated at 99.5% (426 of 428 strings)

Translated using Weblate (Russian)

Currently translated at 98.8% (423 of 428 strings)

Translated using Weblate (Russian)

Currently translated at 98.3% (421 of 428 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (189 of 189 strings)

Translated using Weblate (Indonesian)

Currently translated at 80.9% (200 of 247 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (15 of 15 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (923 of 923 strings)

Translated using Weblate (Indonesian)

Currently translated at 80.9% (200 of 247 strings)

Translated using Weblate (Indonesian)

Currently translated at 78.1% (193 of 247 strings)

Translated using Weblate (Indonesian)

Currently translated at 77.3% (191 of 247 strings)

Translated using Weblate (Indonesian)

Currently translated at 76.9% (190 of 247 strings)

Translated using Weblate (Indonesian)

Currently translated at 68.2% (2347 of 3441 strings)

Translated using Weblate (Indonesian)

Currently translated at 83.7% (227 of 271 strings)

Translated using Weblate (Indonesian)

Currently translated at 97.7% (129 of 132 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (22 of 22 strings)

Translated using Weblate (Indonesian)

Currently translated at 88.0% (377 of 428 strings)

Translated using Weblate (Indonesian)

Currently translated at 89.3% (218 of 244 strings)

Translated using Weblate (Indonesian)

Currently translated at 82.5% (156 of 189 strings)

Translated using Weblate (Indonesian)

Currently translated at 76.5% (189 of 247 strings)

Translated using Weblate (French)

Currently translated at 100.0% (15 of 15 strings)

Translated using Weblate (Indonesian)

Currently translated at 86.8% (79 of 91 strings)

Translated using Weblate (Indonesian)

Currently translated at 95.7% (45 of 47 strings)

Translated using Weblate (Indonesian)

Currently translated at 96.9% (128 of 132 strings)

Translated using Weblate (Indonesian)

Currently translated at 87.3% (374 of 428 strings)

Translated using Weblate (Indonesian)

Currently translated at 74.4% (184 of 247 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (15 of 15 strings)

Translated using Weblate (Russian)

Currently translated at 83.8% (2884 of 3441 strings)

Translated using Weblate (Korean)

Currently translated at 98.9% (191 of 193 strings)

Translated using Weblate (Korean)

Currently translated at 96.8% (187 of 193 strings)

Translated using Weblate (Korean)

Currently translated at 93.7% (181 of 193 strings)

Translated using Weblate (Korean)

Currently translated at 98.2% (112 of 114 strings)

Translated using Weblate (Korean)

Currently translated at 50.0% (1721 of 3441 strings)

Translated using Weblate (Korean)

Currently translated at 49.9% (1720 of 3441 strings)

Translated using Weblate (Korean)

Currently translated at 49.9% (1720 of 3441 strings)

Translated using Weblate (Korean)

Currently translated at 49.8% (1717 of 3441 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (3441 of 3441 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (247 of 247 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 99.5% (246 of 247 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (15 of 15 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (271 of 271 strings)

Translated using Weblate (Spanish (Latin America))

Currently translated at 100.0% (15 of 15 strings)

Translated using Weblate (Spanish (Latin America))

Currently translated at 100.0% (47 of 47 strings)

Translated using Weblate (Spanish (Latin America))

Currently translated at 100.0% (247 of 247 strings)

Translated using Weblate (Japanese)

Currently translated at 98.2% (3381 of 3441 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (271 of 271 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (132 of 132 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (271 of 271 strings)

Translated using Weblate (Croatian)

Currently translated at 94.6% (125 of 132 strings)

Translated using Weblate (Indonesian)

Currently translated at 67.6% (2328 of 3441 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 36.0% (89 of 247 strings)

Translated using Weblate (Croatian)

Currently translated at 87.1% (115 of 132 strings)

Translated using Weblate (Croatian)

Currently translated at 75.7% (100 of 132 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (94 of 94 strings)

Translated using Weblate (Croatian)

Currently translated at 76.5% (72 of 94 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (189 of 189 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (193 of 193 strings)

Translated using Weblate (Croatian)

Currently translated at 72.3% (68 of 94 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (244 of 244 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (54 of 54 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (47 of 47 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (412 of 412 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (91 of 91 strings)

Translated using Weblate (Croatian)

Currently translated at 87.2% (213 of 244 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (284 of 284 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (284 of 284 strings)

Translated using Weblate (Croatian)

Currently translated at 97.8% (278 of 284 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (114 of 114 strings)

Translated using Weblate (Croatian)

Currently translated at 74.2% (98 of 132 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (13 of 13 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (58 of 58 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (22 of 22 strings)

Translated using Weblate (Croatian)

Currently translated at 83.8% (238 of 284 strings)

Translated using Weblate (Croatian)

Currently translated at 53.8% (147 of 273 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (56 of 56 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (271 of 271 strings)

Translated using Weblate (Croatian)

Currently translated at 53.1% (145 of 273 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (140 of 140 strings)

Translated using Weblate (Indonesian)

Currently translated at 98.5% (138 of 140 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (58 of 58 strings)

Translated using Weblate (Indonesian)

Currently translated at 74.0% (183 of 247 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (193 of 193 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (923 of 923 strings)

Translated using Weblate (Polish)

Currently translated at 92.0% (174 of 189 strings)

Translated using Weblate (Croatian)

Currently translated at 17.4% (43 of 247 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (111 of 111 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (167 of 167 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 90.7% (246 of 271 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (189 of 189 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (15 of 15 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (428 of 428 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (244 of 244 strings)

Translated using Weblate (Japanese)

Currently translated at 98.7% (244 of 247 strings)

Translated using Weblate (Portuguese)

Currently translated at 99.7% (921 of 923 strings)

Translated using Weblate (English (United Kingdom))

Currently translated at 98.7% (242 of 245 strings)

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (15 of 15 strings)

Translated using Weblate (Japanese)

Currently translated at 98.1% (3378 of 3441 strings)

Translated using Weblate (German)

Currently translated at 100.0% (247 of 247 strings)

Translated using Weblate (German)

Currently translated at 100.0% (15 of 15 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (15 of 15 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (15 of 15 strings)

Translated using Weblate (Japanese)

Currently translated at 97.9% (3372 of 3441 strings)

Translated using Weblate (Japanese)

Currently translated at 99.6% (859 of 862 strings)

Translated using Weblate (Japanese)

Currently translated at 98.5% (271 of 275 strings)

Co-authored-by: Ashlynn <ashlynn.samuella@gmail.com>
Co-authored-by: Avoren5 <avoren@tuta.io>
Co-authored-by: Darya Ya <yatsenwork@gmail.com>
Co-authored-by: Deleted User <noreply+1516@weblate.org>
Co-authored-by: Igor <777igor93@gmail.com>
Co-authored-by: Islamiati Yulia Mustikasari Lessy <yulizee5@gmail.com>
Co-authored-by: J Y <jasmin.kf.yee@gmail.com>
Co-authored-by: Jaime Martí <jaumemarti77@icloud.com>
Co-authored-by: Jalojin lovlv <jalojin138@lovleo.com>
Co-authored-by: Jan Freihöfer <jan.stauch.is@gmail.com>
Co-authored-by: Joshua Songmin H. L <joshuasongmin@outlook.com>
Co-authored-by: Laura Fleckenstein <fleckenstein_laura@web.de>
Co-authored-by: Marcus Chan <yeelok823@gmail.com>
Co-authored-by: Miroslav Denkov <habitica.exception900@passmail.net>
Co-authored-by: Raul Fogaça Sanches <raul.fsanches@hotmail.com>
Co-authored-by: Sergey Shevelev <vlkgamer45@gmail.com>
Co-authored-by: Sophie LE MASLE <sophiesuff@gmail.com>
Co-authored-by: Summer_GUI <heyang94@163.com>
Co-authored-by: The_Blood_Orc <stefan.trbojevic188@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: いんこ <ayakabooker@gmail.com>
Co-authored-by: 지유민 <wldbals03@gmail.com>
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/bg/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/id/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/character/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/character/id/
Translate-URL: https://translate.habitica.com/projects/habitica/character/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/id/
Translate-URL: https://translate.habitica.com/projects/habitica/content/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/es_419/
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/id/
Translate-URL: https://translate.habitica.com/projects/habitica/death/de/
Translate-URL: https://translate.habitica.com/projects/habitica/death/en_GB/
Translate-URL: https://translate.habitica.com/projects/habitica/death/es/
Translate-URL: https://translate.habitica.com/projects/habitica/death/es_419/
Translate-URL: https://translate.habitica.com/projects/habitica/death/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/death/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/death/id/
Translate-URL: https://translate.habitica.com/projects/habitica/death/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/death/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/death/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/de/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/en_GB/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/es_419/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/id/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/front/de/
Translate-URL: https://translate.habitica.com/projects/habitica/front/en_GB/
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/hr/
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/pl/
Translate-URL: https://translate.habitica.com/projects/habitica/front/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/front/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/en_GB/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/id/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/id/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/id/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/inventory/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/hr/
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/loginincentives/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/loginincentives/id/
Translate-URL: https://translate.habitica.com/projects/habitica/merch/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/messages/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/messages/id/
Translate-URL: https://translate.habitica.com/projects/habitica/noscript/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/id/
Translate-URL: https://translate.habitica.com/projects/habitica/overview/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/quests/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/rebirth/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/en_GB/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/spells/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/en_GB/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/id/
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/tasks/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/id/
Translation: Habitica/Achievements
Translation: Habitica/Backgrounds
Translation: Habitica/Challenge
Translation: Habitica/Character
Translation: Habitica/Communityguidelines
Translation: Habitica/Content
Translation: Habitica/Contrib
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/Loginincentives
Translation: Habitica/Merch
Translation: Habitica/Messages
Translation: Habitica/Noscript
Translation: Habitica/Npc
Translation: Habitica/Overview
Translation: Habitica/Pets
Translation: Habitica/Quests
Translation: Habitica/Questscontent
Translation: Habitica/Rebirth
Translation: Habitica/Settings
Translation: Habitica/Spells
Translation: Habitica/Subscriber
Translation: Habitica/Tasks
2025-11-05 06:25:23 +01:00
Fiz ac62de7bd8 Show orb of rebirth confirmation modal after use (window refresh) (#15540)
* fix(content): textual tweaks and updates

* fix(link): direct to FAQ instead of wiki

* fix(faq): correct Markdown

* Show orb of rebirth confirmation modal after use (window refresh)

* Set and check rebirth confirmation modal from localstorage

Set and check rebirth confirmation modal from localstorage after window reload

* Don't show orb of rebirth confirmation modal until page reloads

---------

Co-authored-by: Kalista Payne <kalista@habitica.com>
2025-11-04 15:38:10 -06:00
Phillip Thelen 5ff3cc35a6 Improvements to shadow muting (#15543)
* fix test wording

* make shadow mute work for dms

* shadow mute chat messages

* shadow mute invites

* oops

* refactor mute handling into middleware

* correctly throw error

* fix

* test(chat): expect errors when muted
Also fixes the Linux version in the mongo commands. Again. wtf

---------

Co-authored-by: Kalista Payne <kalista@habitica.com>
2025-11-04 15:35:56 -06:00
Kalista Payne 215e5e1c40 fix(reg): clarify email in use error 2025-10-30 18:23:22 -05:00
364 changed files with 8249 additions and 3504 deletions
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "habitica",
"version": "5.41.5",
"version": "5.43.4",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "habitica",
"version": "5.41.5",
"version": "5.43.4",
"hasInstallScript": true,
"dependencies": {
"@babel/core": "^7.22.10",
+3 -3
View File
@@ -1,7 +1,7 @@
{
"name": "habitica",
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
"version": "5.41.5",
"version": "5.43.4",
"main": "./website/server/index.js",
"dependencies": {
"@babel/core": "^7.22.10",
@@ -105,8 +105,8 @@
"start": "node --watch ./website/server/index.js",
"start:simple": "node ./website/server/index.js",
"debug": "node --watch --inspect ./website/server/index.js",
"mongo:dev": "run-rs -v 7.0.23 -l ubuntu2204 --keep --dbpath mongodb-data --number 1 --quiet",
"mongo:test": "run-rs -v 7.0.23 -l ubuntu2204 --keep --dbpath mongodb-data-testing --number 1 --quiet",
"mongo:dev": "run-rs -v 7.0.23 -l ubuntu2214 --keep --dbpath mongodb-data --number 1 --quiet",
"mongo:test": "run-rs -v 7.0.23 -l ubuntu2214 --keep --dbpath mongodb-data-testing --number 1 --quiet",
"postinstall": "git config --global url.\"https://\".insteadOf git:// && gulp build && cd website/client && npm install",
"apidoc": "gulp apidoc",
"heroku-postbuild": ".heroku/report_deploy.sh"
+19 -13
View File
@@ -9,7 +9,7 @@ import {
import {
SPAM_MIN_EXEMPT_CONTRIB_LEVEL,
} from '../../../../../website/server/models/group';
import { MAX_MESSAGE_LENGTH } from '../../../../../website/common/script/constants';
import { MAX_MESSAGE_LENGTH, CHAT_FLAG_FROM_SHADOW_MUTE } from '../../../../../website/common/script/constants';
import * as email from '../../../../../website/server/libs/email';
describe('POST /chat', () => {
@@ -80,17 +80,20 @@ describe('POST /chat', () => {
member.updateOne({ 'flags.chatRevoked': false });
});
it('does not error when chat privileges are revoked when sending a message to a private guild', async () => {
it('errors when chat privileges are revoked when sending a message to a private guild', async () => {
await member.updateOne({
'flags.chatRevoked': true,
});
const message = await member.post(`/groups/${groupWithChat._id}/chat`, { message: testMessage });
expect(message.message.id).to.exist;
await expect(member.post(`/groups/${groupWithChat._id}/chat`, { message: testMessage }))
.to.eventually.be.rejected.and.eql({
code: 401,
error: 'NotAuthorized',
message: t('chatPrivilegesRevoked'),
});
});
it('does not error when chat privileges are revoked when sending a message to a party', async () => {
it('errors when chat privileges are revoked when sending a message to a party', async () => {
const { group, members } = await createAndPopulateGroup({
groupDetails: {
name: 'Party',
@@ -106,9 +109,12 @@ describe('POST /chat', () => {
'auth.timestamps.created': new Date('2022-01-01'),
});
const message = await privatePartyMemberWithChatsRevoked.post(`/groups/${group._id}/chat`, { message: testMessage });
expect(message.message.id).to.exist;
await expect(privatePartyMemberWithChatsRevoked.post(`/groups/${group._id}/chat`, { message: testMessage }))
.to.eventually.be.rejected.and.eql({
code: 401,
error: 'NotAuthorized',
message: t('chatPrivilegesRevoked'),
});
});
});
@@ -123,7 +129,7 @@ describe('POST /chat', () => {
member.updateOne({ 'flags.chatShadowMuted': false });
});
it('creates a chat with zero flagCount when sending a message to a private guild', async () => {
it('creates a chat with flagCount set when sending a message to a private guild', async () => {
await member.updateOne({
'flags.chatShadowMuted': true,
});
@@ -131,10 +137,10 @@ describe('POST /chat', () => {
const message = await member.post(`/groups/${groupWithChat._id}/chat`, { message: testMessage });
expect(message.message.id).to.exist;
expect(message.message.flagCount).to.eql(0);
expect(message.message.flagCount).to.eql(CHAT_FLAG_FROM_SHADOW_MUTE);
});
it('creates a chat with zero flagCount when sending a message to a party', async () => {
it('creates a chat with flagCount set when sending a message to a party', async () => {
const { group, members } = await createAndPopulateGroup({
groupDetails: {
name: 'Party',
@@ -153,7 +159,7 @@ describe('POST /chat', () => {
const message = await userWithChatShadowMuted.post(`/groups/${group._id}/chat`, { message: testMessage });
expect(message.message.id).to.exist;
expect(message.message.flagCount).to.eql(0);
expect(message.message.flagCount).to.eql(CHAT_FLAG_FROM_SHADOW_MUTE);
});
});
@@ -61,6 +61,24 @@ describe('Post /groups/:groupId/invite', () => {
});
});
it('fakes sending an invite if user is shadow muted', async () => {
const inviterMuted = await inviter.updateOne({ 'flags.chatShadowMuted': true });
const userToInvite = await generateUser();
const response = await inviterMuted.post(`/groups/${group._id}/invite`, {
usernames: [userToInvite.auth.local.lowerCaseUsername],
});
expect(response).to.be.an('Array');
expect(response[0]).to.have.all.keys(['_id', 'id', 'name', 'inviter']);
expect(response[0]._id).to.be.a('String');
expect(response[0].id).to.eql(group._id);
expect(response[0].name).to.eql(groupName);
expect(response[0].inviter).to.eql(inviter._id);
await expect(userToInvite.get('/user'))
.to.eventually.not.have.nested.property('invitations.parties[0].id', group._id);
});
it('invites a user to a group by username', async () => {
const userToInvite = await generateUser();
@@ -209,6 +227,24 @@ describe('Post /groups/:groupId/invite', () => {
});
});
it('fakes sending an invite if user is shadow muted', async () => {
const inviterMuted = await inviter.updateOne({ 'flags.chatShadowMuted': true });
const userToInvite = await generateUser();
const response = await inviterMuted.post(`/groups/${group._id}/invite`, {
uuids: [userToInvite._id],
});
expect(response).to.be.an('Array');
expect(response[0]).to.have.all.keys(['_id', 'id', 'name', 'inviter']);
expect(response[0]._id).to.be.a('String');
expect(response[0].id).to.eql(group._id);
expect(response[0].name).to.eql(groupName);
expect(response[0].inviter).to.eql(inviter._id);
await expect(userToInvite.get('/user'))
.to.eventually.not.have.nested.property('invitations.parties[0].id', group._id);
});
it('invites a user to a group by uuid', async () => {
const userToInvite = await generateUser();
@@ -281,6 +317,19 @@ describe('Post /groups/:groupId/invite', () => {
});
});
it('fakes sending invite when inviter is shadow muted', async () => {
const inviterMuted = await inviter.updateOne({ 'flags.chatShadowMuted': true });
const res = await inviterMuted.post(`/groups/${group._id}/invite`, {
emails: [testInvite],
inviter: 'inviter name',
});
const updatedUser = await inviterMuted.sync();
expect(res).to.exist;
expect(updatedUser.invitesSent).to.eql(1);
});
it('returns an error when invite is missing an email', async () => {
await expect(inviter.post(`/groups/${group._id}/invite`, {
emails: [{ name: 'test' }],
@@ -405,6 +454,19 @@ describe('Post /groups/:groupId/invite', () => {
});
});
it('fakes sending an invite if user is shadow muted', async () => {
const inviterMuted = await inviter.updateOne({ 'flags.chatShadowMuted': true });
const newUser = await generateUser();
const invite = await inviterMuted.post(`/groups/${group._id}/invite`, {
uuids: [newUser._id],
emails: [{ name: 'test', email: 'test@habitica.com' }],
});
const invitedUser = await newUser.get('/user');
expect(invitedUser.invitations.parties[0]).to.not.exist;
expect(invite).to.exist;
});
it('invites users to a group by uuid and email', async () => {
const newUser = await generateUser();
const invite = await inviter.post(`/groups/${group._id}/invite`, {
@@ -47,7 +47,7 @@ describe('GET /inbox/messages', () => {
it('returns four messages when using page-query ', async () => {
const promises = [];
for (let i = 0; i < 10; i += 1) {
for (let i = 0; i < 50; i += 1) {
promises.push(user.post('/members/send-private-message', {
toUserId: user.id,
message: 'fourth',
@@ -43,7 +43,7 @@ describe('POST /members/send-private-message', () => {
});
});
it('returns error when to user has blocked the sender', async () => {
it('returns error when recipient has blocked the sender', async () => {
const receiver = await generateUser({ 'inbox.blocks': [userToSendMessage._id] });
await expect(userToSendMessage.post('/members/send-private-message', {
@@ -56,7 +56,7 @@ describe('POST /members/send-private-message', () => {
});
});
it('returns error when sender has blocked to user', async () => {
it('returns error when sender has blocked recipient', async () => {
const receiver = await generateUser();
const sender = await generateUser({ 'inbox.blocks': [receiver._id] });
@@ -70,7 +70,7 @@ describe('POST /members/send-private-message', () => {
});
});
it('returns error when to user has opted out of messaging', async () => {
it('returns error when recipient has opted out of messaging', async () => {
const receiver = await generateUser({ 'inbox.optOut': true });
await expect(userToSendMessage.post('/members/send-private-message', {
@@ -174,7 +174,7 @@ describe('POST /members/send-private-message', () => {
expect(notification.data.excerpt).to.equal(messageExcerpt);
});
it('allows admin to send when sender has blocked the admin', async () => {
it('allows admin to send when recipient has blocked the admin', async () => {
userToSendMessage = await generateUser({
'permissions.moderator': true,
});
@@ -202,7 +202,7 @@ describe('POST /members/send-private-message', () => {
expect(sendersMessageInSendersInbox).to.exist;
});
it('allows admin to send when to user has opted out of messaging', async () => {
it('allows admin to send when recipient has opted out of messaging', async () => {
userToSendMessage = await generateUser({
'permissions.moderator': true,
});
@@ -229,4 +229,58 @@ describe('POST /members/send-private-message', () => {
expect(sendersMessageInReceiversInbox).to.exist;
expect(sendersMessageInSendersInbox).to.exist;
});
describe('sender is shadow muted', () => {
beforeEach(async () => {
userToSendMessage = await generateUser({
'flags.chatShadowMuted': true,
});
});
it('does not save the message in the receiver inbox', async () => {
const receiver = await generateUser();
const response = await userToSendMessage.post('/members/send-private-message', {
message: messageToSend,
toUserId: receiver._id,
});
expect(response.message.uuid).to.equal(receiver._id);
const updatedReceiver = await receiver.get('/user');
const updatedSender = await userToSendMessage.get('/user');
const sendersMessageInReceiversInbox = _.find(
updatedReceiver.inbox.messages,
message => message.uuid === userToSendMessage._id && message.text === messageToSend,
);
const sendersMessageInSendersInbox = _.find(
updatedSender.inbox.messages,
message => message.uuid === receiver._id && message.text === messageToSend,
);
expect(sendersMessageInReceiversInbox).to.not.exist;
expect(sendersMessageInSendersInbox).to.exist;
});
it('does not save the message message twice if recipient is sender', async () => {
const response = await userToSendMessage.post('/members/send-private-message', {
message: messageToSend,
toUserId: userToSendMessage._id,
});
expect(response.message.uuid).to.equal(userToSendMessage._id);
const updatedSender = await userToSendMessage.get('/user');
const sendersMessageInSendersInbox = _.find(
updatedSender.inbox.messages,
message => message.uuid === userToSendMessage._id && message.text === messageToSend,
);
expect(sendersMessageInSendersInbox).to.exist;
expect(Object.keys(updatedSender.inbox.messages).length).to.equal(1);
});
});
});
@@ -65,6 +65,52 @@ describe('POST /user/auth/social', () => {
await expect(getProperty('users', response.id, 'profile.name')).to.eventually.equal('a google user');
});
it('includes sanitized version of provided username', async () => {
const response = await api.post(endpoint, {
authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase
network,
username: 'Google User Name',
});
await expect(getProperty('users', response.id, 'auth.local.username')).to.eventually.equal('GoogleUserName');
await expect(getProperty('users', response.id, 'auth.local.lowerCaseUsername')).to.eventually.equal('googleusername');
});
it('generates a random username if provided username contains only disallowed characters', async () => {
const response = await api.post(endpoint, {
authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase
network,
username: 'Áîüè',
});
await expect(getProperty('users', response.id, 'auth.local.username')).to.eventually.contain('hb-');
await expect(getProperty('users', response.id, 'auth.local.lowerCaseUsername')).to.eventually.contain('hb-');
});
it('generates a random username if provided username contains a disallowed word', async () => {
const response = await api.post(endpoint, {
authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase
network,
username: 'i am a TESTPLACEHOLDERSLURWORDHERE',
});
await expect(getProperty('users', response.id, 'auth.local.username')).to.eventually.contain('hb-');
await expect(getProperty('users', response.id, 'auth.local.lowerCaseUsername')).to.eventually.contain('hb-');
});
it('generates a random username if sanitized username conflicts with an extant user', async () => {
user = await generateUser({ 'auth.local.username': 'GoogleUserName' });
const response = await api.post(endpoint, {
authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase
network,
username: 'Google User Name',
});
await expect(getProperty('users', response.id, 'auth.local.username')).to.eventually.contain('hb-');
await expect(getProperty('users', response.id, 'auth.local.lowerCaseUsername')).to.eventually.contain('hb-');
});
it('fails if allowRegister is false and user does not exist', async () => {
await expect(api.post(endpoint, {
authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase
@@ -66,7 +66,7 @@ describe('GET /inbox/conversations', () => {
it('returns five messages when using page-query ', async () => {
const promises = [];
for (let i = 0; i < 10; i += 1) {
for (let i = 0; i < 50; i += 1) {
promises.push(user.post('/members/send-private-message', {
toUserId: user.id,
message: 'fourth',
@@ -1055,6 +1055,11 @@
width: 141px;
height: 147px;
}
.background_elegant_palace {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_elegant_palace.png');
width: 141px;
height: 147px;
}
.background_enchanted_music_room {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_enchanted_music_room.png');
width: 141px;
@@ -1751,6 +1756,11 @@
width: 141px;
height: 147px;
}
.background_nighttime_street_with_shops {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_nighttime_street_with_shops.png');
width: 141px;
height: 147px;
}
.background_ocean_sunrise {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_ocean_sunrise.png');
width: 141px;
@@ -2437,6 +2447,11 @@
width: 141px;
height: 147px;
}
.background_winter_desert_with_saguaros {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_winter_desert_with_saguaros.png');
width: 141px;
height: 147px;
}
.background_winter_fireworks {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_winter_fireworks.png');
width: 141px;
@@ -29455,6 +29470,11 @@
width: 60px;
height: 60px;
}
.back_armoire_harpsichord {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/back_armoire_harpsichord.png');
width: 114px;
height: 90px;
}
.body_armoire_clownsBowtie {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/body_armoire_clownsBowtie.png');
width: 114px;
@@ -29845,6 +29865,11 @@
width: 114px;
height: 90px;
}
.broad_armor_armoire_loneCowpokeOutfit {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_armoire_loneCowpokeOutfit.png');
width: 114px;
height: 90px;
}
.broad_armor_armoire_lunarArmor {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_armoire_lunarArmor.png');
width: 90px;
@@ -30480,6 +30505,11 @@
width: 114px;
height: 87px;
}
.head_armoire_loneCowpokeHat {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_armoire_loneCowpokeHat.png');
width: 114px;
height: 90px;
}
.head_armoire_lunarCrown {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_armoire_lunarCrown.png');
width: 90px;
@@ -30790,6 +30820,11 @@
width: 114px;
height: 90px;
}
.shield_armoire_doubleBass {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_armoire_doubleBass.png');
width: 114px;
height: 90px;
}
.shield_armoire_dragonTamerShield {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_armoire_dragonTamerShield.png');
width: 90px;
@@ -30995,6 +31030,11 @@
width: 90px;
height: 90px;
}
.shield_armoire_prettyPinkGiftBox {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_armoire_prettyPinkGiftBox.png');
width: 114px;
height: 90px;
}
.shield_armoire_ramHornShield {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_armoire_ramHornShield.png');
width: 90px;
@@ -31465,6 +31505,11 @@
width: 114px;
height: 90px;
}
.slim_armor_armoire_loneCowpokeOutfit {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_armoire_loneCowpokeOutfit.png');
width: 114px;
height: 90px;
}
.slim_armor_armoire_lunarArmor {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_armoire_lunarArmor.png');
width: 90px;
@@ -31760,6 +31805,11 @@
width: 114px;
height: 90px;
}
.weapon_armoire_bambooFlute {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_armoire_bambooFlute.png');
width: 114px;
height: 90px;
}
.weapon_armoire_barristerGavel {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_armoire_barristerGavel.png');
width: 90px;
@@ -32170,6 +32220,11 @@
width: 114px;
height: 90px;
}
.weapon_armoire_prettyPinkParasol {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_armoire_prettyPinkParasol.png');
width: 114px;
height: 90px;
}
.weapon_armoire_pushBroom {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_armoire_pushBroom.png');
width: 114px;
@@ -34060,6 +34115,46 @@
width: 90px;
height: 90px;
}
.back_mystery_202601 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/back_mystery_202601.png');
width: 114px;
height: 90px;
}
.back_mystery_202602 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/back_mystery_202602.png');
width: 114px;
height: 90px;
}
.broad_armor_mystery_202512 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_mystery_202512.png');
width: 114px;
height: 90px;
}
.head_mystery_202512 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_mystery_202512.png');
width: 114px;
height: 90px;
}
.head_mystery_202602 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_mystery_202602.png');
width: 114px;
height: 90px;
}
.slim_armor_mystery_202512 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_mystery_202512.png');
width: 114px;
height: 90px;
}
.weapon_mystery_202512 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_mystery_202512.png');
width: 114px;
height: 90px;
}
.weapon_mystery_202601 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_mystery_202601.png');
width: 114px;
height: 90px;
}
.back_mystery_201402 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/back_mystery_201402.png');
width: 90px;
@@ -38640,6 +38735,26 @@
width: 114px;
height: 90px;
}
.broad_armor_special_winter2026Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_winter2026Healer.png');
width: 114px;
height: 90px;
}
.broad_armor_special_winter2026Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_winter2026Mage.png');
width: 114px;
height: 90px;
}
.broad_armor_special_winter2026Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_winter2026Rogue.png');
width: 117px;
height: 120px;
}
.broad_armor_special_winter2026Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_winter2026Warrior.png');
width: 114px;
height: 90px;
}
.broad_armor_special_yeti {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_yeti.png');
width: 90px;
@@ -38935,6 +39050,26 @@
width: 114px;
height: 90px;
}
.head_special_winter2026Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_winter2026Healer.png');
width: 114px;
height: 90px;
}
.head_special_winter2026Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_winter2026Mage.png');
width: 114px;
height: 90px;
}
.head_special_winter2026Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_winter2026Rogue.png');
width: 117px;
height: 120px;
}
.head_special_winter2026Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_winter2026Warrior.png');
width: 114px;
height: 90px;
}
.head_special_yeti {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_yeti.png');
width: 90px;
@@ -39115,6 +39250,21 @@
width: 114px;
height: 90px;
}
.shield_special_winter2026Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_special_winter2026Healer.png');
width: 114px;
height: 90px;
}
.shield_special_winter2026Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_special_winter2026Rogue.png');
width: 117px;
height: 120px;
}
.shield_special_winter2026Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_special_winter2026Warrior.png');
width: 114px;
height: 90px;
}
.shield_special_yeti {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_special_yeti.png');
width: 90px;
@@ -39355,6 +39505,26 @@
width: 114px;
height: 90px;
}
.slim_armor_special_winter2026Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_winter2026Healer.png');
width: 114px;
height: 90px;
}
.slim_armor_special_winter2026Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_winter2026Mage.png');
width: 114px;
height: 90px;
}
.slim_armor_special_winter2026Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_winter2026Rogue.png');
width: 117px;
height: 120px;
}
.slim_armor_special_winter2026Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_winter2026Warrior.png');
width: 114px;
height: 90px;
}
.slim_armor_special_yeti {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_yeti.png');
width: 90px;
@@ -39595,6 +39765,26 @@
width: 114px;
height: 90px;
}
.weapon_special_winter2026Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_winter2026Healer.png');
width: 114px;
height: 90px;
}
.weapon_special_winter2026Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_winter2026Mage.png');
width: 114px;
height: 90px;
}
.weapon_special_winter2026Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_winter2026Rogue.png');
width: 117px;
height: 120px;
}
.weapon_special_winter2026Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_winter2026Warrior.png');
width: 114px;
height: 90px;
}
.weapon_special_yeti {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_yeti.png');
width: 90px;
File diff suppressed because it is too large Load Diff
@@ -311,7 +311,7 @@
<input
id="passwordInput"
v-model="password"
class="form-control input-with-error"
class="form-control dark input-with-error"
type="password"
:placeholder="$t('password')"
:class="{'input-invalid': passwordInvalid, 'input-valid': passwordValid}"
@@ -323,7 +323,7 @@
{{ $t('minPasswordLength') }}
</div>
</div>
<div class="form-group">
<div class="form-group mb-4">
<label
v-once
for="confirmPasswordInput"
@@ -331,7 +331,7 @@
<input
id="confirmPasswordInput"
v-model="passwordConfirm"
class="form-control input-with-error"
class="form-control dark input-with-error"
type="password"
:placeholder="$t('confirmPasswordPlaceholder')"
:class="{'input-invalid': passwordConfirmInvalid, 'input-valid': passwordConfirmValid}"
@@ -344,13 +344,14 @@
</div>
</div>
<div class="text-center">
<div
class="btn btn-info"
:enabled="!resetPasswordSetNewOneData.hasError"
<button
class="btn btn-info w-100"
:disabled="!password || !passwordConfirm
|| password !== passwordConfirm || resetPasswordSetNewOneData.hasError"
@click="resetPasswordSetNewOneLink()"
>
{{ $t('setNewPass') }}
</div>
</button>
</div>
</form>
</div>
@@ -672,7 +673,7 @@ export default {
this.login();
},
async forgotPasswordLink () {
forgotPasswordLink: debounce(async function forgotPassLink () {
if (!this.username) {
window.alert(this.$t('missingEmail')); // eslint-disable-line no-alert
return;
@@ -683,7 +684,7 @@ export default {
});
window.alert(this.$t('newPassSent')); // eslint-disable-line no-alert
},
}, 500),
async resetPasswordSetNewOneLink () {
if (!this.password) {
window.alert(this.$t('missingNewPassword')); // eslint-disable-line no-alert
@@ -52,17 +52,21 @@
<div
v-if="!group.purchased.plan.dateTerminated
&& group.purchased.plan.paymentMethod === 'Stripe'"
class="btn btn-primary"
class="btn btn-primary mb-3"
@click="redirectToStripeEdit({groupId: group.id})"
>
{{ $t('subUpdateCard') }}
</div>
<div
v-if="!group.purchased.plan.dateTerminated"
class="btn btn-sm btn-danger"
@click="cancelSubscriptionConfirm({group: group})"
>
{{ $t('cancelGroupSub') }}
<div v-if="!group.purchased.plan.dateTerminated">
<div class="small gray-50 mb-3" v-once>
{{ $t('groupPlanBillingFYIShort') }}
</div>
<div
class="btn btn-sm btn-danger"
@click="cancelSubscriptionConfirm({group: group})"
>
{{ $t('cancelGroupSub') }}
</div>
</div>
</div>
</div>
@@ -1,8 +1,8 @@
<template>
<div
class="banner d-flex align-items-center justify-content-between py-3 px-4"
id="privacy-banner"
v-if="!hidden"
id="privacy-banner"
class="banner d-flex align-items-center justify-content-between py-3 px-4"
>
<p
class="mr-3 mb-0"
@@ -34,7 +34,7 @@
>
<div
class="close-x"
@click="remove()"
@click.stop="remove()"
>
<div
class="svg-icon svg-close"
@@ -140,7 +140,7 @@ export default {
methods: {
remove () {
if (this.eventKey) {
window.sessionStorage.setItem(`hide-g1g1-${this.eventKey}`, 'true');
window.localStorage.setItem(`hide-g1g1-${this.eventKey}`, 'true');
}
this.$emit('notification-removed');
},
@@ -318,7 +318,7 @@ export default {
shouldShowG1g1 () {
if (!this.currentG1g1Event) return false;
const eventKey = this.g1g1EventKey;
if (eventKey && window.sessionStorage.getItem(`hide-g1g1-${eventKey}`) === 'true') {
if (eventKey && window.localStorage.getItem(`hide-g1g1-${eventKey}`) === 'true') {
return false;
}
return !this.g1g1Hidden;
@@ -491,6 +491,9 @@ export default {
},
methods: {
mapProfileLinksToModal () {
if (!this.$refs?.markdownContainer) {
return;
}
const links = this.$refs.markdownContainer.getElementsByTagName('a');
for (let i = 0; i < links.length; i += 1) {
let link = links[i].pathname;
@@ -328,6 +328,8 @@ export default {
alreadyReadNotification,
nextCron: null,
handledNotifications,
isInitialLoadComplete: false,
pendingRebirthNotification: null,
};
},
computed: {
@@ -453,6 +455,18 @@ export default {
return this.runYesterDailies();
},
async showPendingRebirthModal () {
if (this.pendingRebirthNotification) {
this.playSound('Achievement_Unlocked');
this.$root.$emit('bv::show::modal', 'rebirth');
await axios.post('/api/v4/notifications/read', {
notificationIds: [this.pendingRebirthNotification.id],
});
this.pendingRebirthNotification = null;
}
},
showDeathModal () {
this.playSound('Death');
this.$root.$emit('bv::show::modal', 'death');
@@ -661,6 +675,18 @@ export default {
this.showLevelUpNotifications(this.user.stats.lvl);
}
this.handleUserNotifications(this.user.notifications);
this.isInitialLoadComplete = true;
const hasRebirthConfirmationFlag = localStorage.getItem('show-rebirth-confirmation') === 'true';
if (hasRebirthConfirmationFlag) {
localStorage.removeItem('show-rebirth-confirmation');
this.playSound('Achievement_Unlocked');
this.$root.$emit('bv::show::modal', 'rebirth');
} else {
this.showPendingRebirthModal();
}
},
async handleUserNotifications (after) {
if (this.$store.state.isRunningYesterdailies) return;
@@ -700,8 +726,15 @@ export default {
this.$root.$emit('habitica:won-challenge', notification);
break;
case 'REBIRTH_ACHIEVEMENT':
this.playSound('Achievement_Unlocked');
this.$root.$emit('bv::show::modal', 'rebirth');
if (localStorage.getItem('show-rebirth-confirmation') === 'true') {
markAsRead = false;
} else if (!this.isInitialLoadComplete) {
this.pendingRebirthNotification = notification;
markAsRead = false;
} else {
this.playSound('Achievement_Unlocked');
this.$root.$emit('bv::show::modal', 'rebirth');
}
break;
case 'STREAK_ACHIEVEMENT':
this.text(`${this.$t('streaks')}: ${this.user.achievements.streak}`, () => {
@@ -105,7 +105,7 @@ export default {
},
data () {
return {
privacyConsent: true,
privacyConsent: false,
};
},
methods: {
@@ -189,6 +189,7 @@
>
</p>
<div
v-if="paymentMethodLogo.icon"
class="svg svg-icon mb-4"
:class="paymentMethodLogo.class"
v-html="paymentMethodLogo.icon"
@@ -205,6 +206,13 @@
<div>{{ $t('subUpdateCard') }}</div>
</button>
</div>
<div
v-once
v-if="!hasGroupPlan"
class="small text-center mb-4"
>
{{ $t('subscriptionBillingFYIShort') }}
</div>
<div
v-if="purchasedPlanExtraMonthsDetails.months > 0"
class="extra-months green-10 py-2 px-3 mb-4"
@@ -407,6 +415,13 @@
<div class="purple-bar my-auto"></div>
</div>
<div class="d-flex flex-column align-items-center mt-3">
<div
v-once
v-if="!hasSubscription"
class="small gray-100 w-50 text-center mb-5"
>
{{ $t('subscriptionBillingFYI') }}
</div>
<div
v-once
class="svg-icon svg-gift-box mb-2"
@@ -631,7 +646,7 @@
background-color: $purple-400;
height: 1px;
width: 50%;
max-width: 432px;
max-width: 417px;
}
.purple-gradient {
@@ -654,6 +669,12 @@
margin-bottom: 16px;
}
.small {
font-size: 12px;
line-height: 1.67;
max-width: 874px;
}
.stats-card {
border-radius: 8px;
width: 192px;
@@ -851,10 +851,17 @@ export default {
- ownedMounts
- ownedItems;
if (
petsRemaining < 0
&& !window.confirm(this.$t('purchasePetItemConfirm', { itemText: this.item.text })) // eslint-disable-line no-alert
) return;
if (petsRemaining < 0) {
const confirmed = await new Promise(resolve => {
this.$root.$emit('habitica:purchase-confirm', {
message: this.$t('purchasePetItemConfirm', { itemText: this.item.text }),
currency: this.item.currency,
cost: this.item.value * this.selectedAmountToBuy,
resolve,
});
});
if (!confirmed) return;
}
}
if (this.item.purchaseType === 'customization') {
@@ -866,15 +873,23 @@ export default {
this.purchased(this.item.text);
} else {
const shouldConfirmPurchase = this.item.currency === 'gems' || this.item.currency === 'hourglasses';
if (
shouldConfirmPurchase
&& !this.confirmPurchase(this.item.currency, this.item.value * this.selectedAmountToBuy)
) {
return;
if (shouldConfirmPurchase) {
const confirmed = await this.confirmPurchase(
this.item.currency,
this.item.value * this.selectedAmountToBuy,
);
if (!confirmed) {
return;
}
}
if (this.genericPurchase) {
if (this.item.key === 'rebirth_orb') {
localStorage.setItem('show-rebirth-confirmation', 'true');
}
await this.makeGenericPurchase(this.item, 'buyModal', this.selectedAmountToBuy);
await this.purchased(this.item.text);
if (this.item.key !== 'rebirth_orb') {
await this.purchased(this.item.text);
}
}
}
@@ -0,0 +1,207 @@
<template>
<b-modal
id="purchase-confirm-modal"
:hide-footer="true"
:hide-header="true"
modal-class="purchase-confirm-modal"
centered
>
<div class="modal-content-wrapper">
<div class="top-bar"></div>
<div class="modal-body-content">
<div
class="currency-chip"
:class="currency"
>
<span
class="svg-icon icon-24"
v-html="icons[currency]"
></span>
<span class="cost-value">{{ cost }}</span>
</div>
<h2 class="modal-title">
{{ $t('confirmPurchase') }}
</h2>
<p class="modal-subtitle">
{{ confirmationMessage }}
</p>
<div class="button-wrapper">
<button
class="btn btn-primary"
@click="confirm()"
>
{{ $t('confirm') }}
</button>
<button
class="btn-cancel"
@click="cancel()"
>
{{ $t('cancel') }}
</button>
</div>
</div>
</div>
</b-modal>
</template>
<script>
import svgGem from '@/assets/svg/gem.svg?raw';
import svgHourglass from '@/assets/svg/hourglass.svg?raw';
export default {
data () {
return {
confirmationMessage: '',
currency: 'gems',
cost: 0,
resolveCallback: null,
icons: Object.freeze({
gems: svgGem,
hourglasses: svgHourglass,
}),
};
},
mounted () {
this.$root.$on('habitica:purchase-confirm', config => {
this.confirmationMessage = config.message;
this.currency = config.currency || 'gems';
this.cost = config.cost || 0;
this.resolveCallback = config.resolve;
this.$root.$emit('bv::show::modal', 'purchase-confirm-modal');
});
},
beforeDestroy () {
this.$root.$off('habitica:purchase-confirm');
},
methods: {
confirm () {
if (this.resolveCallback) {
this.resolveCallback(true);
}
this.close();
},
cancel () {
if (this.resolveCallback) {
this.resolveCallback(false);
}
this.close();
},
close () {
this.$root.$emit('bv::hide::modal', 'purchase-confirm-modal');
},
},
};
</script>
<style lang="scss" scoped>
@import '@/assets/scss/colors.scss';
::v-deep .purchase-confirm-modal {
.modal-dialog {
max-width: 330px;
margin: auto;
}
.modal-content {
border-radius: 8px;
overflow: hidden;
border: none;
}
.modal-body {
padding: 0;
}
}
.modal-content-wrapper {
display: flex;
flex-direction: column;
}
.top-bar {
height: 8px;
background-color: $purple-300;
}
.modal-body-content {
display: flex;
flex-direction: column;
align-items: center;
padding: 0 24px 24px;
}
.currency-chip {
display: flex;
align-items: center;
gap: 8px;
margin-top: 40px;
padding: 8px 20px;
border-radius: 20px;
font-size: 1.25rem;
font-weight: bold;
line-height: 1.4;
&.gems {
color: $gems-color;
background-color: rgba($green-10, 0.15);
}
&.hourglasses {
color: $hourglass-color;
background-color: rgba($blue-10, 0.15);
}
.icon-24 {
width: 24px;
height: 24px;
}
}
.modal-title {
margin-top: 16px;
margin-bottom: 0;
color: $purple-300;
font-family: 'Roboto Condensed', sans-serif;
font-weight: 700;
font-size: 20px;
text-align: center;
}
.modal-subtitle {
margin-top: 12px;
margin-bottom: 0;
font-family: Roboto, sans-serif;
font-weight: 700;
font-size: 14px;
line-height: 24px;
letter-spacing: 0;
text-align: center;
color: $gray-50;
}
.button-wrapper {
display: flex;
flex-direction: column;
align-items: center;
width: 100%;
margin-top: 16px;
gap: 8px;
}
.btn-cancel {
background: none;
border: none;
color: $purple-300;
font-family: Roboto, sans-serif;
font-weight: 400;
font-size: 14px;
line-height: 24px;
letter-spacing: 0;
cursor: pointer;
padding: 8px 16px;
&:hover {
text-decoration: underline;
}
}
</style>
@@ -510,8 +510,12 @@ export default {
this.selectedAmountToBuy = 1;
this.$emit('change', $event);
},
buyItem () {
if (!this.confirmPurchase(this.item.currency, this.item.value * this.selectedAmountToBuy)) {
async buyItem () {
const confirmed = await this.confirmPurchase(
this.item.currency,
this.item.value * this.selectedAmountToBuy,
);
if (!confirmed) {
return;
}
this.makeGenericPurchase(this.item, 'buyQuestModal', this.selectedAmountToBuy);
@@ -45,6 +45,9 @@
<p class="gray-200">
{{ $t('billedMonthly') }}
</p>
<small class="gray-200">
{{ $t('groupPlanBillingFYI') }}
</small>
</div>
<div class="top-right"></div>
<div class="d-flex justify-content-between align-items-middle w-100 gap-72 mb-100">
@@ -114,6 +117,9 @@
<p class="gray-200">
{{ $t('billedMonthly') }}
</p>
<small class="gray-200">
{{ $t('groupPlanBillingFYI') }}
</small>
</div>
<div class="bot-right"></div>
</div>
@@ -174,6 +180,11 @@
line-height: 28px;
}
small {
font-size: 12px;
line-height: 1.67;
}
// Major layout elements
.bottom-banner {
@@ -11,12 +11,12 @@
<privacy-banner
class="privacy-banner"
/>
<div class="bg-purple-300 white">
<div class="bg-purple-300 white pt-5">
<div>
<div
id="intro-signup"
>
<div class="d-flex justify-content-center">
<div class="d-flex justify-content-center pb-5 mb-5">
<div class="w-33 mr-5 mt-5">
<img
src="@/assets/images/home/home-main@3x.png"
@@ -64,9 +64,11 @@
<li>sexual orientation; and</li>
<li>information collected from a known child.</li>
</ul>
<p><strong>
NOTE: Please do not provide us sensitive personal information or sensitive personal data, as those terms are defined under applicable privacy laws, unless we directly request that you do so. If you feel, after careful consideration, that it is necessary to provide us certain sensitive personal information or data, please provide us the minimum amount of such information or data that is necessary.
</strong></p>
<p>
<strong>
NOTE: Please do not provide us sensitive personal information or sensitive personal data, as those terms are defined under applicable privacy laws, unless we directly request that you do so. If you feel, after careful consideration, that it is necessary to provide us certain sensitive personal information or data, please provide us the minimum amount of such information or data that is necessary.
</strong>
</p>
<h3 id="section_1_1">
1.1 Information You Provide Directly
</h3>
@@ -617,7 +619,7 @@
7. General Audience Services
</h2>
<p>
The Service is intended for users 18 years or older; you are not permitted to access or use the Service if you are younger than 18. We do not knowingly collect personal information from children under the age of 18 through the Service. We encourage parents and legal guardians to monitor their childrens Internet usage and to help enforce our Privacy Policy by instructing their children to never provide personal information without their permission. If you have reason to believe that a child under the age of 18 has provided personal information to us, please contact us at <a href='mailto:privacy@habitica.com'>privacy@habitica.com</a>, and we will delete that information from our databases.
The Service is intended for users 18 years or older; you are not permitted to access or use the Service if you are younger than 18. We do not knowingly collect personal information from children under the age of 18 through the Service. We encourage parents and legal guardians to monitor their childrens Internet usage and to help enforce our Privacy Policy by instructing their children to never provide personal information without their permission. If you have reason to believe that a child under the age of 18 has provided personal information to us, please contact us at <a href="mailto:privacy@habitica.com">privacy@habitica.com</a>, and we will delete that information from our databases.
</p>
<h2 id="section_8">
@@ -708,7 +710,7 @@
<p><strong><u>Nevada Residents</u></strong></p>
<p>
Nevada residents may opt out of the sale of certain “covered information” collected by operators of websites or online services. We currently do not sell covered information, as “sale” is defined by such law, and do not have plans to do so. In accordance with Nevada law, you may submit to us a verified request instructing us not to sell your covered information by sending an email to <a href='mailto:privacy@habitica.com'>privacy@habitica.com</a>.
Nevada residents may opt out of the sale of certain “covered information” collected by operators of websites or online services. We currently do not sell covered information, as “sale” is defined by such law, and do not have plans to do so. In accordance with Nevada law, you may submit to us a verified request instructing us not to sell your covered information by sending an email to <a href="mailto:privacy@habitica.com">privacy@habitica.com</a>.
</p>
<p><strong><u>Notice to United Kingdom/European/Switzerland Residents.</u></strong></p>
<p>
@@ -15,8 +15,8 @@
<router-view />
</div>
<div
id="bottom-background"
v-if="loginFlow"
id="bottom-background"
class="bg-purple-300"
>
<div class="seamless_mountains_demo_repeat"></div>
@@ -31,7 +31,10 @@
id="bottom-wrap"
class="purple-4"
>
<div id="bottom-background" v-if="!loginFlow">
<div
v-if="!loginFlow"
id="bottom-background"
>
<div class="seamless_mountains_demo_repeat"></div>
<div class="midground_foreground_extended2"></div>
</div>
@@ -104,9 +107,10 @@
footer, footer a {
background: transparent;
color: $purple-500;
&:hover {
color: $white;
}
}
footer a:hover {
color: $white;
}
h3 {
@@ -117,10 +121,6 @@
border-top-color: $purple-100;
}
.donate-text {
color: $purple-500;
}
.logo {
color: $purple-300;
}
@@ -129,42 +129,27 @@
color: $purple-500;
}
.social .d-flex:hover {
a {
color: $white;
}
svg {
fill: $white;
}
}
.social-circle {
background: $purple-50;
color: $purple-500;
.instagram svg {
svg {
background-color: $purple-50;
fill: $purple-500;
&:hover {
fill: $white;
}
}
.bluesky svg {
background-color: $purple-50;
fill: $purple-500;
&:hover {
fill: $white;
}
}
.facebook svg {
background-color: $purple-50;
fill: $purple-500;
&:hover {
fill: $white;
}
}
.tumblr svg {
background-color: $purple-50;
fill: $purple-500;
&:hover {
fill: $white;
}
width: 24px;
height: 24px;
}
}
.btn-contribute {
background: $white;
box-shadow: none;
@@ -274,7 +259,8 @@ export default {
return 'purple-footer';
},
loginFlow () {
return ['login', 'register', 'username'].indexOf(this.$route.name) !== -1;
const loginRoutes = ['forgotPassword', 'login', 'register', 'resetPassword', 'username'];
return loginRoutes.indexOf(this.$route.name) !== -1;
},
showContentWrap () {
return this.$route.name !== 'news';
@@ -158,7 +158,7 @@
BY PURCHASING PREMIUM YOU EXPRESSLY UNDERSTAND AND AGREE TO OUR REFUND POLICY:
</p>
<p>
YOU CAN REQUEST A REFUND OF YOUR MOST RECENT PAYMENT TO US BY CONTACTING US AT <a href='mailto:admin@habitica.com'>ADMIN@HABITICA.COM</a>. THE AMOUNT OF YOUR REFUND, IF ANY, WILL BE BASED ON (1) THE AMOUNT OF YOUR PURCHASED BUT UNUSED SUBSCRIPTION BENEFITS AND (2) THE TERMS IMPOSED ON US BY OUR PAYMENT PROCESSING VENDORS (E.G., WITH RESPECT TO THE DURATION OF THE REFUND PERIOD).
YOU CAN REQUEST A REFUND OF YOUR MOST RECENT PAYMENT TO US BY CONTACTING US AT <a href="mailto:admin@habitica.com">ADMIN@HABITICA.COM</a>. THE AMOUNT OF YOUR REFUND, IF ANY, WILL BE BASED ON (1) THE AMOUNT OF YOUR PURCHASED BUT UNUSED SUBSCRIPTION BENEFITS AND (2) THE TERMS IMPOSED ON US BY OUR PAYMENT PROCESSING VENDORS (E.G., WITH RESPECT TO THE DURATION OF THE REFUND PERIOD).
</p>
<p>
FOR ANY CUSTOMER WHO PURCHASED PREMIUM IN APPLE INC.'s APP STORE ("APP STORE"), PLEASE CONTACT APPLE INC.'s SUPPORT TEAM: <a
@@ -1,65 +1,45 @@
<template>
<b-modal
id="broken-task-modal"
title="Broken Challenge"
size="sm"
:hide-footer="true"
:hide-header="true"
modal-class="broken-task-confirm-modal"
centered
>
<div
v-if="brokenChallengeTask && brokenChallengeTask.challenge"
class="modal-body"
class="modal-content-wrapper"
>
<div
v-if="brokenChallengeTask.challenge.broken === 'TASK_DELETED'
|| brokenChallengeTask.challenge.broken === 'CHALLENGE_TASK_NOT_FOUND'"
>
<h2>{{ $t('brokenTask') }}</h2>
<div>
<div class="top-bar"></div>
<div class="modal-body-content">
<div
class="icon-wrapper"
v-html="icons.alertIcon"
></div>
<h2 class="modal-title">
{{ modalTitle }}
</h2>
<p class="modal-subtitle">
{{ modalSubtitle }}
</p>
<div class="button-wrapper">
<button
class="btn btn-primary"
@click="unlink('keep')"
@click="keepAction()"
>
{{ $t('keepIt') }}
{{ keepButtonText }}
</button>
<button
class="btn btn-danger"
@click="removeTask(obj)"
@click="removeAction()"
>
{{ $t('removeIt') }}
</button>
</div>
</div>
<div v-if="brokenChallengeTask.challenge.broken === 'CHALLENGE_DELETED'">
<h2>{{ $t('brokenChallenge') }}</h2>
<div>
<button
class="btn btn-primary"
@click="unlink('keep-all')"
>
{{ $t('keepTasks') }}
{{ removeButtonText }}
</button>
<button
class="btn btn-danger"
@click="unlink('remove-all')"
class="btn-cancel"
@click="close()"
>
{{ $t('removeTasks') }}
</button>
</div>
</div>
<div v-if="brokenChallengeTask.challenge.broken === 'CHALLENGE_CLOSED'">
<h2 v-html="$t('challengeCompleted', {user: brokenChallengeTask.challenge.winner})"></h2>
<div>
<button
class="btn btn-primary"
@click="unlink('keep-all')"
>
{{ $t('keepTasks') }}
</button>
<button
class="btn btn-danger"
@click="unlink('remove-all')"
>
{{ $t('removeTasks') }}
{{ $t('cancel') }}
</button>
</div>
</div>
@@ -67,23 +47,175 @@
</b-modal>
</template>
<style scoped>
.modal-body {
padding-bottom: 2em;
<style lang="scss" scoped>
@import '@/assets/scss/colors.scss';
::v-deep .broken-task-confirm-modal {
.modal-dialog {
max-width: 330px;
margin: auto;
}
.modal-content {
border-radius: 8px;
overflow: hidden;
border: none;
}
.modal-body {
padding: 0;
}
}
.modal-content-wrapper {
display: flex;
flex-direction: column;
}
.top-bar {
height: 8px;
background-color: $maroon-100;
}
.modal-body-content {
display: flex;
flex-direction: column;
align-items: center;
padding: 0 24px 24px;
}
.icon-wrapper {
margin-top: 40px;
width: 48px;
height: 48px;
::v-deep svg {
width: 48px;
height: 48px;
path {
fill: #DE3F3F;
}
}
}
.modal-title {
margin-top: 16px;
margin-bottom: 0;
color: $maroon-100;
font-family: 'Roboto Condensed', sans-serif;
font-weight: 700;
font-size: 20px;
text-align: center;
}
.modal-subtitle {
margin-top: 12px;
margin-bottom: 0;
font-family: Roboto, sans-serif;
font-weight: 400;
font-size: 14px;
line-height: 24px;
letter-spacing: 0;
text-align: center;
color: $gray-50;
}
.button-wrapper {
display: flex;
flex-direction: column;
align-items: center;
width: 100%;
margin-top: 16px;
gap: 8px;
}
.btn-cancel {
background: none;
border: none;
color: $purple-300;
font-family: Roboto, sans-serif;
font-weight: 400;
font-size: 14px;
line-height: 24px;
letter-spacing: 0;
cursor: pointer;
padding: 8px 16px;
&:hover {
text-decoration: underline;
}
}
</style>
<script>
import { mapActions } from '@/libs/store';
import notifications from '@/mixins/notifications';
import alertIcon from '@/assets/svg/for-css/alert.svg?raw';
export default {
mixins: [notifications],
data () {
return {
brokenChallengeTask: {},
icons: Object.freeze({
alertIcon,
}),
};
},
computed: {
brokenType () {
return this.brokenChallengeTask.challenge?.broken;
},
isSingleTask () {
return this.brokenType === 'TASK_DELETED'
|| this.brokenType === 'CHALLENGE_TASK_NOT_FOUND';
},
brokenChallengeTaskCount () {
if (!this.brokenChallengeTask.challenge?.id) return 0;
const challengeId = this.brokenChallengeTask.challenge.id;
const tasksData = this.$store.state.tasks.data;
let count = 0;
['habits', 'dailys', 'todos', 'rewards'].forEach(type => {
if (tasksData[type]) {
count += tasksData[type].filter(
t => t.challenge && t.challenge.id === challengeId,
).length;
}
});
return count;
},
modalTitle () {
if (this.isSingleTask) {
return this.$t('brokenTask');
}
if (this.brokenType === 'CHALLENGE_CLOSED') {
return this.$t('challengeCompleted');
}
return this.$t('brokenChallenge');
},
modalSubtitle () {
if (this.isSingleTask) {
return this.$t('brokenTaskDescription');
}
if (this.brokenType === 'CHALLENGE_CLOSED') {
return this.$t('challengeCompletedDescription', { user: this.brokenChallengeTask.challenge?.winner });
}
return this.$t('brokenChallengeDescription');
},
keepButtonText () {
if (this.isSingleTask) {
return this.$t('keepIt');
}
return this.$t('keepTasks');
},
removeButtonText () {
if (this.isSingleTask) {
return this.$t('removeIt');
}
return this.$t('removeTasks');
},
},
mounted () {
this.$root.$on('handle-broken-task', task => {
this.brokenChallengeTask = { ...task };
@@ -99,8 +231,36 @@ export default {
unlinkOneTask: 'tasks:unlinkOneTask',
unlinkAllTasks: 'tasks:unlinkAllTasks',
}),
keepAction () {
if (this.isSingleTask) {
this.unlink('keep');
} else {
this.unlink('keep-all');
}
},
async removeAction () {
if (this.isSingleTask) {
await this.removeTask();
} else {
await this.unlink('remove-all');
}
},
async unlink (keepOption) {
if (keepOption.indexOf('-all') !== -1) {
if (keepOption === 'remove-all') {
const count = this.brokenChallengeTaskCount;
const confirmed = await new Promise(resolve => {
this.$root.$emit('habitica:delete-task-confirm', {
title: count === 1 ? this.$t('deleteTask') : this.$t('deleteXTasks', { count }),
description: this.$t('brokenChallengeTaskCount', { count }),
message: this.$t('confirmDeleteTasks'),
buttonText: count === 1 ? this.$t('deleteTask') : this.$t('deleteXTasks', { count }),
resolve,
});
});
if (!confirmed) return;
}
await this.unlinkAllTasks({
challengeId: this.brokenChallengeTask.challenge.id,
keep: keepOption,
@@ -122,8 +282,14 @@ export default {
});
this.close();
},
removeTask () {
if (!window.confirm('Are you sure you want to delete this task?')) return; // eslint-disable-line no-alert
async removeTask () {
const confirmed = await new Promise(resolve => {
this.$root.$emit('habitica:delete-task-confirm', {
message: this.$t('sureDelete'),
resolve,
});
});
if (!confirmed) return;
this.destroyTask(this.brokenChallengeTask);
this.close();
},
@@ -87,7 +87,7 @@
ref="tasksList"
class="sortable-tasks"
:disabled="activeFilter.label === 'scheduled' || !canBeDragged()"
scrollSensitivity="64"
scroll-sensitivity="64"
:delay-on-touch-only="true"
:delay="100"
@update="taskSorted"
@@ -0,0 +1,223 @@
<template>
<b-modal
id="delete-task-confirm-modal"
:hide-footer="true"
:hide-header="true"
modal-class="delete-confirm-modal"
centered
>
<div class="modal-content-wrapper">
<div class="top-bar"></div>
<div class="modal-body-content">
<div
class="icon-wrapper"
v-html="icons.alertIcon"
></div>
<h2 class="modal-title">
{{ displayTitle }}
</h2>
<p
v-if="description"
class="modal-description"
>
{{ description }}
</p>
<p class="modal-subtitle">
{{ confirmationMessage }}
</p>
<div class="button-wrapper">
<button
class="btn btn-danger"
@click="confirm()"
>
{{ buttonText }}
</button>
<button
class="btn-cancel"
@click="cancel()"
>
{{ $t('cancel') }}
</button>
</div>
</div>
</div>
</b-modal>
</template>
<script>
import alertIcon from '@/assets/svg/for-css/alert.svg?raw';
export default {
data () {
return {
confirmationMessage: '',
taskType: '',
description: '',
customTitle: '',
customButtonText: '',
resolveCallback: null,
icons: Object.freeze({
alertIcon,
}),
};
},
computed: {
displayTitle () {
if (this.customTitle) return this.customTitle;
return this.$t('deleteType', { type: this.taskType });
},
buttonText () {
if (this.customButtonText) return this.customButtonText;
return this.displayTitle;
},
},
mounted () {
this.$root.$on('habitica:delete-task-confirm', config => {
this.confirmationMessage = config.message;
this.taskType = config.taskType || '';
this.description = config.description || '';
this.customTitle = config.title || '';
this.customButtonText = config.buttonText || '';
this.resolveCallback = config.resolve;
this.$root.$emit('bv::show::modal', 'delete-task-confirm-modal');
});
},
beforeDestroy () {
this.$root.$off('habitica:delete-task-confirm');
},
methods: {
confirm () {
if (this.resolveCallback) {
this.resolveCallback(true);
}
this.close();
},
cancel () {
if (this.resolveCallback) {
this.resolveCallback(false);
}
this.close();
},
close () {
this.$root.$emit('bv::hide::modal', 'delete-task-confirm-modal');
},
},
};
</script>
<style lang="scss" scoped>
@import '@/assets/scss/colors.scss';
::v-deep .delete-confirm-modal {
.modal-dialog {
max-width: 330px;
margin: auto;
}
.modal-content {
border-radius: 8px;
overflow: hidden;
border: none;
}
.modal-body {
padding: 0;
}
}
.modal-content-wrapper {
display: flex;
flex-direction: column;
}
.top-bar {
height: 8px;
background-color: $maroon-100;
}
.modal-body-content {
display: flex;
flex-direction: column;
align-items: center;
padding: 0 24px 24px;
}
.icon-wrapper {
margin-top: 40px;
width: 48px;
height: 48px;
::v-deep svg {
width: 48px;
height: 48px;
path {
fill: #DE3F3F;
}
}
}
.modal-title {
margin-top: 16px;
margin-bottom: 0;
color: $maroon-100;
font-family: 'Roboto Condensed', sans-serif;
font-weight: 700;
font-size: 20px;
text-align: center;
}
.modal-description {
margin-top: 12px;
margin-bottom: 0;
font-family: Roboto, sans-serif;
font-weight: 400;
font-size: 14px;
line-height: 24px;
letter-spacing: 0;
text-align: center;
color: $gray-50;
}
.modal-description + .modal-subtitle {
margin-top: 16px;
}
.modal-subtitle {
margin-top: 12px;
margin-bottom: 0;
font-family: Roboto, sans-serif;
font-weight: 700;
font-size: 14px;
line-height: 24px;
letter-spacing: 0;
text-align: center;
color: $gray-50;
}
.button-wrapper {
display: flex;
flex-direction: column;
align-items: center;
width: 100%;
margin-top: 16px;
gap: 8px;
}
.btn-cancel {
background: none;
border: none;
color: $purple-300;
font-family: Roboto, sans-serif;
font-weight: 400;
font-size: 14px;
line-height: 24px;
letter-spacing: 0;
cursor: pointer;
padding: 8px 16px;
&:hover {
text-decoration: underline;
}
}
</style>
+9 -2
View File
@@ -1177,9 +1177,16 @@ export default {
moveToBottom () {
this.$emit('moveTo', this.task, 'bottom');
},
destroy () {
async destroy () {
const type = this.$t(this.task.type);
if (!window.confirm(this.$t('sureDeleteType', { type }))) return; // eslint-disable-line no-alert
const confirmed = await new Promise(resolve => {
this.$root.$emit('habitica:delete-task-confirm', {
message: this.$t('sureDeleteType', { type }),
taskType: type,
resolve,
});
});
if (!confirmed) return;
this.destroyTask(this.task);
this.$emit('taskDestroyed', this.task);
},
@@ -150,14 +150,14 @@
<button
type="button"
class="habit-option-container no-transition
d-flex flex-column justify-content-center align-items-center"
d-flex flex-column justify-content-center align-items-center"
:class="!task.up ? cssClass('habit-control-disabled') : ''"
:disabled="challengeAccessRequired"
@click="toggleUpDirection()"
>
<div
class="habit-option-button no-transition
d-flex justify-content-center align-items-center mb-2"
d-flex justify-content-center align-items-center mb-2"
:class="task.up ? cssClass('bg') : ''"
>
<div
@@ -176,14 +176,14 @@
<button
type="button"
class="habit-option-container no-transition
d-flex flex-column justify-content-center align-items-center"
d-flex flex-column justify-content-center align-items-center"
:class="!task.down ? cssClass('habit-control-disabled') : ''"
:disabled="challengeAccessRequired"
@click="toggleDownDirection()"
>
<div
class="habit-option-button no-transition
d-flex justify-content-center align-items-center mb-2"
d-flex justify-content-center align-items-center mb-2"
:class="task.down ? cssClass('bg') : ''"
>
<div
@@ -382,6 +382,45 @@
</div>
</div>
</div>
<div
v-if="showStatAssignment"
class="stat-assignment option mt-3"
>
<div class="form-group row">
<label
v-once
class="col-12 mb-1"
>{{ $t('assignedStat') }}</label>
<div class="col-12">
<div class="stat-dropdown-container">
<select-list
:items="statOptions"
:value="task.attribute"
key-prop="key"
active-key-prop="key"
@select="task.attribute = $event.key"
>
<template #item="{ item, button }">
<div class="stat-option-content">
<span
class="stat-option-title"
:class="item.key"
>
{{ $t(item.label) }}
</span>
<span
v-if="!button"
class="stat-option-description"
>
{{ $t(item.description) }}
</span>
</div>
</template>
</select-list>
</div>
</div>
</div>
</div>
<div
v-if="task.type === 'habit' && !groupId"
class="option mt-3"
@@ -591,7 +630,7 @@
>
<button
class="btn btn-primary btn-footer
d-flex align-items-center justify-content-center"
d-flex align-items-center justify-content-center"
:class="{'btn-disabled': !canSave}"
type="button"
@click="submit()"
@@ -911,6 +950,87 @@
.streak-addon path {
fill: $gray-200;
}
.stat-dropdown-container {
.select-list {
.selectListItem {
margin-bottom: 0;
&:last-child {
margin-bottom: 0;
}
}
.selectListItem .dropdown-item {
padding: 8px 16px !important;
height: auto !important;
white-space: normal;
word-wrap: break-word;
&:hover,
&:focus {
background-color: rgba($purple-600, 0.25) !important;
}
}
.dropdown-toggle {
display: flex;
align-items: center;
.stat-option-content {
display: flex;
align-items: center;
.stat-option-title {
font-weight: normal;
color: $gray-50;
margin-bottom: 0;
}
}
}
}
.stat-option-content {
display: block;
width: 100%;
.stat-option-title {
display: block;
font-family: Roboto;
font-weight: 700;
font-size: 14px;
line-height: 1.71;
text-transform: capitalize;
margin-bottom: 4px;
&.str {
color: $maroon-100;
}
&.int {
color: $blue-50;
}
&.con {
color: $yellow-5;
}
&.per {
color: $purple-300;
}
}
.stat-option-description {
display: block;
font-family: Roboto;
font-weight: 400;
font-size: 12px;
line-height: 16px;
color: $gray-100;
margin-bottom: 0;
}
}
}
</style>
<style lang="scss" scoped>
@@ -1023,7 +1143,6 @@
.input-group-outer.disabled .input-group-text {
color: $gray-200;
}
</style>
<script>
@@ -1038,6 +1157,7 @@ import SelectMulti from './modal-controls/selectMulti';
import selectDifficulty from '@/components/tasks/modal-controls/selectDifficulty';
import selectTranslatedArray from '@/components/tasks/modal-controls/selectTranslatedArray';
import lockableLabel from '@/components/tasks/modal-controls/lockableLabel';
import selectList from '@/components/ui/selectList';
import syncTask from '../../mixins/syncTask';
@@ -1061,6 +1181,7 @@ export default {
selectTranslatedArray,
toggleCheckbox,
lockableLabel,
selectList,
},
directives: {
markdown: markdownDirective,
@@ -1094,6 +1215,12 @@ export default {
con: 'constitution',
per: 'perception',
},
statOptions: [
{ key: 'str', label: 'strength', description: 'strTaskText' },
{ key: 'int', label: 'intelligence', description: 'intTaskText' },
{ key: 'con', label: 'constitution', description: 'conTaskText' },
{ key: 'per', label: 'perception', description: 'perTaskText' },
],
calendarHighlights: { dates: [new Date()] },
};
},
@@ -1187,6 +1314,12 @@ export default {
selectedTags () {
return this.getTagsFor(this.task);
},
showStatAssignment () {
return this.task.type !== 'reward'
&& !this.groupId
&& this.user.preferences.automaticAllocation === true
&& this.user.preferences.allocationMode === 'taskbased';
},
},
watch: {
task () {
@@ -1305,9 +1438,16 @@ export default {
}
this.$root.$emit('bv::hide::modal', 'task-modal');
},
destroy () {
async destroy () {
const type = this.$t(this.task.type);
if (!window.confirm(this.$t('sureDeleteType', { type }))) return; // eslint-disable-line no-alert
const confirmed = await new Promise(resolve => {
this.$root.$emit('habitica:delete-task-confirm', {
message: this.$t('sureDeleteType', { type }),
taskType: type,
resolve,
});
});
if (!confirmed) return;
this.destroyTask(this.task);
this.$emit('taskDestroyed', this.task);
this.$root.$emit('bv::hide::modal', 'task-modal');
@@ -12,7 +12,7 @@
<template #button-content>
<slot
name="item"
:item="selected || placeholder"
:item="selectedItem || placeholder"
:button="true"
>
<!-- Fallback content -->
@@ -134,6 +134,14 @@ export default {
}),
};
},
computed: {
selectedItem () {
if (this.activeKeyProp) {
return this.items.find(item => item[this.activeKeyProp] === this.selected);
}
return this.items.find(item => item === this.selected);
},
},
methods: {
getKeyProp (item) {
return this.keyProp ? item[this.keyProp] : item.key || item.identifier;
@@ -25,8 +25,8 @@
type="checkbox"
:checked="isChecked"
:value="value"
@change="handleChange"
:disabled="disabled"
@change="handleChange"
>
<label
class="toggle-switch-label"
File diff suppressed because it is too large Load Diff
+9 -1
View File
@@ -39,7 +39,15 @@ export default {
};
const purchaseForKey = currencyToPurchaseForKey[currency];
return window.confirm(this.$t(purchaseForKey, { cost })); // eslint-disable-line no-alert
return new Promise(resolve => {
this.$root.$emit('habitica:purchase-confirm', {
message: this.$t(purchaseForKey, { cost }),
currency,
cost,
resolve,
});
});
},
},
};
@@ -679,7 +679,7 @@ import NotificationMixins from '@/mixins/notifications';
// extract to a shared path
const CONVERSATIONS_PER_PAGE = 10;
const PM_PER_PAGE = 10;
const PM_PER_PAGE = 50;
const UI_STATES = Object.freeze({
LOADING: 'LOADING',
@@ -217,8 +217,18 @@ export default {
}
},
async changeClassAndClose () {
if (!this.classDisabled && !window.confirm(this.$t('changeClassConfirmCost'))) {
return;
if (!this.classDisabled) {
const confirmed = await new Promise(resolve => {
this.$root.$emit('habitica:purchase-confirm', {
message: this.$t('changeClassConfirmCost'),
currency: 'gems',
cost: 3,
resolve,
});
});
if (!confirmed) {
return;
}
}
this.$root.$once('bv::hide::modal', () => {
@@ -1,7 +1,8 @@
<template>
<tr>
<td colspan="3"
<td
v-if="!mixinData.inlineSettingMixin.modalVisible"
colspan="3"
>
<div class="d-flex justify-content-between align-items-center">
<h3
@@ -18,8 +19,9 @@
</a>
</div>
</td>
<td colspan="3"
<td
v-if="mixinData.inlineSettingMixin.modalVisible"
colspan="3"
>
<h3
v-once
@@ -59,8 +61,8 @@
{{ $t('performanceAnalytics') }}
</label>
<toggle-switch
class="mb-auto"
v-model="user.preferences.analyticsConsent"
class="mb-auto"
@change="prefToggled()"
/>
</div>
@@ -151,14 +153,14 @@ import { mapState } from '@/libs/store';
import alert from '@/assets/svg/for-css/alert.svg?raw';
export default {
mixins: [
GenericUserPreferencesMixin,
InlineSettingMixin,
],
components: {
SaveCancelButtons,
ToggleSwitch,
},
mixins: [
GenericUserPreferencesMixin,
InlineSettingMixin,
],
data () {
return {
icons: Object.freeze({
+6
View File
@@ -14,6 +14,8 @@
<bug-report-success-modal v-if="isUserLoaded" />
<external-link-modal />
<birthday-modal />
<purchase-confirm-modal v-if="isUserLoaded" />
<delete-task-confirm-modal v-if="isUserLoaded" />
<template v-if="isUserLoaded">
<privacy-banner />
<chat-banner />
@@ -138,6 +140,8 @@ import paymentsSuccessModal from '@/components/payments/successModal';
import subCancelModalConfirm from '@/components/payments/cancelModalConfirm';
import subCanceledModal from '@/components/payments/canceledModal';
import externalLinkModal from '@/components/externalLinkModal.vue';
import purchaseConfirmModal from '@/components/shops/purchaseConfirmModal.vue';
import deleteTaskConfirmModal from '@/components/tasks/deleteTaskConfirmModal.vue';
import spellsMixin from '@/mixins/spells';
import {
@@ -172,6 +176,8 @@ export default {
bugReportModal,
bugReportSuccessModal,
externalLinkModal,
purchaseConfirmModal,
deleteTaskConfirmModal,
},
mixins: [notifications, spellsMixin],
data () {
-6
View File
@@ -11,7 +11,6 @@ import { DEPRECATED_ROUTES } from '@/router/deprecated-routes';
// NOTE: when adding a page make sure to implement the `common:setTitle` action
const RegisterLoginReset = () => import(/* webpackChunkName: "auth" */'@/components/auth/registerLoginReset');
const Logout = () => import(/* webpackChunkName: "auth" */'@/components/auth/logout');
// Hall
@@ -79,11 +78,6 @@ const router = new VueRouter({
// in the route component to set a specific subtitle for the page.
routes: [
{ name: 'logout', path: '/logout', component: Logout },
{
name: 'resetPassword', path: '/reset-password', component: RegisterLoginReset, meta: { requiresLogin: false },
}, {
name: 'forgotPassword', path: '/forgot-password', component: RegisterLoginReset, meta: { requiresLogin: false },
},
{ name: 'tasks', path: '/', component: UserTasks },
{
name: 'userProfile',
@@ -57,6 +57,9 @@ export const STATIC_ROUTES = {
{
name: 'features', path: 'features', component: FeaturesPage, meta: { requiresLogin: false },
},
{
name: 'forgotPassword', path: '/forgot-password', component: RegisterLoginReset, meta: { requiresLogin: false },
},
{
name: 'front', path: 'front', component: HomePage, meta: { requiresLogin: false },
},
@@ -90,6 +93,9 @@ export const STATIC_ROUTES = {
{
name: 'register', path: '/register', component: RegisterLoginReset, meta: { requiresLogin: false },
},
{
name: 'resetPassword', path: '/reset-password', component: RegisterLoginReset, meta: { requiresLogin: false },
},
{
name: 'terms', path: 'terms', component: TermsPage, meta: { requiresLogin: false },
},
+1 -1
View File
@@ -3,7 +3,7 @@ import Vue from 'vue';
import * as Analytics from '@/libs/analytics';
export async function getChat (store, payload) {
const response = await axios.get(`/api/v4/groups/${payload.groupId}/chat`);
const response = await axios.get(`/api/v4/groups/${payload.groupId}/chat?limit=400`);
return response.data.data;
}
+8 -1
View File
@@ -119,5 +119,12 @@
"achievementDomesticatedText": "Излюпи (или Отгледа) всички стандартни цветове на опитомени домашни любимци (пет-ове): пор, морско свинче, петел, летящо прасе), плъх, заек, кон и крава!",
"achievementShadyCustomerText": "Събра всички пет-ове Сянка.",
"achievementShadyCustomerModalText": "Събра всички пет-ове Сянка.",
"achievementShadyCustomer": "Сенчест тип"
"achievementShadyCustomer": "Сенчест тип",
"achievementDomesticated": "И-Я–И–Я–ЙО",
"achievementZodiacZookeeper": "Пазител на Зодиака",
"achievementShadeOfItAll": "В сянката на света",
"achievementShadeOfItAllText": "Опитоми всички сенчести коне.",
"achievementZodiacZookeeperText": "Излюпи всички стандартни животни(базов цвят) от зодиака: Плъх, Крава, Заек, Змия, Овца, Маймуна, Кокошка, Вълк, Тигър, Летящо прасе, и Дракон!",
"achievementZodiacZookeeperModalText": "Събрахте всички животни от зодиака!",
"achievementBirdsOfAFeather": "От една порода"
}
-1
View File
@@ -2,7 +2,6 @@
"challenge": "Предизвикателство",
"challengeDetails": "Предизвикателствата са обществени събития, в които играчите се състезават и печелят награди като изпълняват няколко свързани по някакъв начин задачи.",
"brokenChaLink": "Повредена връзка на предизвикателство",
"brokenTask": "Повредена връзка на предизвикателство: тази задача е била част от предизвикателство, но е била премахната от него. Какво бихте искали да направите?",
"keepIt": "Запазване",
"removeIt": "Премахване",
"brokenChallenge": "Повредена връзка на предизвикателство: тази задача е била част от предизвикателство, но то (или групата) е било изтрито. Какво бихте искали да направите с останалите задачи?",
-1
View File
@@ -88,7 +88,6 @@
"success": "Готово!",
"classGear": "Снаряжение за класа",
"classGearText": "Поздравления за избора на клас! Добавих новата Ви основна екипировка в инвентара Ви. Погледнете по-долу, за да я екипирате!",
"autoAllocate": "Автоматично разпределяне",
"spells": "Умения",
"skillsTitle": "Умения",
"toDo": "Задача",
-1
View File
@@ -2,7 +2,6 @@
"challenge": "Výzva",
"challengeDetails": "Výzvy jsou komunitní události, ve kterých hráči soutěží a získávají odměny za plnění úkolů.",
"brokenChaLink": "Nefunkční odkaz na výzvu",
"brokenTask": "Nefunkční odkaz na výzvu: tento úkol byl součástí výzvy, ale byl z ní odstraněn. Co chceš dělat?",
"keepIt": "Ponechat",
"removeIt": "Odstranit",
"brokenChallenge": "Nefunkční odkaz na výzvu: tento úkol byl součástí výzvy, ale ta (nebo skupina, která ji vytvořila) byla odstraněna. Co chceš dělat s osiřelými úkoly?",
-1
View File
@@ -88,7 +88,6 @@
"success": "Úspěch!",
"classGear": "Vybavení pro tvé povolání",
"classGearText": "Gratuluji k vybrání povolání! Přidal jsem ti základní zbraň do tvého inventáře. Podívej se dolů a vybav se!",
"autoAllocate": "Připisovat automaticky",
"spells": "Dovednosti",
"skillsTitle": "<%= classStr %> Dovednosti",
"toDo": "úkol",
-1
View File
@@ -121,7 +121,6 @@
"yesterDailiesCallToAction": "Začít můj nový den!",
"sessionOutdated": "Tvá relace je zastaralá. Prosím, zkus ji obnovit nebo synchronizovat.",
"errorTemporaryItem": "Tento předmět je dočasný a nemůže být připnut.",
"sureDeleteType": "Chceš tento <%= type %> opravdu smazat?",
"deleteTaskType": "Tento <%= type %> smazat",
"addNotes": "Přidej poznámky",
"addATitle": "Přidej název",
-1
View File
@@ -2,7 +2,6 @@
"challenge": "Udfordring",
"challengeDetails": "Udfordringer er fællesskabsevents, i hvilke spillere konkurrerer og vinder belønninger ved at fuldføre en gruppe relaterede opgaver.",
"brokenChaLink": "Defekt udfordringslink",
"brokenTask": "Defekt udfordringslink: denne opgave var en del af en udfordring, men er blevet fjernet fra den. Hvad vil du gøre?",
"keepIt": "Behold den",
"removeIt": "Fjern den",
"brokenChallenge": "Defekt udfordringslink: denne opgave var en del af en udfordring, men udfordringen (eller gruppen) er blevet fjernet. Hvad vil du gøre med de gruppeløse opgaver?",
+7 -2
View File
@@ -83,7 +83,7 @@
"allocatePerPop": "Tilføj et point til Opfattelse",
"allocateInt": "Point tilføjet til Intelligens:",
"allocateIntPop": "Tilføj et point til Intelligens",
"noMoreAllocate": "Nu hvor du har nået niveau 100, vil du ikke optjene flere Egenskabspoint. Du kan fortsætte, eller starte et nyt eventyr fra niveau 1 ved at bruge <a href='http://habitica.fandom.com/wiki/Orb_of_Rebirth' target='_blank'>Genfødselskuglen</a>!",
"noMoreAllocate": "Nu hvor du har nået niveau 100, vil du ikke optjene flere Egenskabspoint. Du kan fortsætte, eller starte et nyt eventyr fra niveau 1 ved at bruge<a href='/shops/market'>Genfødselskugle</a>.",
"stats": "Egenskaber",
"strength": "Styrke",
"strText": "Styrke forøger chancen for tilfældige \"fuldtræffere\" og giver et boost til Guld, Erfaring, og chancen for at finde genstande fra dem. Det hjælper også med at påføre bossmonstre skade.",
@@ -183,5 +183,10 @@
"chatCastSpellParty": "<%= username %> kaster <%= spell %> for holdet.",
"notEnoughGold": "Ikke nok guld.",
"purchasePetItemConfirm": "Dette køb vil overskride det antal genstande du skal bruge for at klække alle mulige <%= itemText %> Kæledyr. Er du sikker?",
"purchaseForGold": "Køb for <%= cost %> Guld?"
"purchaseForGold": "Køb for <%= cost %> Guld?",
"skins": "Hudfarve",
"titleFacialHair": "Ansigts hår",
"titleHaircolor": "Hårfarve",
"titleHairbase": "Hår stil",
"strTaskText": "Øg chancen for fuldtræffer slag og skade ved at færdiggøre opgaver. Dette øger også skade mod missions monstrene."
}
+12 -1
View File
@@ -13,5 +13,16 @@
"faqQuestion28": "Kan jeg sætte mine Daglige på pause, hvis jeg har brug for en pause?",
"webFaqAnswer28": "Ja! Knappen \"Pause Damage\" kan findes i Indstillinger. Det vil forhindre dig i at miste HP for mistede Daglige. Dette er nyttigt, hvis du er på ferie, har brug for et hvil, eller du af en eller anden grund måske har brug for en pause. Hvis du deltager i en Quest, vil dine egne afventende fremskridt blive sat på pause, men du vil stadig tage skade fra dit partimedlems missede Daglige.\n\nFor at sætte specifikke Daglige på pause, kan du redigere tidsplanen, så den forfalder hver 0. dag, indtil du er klar til at genstarte den.",
"faqQuestion29": "Hvordan gendanner jeg HP?",
"webFaqAnswer29": "Du kan genvinde 15 HP ved at købe en Health Potion fra din belønningskolonne for 25 guld. Derudover vil du altid genvinde fuld HP, når du stiger i niveau!"
"webFaqAnswer29": "Du kan genvinde 15 HP ved at købe en Health Potion fra din belønningskolonne for 25 guld. Derudover vil du altid genvinde fuld HP, når du stiger i niveau!",
"webFaqAnswer34": "Dyr kan lide mad som matcher deres farve, med undtagelse af basis dyr som alle kan lide det samme mad, uanset farve. Du kan se hvilken specifik mad de forskellige dyr kan lide, herunder: \n\n * Basis dyr kan lide kød\n * Hvide dyr kan lide mælk\n * Ørken dyr kan lide kartofler\n * Røde dyr kan lide jordbær\n * Skygge dyr kan lide chokolade\n * Skelet dyr kan lide fisk\n * Zombie dyr kan lide kød\n * Lyserøde candyfloss dyr kan lide lyserød candyfloss\n * Blå candyfloss dyr kan lide blå candyfloss\n * Gyldne dyr kan lide honning",
"faqQuestion30": "Hvad sker der når jeg løber tør for SP?",
"webFaqAnswer30": "Hvis din SP når ned på nul, mister du et level - det levels egenskabspoint, alt dit guld, og et stykke udstyr som kan købes igen. Du kan genvinde SP ved at færdiggøre opgaver, og ved at gå op i level igen.",
"faqQuestion31": "Hvorfor mistede jeg SP ved at gennemføre en ikke-negativ opgave?",
"webFaqAnswer31": "Hvis du gennemfører en opgave og mister SP du ikke burde have mistet, er der opstået en forsinkelse imens serveren synkroniserede ændringer mellem dine enheder. Fx. Hvis du bruger Guld, Magisk energi, eller mister SP på din telefon og efterfølgende gennemfører en opgave på hjemmesiden, mangler serveren bare at synkronisere dine enheder.",
"faqQuestion32": "Hvordan vælger jeg klassering?",
"webFaqAnswer32": "Alle spillere starter i kriger-klassen indtil de når level 10. Når du når level 10 får du valget mellem at skifte klassering eller fortsætte som kriger.\n\nHver klasse har forskelligt udstyr og færdigheder. Hvis du ikke har lyst til at skifte klassering, kan du trykke på “fravælg”. Hvis du vælger ikke at vælge klassering, kan du altid aktivere klasseringssystemet i indstillingerne senere.\n\nHvis du gerne vil skifte klasse efter level 10, kan du gøre dette ved at bruge en genfødselskugle. Genfødselskuglen vil være mulig at købe på markedet for 6 ædelsten når du når level 50, eller få den gratis ved at nå level 100.\n\nAlternativt, kan du på ethvert tidspunkt ændre klassering i indstillinger for 3 ædelsen. Dette nulstiller ikke dit level, som ellers sker ved brug af genfødselskuglen. Det vil derimod give dig mulighed for at omrokere de egenskabspoint du har samlet sammen ved at gå op i level, til at matche din nye klasse.",
"faqQuestion33": "Hvad er den blå bjælke som kommer efter level 10?",
"webFaqAnswer33": "Efter du låser op for klasseringssystemet kan du også låse op for færdigheder, som kræver at Magisk energi benyttes. Magisk energi bestemmes ud fra din intelligensstatus, og kan justeres med færdigheder og visse udstyr.",
"faqQuestion34": "Hvilken slags mad kan mit dyr lide?",
"faqQuestion35": "Mit dyr forsvandt da jeg fodrede det! Hvad skete der?"
}
+39 -27
View File
@@ -24,34 +24,34 @@
"invalidEmail": "Det kræver en valid emailadresse for at få nulstillet dit kodeord.",
"login": "Log ind",
"logout": "Log Ud",
"marketing1Header": "Forbedr dine vaner ved at spille et spil",
"marketing1Lead1Title": "Dit liv, rollespillet",
"marketing1Lead1": "Habitica er et computerspil, der hjælper med at forbedre dine vaner i virkeligheden. Det gør dit liv til et spil ved at lave alle dine opgaver (Vaner, Daglige og To-Do's) indtil små monstre, du skal besejre. Jo bedre du er til dette, desto større fremskridt vil du gøre i spillet. Hvis du begår fejl i livet, vil din karakter miste fremskridt i spillet.",
"marketing1Lead2Title": "Få Lækkert Udstyr",
"marketing1Lead2": "Forbedr dine vaner for at ændre din avatar. Vis det fede udstyr du har tjent!",
"marketing1Lead3Title": "Find Tilfældige Præmier",
"marketing1Header": "Forbedr dine vaner med spil, et level ad gangen!",
"marketing1Lead1Title": "Gør dit liv til et spil",
"marketing1Lead1": "Habitica er den perfekte app for alle der har svært ved at færdiggøre sin to-do liste. Vi bruger genkendelige spillemekanismer, såsom at belønne dig med Guld, Erfarring og genstande, for at hjælpe dig med at føle mere produktiv og samtidig øge følelsen af præstation, når du færdiggøre en opgave. Jo bedre du er til at færdiggøre dine opgaver, jo længere kommer du i spillet.",
"marketing1Lead2Title": "Udstyr dig med stil",
"marketing1Lead2": "Saml svær, udrustning og meget andet med Guld du tjener ved at gennemføre opgaver. Med mulighed for at indsamle, og vælge, mellem hundredevis af forskellige genstande, løber du aldrig tør for sammensætninger. Optimer for niveau, stil, eller begge! ",
"marketing1Lead3Title": "Bliv belønnet for din indsats",
"marketing1Lead3": "For nogle er det chancen, der motiverer dem: et system der hedder \"stokastiske belønninger.\" Habitica har plads til alle slags måder at forbedre eller straffe sig selv på: positive, negative, forudsigelige og tilfældige.",
"marketing2Header": "Kæmp med venner, deltag i interessegrupper",
"marketing2Header": "Slå dig sammen med dine venner",
"marketing2Lead1Title": "Social produktivitet",
"marketing2Lead1": "Selvom du selvfølgelig kan spille Habitica selv, bliver det først virkelig godt når I begynder at samarbejde, konkurrere og holde hinanden ansvarlige. Den mest effektive del af ethvert selvforbedringsprogram er social ansvarlighed, og hvad er et bedre miljø for ansvarlighed og konkurrence end et computerspil?",
"marketing2Lead2Title": "Bekæmp monstre",
"marketing2Lead2Title": "Bekæmp monstre i opgaver",
"marketing2Lead2": "Hvad er et rollespil uden slåskampe? Bekæmp monstre med dit hold. Monstre er \"super-ansvarligheds-mode\" - en dag, du ikke træner, er en dag, hvor monstret skader *alle!*",
"marketing2Lead3Title": "Udfordr Hinanden",
"marketing2Lead3Title": "Udfordr hinanden",
"marketing2Lead3": "Udfordringer lader dig konkurrere med venner og fremmede. Den, der er bedst i slutningen af en udfordring vinder særlige præmier.",
"marketing3Header": "Apps og Udvidelser",
"marketing3Header": "Forskellige måder at bruge Habitica på",
"marketing3Lead1": "**iPhone & Android** apps lader dig klare dine ting på farten. Vi ved, at det nogen gange er for meget at skulle logge ind på websiden for at klikke på knapper.",
"marketing3Lead2Title": "Integrationer",
"marketing3Lead2Title": "Udviklet af fællesskabet",
"marketing3Lead2": "Andre **tredjepartsværktøjer** kan binde Habitica sammen med andre dele af dit liv. Vores API muliggør integrationer som [Chrome Extension](https://chrome.google.com/webstore/detail/habitica/pidkmpibnnnhneohdgjclfdjpijggmjj?hl=en-US), med hvilken du mister point ved at bruge unyttige hjemmesider, og optjener point når du browser de nyttige i stedet. [Se mere her](https://habitica.fandom.com/wiki/Extensions,_Add-Ons,_and_Customizations).",
"marketing4Header": "Organisatorisk brug",
"marketing4Header": "Udover hverdagens pligter",
"marketing4Lead1": "Uddannelse er en af de bedste områder at bruge spilelementer. Vi ved alle, hvordan studerende nærmest er limet til deres telefon disse dage, så brug dette! Sæt dine elever til at kæmpe mod hinanden som hyggelig konkurrence. Beløn god opførsel med sjældne præmier. Se deres karakterer og opførsel blive forbedret.",
"marketing4Lead1Title": "Brug af Spilelementer i Undervisning",
"marketing4Lead1Title": "Spilelementer i undervisning",
"marketing4Lead2": "Prisen for sundhedssektoren stiger, og der må ske noget. Hundredevis af programmer er bygget til at reducere udgifter og forbedre velvære. Vi tror på, at Habitica kan bane vejen for en sundere livsstil.",
"marketing4Lead2Title": "Brug af Spilelementer i Sundhed og Velvære",
"marketing4Lead3-1": "Vil du gøre dit liv til et spil?",
"marketing4Lead2Title": "Spilelementer i sundhed og velvære",
"marketing4Lead3-1": "Klar til at udrette noget imens du har det sjovt?",
"marketing4Lead3-2": "Interesseret i at lede en gruppe for uddannelse, velvære og mere?",
"marketing4Lead3Title": "Spilificér Alt",
"mobileAndroid": "Android",
"mobileIOS": "iOS",
"marketing4Lead3Title": "Start din rejse!",
"mobileAndroid": "Android App",
"mobileIOS": "iOS App",
"oldNews": "Nyheder",
"setNewPass": "Sæt nyt kodeord",
"password": "Kodeord",
@@ -110,7 +110,7 @@
"missingPassword": "Manglende kodeord.",
"missingNewPassword": "Manglende nyt kodeord.",
"invalidEmailDomain": "Du kan ikke registrere med emails med følgende domæner: <%= domains %>",
"wrongPassword": "Forkert kodeord.",
"wrongPassword": "Forkert kodeord. Hvis du har glemt dit kodeord, tryk på “Glemt kodeord”.",
"incorrectDeletePhrase": "Skriv venligst <%= magicWord %> med store bogstaver for at slette din konto.",
"notAnEmail": "Ugyldig e-mailadresse.",
"emailTaken": "E-mailadressen er allerede brugt til en konto.",
@@ -121,8 +121,8 @@
"usernameTaken": "Brugernavn allerede taget.",
"passwordConfirmationMatch": "Kodeord og godkendelse er ikke ens.",
"passwordResetPage": "Nulstil kodeord",
"passwordReset": "Hvis vi har din email på lager, vil instruktioner til opsætning af nyt kodeord være sendt til din email.",
"invalidLoginCredentialsLong": "Åh-åh - din emailaddresse/brugernavn eller kodeord er forkert.\n- Vær sikker på du har indtastet korrekt. Der gøres forskel på store og små bogstaver.\n- Du kan have brugt Facebook eller Google til at oprette din konto, ikke email, så dobbeltcheck ved at prøve dem.\n- Hvis du har glemt dit kodeord, så klik på \"Glemt kodeord\".",
"passwordReset": "Hvis din E-mail eller brugernavn allerede findes i vores system, vil instruktioner til opsætning af nyt kodeord være sendt til din email.",
"invalidLoginCredentialsLong": "Åh-åh - din e-mailadresse, brugernavn eller kodeord er forkert.\nPrøv igen, eller klik på \"Glemt kodeord\".",
"invalidCredentials": "Der er ingen konto med disse legitimationsoplysninger.",
"accountSuspended": "Denne konto, bruger-ID \"<%= userId %>\", er blevet blokeret for at bryde Retningslinjerne for fællesskabet (https://habitica.com/static/community-guidelines) eller vores Vilkår og betingelser (https://habitica.com/static/terms). For at få detaljer eller bede om at få blokaden ophævet, så send venligst en email til vores Community Manager på <%= communityManagerEmail %>, eller bed din forælder eller værge om at gøre det. Inkluder venligst dit @Brugernavn i emailen.",
"accountSuspendedTitle": "Kontoen er blevet suspenderet",
@@ -132,14 +132,14 @@
"invalidReqParams": "Ugyldige anmodningsparametre.",
"memberIdRequired": "\"member\" skal være et gyldigt Unikt Bruger-ID.",
"heroIdRequired": "\"heroID\" skal være et gyldigt Unikt Bruger-ID.",
"cannotFulfillReq": "Din anmodning kan ikke udføres. Kontakt admin@habitica.com hvis fejlen fortsætter.",
"cannotFulfillReq": "Denne e-mail er allerede taget i brug. Prøv at logge ind eller brug en anden e-mail til registrering. Hvis du har brug for hjælp, kontakt os på admin@habitica.com",
"modelNotFound": "Denne model findes ikke.",
"signUpWithSocial": "Tilmeld med <%= social %>",
"signUpWithSocial": "Fortsæt med <%= social %>",
"loginWithSocial": "Log in med<%= social %>",
"confirmPassword": "Bekræft kodeord",
"usernameLimitations": "Brugernavn skal være 1 til 20 tegn, kun bruge bogstaver fra a til z, tal fra 0 til 9, bindestreg eller bundstreg (_), og kan ikke inkludere nogle upassende ord.",
"usernameLimitations": "Brugernavn kan ændres på alle tidspunkter. Det skal være 1 til 20 tegn, kun indeholde bogstaver fra a til z, tal fra 0 til 9, bindestreg eller understreg (_)",
"usernamePlaceholder": "fx HabitRabbit",
"emailPlaceholder": "e.g., rabbit@example.com",
"emailPlaceholder": "Fx., kanin@eksempel.com",
"passwordPlaceholder": "e.g., ******************",
"confirmPasswordPlaceholder": "Sikr dig at det er det samme kodeord!",
"joinHabitica": "Opret bruger",
@@ -169,10 +169,22 @@
"joinMany": "Tilslut dig over <%= userCountInMillions %> millioner andre, der har det sjovt imens de opnår deres mål!",
"joinToday": "Tilmeld dig Habitica i dag",
"signup": "Tilmeld dig",
"getStarted": "Kom i gang!",
"getStarted": "Kom i gang",
"mobileApps": "Mobile apps",
"learnMore": "Lær mere",
"communityInstagram": "Instagram",
"minPasswordLength": "Kodeord skal bestå af 8 eller flere tegn.",
"enterHabitica": "Spil Habitica"
"enterHabitica": "Spil Habitica",
"footerProduct": "Produkt",
"marketing4Lead3Button": "Start i dag",
"incorrectResetPhrase": "Skriv <%= magicWord %> i store bogstaver for at nulstille din konto.",
"minPasswordLengthLogin": "Dit kodeord er minimum 8 karakterer langt.",
"enterValidEmail": "Indtast venligst en gyldig e-mailadresse.",
"translateHabitica": "Oversæt Habitica",
"whatToCallYou": "Hvad skal vi kalde dig?",
"acceptPrivacyTOS": "Bekræfter du at du er over 18 år gammel, og har læst og accepteret vores <a href='/static/terms' target='_blank'>Terms of Services</a> og <a href='/static/privacy' target='_blank'>Privatlivspolitik</a>",
"emailBlockedRegistration": "Denne e-mail er blokeret, og kan ikke benyttes til registrering. Hvis der er sket en fejl, kontakt os på admin@habitica.com",
"emailUsernamePlaceholder": "Fx., vanedyr eller kanin@eksempel.com",
"marketing3Lead1Title": "Android & iOS apps",
"socialAlreadyExists": "Dette login benyttes allerede af en eksisterende Habitica konto."
}
-1
View File
@@ -88,7 +88,6 @@
"success": "Succes!",
"classGear": "Klasseudstyr",
"classGearText": "Tillykke med at vælge klasse! Jeg har tilføjet dit nye basisudstyr til dit inventar. Tag et kig forneden og tag det på!",
"autoAllocate": "Tildel automatisk",
"spells": "Evner",
"skillsTitle": "<%= classStr %> Evner",
"toDo": "To Do",
+23 -4
View File
@@ -27,8 +27,8 @@
"userData": "Brugerdata",
"exportUserData": "Eksportér brugerdata:",
"export": "Eksportér",
"xml": "(XML)",
"json": "(JSON)",
"xml": "XML",
"json": "JSON",
"customDayStart": "Brugerdefineret starttidspunkt",
"sureChangeCustomDayStartTime": "Er du sikker på, at du vil ændre dit brugerdefinerede starttidspunkt? Dine Daglige vil blive opdateret næste gang du bruger Habitica efter <%= time %>. Vær sikker på, at du har udført dine Daglige før da!",
"customDayStartHasChanged": "Dit brugerdefinerede starttidspunkt er ændret.",
@@ -46,7 +46,7 @@
"newUsername": "Nyt brugernavn",
"dangerZone": "Farezone",
"resetText1": "ADVARSEL! Dette nulstiller mange dele af din konto. Vi fraråder på det kraftigste dette, men nogen finder det brugbart i begyndelsen efter at have eksperimenteret med Habitica i et kort stykke tid.",
"resetText2": "Du vil miste alle niveauer, Guld, og Erfaringspoint. Alle dine Opgaver (bortset fra dem fra Udfordringer) vil blive slettet permanent, og du vil miste al deres historik. Du vil miste alt dit udstyr, undtagen gratis gave-udstyr eller Mystiske abonnentsgenstande. Du vil være i stand til at købe alle de mistede genstand igen, inklusiv tidsbegrænset udstyr (du skal være den korrekte klasse for at købe klasse-begrænset udstyr). Du vil beholde din nuværende klasse, præstationer og dine kæle- og ridedyr. Du ville måske foretrække at bruge en Genfødselskugle i stedet. Det er en meget sikrere mulighed, og du vil beholde dine opgaver og udstyr.",
"resetText2": "En anden mulighed er at bruge en <b>Genfødselskugle</b>, hvilket vil nulstille alt, men du vil beholde dine opgaver og dit udstyr.",
"deleteLocalAccountText": "Er du sikker? Dette vil slette din konto for evigt, og den kan aldrig gendannes! Du skal registrere en ny konto for at kunne bruge Habitica igen. Ædelsten du har brugt eller har på lager vil ikke blive refunderet. Hvis du er fuldstændig sikker, så skriv dit kodeord i boksen herunder.",
"deleteSocialAccountText": "Er du sikker? Dette vil slette din brugerkonto for evigt, og den kan aldrig gendannes! Du vil være nødt til at oprette en ny konto for at bruge Habitica igen. Ædelsten i en Klanbank eller som er blevet brugt vil ikke blive refunderet. Hvis du virkelig er helt sikker, så indtast \"<%= magicWord %>\" i tekstboksen nedenunder.",
"API": "API",
@@ -176,5 +176,24 @@
"account": "Konto",
"loginMethods": "Login metoder",
"character": "Karakter",
"siteLanguage": "Webstedets sprog"
"siteLanguage": "Webstedets sprog",
"showLevelUpModal": "Når man går et level op",
"showHatchPetModal": "Når man udruger et dyr",
"showRaisePetModal": "Når man opgradere et dyr til ridedyr",
"showStreakModal": "Når man modtager en streak præstation",
"baileyAnnouncement": "Seneste Bailey meddelelse",
"view": "Vis",
"feedbackPlaceholder": "Tilføj til feedback",
"downloadCSV": "Download CSV",
"downloadAs": "Download As",
"yourUserData": "Dine brugerdata",
"taskHistory": "Opgave historie",
"resetTextLocal": "Hvis du er helt sikker, indsæt dit kodeord i tekstfeltet nedenfor.",
"yourUserDataDisclaimer": "Her kan du downloade en kopi af din opgavehistorie og dine bruger data.",
"useridCopied": "BrugerID er kopieret til udklipsholderen.",
"developerMode": "Udviklingsmode",
"api": "API",
"currentPass": "Nuværende kodeord",
"resetDetail1": "Du vil miste alle dine levels, dit Guld, og Erfaringspoint.",
"resetDetail2": "Du vil forblive i din valgte klasse, og beholde dine præstationer, dyr og ridedyr."
}
+10 -1
View File
@@ -921,5 +921,14 @@
"backgroundInsideForestWitchsCottageNotes": "Webe Zauber in der Hütte der Waldhexe.",
"backgroundCastleKeepWithBannersText": "Burghalle mit Bannern",
"backgroundCastleKeepWithBannersNotes": "Singe Geschichten von Heldentaten in einer Burghalle mit Bannern.",
"backgrounds112025": "SET 138: Veröffentlicht im November 2025"
"backgrounds112025": "SET 138: Veröffentlicht im November 2025",
"backgrounds122025": "SET 139: Veröffentlicht im Dezember 2025",
"backgroundNighttimeStreetWithShopsNotes": "Genieße das warme Leuchten einer Nächtlichen Straße mit Geschäften.",
"backgroundNighttimeStreetWithShopsText": "Nächtliche Straße mit Geschäften",
"backgrounds012026": "SET 140: Veröffentlicht im Januar 2026",
"backgrounds022026": "SET 141: Veröffentlicht im Februar 2026",
"backgroundElegantPalaceText": "Eleganter Palast",
"backgroundElegantPalaceNotes": "Bewundere die farbenfrohen Hallen eines Eleganten Palastes.",
"backgroundWinterDesertWithSaguarosText": "Winter-Wüste mit Kakteen",
"backgroundWinterDesertWithSaguarosNotes": "Atme die kalte Luft Wunder Winter-Wüste mit Kakteen."
}
+7 -4
View File
@@ -2,11 +2,10 @@
"challenge": "Herausforderung",
"challengeDetails": "Herausforderungen sind Gemeinschaftsereignisse, an denen Spieler teilnehmen und Preise gewinnen können, indem sie die dazugehörigen Aufgaben erledigen.",
"brokenChaLink": "Toter Herausforderungs-Link",
"brokenTask": "Toter Herausforderungs-Link: Diese Aufgabe war Teil einer Herausforderung, aber ist mittlerweile entfernt worden. Was möchtest Du tun?",
"keepIt": "Behalten",
"removeIt": "Entfernen",
"brokenChallenge": "Toter Herausforderungs-Link: Diese Aufgabe war Teil einer Herausforderung, aber die Herausforderung (oder Gruppe) wurde gelöscht. Was möchtest Du mit den verwaisten Aufgaben tun?",
"challengeCompleted": "Diese Herausforderung ist beendet, und gewonnen hat <span class=\"badge\"><%- user %></span>! Was soll mit den verwaisten Aufgaben geschehen?",
"brokenChallenge": "Defekter Herausforderungslink",
"challengeCompleted": "Herausforderung abgeschlossen!",
"unsubChallenge": "Toter Herausforderungs-Link: Diese Aufgabe war Teil einer Herausforderung, aber Du hast aufgehört an dieser Herausforderungs teilzunehmen. Was soll mit den verwaisten Aufgaben geschehen?",
"challenges": "Herausforderungen",
"endDate": "Endet",
@@ -109,5 +108,9 @@
"cannotClone": "Diese Herausforderung kann nicht dupliziert werden, weil einer oder mehrere Spieler sie als unangemessen gemeldet haben. Einer der Mitarbeiter wird dich in Kürze mit Anweisungen kontaktieren. Wenn mehr als 48 Stunden vergangen sind, und du nichts von ihnen gehört hast, schicke bitte eine Email an admin@habitica.com, um Unterstützung zu erhalten.",
"resetFlags": "Markierungen zurücksetzen",
"messageChallengeFlagOfficial": "Offizielle Herausforderungen können nicht gemeldet werden.",
"deleteChallengeRefundDescription": "Wenn du diese Herausforderung löschst, bekommst du den Preis in Edelsteinen erstattet und die Aufgaben der Herausforderung verbleiben auf der Aufgabentafel der Teilnehmer."
"deleteChallengeRefundDescription": "Wenn du diese Herausforderung löschst, bekommst du den Preis in Edelsteinen erstattet und die Aufgaben der Herausforderung verbleiben auf der Aufgabentafel der Teilnehmer.",
"brokenTaskDescription": "Diese Aufgabe war Teil einer Herausforderung, wurde jedoch daraus entfernt. Was möchtest Du tun?",
"brokenChallengeDescription": "Diese Aufgabe war Teil einer Herausforderung, aber die Herausforderung (oder Gruppe) wurde gelöscht. Was soll mit den verwaisten Aufgaben geschehen?",
"challengeCompletedDescription": "Gewonnen hat <%- user %>! Was soll mit den verwaisten Aufgaben geschehen?",
"brokenTask": "Defekter Link zur Herausforderung"
}
+16 -7
View File
@@ -83,7 +83,7 @@
"allocatePerPop": "Erhöhe Wahrnehmung um einen Punkt",
"allocateInt": "Zugewiesene Intelligenzpunkte:",
"allocateIntPop": "Erhöhe Intelligenz um einen Punkt",
"noMoreAllocate": "Jetzt, nach dem Erreichen von Level 100, wirst Du keine weiteren Attributpunkte erhalten. Du kannst weiter aufsteigen oder ein neues Abenteuer auf Level 1 anfangen, indem Du die <a href='/shops/market'>Sphäre der Wiedergeburt</a> benutzt!",
"noMoreAllocate": "Nachdem du nun Level 100 erreicht hast, erhältst du keine weiteren Attributpunkte mehr. Du kannst weiter aufsteigen oder mit der <a href=/shops/market>Sphäre der Wiedergeburt</a> ein neues Abenteuer auf Level 1 beginnen.",
"stats": "Attributwerte",
"strength": "Stärke",
"strText": "Stärke erhöht die Wahrscheinlichkeit zufälliger \"kritischer Treffer\" und die Rate mit der durch sie Gold, Beute und Erfahrung gewonnen wird. Und hilft auch dabei, Boss-Monstern Schaden zuzufügen.",
@@ -114,12 +114,12 @@
"unallocated": "Freie Attributspunkte",
"autoAllocation": "Verteilungsmuster",
"autoAllocationPop": "Verteilt gemäß Deiner Einstellungen Punkte auf Deine Attribute, wenn Du ein Level aufsteigst.",
"evenAllocation": "Attributspunkte gleichmäßig verteilen",
"evenAllocationPop": "Weist jedem Statuswert die gleiche Anzahl an Punkten zu.",
"evenAllocation": "Gleichmäßig verteilen",
"evenAllocationPop": "Weist jedem Attribut die gleiche Anzahl von Punkten zu.",
"classAllocation": "Punkte anhand der Klasse verteilen",
"classAllocationPop": "Weist den Statuswerten die wichtig für Deine Klasse sind, mehr Punkte zu.",
"taskAllocation": "Verteile Punkte abhängig von Aufgaben-Aktivität",
"taskAllocationPop": "Verteilt Punkte abhängig davon, welche Kategorien die Aufgaben haben, die Du überwiegend erledigst: Stärke, Intelligenz, Ausdauer oder Wahrnehmung.",
"classAllocationPop": "Weist den Attributen die wichtig für Deine Klasse sind, mehr Punkte zu.",
"taskAllocation": "Verteile Punkte abhängig von Aufgabenaktivität",
"taskAllocationPop": "Verteilt Punkte basierend auf den Kategorien Stärke, Intelligenz, Konstitution und Wahrnehmung, die mit den von Dir erledigten Aufgaben verbunden sind.",
"distributePoints": "Verteile freie Punkte automatisch",
"distributePointsPop": "Verteilt alle freien Attributpunkte gemäß Deinem gewählten Verteilungsmuster.",
"warriorText": "Krieger verursachen mehr und stärkere \"kritische Treffer\", die zufällige Boni auf Gold, Erfahrung und Beute beim Erfüllen einer Aufgabe geben. Sie sind auch sehr stark gegen Bossmonster. Spiele einen Krieger, wenn Dich die Chance auf Belohnungen im Lottogewinn-Stil besonders reizt und Du besonders effektiv gegen Bossmonster sein willst!",
@@ -191,5 +191,14 @@
"titleHaircolor": "Haarfarben",
"titleFacialHair": "Bärte",
"titleHairbase": "Frisuren",
"customizations": "Individualisierungen"
"customizations": "Individualisierungen",
"strTaskText": "Erhöht die kritische Trefferchance und den Schaden beim Erfüllen von Aufgaben. Erhöht außerdem den Schaden, der Quest-Bossen zugefügt wird.",
"conTaskText": "Reduziert den Schaden, der durch verpasste tägliche Aufgaben und negative Gewohnheiten verursacht wird. Reduziert nicht den Schaden durch Quest-Bosse.",
"autoAllocate": "Automatische Zuweisung",
"pointsAvailable": "Verfügbare Punkte",
"allocationMethod": "Zuteilungsmethode",
"assignedStat": "Zugewiesener Wert",
"intTaskText": "Erhöht die durch Aufgaben gesammelte Erfahrung. Erhöht außerdem deine Manakapazität und Manaregenerationsrate.",
"perTaskText": "Erhöht die Drop-Chance für Gegenstände, die tägliche Drop-Obergrenze für Gegenstände, die Serienboni für Aufgaben und das beim Abschließen von Aufgaben verdiente Gold.",
"statAllocationInfo": "Mit jedem Level erhältst Du einen Punkt, den Du einem Attribut Deiner Wahl zuweisen kannst. Du kannst die Zuweisung manuell vornehmen oder es dem Spiel überlassen, indem Du eine der Optionen zur automatischen Zuweisung wählst."
}
+1 -1
View File
@@ -3,7 +3,7 @@
"dontDespair": "Nicht verzweifeln!",
"deathPenaltyDetails": "Du hast ein Level, Dein Gold und ein Stück Ausrüstung verloren, aber Du kannst alles durch harte Arbeit wieder zurückbekommen! Viel Glück -- Du schaffst das.",
"refillHealthTryAgain": "Lebenspunkte wiederherstellen & Nochmal versuchen",
"dyingOftenTips": "Passiert das öfters? <a href='https://habitica.fandom.com/wiki/Death_Mechanics#Strategies_for_Staying_Alive' target='_blank'>Hier gibt es einige Tipps!</a>",
"dyingOftenTips": "Passiert das öfters? <a href='/static/faq#prevent-damage' target='_blank'>Hier gibt es einige Tipps!</a>",
"losingHealthWarning": "Vorsicht - Du verlierst Lebenspunkte!",
"losingHealthWarning2": "Lass Deine Lebenspunkte nicht auf null fallen! Sollte das passieren wirst Du ein Level, Dein Gold und einen Gegenstand Deiner Ausrüstung verlieren.",
"toRegainHealth": "Um Deine Lebenspunkte wiederherzustellen:",
+3 -2
View File
@@ -34,7 +34,7 @@
"faqQuestion29": "Wie kann ich HP wiederherstellen?",
"webFaqAnswer29": "Du kannst 15 HP wiederherstellen, indem du einen Gesundheitstrank in deiner Belohnungsspalte für 25 Gold kaufst. Außerdem erhältst du immer volle HP, wenn du auflevelst!",
"faqQuestion30": "Was passiert, wenn ich keine HP mehr habe?",
"webFaqAnswer30": "Wenn deine HP Null erreichen, verlierst du eine Stufe, dein gesamtes Gold und ein Ausrüstungsstück, das du wieder kaufen kannst.",
"webFaqAnswer30": "Wenn deine HP Null erreichen, verlierst du ein Level, dessen Attribut-Punkt, dein gesamtes Gold und ein Ausrüstungsstück, das du wieder kaufen kannst. Du kannst dich wieder aufbauen, indem du Aufgaben erledigst und dich wieder hochlevelst.",
"faqQuestion31": "Warum habe ich HP verloren, wenn ich mit einer nicht-negativen Aufgabe interagiere?",
"faqQuestion32": "Wie kann ich eine Klasse wählen?",
"faqQuestion33": "Was ist der blaue Balken, der nach Level 10 erscheint?",
@@ -244,5 +244,6 @@
"subscriptionPara3": "Wir hoffen, dass dieser neue Rhythmus besser vorhersagbar ist, mehr Zugang zur fantastischen Gegenstandauswahl im Laden des Zeitreisenden ermöglicht und noch mehr Motivation bietet, jeden Monat Fortschritte an deinen Aufgaben zu machen!",
"faqQuestion67": "Was sind die Klassen in Habitica?",
"webFaqAnswer67": "Klassen sind verschiedene Rollen, die dein Charakter spielen kann. Jede Klasse bietet ihre eigene Reihe von einzigartigen Vorteilen und Fähigkeiten beim Aufsteigen auf höhere Level. Diese Fähigkeiten können das Bearbeiten deiner Aufgaben ergänzen oder dabei helfen, deine Party beim Abschließen von Quests zu unterstützen.\n\nDeine Klasse bestimmt auch, welche Ausrüstung für dich in den Belohnungen, im Marktplatz und im Jahreszeitenmarkt zum Kauf erhältlich ist.\n\nHier ist eine Zusammenfassung jeder Klasse, um dir dabei zu helfen, diejenige zu wählen, welche am besten zu deinem Spielstil passt:\n#### **Krieger**\n* Die Krieger verursachen hohen Schaden bei Bossen und haben eine hohe Chance für kritische Treffer beim Abschließen von Aufgaben, was dich mit extra Erfahrung und Gold belohnt.\n* Stärke ist ihr primäres Attribut, welches den Schaden erhöht, den sie verursachen.\n* Ausdauer ist ihr sekundäres Attribut, welches den Schaden verringert, den sie erhalten.\n* Die Fähigkeiten der Krieger erhöhen die Ausdauer und Stärke der Gruppenmitglieder.\n* Erwäge, einen Krieger zu spielen, wenn du es liebst, Bosse zu bekämpfen und auch ein wenig Schutz möchtest, wenn du gelegentlich Aufgaben versäumst.\n#### **Heiler**\n* Die Heiler haben eine starke Verteidigung und können sich selbst, sowie Gruppenmitglieder, heilen.\n* Ausdauer ist ihr primäres Attribut, welches ihre Heilungen verstärkt und den Schaden, den sie erhalten, verringert.\n* Intelligenz ist ihr sekundäres Attribut, welches ihr Mana und ihre Erfahrung erhöht.\n* Die Fähigkeiten der Heiler bewirken, dass ihre Aufgaben weniger rot werden und erhöhen die Ausdauer der Gruppenmitglieder.\n* Erwäge, einen Heiler zu spielen, wenn du oft Aufgaben versäumst, und die Fähigkeit benötigst, dich selbst und deine Gruppenmitglieder zu heilen. Heiler erreichen schnell neue Level.\n#### **Magier**\n* Die Magier gewinnen schnell neue Level und viel Mana, und verursachen Schaden bei Bossen in Quests.\n* Intelligenz ist ihr primäres Attribut, welches ihr Mana und ihre Erfahrung erhöht.\n* Wahrnehmung ist ihr sekundäres Attribut, welches ihr gefundenes Gold und ihre gefundenen Gegenstände vermehrt.\n* Die Fähigkeiten der Magier bewirken, dass ihre Aufgaben Strähnen eingefroren werden, stellen das Mana ihrer Gruppenmitglieder wieder her, und erhöhen ihre Intelligenz.\n* Erwäge, einen Magier zu spielen, wenn du durch das schnelle Erreichen neuer Level und das Beisteuern von Schaden in Boss Quests motiviert wirst.\n#### **Schurke**\n* Die Schurken bekommen die meisten erbeuteten Gegenstände und das meiste Gold beim Erledigen von Aufgaben und haben eine höhere Chance, kritische Treffer zu erzielen, was ihnen noch mehr Erfahrung und Gold beschert.\n* Wahrnehmung ist ihr primäres Attribut, welches ihr gefundenes Gold und ihre gefundenen Gegenstände vermehrt.\n* Stärke ist ihr sekundäres Attribut, welches den Schaden erhöht, den sie verursachen.\n* Die Fähigkeiten der Schurken helfen ihnen, versäumten Tagesaufgaben auszuweichen, Gold zu klauen und die Wahrnehmung ihrer Gruppenmitglieder zu erhöhen.\n* Erwäge, einen Schurken zu spielen, wenn du durch Belohnungen sehr motiviert wirst.",
"faqQuestion68": "Wie kann ich den Verlust von HP verhindern?"
"faqQuestion68": "Wie kann ich den Verlust von HP verhindern?",
"webFaqAnswer68": "Wenn du häufig LP verlierst, probiere diese Tipps aus:\n\n Pausiere deine täglichen Aufgaben. Die Schaltfläche „Schaden pausieren“ in den Einstellungen verhindert, dass du HP für verpasste Aufgaben verlierst.\n Passe den Zeitplan deiner täglichen Aufgaben an. Indem du sie so einstellst, dass sie nie fällig sind, kannst du sie trotzdem abschließen und Belohnungen erhalten, ohne HP zu verlieren.\n Versuche, Klassenfertigkeiten einzusetzen:\n Schurken können „Schleichen“ einsetzen, um Schaden durch verpasste tägliche Aufgaben zu vermeiden.\n Krieger können „Gewaltschlag“ einsetzen, um die Röte einer täglichen Aufgabe zu verringern und so den erlittenen Schaden beim Verpassen zu reduzieren.\n Heiler können „Brennende Helle“ einsetzen, um die Röte einer täglichen Aufgabe zu verringern und so den erlittenen Schaden beim Verpassen zu reduzieren"
}
+3 -3
View File
@@ -37,7 +37,7 @@
"marketing2Lead2Title": "Bekämpfe Monster in Quests",
"marketing2Lead2": "Nimm dich einer unserer hunderten von Quests mit einer Gruppe von Freunden an, um dich ins Getümmel zu stürzen. Die Monster der Quests bringen deine Verantwortlichkeit auf die Spitze. Wenn du vergisst, Zahnseide zu benutzen, schadet das allen!",
"marketing2Lead3Title": "Fordert einander heraus",
"marketing2Lead3": "Nimm an Herausforderungen teil, die von unserer Community erstellt wurden und erhalte zusammengestellte Aufgabenlisten, die deinen Interessen und Zielen entsprechen. Gib dein Bestes dabei, um den Edelsteinpreis zu wetteifern, der dem Gewinner verliehen wird!",
"marketing2Lead3": "Nimm an Herausforderungen teil, die von unserer Community erstellt wurden, und erhalte handverlesene Aufgabenlisten, die deinen Interessen und Zielen entsprechen. Gib dein Bestes, um den Edelsteinpreis zu gewinnen!",
"marketing3Header": "Weitere Möglichkeiten, Habitica zu nutzen",
"marketing3Lead1": "Du kannst Habitica auf deinem Android- oder iOS-Gerät nutzen, um Aufgaben überall abzuhaken. Schau dir unsere preisgekrönten Apps an, um einen neuen Ansatz zur Erledigung von Aufgaben zu finden.",
"marketing3Lead2Title": "Open-Source Community",
@@ -132,12 +132,12 @@
"invalidReqParams": "Ungültige Anfrageparameter.",
"memberIdRequired": "\"member\" muss eine gültige UUID sein.",
"heroIdRequired": "\"herold\" muss eine gültige UUID sein.",
"cannotFulfillReq": "Bitte gib eine gültige E-Mail-Adresse ein. Schreibe eine E-Mail an admin@habitica.com, falls dieser Fehler weiterhin auftritt.",
"cannotFulfillReq": "Diese Mailadresse ist bereits in Gebrauch. Du kannst versuchen dich einzuloggen oder eine andere Mailadresse zur Registrierung verwenden. Wende dich an admin@habitica.com, falls du Hilfe benötigst.",
"modelNotFound": "Diese Vorlage existiert nicht.",
"signUpWithSocial": "Mit <%= social %> fortfahren",
"loginWithSocial": "Mit <%= social %> anmelden",
"confirmPassword": "Passwort bestätigen",
"usernameLimitations": "Benutzernamen können jederzeit geändert werden. Sie müssen zwischen 1 und 20 Zeichen lang sein und dürfen nur Buchstaben von A bis Z, Zahlen von 0 bis 9, Bindestriche und Unterstriche beinhalten.",
"usernameLimitations": "Benutzernamen können jederzeit geändert werden. Sie müssen zwischen 1 und 20 Zeichen lang sein und dürfen nur Buchstaben von a bis z, Zahlen von 0 bis 9, Bindestriche und Unterstriche beinhalten.",
"usernamePlaceholder": "z.B., HabitRabbit",
"emailPlaceholder": "z.B., gryphon@beispiel.com",
"passwordPlaceholder": "z.B., ******************",
+33 -2
View File
@@ -2800,7 +2800,7 @@
"armorMystery202406Text": "Phantom-Seeräuber Kleidung",
"headMystery202406Text": "Phantom-Seeräuber Hut",
"eyewearMystery202406Text": "Phantom-Seeräuber Maske",
"weaponArmoirePaintbrushNotes": "Ein Ruck purer Inspiration durchdringt dich, wenn du diesen Frabpinsel aufhebst, und ermöglicht dir, alles zu malen, was du dir vorstellen kannst. Erhöht Intelligenz um <%= int %>.Verzauberter Schrank: Malerset (Gegenstand 3 von 4).",
"weaponArmoirePaintbrushNotes": "Ein Ruck purer Inspiration durchdringt Dich, wenn Du diesen Frabpinsel aufhebst, und ermöglicht Dir, alles zu malen, was Du Dir vorstellen kannst. Erhöht Intelligenz um <%= int %>.Verzauberter Schrank: Malerset (Gegenstand 3 von 4).",
"weaponArmoirePaintbrushText": "Farbpinsel",
"weaponArmoireMopText": "Mopp",
"weaponArmoireCleaningClothText": "Putzlappen",
@@ -3439,5 +3439,36 @@
"shieldSpecialFall2025HealerNotes": "Verschaffe dir etwas mehr Zeit, um Vorräte zu sammeln, indem du dich vor deinen Aufgaben abschirmst. Erhöht die Konstitution um <%= con %>. Limitierte Ausgabe Herbst 2025 Ausrüstung.",
"shieldArmoireSoftOrangePillowNotes": "Der vorbereitete Krieger packt für jede Expedition ein Kissen ein. Mach dich bereit, neue Verpflichtungen zu übernehmen ... sogar während du ein Nickerchen machst. Erhöht Intelligenz und Wahrnehmung um jeweils <%= attrs %>. Verzauberter Kleiderschrank: Orangenes Loungewear-Set (Gegenstand 3 von 3).",
"bodyMystery202509Text": "Schal des windgepeitschten Wanderers",
"armorSpecialFall2025RogueNotes": "Ein hartes und schmales Ziel in dieser saisonalen Rüstung ist am schwersten zu treffen. Erhöht die Wahrnehmung um <%= per %>. Limitierte Ausgabe Herbst 2025 Ausrüstung."
"armorSpecialFall2025RogueNotes": "Ein hartes und schmales Ziel in dieser saisonalen Rüstung ist am schwersten zu treffen. Erhöht die Wahrnehmung um <%= per %>. Limitierte Ausgabe Herbst 2025 Ausrüstung.",
"weaponSpecialWinter2026WarriorText": "Raureif Sense",
"weaponSpecialWinter2026WarriorNotes": "Sensen helfen beim Schneiden, Ernten und beim Abdecken großer Bereiche - alles Dinge, die du beim Verfeinern von Aufgabenlisten brauchst. Erhöht Stärke um <%= str %>. Limitierte Ausgabe Winterausrüstung 2025-2026.",
"weaponSpecialWinter2026RogueText": "Skistock",
"weaponSpecialWinter2026RogueNotes": "Stistöcke helfen dir dabei, Balance, Stabilität und Timing zu wahren - alles Dinge, die du brauchst, um wirklich produktiv zu sein. Erhöht Stärke um <%= str %>. Limitierte Ausgabe Winterausrüstung 2025-2026.",
"weaponSpecialWinter2026HealerText": "Polarstab",
"weaponSpecialWinter2026HealerNotes": "Stäbe dienen als Stütze, Stabilitätshilfe und zur Richtungsfindung - alles Dinge, die dir beim Bezwingen einer Aufgabenliste wirklich helfen. Erhöht Intelligenz um <%= int %>. Limitierte Ausgabe Winterausrüstung 2025-2026.",
"weaponSpecialWinter2026MageNotes": "Kandelaber helfen, indem sie mehrere Kerzen gleichzeitig halten - folge diesem Beispiel, wenn du das nächste Mal multitasken musst. Erhöht Intelligenz um <%= int %> und Wahrnehmung um <%= per %>. Limitierte Ausgabe Winterausrüstung 2025-2026.",
"weaponSpecialWinter2026MageText": "Kandelaber Stab",
"weaponMystery202512Text": "Klinge des Keks-Champions",
"weaponMystery202512Notes": "Ein glänzendes Schwert, gegossen aus Zucker, Minze und arkanen Zaubern. Gewährt keinen Attributbonus. Dezember 2025 Abonnentengegenstand.",
"weaponArmoireBambooFluteNotes": "Hwhoooo! Hu-whooooo! Versammle Deine Gruppe zu einer Meditationssitzung oder einem Selbstfürsorge-Nickerchen, während ihr euch zu den Klängen dieser Bambusflöte entspannt. Erhöht Konstitution und Intelligenz um jeweils <%= attrs %>. Verzauberter Schrank: Musikinstrumentenset 2 (Artikel 2 von 3)",
"armorSpecialWinter2026WarriorNotes": "Eiszapfen brechen und gleiten bei jedem Schritt auf dem Weg zum Abschluss Deiner täglichen Aufgaben. Erhöht die Konstitution um <%= con %>. Limitierte Auflage Winter 2025-2026 Ausrüstung.",
"armorMystery202512Notes": "Bereit für den Kampf mit diesem Schild, das sowohl süß als auch stark ist. Verleiht keinen Vorteil. Dezember 2025 Abonnenten-Gegenstand.",
"armorSpecialWinter2026HealerNotes": "Wie eine natürliche Lichtshow wirst Du auf Deinem Weg zum Abschluss Deiner täglichen Aufgaben umwerfend aussehen. Erhöht die Konstitution um <%= con %>. Limitierte Auflage Winter 2025-2026 Ausrüstung.",
"armorArmoireLoneCowpokeOutfitText": "Outfit eines einsamen Cowboys",
"armorArmoireLoneCowpokeOutfitNotes": "Halt, halt! Möchtest Du ein Zeichen setzen, wenn Du als geheimnisvoller Fremder in die Stadt reitest, bereit, produktiv zu sein? Hier ist das perfekte Outfit, komplett mit Gamaschen und einer glänzenden, silbernen Gürtelschnalle. Erhöht die Konstitution um <%= con %>. Verzauberter Kleiderschrank: Set „Einsamer Cowboy“ (Artikel 2 von 2)",
"headSpecialWinter2026WarriorNotes": "Behalte Deinen Fokus und Deine Konzentration bei, während Du dich in dieser Saison größere Ziele setzen. Erhöht die Kraft um <%= str %>. Limitierte Auflage 2025-2026 Winterausrüstung.",
"weaponMystery202601Text": "Aegis des Winters",
"weaponMystery202601Notes": "Ein eisiger Blasenschild, der magischen Schutz vor gegnerischen Elementen gewährt. Verleiht keinen Vorteil. Januar 2026 Abonnenten-Gegenstand.",
"weaponArmoireBambooFluteText": "Bambusflöte",
"weaponArmoirePrettyPinkParasolText": "Hübscher rosa Sonnenschirm",
"weaponArmoirePrettyPinkParasolNotes": "Hübsch und praktisch ist die beste Kombination. Und für eine besonders beeindruckende Präsentation dreh diesen Sonnenschirm einfach einmal um! Erhöht alle Werte um jeweils <%= attrs %>. Verzauberter Schrank: Pretty in Pink-Set (Artikel 1 von 2)",
"armorSpecialWinter2026WarriorText": "Raureif-Sensenmann-Anzug",
"armorSpecialWinter2026RogueText": "Skianzug und Skier",
"armorSpecialWinter2026RogueNotes": "Rase schnell die Pisten hinunter, um Deine täglichen Aufgaben zu erledigen. Erhöht die Wahrnehmung um <%= pro %>. Limitierte Auflage Winter 2025-2026 Ausrüstung.",
"armorSpecialWinter2026HealerText": "Polar-Mantel",
"armorSpecialWinter2026MageText": "Mitternachtskerzen-Gewand",
"armorSpecialWinter2026MageNotes": "Gleite geschmeidig wie Wachs über Deinen Weg, um Deine täglichen Aufgaben zu erledigen. Erhöht die Intelligenz um <%= int %>. Limitierte Auflage Winter 2025-2026 Ausrüstung.",
"armorMystery202512Text": "Keks-Champion-Rüstung",
"headSpecialWinter2026WarriorText": "Frostsichel-Helm",
"headSpecialWinter2026RogueText": "Skimaske und Schutzbrille"
}
+3 -1
View File
@@ -426,5 +426,7 @@
"groupTeacher": "Nutzung in der Bildung",
"groupParentChildren": "Nutzung mit der Familie",
"groupManager": "Nutzung für die Arbeit",
"groupFriends": "Nutzung mit Freunden"
"groupFriends": "Nutzung mit Freunden",
"groupPlanBillingFYIShort": "Gruppenpläne verlängern sich automatisch, sofern du sie nicht mindestens 24 Stunden vor Ablauf des aktuellen Zeitraums kündigst. Die Abbuchung erfolgt innerhalb von 24 Stunden vor der Verlängerung deines Abos, basierend auf der Anzahl der Mitglieder in deinem Gruppenplan zu diesem Zeitpunkt. Wenn du zwischen den Abrechnungszeiträumen Mitglieder hinzufügst, wird dir deren Leistung anteilig in deinem nächsten Abrechnungszeitraum in Rechnung gestellt.",
"groupPlanBillingFYI": "Gruppenpläne verlängern sich automatisch, sofern du sie nicht mindestens 24 Stunden vor Ablauf des aktuellen Zeitraums kündigst. Die Kündigung kann über den Tab „Gruppen-Abrechnung“ deines Gruppenplans erfolgen. Die Abbuchung erfolgt innerhalb von 24 Stunden vor der Verlängerung deines Abos, basierend auf der Anzahl der Mitglieder in deinem Gruppenplan zu diesem Zeitpunkt. Wenn du zwischen den Abrechnungszeiträumen Mitglieder hinzufügst, wird dir deren Leistung anteilig in deinem nächsten Abrechnungszeitraum in Rechnung gestellt."
}
+5 -1
View File
@@ -282,5 +282,9 @@
"fall2025SasquatchWarriorSet": "Sasquatch Krieger Set",
"fall2025SkeletonRogueSet": "Skelett Schurken Set",
"fall2025KoboldHealerSet": "Kobold Heiler Set",
"fall2025MaskedGhostMageSet": "Maskengeist Magier Set"
"fall2025MaskedGhostMageSet": "Maskengeist Magier Set",
"winter2026RimeReaperWarriorSet": "Frostschnitter Krieger Set",
"winter2026SkiRogueSet": "Ski Schurken Set",
"winter2026PolarBearHealerSet": "Eisbär Heiler Set",
"winter2026MidwinterCandleMageSet": "Mittwinterkerzen Magier Set"
}
-1
View File
@@ -88,7 +88,6 @@
"success": "Erfolg!",
"classGear": "Klassenausrüstung",
"classGearText": "Glückwunsch zur Wahl Deiner Klasse! Ich habe Deine neue Basiswaffe dem Inventar hinzugefügt. Schaue sie Dir unten an, um sie auszurüsten!",
"autoAllocate": "Automatische Verteilung",
"spells": "Fertigkeiten",
"skillsTitle": "<%= classStr %> Fertigkeiten",
"toDo": "To-Do",
+18 -18
View File
@@ -54,7 +54,7 @@
"questRoosterUnlockText": "Schaltet den Kauf von Hahneneiern auf dem Marktplatz frei",
"questSpiderText": "Die eisige Arachnoide",
"questSpiderNotes": "Das Wetter kühlt sich ab und leichter Frost beginnt auf den Fensterscheiben der Einwohner von Habitica in Form von filigranen Netzen zu erscheinen ... außer bei @Arcosine, dessen Fenster komplett zugefroren sind und bei dem sich die Frostspinne eingenistet hat. Oh je.",
"questSpiderCompletion": "Die Frostspinne bricht zusammen. Von ihr bleibt nur ein kleiner Haufen Frost und ein paar ihrer verzauberten Eiersäcke übrig. @Arcosine bietet sie Dir recht hastig als Belohnung an vielleicht könntest Du ein paar ungefährliche Spinnen als Deine Haustiere aufziehen?",
"questSpiderCompletion": "Die Frostspinne bricht zusammen. Von ihr bleibt nur ein kleiner Haufen Frost und ein paar ihrer verzauberten Eiersäcke zurück. @Arcosine bietet sie Dir recht hastig als Belohnung an vielleicht könntest Du ein paar ungefährliche Spinnen als Deine Haustiere aufziehen?",
"questSpiderBoss": "Spinnentier",
"questSpiderDropSpiderEgg": "Spinnentier (Ei)",
"questSpiderUnlockText": "Schaltet den Kauf von Spinneneiern auf dem Marktplatz frei",
@@ -113,7 +113,7 @@
"questGoldenknight3DropWeapon": "Mustaines Meilenstein-matschender Morgenstern (Zweithand-Waffe)",
"questGroupEarnable": "Verdienbare Quests",
"questBasilistText": "Der Basi-List",
"questBasilistNotes": "Da ist ein Aufruhr auf dem Marktplatz es sieht ganz so aus, als ob man lieber in die andere Richtung rennen sollte. Da Du aber ein mutiger Abenteurer bist, rennst Du stattdessen darauf zu und entdeckst einen Basi-List, der sich aus einem Haufen unerledigter Aufgaben geformt hat! Alle umstehenden Habiticaner sind aus Angst vor der Länge des Basi-Lists gelähmt und können nicht anfangen zu arbeiten. Von irgendwo in der Nähe hörst Du @Arcosine schreien: \"Schnell! Erledige Deine To-Dos und Tagesaufgaben, um dem Monster die Zähne zu entfernen, bevor sich jemand am Papier schneidet!\" Greife schnell an, Abenteurer, und hake etwas ab - aber Vorsicht! Wenn Du irgendwelche Tagesaufgaben nicht erledigst, wird der Basi-List Dich und Deine Party angreifen!",
"questBasilistNotes": "Da ist ein Aufruhr auf dem Marktplatzes sieht ganz so aus, als ob man lieber in die andere Richtung rennen sollte. Da Du aber ein mutiger Abenteurer bist, rennst Du stattdessen darauf zu und entdeckst einen Basi-List, der sich aus einem Haufen unerledigter Aufgaben geformt hat! Alle umstehenden Habiticaner sind aus Angst vor der Länge des Basi-Lists gelähmt und können nicht anfangen zu arbeiten. Von irgendwo in der Nähe hörst Du @Arcosine schreien: \"Schnell! Erledige Deine To-Dos und Tagesaufgaben, um dem Monster die Zähne zu entfernen, bevor sich jemand am Papier schneidet!\" Greife schnell an, Abenteurer, und hake etwas ab - aber Vorsicht! Wenn Du irgendwelche Tagesaufgaben nicht erledigst, wird der Basi-List Dich und Deine Party angreifen!",
"questBasilistCompletion": "Der Basi-List ist in Papierschnitzel zerfallen, die sanft in Regenbogenfarben schimmern. \"Puh!\" sagt @Arcosine. \"Gut, dass ihr gerade hier wart!\" Du fühlst Dich erfahrener als vorher und sammelst ein paar verstreute Goldstücke zwischen den Papierstücken auf.",
"questBasilistBoss": "Der Basi-List",
"questEggHuntText": "Eierjagd",
@@ -253,7 +253,7 @@
"questDilatoryDistress3DropWeapon": "Dreizack der zerschmetternden Gezeiten (Waffe)",
"questDilatoryDistress3DropShield": "Mondperlenschild (Schildhand-Gegenstand)",
"questCheetahText": "Der Mogel-Gepard",
"questCheetahNotes": "Während Du mit Deinen Freunden @PainterProphet, @tivaquinn, @Unruly Hyena und @Crawford durch die Ruhilangsam-Savanne wanderst, schreckst Du plötzlich hoch, als Du einen Mogel-Geparden vorbeischnellen siehst, der einen kreischenden Jung-Habiticaner mit dem Maul gepackt hat. Unter den feurigen Pfoten des Geparden verbrennen die Aufgaben, als ob sie erledigt wären -- bevor überhaupt jemand die Möglichkeit dazu hat, diese tatsächlich abzuschließen! Der Habiticaner sieht Dich und ruft: \"Bitte hilf mir! Der Mogel-Gepard lässt meinen Level zu schnell ansteigen, ohne dass ich wirklich etwas erledigen kann. Ich will langsamer machen und das Spiel genießen. Halte ihn auf!\" Liebevoll erinnerst Du Dich an die Tage, and denen Du selbst flügge wurdest, und Du weißt, dass Du dem Neuling helfen musst, indem Du den Mogel-Geparden aufhältst!",
"questCheetahNotes": "Während Du mit Deinen Freunden @PainterProphet, @tivaquinn, @Unruly Hyena und @Crawford durch die Ruhilangsam-Savanne wanderst, schreckst Du plötzlich hoch, als Du einen Mogel-Geparden vorbeischnellen siehst, der einen kreischenden Jung-Habiticaner mit dem Maul gepackt hat. Unter den feurigen Pfoten des Geparden verbrennen die Aufgaben, als ob sie erledigt wärenbevor überhaupt jemand die Möglichkeit dazu hat, diese tatsächlich abzuschließen! Der Habiticaner sieht Dich und ruft: \"Bitte hilf mir! Der Mogel-Gepard lässt meinen Level zu schnell ansteigen, ohne dass ich wirklich etwas erledigen kann. Ich will langsamer machen und das Spiel genießen. Halte ihn auf!\" Liebevoll erinnerst Du Dich an die Tage, and denen Du selbst flügge wurdest, und Du weißt, dass Du dem Neuling helfen musst, indem Du den Mogel-Geparden aufhältst!",
"questCheetahCompletion": "Der Jung-Habiticaner atmet schwer nach dem wilden Ritt, aber er dankt Dir und Deinen Freunden für eure Hilfe: \"Ich bin froh, dass der Gepard niemand anderen mehr schnappen kann. Er hat aber ein paar Gepardeneier für uns hinterlassen, vielleicht können wir die zu vertrauenswürdigeren Haustieren großziehen!\"",
"questCheetahBoss": "Gepard",
"questCheetahDropCheetahEgg": "Gepard (Ei)",
@@ -277,7 +277,7 @@
"questBurnoutBossRageSeasonalShop": "`Burnout benutzt ERSCHÖPFUNGSSCHLAG!`\n\nAhh!!! Unsere unerledigten Tagesaufgaben haben die Flammen von Burnout genährt und nun hat es genug Energie, um nochmal anzugreifen! Es lässt einen Schwall von Spektralflammen los, welches den Jahreszeitenmarkt ansengt. Du bist erschrocken zu sehen, dass die heitere Jahreszeitenzauberin in einen schlaffen Erschöpfungsgeist transformiert wurde.\n\nWir müssen die NPCs retten! Schnell, Habiticaner, erledigt eure Aufgaben und besiegt Burnout bevor es ein drittes Mal zuschlägt!",
"questBurnoutBossRageTavern": "`Burnout benutzt ERSCHÖPFUNGSSCHLAG!`\n\nViele Habiticaner haben sich vor Burnout in der Taverne versteckt, aber nicht mehr lange! Mit einem kreischenden Heulen harkt Burnout die Taverne mit seinen weiß glühenden Händen. Während die Taverne-Gäste fliehen, wird Daniel von Burnouts Klauen gepackt und verwandelt sich direkt vor Deinen Augen in einen Erschöpfungsgeist!.\n\nDieser unbeherrschte Horror dauert schon viel zu lange. Gib nicht auf ... wir sind so nah dran Burnout ein für alle Mal zu bezwingen!",
"questFrogText": "Sumpf des Chaos-Froschs",
"questFrogNotes": "Als Du Dich mit Deinen Freunden durch den Sumpf des Stillstands schlägst, deutet @starsystemic auf ein großes Schild: \"Auf dem Weg bleiben wenn möglich.\"<br><br>\"Das ist sicher nicht schwer\" sagt @RosemonkeyCT. \"Er ist breit und frei.\"<br><br>Aber als Ihr weitergeht, bemerkst Du, dass der Weg langsam immer mehr vom Moor des Sumpfs eingenommen wird, übersät mit Stücken blauen Gerölls und Müll. Irgendwann ist es unmöglich voranzukommen.<br><br>Als Du Dich umsiehst und Dich fragst, wie es hier so verschmutzt werden konnte, ruft @Jon Arjinborn: \"Passt auf!\" Ein wütender Frosch springt aus dem Schlamm hervor, bekleidet mit dreckigen Lumpen und von blauem Feuer entfacht. Du musst diesen giftigen Chaos-Frosch überwältigen um weiterzukommen!",
"questFrogNotes": "Als Du Dich mit Deinen Freunden durch den Sumpf des Stillstands schlägst, deutet @starsystemic auf ein großes Schild: \"Auf dem Weg bleibenwenn möglich.\"<br><br>\"Das ist sicher nicht schwer\" sagt @RosemonkeyCT. \"Er ist breit und frei.\"<br><br>Aber als Ihr weitergeht, bemerkst Du, dass der Weg langsam immer mehr vom Moor des Sumpfs eingenommen wird, übersät mit Stücken blauen Gerölls und Müll. Irgendwann ist es unmöglich voranzukommen.<br><br>Als Du Dich umsiehst und Dich fragst, wie es hier so verschmutzt werden konnte, ruft @Jon Arjinborn: \"Passt auf!\" Ein wütender Frosch springt aus dem Schlamm hervor, bekleidet mit dreckigen Lumpen und von blauem Feuer entfacht. Du musst diesen giftigen Chaos-Frosch überwältigen um weiterzukommen!",
"questFrogCompletion": "Der Frosch duckt sich weg in den Dreck, geschlagen. Als er von dannen zieht, verschwindet der blaue Schleim und gibt den Weg frei.<br><br>Mitten im Weg stehen drei makellose Eier. \"Man kann sogar die winzigen Kaulquappen durch die Schale sehen!\" sagt @Breadstring. \"Hier, Du solltest sie nehmen.\"",
"questFrogBoss": "Chaos-Frosch",
"questFrogDropFrogEgg": "Frosch (Ei)",
@@ -313,7 +313,7 @@
"questSnailDropSnailEgg": "Schnecke (Ei)",
"questSnailUnlockText": "Schaltet den Kauf von Schneckeneiern auf dem Marktplatz frei",
"questBewilderText": "Der Verwirrer",
"questBewilderNotes": "Die Party beginnt wie jede Andere.<br><br>Die Appetithäppchen sind exzellent, die Musik sorgt für lockere Stimmung und sogar an die tanzenden Elefanten hat man sich gewöhnt. Habiticaner lachen ausgelassen zwischen den ausladenden Blumengestecken, froh um eine Ablenkung von Ihren meist-gehassten Aufgaben, und der April-Scherzkeks wirbelt zwischen ihnen herum, eifrig Scherze und Schabernack treibend.<br><br>Als die Uhr des Mistiflying Uhrturms Mitternacht schlägt, springt der April-Scherzkeks auf die Bühne um eine Rede zu halten.<br><br>\"Freunde! Feinde! Tolerante Bekannte! Leiht mir euer Ohr!\" Als aus ihren Köpfen Tierohren sprießen, kichert die Schar und posiert mit ihren neuen Verkleidungen.<br><br>\"Wie ihr alle wisst,\" fährt der April-Scherzkeks weiter, \"dauern meine verwirrenden Illusionen normalerweise nur einen Tag. Deshalb freue ich mich besonders euch mitzuteilen, dass ich eine Abkürzung gefunden habe, die uns Spaß ohne Ende verspricht, ohne dass wir uns um die mühsame Last unserer Pflichten sorgen müssen. Liebe Habiticaner, ich stelle euch hiermit meinen neuen, magischen Freund vor: den Verwirrer!\"<br><br>Lemoness wird plötzlich bleich und lässt ihre Häppchen fallen. \"Wartet! Traut ihm ni--\"<br><br>Doch schon stürzen Nebelschwaden in den Saal, dick und glitzernd. Sie wirbeln um den April-Scherzkeks und vereinen sich zu verschwommenen Federn und einem langen Hals. The Menge ist sprachlos, während sich vor ihr ein monströser Vogel entfaltet, seine Flügel schimmernd vor lauter Illusionen. Er gibt ein fürchterliches, kreischendes Lachen von sich.<br><br>\"Oh, es ist schon Ewigkeiten her, seit ein Habiticaner töricht genug war, mich herbeizurufen! Wie wundervoll es ist, endlich eine greifbare Form zu haben!\"<br><br>Erschreckt summend fliehen die magischen Bienen von Mistiflying aus der fliegenden Stadt, die aus dem Himmel sackt. Eine nach der anderen verwelken die leuchtenden Frühlingsblumen und schrumpfen weg.<br><br>\"Meine liebsten Freunde, warum so beunruhigt?\" krächzt der Verwirrer, während er mit den Flügeln schlägt. \"Es gibt keinen Grund mehr, euch für eure Belohnungen abzurackern. Ich werde euch alles geben, was ihr euch wünscht!\"<br><br>Ein Münzenschauer stürzt aus dem Himmel und hämmert sich mit brutaler Kraft in den Boden. Die Menge schreit und sucht Deckung. \"Soll das ein Scherz sein?\" ruft Baconsaur, während das Gold Fenster einschlägt und die Schindeln auf den Dächern zerschmettert.<br><br>PainterProphet duckt sich, als Blitze über den Himmel schießen und Nebel die Sonne verdunkelt. \"Nein! Diesmal ist es glaube ich kein Scherz!\"<br><br>Schnell, Habiticaner, lasst diesen Weltboss euch nicht von euren Zielen ablenken! Konzentriert euch auf das, was ihr zu erledigen habt, um Mistiflying zu retten -- und hoffentlich euch selbst.",
"questBewilderNotes": "Die Party beginnt wie jede Andere.<br><br>Die Appetithäppchen sind exzellent, die Musik sorgt für lockere Stimmung und sogar an die tanzenden Elefanten hat man sich gewöhnt. Habiticaner lachen ausgelassen zwischen den ausladenden Blumengestecken, froh um eine Ablenkung von Ihren meist-gehassten Aufgaben, und der April-Scherzkeks wirbelt zwischen ihnen herum, eifrig Scherze und Schabernack treibend.<br><br>Als die Uhr des Mistiflying Uhrturms Mitternacht schlägt, springt der April-Scherzkeks auf die Bühne um eine Rede zu halten.<br><br>\"Freunde! Feinde! Tolerante Bekannte! Leiht mir euer Ohr!\" Als aus ihren Köpfen Tierohren sprießen, kichert die Schar und posiert mit ihren neuen Verkleidungen.<br><br>\"Wie ihr alle wisst,\" fährt der April-Scherzkeks weiter, \"dauern meine verwirrenden Illusionen normalerweise nur einen Tag. Deshalb freue ich mich besonders euch mitzuteilen, dass ich eine Abkürzung gefunden habe, die uns Spaß ohne Ende verspricht, ohne dass wir uns um die mühsame Last unserer Pflichten sorgen müssen. Liebe Habiticaner, ich stelle euch hiermit meinen neuen, magischen Freund vor: den Verwirrer!\"<br><br>Lemoness wird plötzlich bleich und lässt ihre Häppchen fallen. \"Wartet! Traut ihm ni--\"<br><br>Doch schon stürzen Nebelschwaden in den Saal, dick und glitzernd. Sie wirbeln um den April-Scherzkeks und vereinen sich zu verschwommenen Federn und einem langen Hals. The Menge ist sprachlos, während sich vor ihr ein monströser Vogel entfaltet, seine Flügel schimmernd vor lauter Illusionen. Er gibt ein fürchterliches, kreischendes Lachen von sich.<br><br>\"Oh, es ist schon Ewigkeiten her, seit ein Habiticaner töricht genug war, mich herbeizurufen! Wie wundervoll es ist, endlich eine greifbare Form zu haben!\"<br><br>Erschreckt summend fliehen die magischen Bienen von Mistiflying aus der fliegenden Stadt, die aus dem Himmel sackt. Eine nach der anderen verwelken die leuchtenden Frühlingsblumen und schrumpfen weg.<br><br>\"Meine liebsten Freunde, warum so beunruhigt?\" krächzt der Verwirrer, während er mit den Flügeln schlägt. \"Es gibt keinen Grund mehr, euch für eure Belohnungen abzurackern. Ich werde euch alles geben, was ihr euch wünscht!\"<br><br>Ein Münzenschauer stürzt aus dem Himmel und hämmert sich mit brutaler Kraft in den Boden. Die Menge schreit und sucht Deckung. \"Soll das ein Scherz sein?\" ruft Baconsaur, während das Gold Fenster einschlägt und die Schindeln auf den Dächern zerschmettert.<br><br>PainterProphet duckt sich, als Blitze über den Himmel schießen und Nebel die Sonne verdunkelt. \"Nein! Diesmal ist es glaube ich kein Scherz!\"<br><br>Schnell, Habiticaner, lasst diesen Weltboss euch nicht von euren Zielen ablenken! Konzentriert euch auf das, was ihr zu erledigen habt, um Mistiflying zu rettenund hoffentlich euch selbst.",
"questBewilderCompletion": "<strong>Der Verwirrer ist BESIEGT!</strong><br><br>Wir haben es geschafft! Der Verwirrer stößt einen heulenden Schrei aus, windet sich in der Luft und verliert büschelweise Federn. Langsam, nach und nach wickelt er sich zu einer funkelnden Nebelwoke auf. Die enthüllte Sonne durchdingt den Nebel, vertreibt ihn und enthüllt die hustenden, glücklicherweise menschlichen Formen von Matt, Bailey, Alex ... und dem April-Scherzkeks persönlich.<br><br><strong>Mistiflying ist gerettet!</strong><br><br>Der April-Scherzkeks schämt sich immerhin genug, um etwas verlegen dazustehen. \"Oh, ähm,\" sagt er. \"Vielleicht habe ich mich ein wenig ... gehen lassen.\"”<br><br>Die Menschenmenge murrt. Durchnässte Blumen werden auf Gehsteigen angeschwemmt. Irgendwo in der Ferne stürzt ein Dach mit spektakulärem Krachen ein.<br><br>\"Ähm, ja,\" sagt der April-Scherzkeks. \"Also, was ich sagen wollte, es tut mir schrecklich leid.\" Er seufzt schwer. \"Ich vermute mal, es kann doch nicht nur Spaß und Spiel geben. Es kann wohl nicht schaden, sich ab und zu mal auf etwas zu konzentrieren. Vielleicht kann ich ja schon mal den nächsten Aprilscherz vorbereiten.\"<br><br>Redphoenix räuspert sich vielsagend.<br><br>\"Ich meine, den nächsten Frühjahrsputz!\" korrigiert sich der April-Scherzkeks. \"Habt keine Angst, ich werde Habit City rasch wieder blitzblank haben. Niemand ist besser als ich mit dem Doppelmopp.\"<br><br>Ermuntert beginnt die Kapelle zu spielen.<br><br>Es dauert nicht lange bis alles in Habit City wieder seinen normalen Lauf nimmt. Außerdem, jetzt wo der Verwirrer pulverisiert ist, sind die magischen Bienen von Mistiflying wieder eifrig am Werk und schon bald blühen die Blumen und die Stadt schwebt von Neuem.<br><br>Als die Habiticaner die magischen, flaumigen Bienen knuddeln, beginnen die Augen des April-Scherzkeks zu leuchten. \"Oho, mir kommt eine Idee! Warum haltet ihr euch eigentlich keine dieser flaumigen Bienen als Haustiere und Reittiere? Das ist ein Geschenk, welches das Gleichgewicht zwischen harter Arbeit und süßer Belohnung symbolisiert, wenn ich das mal so langweilig und sinnbildlich sagen darf.\" Er zwinkert. \"Und außerdem haben sie keinen Stachel! Narrenehrenwort.\"",
"questBewilderCompletionChat": "`Der Verwirrer is BESIEGT!`\n\nWir haben es geschafft! Der Verwirrer stößt einen heulenden Schrei aus, windet sich in der Luft und verliert büschelweise Federn. Langsam, nach und nach wickelt er sich zu einer funkelnden Nebelwoke auf. Die enthüllte Sonne durchdingt den Nebel, vertreibt ihn und enthüllt die hustenden, glücklicherweise menschlichen Formen von Matt, Bailey, Alex ... und dem April-Scherzkeks persönlich.\n\n`Mistiflying ist gerettet!`\n\nDer April-Scherzkeks schämt sich immerhin genug, um etwas verlegen dazustehen. \"Oh, ähm,\" sagt er. \"Vielleicht habe ich mich ein wenig ... gehen lassen.\"\n\nDie Menschenmenge murrt. Durchnässte Blumen werden auf Gehsteigen angeschwemmt. Irgendwo in der Ferne stürzt ein Dach mit spektakulärem Krachen ein.\n\n\"Ähm, ja,\" sagt der April-Scherzkeks. \"Also, was ich sagen wollte, es tut mir schrecklich leid.\" Er seufzt schwer. \"Ich vermute mal, es kann doch nicht nur Spaß und Spiel geben. Es kann wohl nicht schaden, sich ab und zu mal auf etwas zu konzentrieren. Vielleicht kann ich ja schon mal den nächsten Aprilscherz vorbereiten.\"\n\nRedphoenix räuspert sich vielsagend.\n\n\"Ich meine, den nächsten Frühjahrsputz!\" korrigiert sich der April-Scherzkeks. \"Habt keine Angst, ich werde Habit City rasch wieder blitzblank haben. Niemand ist besser als ich mit dem Doppelmopp.\"\n\nErmuntert beginnt die Kapelle zu spielen\n\nEs dauert nicht lange bis alles in Habit City wieder seinen normalen Lauf nimmt. Außerdem, jetzt wo der Verwirrer pulverisiert ist, sind die magischen Bienen von Mistiflying wieder eifrig am Werk und schon bald blühen die Blumen und schwebt die Stadt von Neuem.\n\nAls die Habiticaner die magischen, flaumigen Bienen knuddeln, beginnen die Augen des April-Scherzkeks zu leuchten. \"Oho, mir kommt eine Idee! Warum haltet ihr euch eigentlich keine dieser flaumigen Bienen als Haustiere und Reittiere? Das ist ein Geschenk, welches das Gleichgewicht zwischen harter Arbeit und süßer Belohnung symbolisiert, wenn ich das mal so langweilig und sinnbildlich sagen darf.\" Er zwinkert. \"Und außerdem haben sie keinen Stachel! Narrenehrenwort.\"",
"questBewilderBossRageTitle": "Betörungsschlag",
@@ -357,7 +357,7 @@
"questArmadilloDropArmadilloEgg": "Gürteltier (Ei)",
"questArmadilloUnlockText": "Schaltet den Kauf von Gürteltiereiern auf dem Marktplatz frei",
"questCowText": "Die Muhtanten-Kuh",
"questCowNotes": "Es war ein langer, heißer Tag auf der Übungs-Farm, und Du würdest nichts lieber tun als einen großen Schluck Wasser zu trinken und etwas zu schlafen. Während Du vor Dich hinträumst, schreit @Soloana plötzlich: \"Lauft! Die Siegerkuh ist muhtiert!\"<br><br>@eevachu schluckt. \"Unsere schlechten Angewohnheiten müssen sie infiziert haben.\"<br><br>\"Schnell!\", meint @Feralem Tau. \"Lasst uns etwas unternehmen, bevor die anderen Kühe ebenfalls muhtieren.\"<br><br>Du hast genug gehört. Keine Tagträumereien mehr -- Es ist Zeit die schlechten Angewohnheiten unter Kontrolle zu bringen!",
"questCowNotes": "Es war ein langer, heißer Tag auf der Übungs-Farm, und Du würdest nichts lieber tun als einen großen Schluck Wasser zu trinken und etwas zu schlafen. Während Du vor Dich hinträumst, schreit @Soloana plötzlich: \"Lauft! Die Siegerkuh ist muhtiert!\"<br><br>@eevachu schluckt. \"Unsere schlechten Angewohnheiten müssen sie infiziert haben.\"<br><br>\"Schnell!\", meint @Feralem Tau. \"Lasst uns etwas unternehmen, bevor die anderen Kühe ebenfalls muhtieren.\"<br><br>Du hast genug gehört. Keine Tagträumereien mehrEs ist Zeit die schlechten Angewohnheiten unter Kontrolle zu bringen!",
"questCowCompletion": "Du pflegst Deine guten Gewohnheiten solange, bis die Kuh wieder ihre ursprüngliche Gestalt annimmt. Die Kuh sieht Dich mit ihren schönen, braunen Augen an und schubst drei Eier zu Dir herüber.<br><br>@fuzzytrees lacht und überreicht Dir die Eier: \"Vielleicht sind die Babykühe darin immernoch muhtiert. Aber ich vertraue darauf, dass Du Deine guten Gewohnheiten beibehältst, wenn Du sie großziehst!\"",
"questCowBoss": "Muhtanten-Kuh",
"questCowDropCowEgg": "Kuh (Ei)",
@@ -387,7 +387,7 @@
"questTaskwoodsTerror2CollectDryads": "Dryaden",
"questTaskwoodsTerror2DropArmor": "Roben des Feuerkundlers (Rüstung)",
"questTaskwoodsTerror3Text": "Schrecken in den Aufgabenwäldern, Teil 3: Jacko aus der Laterne",
"questTaskwoodsTerror3Notes": "Bereit zum Kampf, marschiert Deine Gruppe in das Herz des Waldes, dort wo der abtrünnige Geist versucht einen uralten Apfelbaum zu zerstören, der von ertragreichen Beerenbüschen umgeben ist. Sein Kürbis-ähnlicher Schädel verströmt ein schreckliches Licht, wohin auch immer es sich dreht, und in seiner linken Hand hält er einen langen Stab, an dessen Spitze eine Laterne herabhängt. Statt Feuers oder Flammen, enthält die Laterne jedoch einen dunklen Kristall, der Dich bis auf die Knochen frösteln lässt.<br><br>Der Fröhliche Reaper führt eine Knochenhand zum Mund. \"Das das ist Jacko, der Laternengeist! Aber er ist ein hilfreicher Erntegeist, der unsere Bauern anführt. Was könnte mit der armen Seele geschehen sein, dass sie so etwas anrichtet?\"<br><br>\"Ich habe keine Ahnung\", sagt @bridgetteempress. \"Aber es hat den Anschein, als würde die 'arme Seele' uns gleich angreifen!\"",
"questTaskwoodsTerror3Notes": "Bereit zum Kampf, marschiert Deine Gruppe in das Herz des Waldes, dort wo der abtrünnige Geist versucht einen uralten Apfelbaum zu zerstören, der von ertragreichen Beerenbüschen umgeben ist. Sein Kürbis-ähnlicher Schädel verströmt ein schreckliches Licht, wohin auch immer es sich dreht, und in seiner linken Hand hält er einen langen Stab, an dessen Spitze eine Laterne herabhängt. Statt Feuers oder Flammen, enthält die Laterne jedoch einen dunklen Kristall, der Dich bis auf die Knochen frösteln lässt.<br><br>Der Fröhliche Reaper führt eine Knochenhand zum Mund. \"Dasdas ist Jacko, der Laternengeist! Aber er ist ein hilfreicher Erntegeist, der unsere Bauern anführt. Was könnte mit der armen Seele geschehen sein, dass sie so etwas anrichtet?\"<br><br>\"Ich habe keine Ahnung\", sagt @bridgetteempress. \"Aber es hat den Anschein, als würde die 'arme Seele' uns gleich angreifen!\"",
"questTaskwoodsTerror3Completion": "Nach einem langen Kampf schaffst Du es schließlich mit einen wohl-gezielten Schuss die Laterne, die Jacko mit sich führt, zu treffen, und der Kristall darin zerbirst. Jackos Sinne kehren plötzlich zurück, und er bricht in glühende Tränen aus. \"Oh, mein schöner Wald! Was habe ich bloß getan!?\" wimmert er. Seine Tränen löschen die übriggebliebenen Flammen, und der Apfelbaum und die wilden Beeren sind gerettet.<br><br>Nachdem Du ihm geholfen hast sich zu beruhigen, erklärt er: \"Ich traf diese charmante Dame namens Tzina, und sie hat mir diesen glühenden Kristall als Geschenk überreicht. Auf ihr Drängen hin, habe ich ihn in meine Laterne gestellt... aber das ist das Letzte, an das ich mich erinnern kann.\" Er dreht sich mit einem goldenen Lächeln zu Dir. \"Vielleicht solltest Du sie für eine Weile an Dich nehmen, um sie sicher zu verwahren, solange ich dabei helfe die wilden Obstplantagen wieder wachsen zu lassen.\"",
"questTaskwoodsTerror3Boss": "Jacko aus der Laterne",
"questTaskwoodsTerror3DropStrawberry": "Erdbeere (Futter)",
@@ -425,14 +425,14 @@
"questSlothDropSlothEgg": "Faultier (Ei)",
"questSlothUnlockText": "Schaltet den Kauf von Faultiereiern auf dem Marktplatz frei",
"questTriceratopsText": "Der Trampelnde Triceratops",
"questTriceratopsNotes": "Auf den schneebedeckten Stoïstillen Vulkanen herrscht stets ein reger Trubel von Wanderern und Besichtigenden. Eine Touristin, @plumilla, ruft ein Grüppchen von Leuten herbei. \"Schaut! Ich habe den Boden leuchtend gezaubert, damit wir ein Outdoor-Spielfeld für unsere Tagesaufgaben draußen haben!\" Tatsächlich wirbeln glühend rote Muster auf dem Boden umher. Sogar ein paar der prähistorischen Haustiere kommen zum Spielen herüber.<br><br>Plötzlich hört man ein lautes Knacken ein neugieriger Triceratops ist auf @plumillas Zauberstab getreten! Er wird von einem Ausbruch magischer Energie umhüllt, und der Boden beginnt zu beben und heiß zu werden. Rot glühen die Augen des Triceratops, unter lautem Brüllen fängt er an wild umherzutrampeln!<br><br>\"Das ist nicht gut\", ruft @McCoyly in die Ferne zeigend. Jeder magisch verstärkte Stampfer lässt die Vulkane mehr ausbrechen, und der glühende Boden unter seinen Saurierfüßen wird zu Lava! Schnell, Du musst den Trampelnden Triceratops aufhalten, bis jemand den Zauberspruch rückgängig macht!",
"questTriceratopsNotes": "Auf den schneebedeckten Stoïstillen Vulkanen herrscht stets ein reger Trubel von Wanderern und Besichtigenden. Eine Touristin, @plumilla, ruft ein Grüppchen von Leuten herbei. \"Schaut! Ich habe den Boden leuchtend gezaubert, damit wir ein Outdoor-Spielfeld für unsere Tagesaufgaben draußen haben!\" Tatsächlich wirbeln glühend rote Muster auf dem Boden umher. Sogar ein paar der prähistorischen Haustiere kommen zum Spielen herüber.<br><br>Plötzlich hört man ein lautes Knackenein neugieriger Triceratops ist auf @plumillas Zauberstab getreten! Er wird von einem Ausbruch magischer Energie umhüllt, und der Boden beginnt zu beben und heiß zu werden. Rot glühen die Augen des Triceratops, unter lautem Brüllen fängt er an wild umherzutrampeln!<br><br>\"Das ist nicht gut\", ruft @McCoyly in die Ferne zeigend. Jeder magisch verstärkte Stampfer lässt die Vulkane mehr ausbrechen, und der glühende Boden unter seinen Saurierfüßen wird zu Lava! Schnell, Du musst den Trampelnden Triceratops aufhalten, bis jemand den Zauberspruch rückgängig macht!",
"questTriceratopsCompletion": "Geistesgegenwärtig treibst du die Kreatur in Richtung der beruhigenden Stoïstillen Steppen, so dass @*~Seraphina~* und @PainterProphet ungestört den Lavaspruch rückgängig machen können. Die besänftigende Aura der Steppen fängt an zu wirken und der Triceratops rollt sich ein, die Vulkane werden wieder inaktiv. @PainterProphet reicht Dir ein paar Eier, die vor der Lava gerettet wurden. \"Wir hätten ohne Dich nicht die Konzentration gefunden, um die Ausbrüche zu stoppen. Gib diesen Haustieren ein gutes Zuhause.\"",
"questTriceratopsBoss": "Trampelnder Triceratops",
"questTriceratopsDropTriceratopsEgg": "Triceratops (Ei)",
"questTriceratopsUnlockText": "Schaltet den Kauf von Triceratopseiern auf dem Marktplatz frei",
"questGroupStoikalmCalamity": "Stoïstilles Unglück",
"questStoikalmCalamity1Text": "Stoïstilles Unglück, Teil 1: Erdgegner",
"questStoikalmCalamity1Notes": "Ein knappes Schreiben von @Kiwibot trifft ein; nicht nur ist die frostbedeckte Schriftrolle eiskalt, sondern sie lässt Dir auch kalte Schauer den Rücken runterlaufen. \"Bin in Stoïstillen Steppen Monster platzen aus Boden brauche Hilfe!\" Du versammelst Deine Party und reitest gen Norden, doch gerade, als Ihr Euch den Berg hinabbewegt, explodiert der Schnee unter Euren Füßen und grausig grinsende Schädel umzingeln Euch! <br><br>Plötzlich fliegt ein Speer an Euch vorbei und gräbt sich in einen Schädel, der Dich, sich durch den Schnee buddelnd, unbemerkt angreifen wollte. Eine große Frau in fein geschmiedeter Rüstung galoppiert auf dem Rücken eines Mastodons in die Schlacht und zieht mit wehendem Zopf rabiat den Speer wieder aus dem zerquetschten Biest. Zeit, die Feinde mit der Hilfe von Lady Glaciate, der Anführerin der Mammutreiter, zu bekämpfen!",
"questStoikalmCalamity1Notes": "Ein knappes Schreiben von @Kiwibot trifft ein; nicht nur ist die frostbedeckte Schriftrolle eiskalt, sondern sie lässt Dir auch kalte Schauer den Rücken runterlaufen. \"Bin in Stoïstillen SteppenMonster platzen aus Bodenbrauche Hilfe!\" Du versammelst Deine Party und reitest gen Norden, doch gerade, als Ihr Euch den Berg hinabbewegt, explodiert der Schnee unter Euren Füßen und grausig grinsende Schädel umzingeln Euch! <br><br>Plötzlich fliegt ein Speer an Euch vorbei und gräbt sich in einen Schädel, der Dich, sich durch den Schnee buddelnd, unbemerkt angreifen wollte. Eine große Frau in fein geschmiedeter Rüstung galoppiert auf dem Rücken eines Mastodons in die Schlacht und zieht mit wehendem Zopf rabiat den Speer wieder aus dem zerquetschten Biest. Zeit, die Feinde mit der Hilfe von Lady Glaciate, der Anführerin der Mammutreiter, zu bekämpfen!",
"questStoikalmCalamity1Completion": "Als Du den letzten Schädeln den Gnadenstoß versetzt, lösen sie sich in einen Hauch Magie auf. \"Der verflixte Schwarm mag zwar verschwunden sein\", sagt Lady Glaciate, \"aber wir haben größere Probleme. Folge mir.\" Sie wirft Dir zum Schutz vor der eisigen Luft einen Mantel zu und Du reitest ihr nach.",
"questStoikalmCalamity1Boss": "Erdschädelschwarm",
"questStoikalmCalamity1RageTitle": "Schwarmnachwuchs",
@@ -442,7 +442,7 @@
"questStoikalmCalamity1DropDesertPotion": "Wüstenfarbenes Schlüpfelixier",
"questStoikalmCalamity1DropArmor": "Mammutreiter-Rüstung",
"questStoikalmCalamity2Text": "Stoïstilles Unglück, Teil 2: Such' die Eiszapfenhöhlen",
"questStoikalmCalamity2Notes": "Die imposante Halle der Mammutrreiter ist ein asketisches Meiserwerk der Architektur, allerdings ist sie auch absolut leer. Es ist keine Ausstattung vorhanden, die Waffen fehlen und sogar in Säulen wurden ihrer Verzierungen beraubt. \"Die Totenschädel haben diese Halle leergeräumt,\" sagt Lady Glaciate; in ihrer Stimme tobt ein Wirbelsturm. \"Das ist erniedrigend. Kein Wort hiervon an den prilnarren, oder ich bekomme das ewig vorgehalten.\"<br><br>\"Wie misteriös!\", sagt @Beffymaroo. \"Doch wohin sind sie\"<br><br>\"Die Eiszapfendrachenhöhle.\" Lady Glaciate deutet auf glänzende Münzen, die draußen im Schnee verstreut liegen. \"Schlampig.\"<br>\"Aber sind Eiszapfendrachen nicht ehrenhafte Wesen mit ihrem eigenen Schatzhort?\", fragt @Beffymaroon. \"Warum würden sie jemals--\"<br>\"Gedankenkontrolle\", sagt Lady Glaciate völlig unbeeindruckt. \"Oder etwas, dass genauso melodramatisch und lästig ist.\" Sie beginnt aus der Halle zu schreiteb. \"Was stehst Du da so rum?\"<br><br>Schnell, folge der Spur aus Eiszapfenmünzen!",
"questStoikalmCalamity2Notes": "Die imposante Halle der Mammutrreiter ist ein asketisches Meiserwerk der Architektur, allerdings ist sie auch absolut leer. Es ist keine Ausstattung vorhanden, die Waffen fehlen und sogar in Säulen wurden ihrer Verzierungen beraubt. \"Die Totenschädel haben diese Halle leergeräumt,\" sagt Lady Glaciate; in ihrer Stimme tobt ein Wirbelsturm. \"Das ist erniedrigend. Kein Wort hiervon an den prilnarren, oder ich bekomme das ewig vorgehalten.\"<br><br>\"Wie misteriös!\", sagt @Beffymaroo. \"Doch wohin sind sie\"<br><br>\"Die Eiszapfendrachenhöhle.\" Lady Glaciate deutet auf glänzende Münzen, die draußen im Schnee verstreut liegen. \"Schlampig.\"<br>\"Aber sind Eiszapfendrachen nicht ehrenhafte Wesen mit ihrem eigenen Schatzhort?\", fragt @Beffymaroon. \"Warum würden sie jemals\"<br>\"Gedankenkontrolle\", sagt Lady Glaciate völlig unbeeindruckt. \"Oder etwas, dass genauso melodramatisch und lästig ist.\" Sie beginnt aus der Halle zu schreiteb. \"Was stehst Du da so rum?\"<br><br>Schnell, folge der Spur aus Eiszapfenmünzen!",
"questStoikalmCalamity2Completion": "Die Eiszapfenmünzen führen Dich geradewegs zum vergrabenen Eingang einer geschickt versteckten Höhle. Obwohl das Wetter draußen ruhig und friedlich ist und das Sonnenlicht über den Schneeweiten glitzert, ertönt von drinnen ein Heulen wie ein wilder Wintersturm. Lady Glaciate verzieht das Gesicht und reicht Dir einen Mammutreiter-Helm. \"Zieh' das an\", sagt sie. \"Du wirst es brauchen.\"",
"questStoikalmCalamity2CollectIcicleCoins": "Eiszapfenmünzen",
"questStoikalmCalamity2DropHeadgear": "Mammutreiter-Helm (Kopfbedeckung)",
@@ -454,19 +454,19 @@
"questStoikalmCalamity3DropShield": "Mammutreiter-Horn (Schildhand-Gegenstand)",
"questStoikalmCalamity3DropWeapon": "Mammutreiter-Speer (Waffe)",
"questGuineaPigText": "Die Meerschweinchengang",
"questGuineaPigNotes": "Du bummelst lässig durch den berühmten Markt in Habit City, als @Pandah Dich heranwinkt. \"Hey, zieh' Dir das hier rein!\" Ein beige-braunes Ei wird Dir vorgehalten, das Du nicht kennst. <br><br>Alexander der Händler runzelt die Stirn. \"Ich erinnere mich nicht, das ausgestellt zu haben, ich frage mich, woher\" Ein kleines Pfötchen hält ihn vom Weitersprechen ab. <br><br>\"Gib 'meer' Dein ganzes Gold her, Händler!\" quiekt eine winzige, von Bosheit erfüllte Stimme. <br><br>\"Oh nein, das Ei war eine Ablenkung!\" ruft @mewrose! \"Es ist die gierige, marodierende Meerschweinchengang! Sie erledigen nie ihre Tagesaufgaben und stehlen daher Gold, um Heiltränke zu kaufen.\" <br><br>\"Den Markt plündern?\", sagt @emmavig. \"Nicht, während wir hier wachen!\" Ohne auf eine Einladung zu warten springst du Alexander zur Seite.",
"questGuineaPigCompletion": "\"Wir ergeben uns!\" Der Meerschweinchenbanden-Boss winkt Dir mit seinen Pfötchen, sein wuscheliger Kopf hängt in Schande herab. Aus seinem Hut fällt eine Liste herunter, die @snazzyorange schnurstracks als Beweis beschlagnahmt. \"Warte mal kurz\", sagst Du. \"Kein Wunder, dass Ihr Schaden nehmt! Ihr habt viel zu viele Tagesaufgaben. Ihr braucht keine Heiltränke Ihr braucht einfach Hilfe beim Organisieren.\" <br><br>\"Wirklich?\" piept der Meerschweinchenbanden-Boss. \"Wir haben so viele Leute deswegen ausgeraubt! Bitte nehmt unsere Eier als Entschuldigung für unser unehrliches Verhalten.\"",
"questGuineaPigNotes": "Du bummelst lässig durch den berühmten Markt in Habit City, als @Pandah Dich heranwinkt. \"Hey, zieh' Dir das hier rein!\" Ein beige-braunes Ei wird Dir vorgehalten, das Du nicht kennst. <br><br>Alexander der Händler runzelt die Stirn. \"Ich erinnere mich nicht, das ausgestellt zu haben, ich frage mich, woher\" Ein kleines Pfötchen hält ihn vom Weitersprechen ab. <br><br>\"Gib 'meer' Dein ganzes Gold her, Händler!\" quiekt eine winzige, von Bosheit erfüllte Stimme. <br><br>\"Oh nein, das Ei war eine Ablenkung!\" ruft @mewrose! \"Es ist die gierige, marodierende Meerschweinchengang! Sie erledigen nie ihre Tagesaufgaben und stehlen daher Gold, um Heiltränke zu kaufen.\" <br><br>\"Den Markt plündern?\", sagt @emmavig. \"Nicht, während wir hier wachen!\" Ohne auf eine Einladung zu warten springst du Alexander zur Seite.",
"questGuineaPigCompletion": "\"Wir ergeben uns!\" Der Meerschweinchenbanden-Boss winkt Dir mit seinen Pfötchen, sein wuscheliger Kopf hängt in Schande herab. Aus seinem Hut fällt eine Liste herunter, die @snazzyorange schnurstracks als Beweis beschlagnahmt. \"Warte mal kurz\", sagst Du. \"Kein Wunder, dass Ihr Schaden nehmt! Ihr habt viel zu viele Tagesaufgaben. Ihr braucht keine HeiltränkeIhr braucht einfach Hilfe beim Organisieren.\" <br><br>\"Wirklich?\" piept der Meerschweinchenbanden-Boss. \"Wir haben so viele Leute deswegen ausgeraubt! Bitte nehmt unsere Eier als Entschuldigung für unser unehrliches Verhalten.\"",
"questGuineaPigBoss": "Meerschweinchengang",
"questGuineaPigDropGuineaPigEgg": "Meerschweinchenbock (Ei)",
"questGuineaPigUnlockText": "Schaltet den Kauf von Meerschweinchenbockeiern auf dem Marktplatz frei",
"questPeacockText": "Der Für-und-Wider-Pfau",
"questPeacockNotes": "Du stapfst durch den Aufgabenwald und fragst Dich, welches nächste verlockende Ziel Du Dir vornimmst. Als Du tiefer in den Wald gehst, merkst Du, dass Du nicht der einzige Unentschlossene bist: \"Ich könnte eine neue Sprache lernen, oder ins Fitnessstudio gehen…\", murmelt @Cecily Perez. \"Ich könnte mehr schlafen\", überlegt @Lilith of Alfheim, \"oder Zeit mit meinen Freunden verbringen…\" Es sieht so aus, als ob @PainterProphet, @Pfeffernusse und @Draayder von der Qual der Wahl genauso gelähmt sind. <br><br>Du merkst, dass diese vereinnahmenden Gefühle gar nicht Deine eigenen sind… Du bist dem verführerischen Für-und-Wider-Pfau mitten in die Falle getappt! Er springt aus dem Busch, bevor Du fliehen kannst. Dich mit jeweils einem Kopf in eine andere Richtung ziehend, spürst Du, wie Burnout über Dich kommt. Du kannst nicht zwei Gegner auf einmal bezwingen und hast daher nur eine Option konzentrier' Dich auf die näheste Aufgabe um zurückzuschlagen!",
"questPeacockNotes": "Du stapfst durch den Aufgabenwald und fragst Dich, welches nächste verlockende Ziel Du Dir vornimmst. Als Du tiefer in den Wald gehst, merkst Du, dass Du nicht der einzige Unentschlossene bist: \"Ich könnte eine neue Sprache lernen, oder ins Fitnessstudio gehen…\", murmelt @Cecily Perez. \"Ich könnte mehr schlafen\", überlegt @Lilith of Alfheim, \"oder Zeit mit meinen Freunden verbringen…\" Es sieht so aus, als ob @PainterProphet, @Pfeffernusse und @Draayder von der Qual der Wahl genauso gelähmt sind. <br><br>Du merkst, dass diese vereinnahmenden Gefühle gar nicht Deine eigenen sind… Du bist dem verführerischen Für-und-Wider-Pfau mitten in die Falle getappt! Er springt aus dem Busch, bevor Du fliehen kannst. Dich mit jeweils einem Kopf in eine andere Richtung ziehend, spürst Du, wie Burnout über Dich kommt. Du kannst nicht zwei Gegner auf einmal bezwingen und hast daher nur eine Optionkonzentrier' Dich auf die näheste Aufgabe um zurückzuschlagen!",
"questPeacockCompletion": "Der Für-und-Wider-Pfau ist überrascht von Deiner plötzlichen Überzeugtheit. Deine konzentrierte Zielstrebigkeit hat ihn besiegt und seine Köpfe verschmelzen wieder zu einem und enthüllen das schönste Wesen, das Du jemals gesehen hast. \"Vielen Dank\", sagt der Pfau. \"Ich habe mich selbst so lange in verschiedene Richtungen gezogen, dass ich das, was ich wirklich wollte, aus den Augen verlor. Bitte nimm' diese Eier als Zeichen meiner Dankbarkeit an.\"",
"questPeacockBoss": "Für-und-Wider-Pfau",
"questPeacockDropPeacockEgg": "Pfau (Ei)",
"questPeacockUnlockText": "Schaltet den Kauf von Pfaueiern auf dem Marktplatz frei",
"questButterflyText": "Flieg' weiter, Funkenfalter",
"questButterflyNotes": "Deine Gärtner-Freundin @Megan schickt Dir eine Einladung: \"Diese warmen Tage wären doch perfekt für einen Besuch des Schmetterlingsgartens in Aufgabistan. Komm, lass uns Schmetterlinge beobachten!\" Doch als Du ankommst, ist der Garten verdorrt es ist kaum mehr als verbranntes Gras und vertrocknetes Unkraut übrig. Es war so heiß, dass die Habiticaner nicht vorbei gekommen sind, um die Blumen zu gießen, und die dunkelroten Tagesaufgaben haben alles zu einer trockenen, sonnenverglühten Brandgefahr gemacht. Es ist nur noch ein Schmetterling übrig, aber etwas ist seltsam an ihm...<br><br>\"Oh nein! Das sind perfekte Schlüpfbedingungen für den Entflammten Funkenfalter\", ruft @Leephon.<br><br>\"Wenn wir ihn nicht einfangen, wird er alles zerstören!\" keucht @Eevachu.<br><br>Es wird Zeit, dem Funkenfalter auf Wiedersehen zu sagen!",
"questButterflyNotes": "Deine Gärtner-Freundin @Megan schickt Dir eine Einladung: \"Diese warmen Tage wären doch perfekt für einen Besuch des Schmetterlingsgartens in Aufgabistan. Komm, lass uns Schmetterlinge beobachten!\" Doch als Du ankommst, ist der Garten verdorrtes ist kaum mehr als verbranntes Gras und vertrocknetes Unkraut übrig. Es war so heiß, dass die Habiticaner nicht vorbei gekommen sind, um die Blumen zu gießen, und die dunkelroten Tagesaufgaben haben alles zu einer trockenen, sonnenverglühten Brandgefahr gemacht. Es ist nur noch ein Schmetterling übrig, aber etwas ist seltsam an ihm...<br><br>\"Oh nein! Das sind perfekte Schlüpfbedingungen für den Entflammten Funkenfalter\", ruft @Leephon.<br><br>\"Wenn wir ihn nicht einfangen, wird er alles zerstören!\" keucht @Eevachu.<br><br>Es wird Zeit, dem Funkenfalter auf Wiedersehen zu sagen!",
"questButterflyCompletion": "Nach einer lodernden Schlacht ist der Entflammte Funkenfalter gefangen. \"Tolle Leistung, diesen Möchtegern-Brandstifter einzufangen\", sagt @Megan mit einem Seufzer der Erleichterung. \"Dennoch ist es schwer, selbst den fiesesten Falter zu verunglimpfen. Wir sollten diesen Funkenfalter besser an einem sicheren Ort freilassen... zum Beispiel in der Wüste.\"<br><br>Eine der anderen Gärtnerinnen, @Beffymaroo, kommt zu euch - angesengt, aber mit einem Lächeln. \"Möchtest Du uns dabei helfen, diese verwaisten Schmetterlingspuppen großzuziehen, die wir gefunden haben? Vielleicht werden wir nächstes Jahr einen grüneren Garten für sie haben.\"",
"questButterflyBoss": "Entflammter Funkenfalter",
"questButterflyDropButterflyEgg": "Raupe (Ei)",
@@ -612,7 +612,7 @@
"questSeaSerpentDropSeaSerpentEgg": "Seeschlange (Ei)",
"questSeaSerpentUnlockText": "Schaltet den Kauf von Seeschlangeneiern auf dem Marktplatz frei",
"questKangarooText": "Känguru-Katastrophe",
"questKangarooNotes": "Vielleicht hättest Du diese letzte Aufgabe erledigen sollen.... Du weißt schon, diejenige, die Du immer meidest, auch wenn sie immer wieder auftritt? Aber @Mewrose und @LilithofAlfheim haben Dich und @stefalupagus eingeladen, um eine seltene Kängurutruppe durch die Sloensteadi Savanne hüpfen zu sehen; wie kannst Du nein sagen?! Als die Truppe in Sichtweite kommt, trifft Dich etwas mit einem mächtigen Schlag auf den <em>Hinterkopf!</em><br><br>Du siehst Sterne und schüttelst den Kopf. Dann nimmst Du das verantwortliche Objekt auf - einen dunkelroten Bumerang, mit genau der Aufgabe eingraviert, die Du immer wieder verdrängst. Ein kurzer Blick in die Runde bestätigt, dass den Rest Deiner Party ein ähnliches Schicksal ereilt hat. Ein größeres Känguru sieht Dich mit einem selbstgefälligen Grinsen an, als würde es Dich auffordern, Dich ihm und dieser gefürchteten Aufgabe ein für allemal zu stellen!",
"questKangarooNotes": "Vielleicht hättest Du diese letzte Aufgabe erledigen sollen.... Du weißt schon, diejenige, die Du immer meidest, auch wenn sie immer wieder auftritt? Aber @Mewrose und @LilithofAlfheim haben Dich und @stefalupagus eingeladen, um eine seltene Kängurutruppe durch die Sloensteadi Savanne hüpfen zu sehen; wie kannst Du nein sagen?! Als die Truppe in Sichtweite kommt, trifft Dich etwas mit einem mächtigen Schlag auf den <em>Hinterkopf!</em><br><br>Du siehst Sterne und schüttelst den Kopf. Dann nimmst Du das verantwortliche Objekt aufeinen dunkelroten Bumerang, mit genau der Aufgabe eingraviert, die Du immer wieder verdrängst. Ein kurzer Blick in die Runde bestätigt, dass den Rest Deiner Party ein ähnliches Schicksal ereilt hat. Ein größeres Känguru sieht Dich mit einem selbstgefälligen Grinsen an, als würde es Dich auffordern, Dich ihm und dieser gefürchteten Aufgabe ein für allemal zu stellen!",
"questKangarooCompletion": "“JETZT!” signalisierst Du Deiner Party, die Bumerangs zurück auf das Känguru zu werfen. Das Tier hüpft bei jedem Treffer weiter weg, bis es flieht, und hinterlässt nichts anderes als eine dunkelrote Staubwolke, ein paar Eier und einige Goldmünzen.<br><br>@Mewrose geht zu der Stelle, wo vorher das Känguru stand. “Hey, wo sind die Bumerangs hin?”<br><br>“Sie haben sich wahrscheinlich in Staub aufgelöst und diese dunkelrote Wolke gebildet, als wir unsere jeweiligen Aufgaben erledigt hatten”, spekuliert @stefalupagus.<br><br>@LilithofAlfheim kneift die Augen zu und schaut zum Horizont. “Ist das eine weitere Kängurutruppe, die uns entgegenkommt?”<br><br>Ihr brecht alle im Laufschritt auf, zurück nach Habit City. Besser, sich Deinen schwierigen Aufgaben zu stellen, als einen weiteren Schlag auf den Hinterkopf zu bekommen!",
"questKangarooBoss": "Katastrophales Känguru",
"questKangarooDropKangarooEgg": "Känguru (Ei)",
@@ -669,7 +669,7 @@
"questRobotText": "Mysteriöse Mechanische Merkwürdigkeiten!",
"delightfulDinosNotes": "Beinhaltet Quests, um Eier für das Triceratops-Haustier, das T-Rex-Haustier und das Pterodactyl-Haustier zu erhalten: Der Trampelnde Triceratops, Der Ausgegrabene Dinosaurier und Der Pterror-Dactyl.",
"delightfulDinosText": "\"Dufte Dinos\" Quest-Paket",
"questAmberCompletion": "\"Trerezin?\" sagt @-Tyr- mit ruhiger Stimme. \"Würdest Du @Vikte loslassen? Ich glaube nicht, dass es ihm so hoch oben wohl ist.\"<br><br>Trerezins Haut wird hochrot und sie setzt @Vikte sanft auf dem Boden ab. \"Bitte entschuldigt! Es ist schon so lange her, dass ich Gäste hatte. Dabei habe ich meine guten Manieren vergessen!\" Sie gleitet vorwärts um euch standesgemäss zu begrüssen, bevor sie in ihrem Baumhaus verschwindet. Gleich darauf kehrt Sie zurück mit einem Arm voll Bernsteinfarbener Schlüpfelixiere als Dankeschön!<br><br>\"Magische Tränke!\" haucht @Vikte.<br><br>\"Ach, diese alten Dinger?\" Trerezins Zunge zittert während sie nachdenkt. \"Wie wär's damit: Ich gebe euch den ganzen Stapel, wenn ihr versprecht, mich ab und zu besuchen zu kommen...\"<br><br>So lasst ihr die Aufgabenwälder hinter euch, um allen über die neuen Schlüpfelixieren zu berichten und natürlich über eure neue Freundin!",
"questAmberCompletion": "\"Trerezin?\" sagt @-Tyr- mit ruhiger Stimme. \"Würdest Du @Vikte loslassen? Ich glaube nicht, dass es ihm so hoch oben wohl ist.\"<br><br>Trerezins Haut wird hochrot und sie setzt @Vikte sanft auf dem Boden ab. \"Bitte entschuldigt! Es ist schon so lange her, dass ich Gäste hatte. Dabei habe ich meine guten Manieren vergessen!\" Sie gleitet vorwärts um euch standesgemäss zu begrüssen, bevor sie in ihrem Baumhaus verschwindet. Gleich darauf kehrt Sie zurück mit einem Arm voll Bernsteinfarbener Schlüpfelixiere als Dankeschön!<br><br>\"Magische Tränke!\" haucht @Vikte.<br><br>\"Ach, diese alten Dinger?\" Trerezins Zunge zittert während sie nachdenkt. \"Wie wär's damit: Ich gebe euch den ganzen Stapel, wenn ihr versprecht, mich ab und zu besuchen zu kommen...\"<br><br>So lasst ihr die Aufgabenwälder hinter euch, um allen über die neuen Schlüpfelixieren zu berichtenund natürlich über eure neue Freundin!",
"questAmberNotes": "Du sitzt mit @beffymaroo und @-Tyr- in der Taverne als @Vikte zur Tür hereinplatzt und aufgeregt von Gerüchten über eine neue Art von Magischem Schlüpfelixier erzählt, die in den Aufgabenwälder versteckt seien. Da Deine Tagesaufgaben bereits erledigt sind, beschliesst ihr drei ohne zu zögern, @Vikte bei der Suche zu helfen. Was kann ein kleines Abenteuer schon schaden?<br><br>Nach stundenlangem Marsch durch die Aufgabenwälder fängst Du an, den spontanen Aufbruch zur Jagd zu bereuen. Ihr seid gerade am umkehren als ihr einen überraschten Ausruf hört. Ihr dreht euch um und erblickt eine riesige Echse mit glänzenden, bernsteinfarbenen Schuppen, die sich um einen Baum windet, @Vikte in ihren Krallen haltend. @beffymaroo greift nach ihrem Schwert.<br><br>\"Wartet!\" ruft @-Tyr-. \"Das ist Trerezin! Sie ist nicht gefährlich, nur gefährlich anhänglich!\"",
"questAmberText": "Der Bernstein-Bund",
"questAmberBoss": "Trerezin",
@@ -692,7 +692,7 @@
"questWaffleNotes": "\"April-Scherzkeks!\" entrüstet sich Lady Glaciate verunsichert. \"Du sagtest, Dein Wüsten-Scherz sei 'erledigt und komplett weggeräumt'!\"<br><br>\"Nun ja, das war er und ist er immer noch, meine Liebe\", antwortet der Scherzkeks verwirrt. \"Und ich bin der ehrlichste aller Scherzkekse. Ist etwas nicht in Ordnung?\"<br><br>\"Da ist ein gigantisches, zuckriges Monster, das sich Habit City nähert!\"<br><br>\"Hmm\", sinniert der Scherzkeks. \"Ich habe auf der Suche nach mystischen Reagenzien für meinen letzten Event einige Höhlen geplündert. Vielleicht habe ich da unerwünschte Aufmerksamkeit erweckt. Ist es die Saccharose-Schlange? Die Torten-Kröte? Ein Tiramisu Rex?\"<br><br>\"Nein! Es ist eine Art… fürchterliche Waffel!\"<br><br>\"Häh. Die ist mir neu! Vielleicht entsprang die all der Umgebungs-Schabernack-Energie.\" Er wendet sich an Dich und @beffymaroo mit einem schiefen Lächeln. \"Ich nehme nicht an, ihr wärt zu einer Heldentat bereit?\"",
"questWaffleText": "An die Waffe(l) gegen den Scherzkeks: Desaster-Frühstück!",
"questWaffleRageEffect": "`Fürchterliche Waffel setzt AHORNSUMPF ein!` Schmieriger saftiger Sirup lässt Deine Schläge und Sprüche stocken! Anstehender Schaden wird reduziert.",
"questWaffleCompletion": "Angeschlagen und reich bebuttert, aber trotzdem triumphierend, genießt Ihr den süßen Sieg über die fürchterliche Waffel, die in eine klebrig-schleimige Pfütze zusammensinkt.<br><br>\"Wow, dieses Monster habt Ihr gründlich eingeschmiert\", sagt Lady Glaciate beeindruckt.<br><br>\"Ein Zuckerschlecken!\" strahlt der April-Scherzkeks.<br><br>\"Trotzdem irgendwie schade,\" findet @beffymaroo. \"Die sah irgendwie lecker aus.\"<br><br>Der Scherzkeks zaubert einen Satz Schlüpfelixier-Flaschen aus seinem Cape, füllt sie mit der sirupartigen Masse der Waffel-Überreste und mischt eine Prise glitzernden Staub hinein. Farben wirbeln durch die Flüssigkeit neue Schlüpfelixiere! Er wirft sie Euch in die Arme. \"Das ganze Abenteuer hat mir Appetit gemacht. Wer kommt mit zum Frühstück?\"",
"questWaffleCompletion": "Angeschlagen und reich bebuttert, aber trotzdem triumphierend, genießt Ihr den süßen Sieg über die fürchterliche Waffel, die in eine klebrig-schleimige Pfütze zusammensinkt.<br><br>\"Wow, dieses Monster habt Ihr gründlich eingeschmiert\", sagt Lady Glaciate beeindruckt.<br><br>\"Ein Zuckerschlecken!\" strahlt der April-Scherzkeks.<br><br>\"Trotzdem irgendwie schade,\" findet @beffymaroo. \"Die sah irgendwie lecker aus.\"<br><br>Der Scherzkeks zaubert einen Satz Schlüpfelixier-Flaschen aus seinem Cape, füllt sie mit der sirupartigen Masse der Waffel-Überreste und mischt eine Prise glitzernden Staub hinein. Farben wirbeln durch die Flüssigkeitneue Schlüpfelixiere! Er wirft sie Euch in die Arme. \"Das ganze Abenteuer hat mir Appetit gemacht. Wer kommt mit zum Frühstück?\"",
"jungleBuddiesNotes": "Beinhaltet Quests, um Eier für das Affen-Haustier, das Baumling-Haustier und das Faultier-Haustier zu erhalten: Monströser Mandrill und die Albernen Affen, Das Baumgewirr und Das verschlafene Faultier.",
"jungleBuddiesText": "\"Jungle Freunde\" Quest-Paket",
"questFluoriteUnlockText": "Schaltet den Kauf von Fluorit-Schlüpfelixieren auf dem Marktplatz frei",
@@ -706,7 +706,7 @@
"questWindupText": "Zähme die zankenden Zahnräder",
"questWindupBoss": "Klangton",
"questWindupCompletion": "Während Du den Attacken ausweichst, fällt Dir etwas seltsames auf: ein gestreifter Messingschwanz ragt aus dem Fahrgestell des Roboters. Du greifst mit einer raschen Hand inmitten des laufenden Robotergetriebes und ziehst... ein zitterndes, aufziehbares Tiger-Junges heraus. Es schmiegt sich an deine Kleidung.<br><br>Der Uhrwerk-Roboter hört umgehend auf um sich zu schlagen und lächelt, seine Zahnräder klicken zurück an ihren Platz. \"Kä-Kä-Kätzchen! Kätzchen in meinem Getriebe!\"<br><br>\"Großartig\", sagt Großmächtig errötend. \"Ich habe hart an diesen Aufzieh-Haustier-Tränken gearbeitet. Ich habe wohl etwas die Übersicht über meine Neuerfindungen verloren. Wisst Ihr, ich habe mein tägliches \"Werkstatt aufräumen\" in letzter Zeit öfter verpasst...\"<br><br>Du folgst dem Bastler und Klangton nach drinnen. Teile, Werkzeug und Tränke bedecken jede Oberfläche. Großmächtig nimmt deine Uhr, doch gibt dir einige Tränke.<br><br>\"Hier, nimm diese. Offensichtlich werden sie bei Dir besser aufgehoben sein!\"",
"questWindupNotes": "*Habit City* ist selten ruhig, doch auf diese missgestimmte Katzenmusik warst Du nicht vorbereitet: Eine Kakophonie aus Knarzen, Quietschen und Kreischen, drang aus dem Laden *Good Timekeeping*, Habiticas bestem Uhrmacher. Du seufzt--Du wolltest doch nur Deine Uhr reparieren lassen. \"Great and Powerful\", oder \"Der Großmächtige\", wie der Uhrmacher genannt wird, kommt Dir bereits entgegen gestolpert, direkt gefolgt von einem klirrenden Kupfergiganten. <br><br> \"Ki-! Ki-! Ki!\" klingelt er, die Arme umher werfend. Sein Getriebe malt und quietscht unter Protest.<br><br>\"Mein Roboter \"Klangton\" ist verrückt geworden! Er will mich umbringen!\" kreischt der angeblich mächtige Uhrmacher.<br><br>Sogar mit einer kaputten Uhr weißt Du wann die Zeit reif ist, zu kämpfen. Du stürzt voran, um den panischen Uhrmacher zu beschützen. @Vikte und @a_diamond kommen ebenfalls zu Hilfe!<br><br>\"Ki-! Ki-! Ki!\", singt Klangton bei jedem Schlag. \"Miau!\"<br><br>Moment mal, war das ein mechanisches Miauen inmitten der mörderischen Monotonie?",
"questWindupNotes": "*Habit City* ist selten ruhig, doch auf diese missgestimmte Katzenmusik warst Du nicht vorbereitet: Eine Kakophonie aus Knarzen, Quietschen und Kreischen, drang aus dem Laden *Good Timekeeping*, Habiticas bestem Uhrmacher. Du seufztDu wolltest doch nur Deine Uhr reparieren lassen. \"Great and Powerful\", oder \"Der Großmächtige\", wie der Uhrmacher genannt wird, kommt Dir bereits entgegen gestolpert, direkt gefolgt von einem klirrenden Kupfergiganten. <br><br> \"Ki-! Ki-! Ki!\" klingelt er, die Arme umher werfend. Sein Getriebe malt und quietscht unter Protest.<br><br>\"Mein Roboter \"Klangton\" ist verrückt geworden! Er will mich umbringen!\" kreischt der angeblich mächtige Uhrmacher.<br><br>Sogar mit einer kaputten Uhr weißt Du wann die Zeit reif ist, zu kämpfen. Du stürzt voran, um den panischen Uhrmacher zu beschützen. @Vikte und @a_diamond kommen ebenfalls zu Hilfe!<br><br>\"Ki-! Ki-! Ki!\", singt Klangton bei jedem Schlag. \"Miau!\"<br><br>Moment mal, war das ein mechanisches Miauen inmitten der mörderischen Monotonie?",
"questTurquoiseText": "Türkisgrüne Schatzsuchtortur",
"questTurquoiseUnlockText": "Schaltet den Kauf von Türkisen Schlüpfelixieren auf dem Marktplatz frei",
"questTurquoiseDropTurquoisePotion": "Türkises Schlüpfelixier",
+6 -1
View File
@@ -269,5 +269,10 @@
"mysterySet202508": "Strahlendes Klingen Set",
"mysterySet202510": "Gleitender Ghul Set",
"mysterySet202511": "Frost Krieger Set",
"mysterySet202509": "Windgepeitschter Wanderer Set"
"mysterySet202509": "Windgepeitschter Wanderer Set",
"mysterySet202512": "Plätzchen-Meister Set",
"mysterySet202601": "Winter-Ägide set",
"subscriptionBillingFYI": "Abos verlängern sich automatisch, sofern du sie nicht mindestens 24 Stunden vor Ablauf des aktuellen Zeitraums kündigst. Du kannst dein Abo in den Einstellungen unter „Abonnement“ verwalten. Die Abbuchung von deinem Konto erfolgt innerhalb von 24 Stunden nach dem Verlängerungsdatum zum gleichen Preis wie bei der ersten Abbuchung.",
"subscriptionBillingFYIShort": "Abos verlängern sich automatisch, sofern du sie nicht mindestens 24 Stunden vor Ablauf des aktuellen Zeitraums kündigst. Die Abbuchung von deinem Konto erfolgt innerhalb von 24 Stunden nach dem Verlängerungsdatum zum gleichen Preis wie bei der ersten Abbuchung.",
"mysterySet202602": "Sakura Fuchs Set"
}
-1
View File
@@ -123,7 +123,6 @@
"errorTemporaryItem": "Dieser Gegenstand ist nur temporär verfügbar und kann nicht gepinnt werden.",
"addNotes": "Notizen hinzufügen",
"addATitle": "Überschrift hinzufügen",
"sureDeleteType": "Möchtest Du diese <%= type %> wirklich löschen?",
"deleteTaskType": "Diese <%= type %> löschen",
"pressEnterToAddTag": "Drücke Enter um das Tag '<%= tagName %>' hinzuzufügen",
"enterTag": "Gib ein Tag ein",
@@ -1051,6 +1051,18 @@
"backgroundCastleKeepWithBannersText": "Castle Hall with Banners",
"backgroundCastleKeepWithBannersNotes": "Sing tales of heroic deeds in a Castle Hall with Banners.",
"backgrounds122025": "SET 139: Released December 2025",
"backgroundNighttimeStreetWithShopsText": "Nighttime Street with Shops",
"backgroundNighttimeStreetWithShopsNotes": "Enjoy the warm glow of a Nighttime Street with Shops.",
"backgrounds012026": "SET 140: Released January 2026",
"backgroundWinterDesertWithSaguarosText": "Winter Desert with Saguaros",
"backgroundWinterDesertWithSaguarosNotes": "Breathe the crisp air of a Winter Desert with Saguaros.",
"backgrounds022026": "SET 141: Released February 2026",
"backgroundElegantPalaceText": "Elegant Palace",
"backgroundElegantPalaceNotes": "Admire the colorful halls of an Elegant Palace.",
"timeTravelBackgrounds": "Steampunk Backgrounds",
"backgroundAirshipText": "Airship",
"backgroundAirshipNotes": "Become a sky sailor on board your very own Airship.",
+6 -3
View File
@@ -2,12 +2,15 @@
"challenge": "Challenge",
"challengeDetails": "Challenges are community events in which players compete and earn prizes by completing a group of related tasks.",
"brokenChaLink": "Broken Challenge Link",
"brokenTask": "Broken Challenge Link: this task was part of a challenge, but has been removed from it. What would you like to do?",
"brokenTask": "Broken Challenge Link",
"brokenTaskDescription": "This task was part of a challenge, but has been removed from it. What would you like to do?",
"keepIt": "Keep It",
"removeIt": "Remove It",
"removeTasks": "Remove Tasks",
"brokenChallenge": "Broken Challenge Link: this task was part of a challenge, but the challenge (or group) has been deleted. What to do with the orphan tasks?",
"challengeCompleted": "This challenge has been completed, and the winner was <span class=\"badge\"><%- user %></span>! What to do with the orphan tasks?",
"brokenChallenge": "Broken Challenge Link",
"brokenChallengeDescription": "This task was part of a challenge, but the challenge (or group) has been deleted. What to do with the orphan tasks?",
"challengeCompleted": "Challenge Completed!",
"challengeCompletedDescription": "The winner was <%- user %>! What to do with the orphan tasks?",
"unsubChallenge": "Broken Challenge Link: this task was part of a challenge, but you have unsubscribed from the challenge. What to do with the orphan tasks?",
"challenges": "Challenges",
"endDate": "Ends",
+18 -9
View File
@@ -87,16 +87,20 @@
"allocatePerPop": "Add a Point to Perception",
"allocateInt": "Points allocated to Intelligence:",
"allocateIntPop": "Add a Point to Intelligence",
"noMoreAllocate": "Now that you've hit level 100, you won't gain any more Stat Points. You can continue leveling up, or start a new adventure at level 1 by using the <a href='/shops/market'>Orb of Rebirth</a>!",
"noMoreAllocate": "Now that you've hit level 100, you won't gain any more Stat Points. You can continue leveling up, or start a new adventure at level 1 by using the <a href='/shops/market'>Orb of Rebirth</a>.",
"stats": "Stats",
"strength": "Strength",
"strText": "Strength increases the chance of random \"critical hits\" and the Gold, Experience, and drop chance boost from them. It also helps deal damage to boss monsters.",
"strTaskText": "Increases critical hit chance and damage when scoring tasks. Also increases damage dealt to Quest bosses.",
"constitution": "Constitution",
"conText": "Constitution reduces the damage you take from negative Habits and missed Dailies.",
"conTaskText": "Reduces damage taken from missed Dailies and negative Habits. Does not reduce damage from Quest bosses.",
"perception": "Perception",
"perText": "Perception increases how much Gold you earn, and once you've unlocked the Market, increases the chance of finding items when scoring tasks.",
"perTaskText": "Increases item drop chance, daily item drop cap, task streak bonuses, and Gold earned when completing tasks.",
"intelligence": "Intelligence",
"intText": "Intelligence increases how much Experience you earn, and once you've unlocked Classes, determines your maximum Mana available for class abilities.",
"intTaskText": "Increases Experience earned from tasks. Also increases your Mana cap and Mana regeneration rate.",
"levelBonus": "Level Bonus",
"allocatedPoints": "Allocated Points",
"allocated": "Allocated",
@@ -117,13 +121,14 @@
"levelPopover": "Each level earns you one Point to assign to a Stat of your choice. You can do so manually, or let the game decide for you using one of the Automatic Allocation options.",
"unallocated": "Unallocated Stat Points",
"autoAllocation": "Automatic Allocation",
"autoAllocate": "Auto Allocate",
"autoAllocationPop": "Places Points into Stats according to your preferences, when you level up.",
"evenAllocation": "Distribute Stat Points evenly",
"evenAllocationPop": "Assigns the same number of Points to each Stat.",
"classAllocation": "Distribute Points based on Class",
"classAllocationPop": "Assigns more Points to the Stats important to your Class.",
"taskAllocation": "Distribute Points based on task activity",
"taskAllocationPop": "Assigns Points based on the Strength, Intelligence, Constitution, and Perception categories associated with the tasks you complete.",
"evenAllocation": "Distribute evenly",
"evenAllocationPop": "Assigns the same number of points to each attribute",
"classAllocation": "Distribute based on class",
"classAllocationPop": "Assigns more points to the attributes important to your class",
"taskAllocation": "Distribute based on task activity",
"taskAllocationPop": "Assigns points based on the Strength, Intelligence, Constitution, and Perception categories associated with the tasks you complete",
"distributePoints": "Distribute Unallocated Points",
"distributePointsPop": "Assigns all unallocated Stat Points according to the selected allocation scheme.",
"warriorText": "Warriors score more and better \"critical hits\", which randomly give bonus Gold, Experience, and drop chance for scoring a task. They also deal heavy damage to boss monsters. Play a Warrior if you find motivation from unpredictable jackpot-style rewards, or want to dish out the hurt in boss Quests!",
@@ -190,6 +195,10 @@
"mainHand": "Main-Hand",
"offHand": "Off-Hand",
"statPoints": "Stat Points",
"pts": "pts",
"customizations": "Customizations"
"pointsAvailable": "Points Available",
"allocationMethod": "Allocation Method",
"statAllocationInfo": "Each level earns you one point to assign to a Stat of your choice. You can do so manually, or let the game decide for you using one of the Automatic Allocation options.",
"pts": "PTS",
"customizations": "Customizations",
"assignedStat": "Assigned Stat"
}
+9
View File
@@ -138,6 +138,15 @@
"faqQuestion68": "How do I prevent losing HP?",
"webFaqAnswer68": "If you find yourself losing HP often, try some of these tips:\n\n- Pause your Dailies. The \"Pause Damage\" button in Settings will prevent you from losing HP for missed Dailies.\n- Adjust the schedule of your Dailies. By setting them to never be due, you can still complete them for rewards without risking HP loss.\n- Try using class skills:\n\t- Rogues can cast Stealth to prevent damage from missed Dailies\n\t- Warriors can cast Brutal Smash to reduce a Daily's redness, lowering damage taken if missed\n\t- Healers can cast Searing Brightness to reduce Dailies' redness, lowering damage taken if missed",
"faqQuestion69": "What are character stats?",
"webFaqAnswer69": "All players have four character stats that provide different benefits:\n\n* Strength - Increases critical hit chance and damage when scoring tasks. Also increases damage dealt to Quest bosses.\n* Intelligence - Increases Experience earned from tasks. Also increases your Mana cap and Mana regeneration rate.\n* Constitution - Reduces damage taken from missed Dailies and negative Habits. Does not reduce damage from Quest bosses.\n* Perception - Increases item drop chance, daily item drop cap, task streak bonuses, and Gold earned when completing tasks.\n\nStats can be increased through stat point allocation, Equipment, class skills, and leveling up. You also gain one bonus point to all stats every two levels, up to level 100.",
"faqQuestion70": "What are stat points?",
"webFaqAnswer70": "Stat points let you increase your character's core stats. You earn one stat point each time you level up (up to level 100), which you can assign manually or automatically using the Automatic Allocation feature. Stat allocation unlocks with the Class System at level 10.",
"faqQuestion71": "How does Automatic Allocation work?",
"webFaqAnswer71": "The Automatic Allocation feature automatically assigns stat points according to one of the following distribution methods:\n\n* Distribute evenly - Assigns the same number of points to each attribute\n* Distribute based on class - Assigns more points to the attributes important to your class\n* Distribute based on task activity - Assigns points based on Strength, Intelligence, Constitution, and Perception categories associated with the tasks you complete\n\nIf you choose not to use Automatic Allocation, you can manually assign your stat points from the Stats section.",
"iosFaqStillNeedHelp": "If you have a question that isn't on this list or on the [Wiki FAQ](https://habitica.fandom.com/wiki/FAQ), use the Ask a Question form [LINK NEEDED]! We're happy to help.",
"androidFaqStillNeedHelp": "If you have a question that isn't on this list or on the [Wiki FAQ](https://habitica.fandom.com/wiki/FAQ), use the Ask a Question form [LINK NEEDED]! We're happy to help.",
"webFaqStillNeedHelp": "If you have a question that isn't on this list or on the [Wiki FAQ](https://habitica.fandom.com/wiki/FAQ), use the Ask a Question form [LINK NEEDED]! We're happy to help.",
+1 -1
View File
@@ -142,7 +142,7 @@
"invalidReqParams": "Invalid request parameters.",
"memberIdRequired": "\"member\" must be a valid UUID.",
"heroIdRequired": "\"heroId\" must be a valid UUID.",
"cannotFulfillReq": "Please enter a valid email address. Email admin@habitica.com if this error persists.",
"cannotFulfillReq": "This email address is already in use. You can try logging in or use a different email to register. If you need help, reach out to admin@habitica.com.",
"enterValidEmail": "Please enter a valid email address.",
"modelNotFound": "This model does not exist.",
"signUpWithSocial": "Continue with <%= social %>",
+72 -11
View File
@@ -276,7 +276,7 @@
"weaponSpecialWinter2018WarriorText": "Holiday Bow Hammer",
"weaponSpecialWinter2018WarriorNotes": "The sparkly appearance of this bright weapon will dazzle your enemies as you swing it! Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
"weaponSpecialWinter2018MageText": "Holiday Confetti",
"weaponSpecialWinter2018MageNotes": "Magic--and glitter--is in the air! Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
"weaponSpecialWinter2018MageNotes": "Magicand glitteris in the air! Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
"weaponSpecialWinter2018HealerText": "Mistletoe Wand",
"weaponSpecialWinter2018HealerNotes": "This mistletoe ball is sure to enchant and delight passersby! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
@@ -569,6 +569,15 @@
"weaponSpecialFall2025MageText": "Masked Ghost Axe",
"weaponSpecialFall2025MageNotes": "A mighty weapon to cut a safe path through an autumn forest full of frights. Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition Fall 2025 Gear.",
"weaponSpecialWinter2026WarriorText": "Rime Scythe",
"weaponSpecialWinter2026WarriorNotes": "Scythes help cut, reap, and cover large areas—all things you need when refining a task list. Increases Strength by <%= str %>. Limited Edition Winter 2025-2026 Gear.",
"weaponSpecialWinter2026RogueText": "Ski Pole",
"weaponSpecialWinter2026RogueNotes": "Ski poles help you maintain balance, stability, and timing—all things you need to be truly productive. Increases Strength by <%= str %>. Limited Edition Winter 2025-2026 Gear.",
"weaponSpecialWinter2026HealerText": "Polar Staff",
"weaponSpecialWinter2026HealerNotes": "Staffs help with support, stability, and direction—all things that help you truly conquer a task list. Increases Intelligence by <%= int %>. Limited Edition Winter 2025-2026 Gear.",
"weaponSpecialWinter2026MageText": "Candelabra Staff",
"weaponSpecialWinter2026MageNotes": "Candelabras help by holding multiple candles at a time—follow its lead the next time you need to multitask. Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition Winter 2025-2026 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",
@@ -613,6 +622,10 @@
"weaponMystery202508Notes": "This spinning blade will terrify any monster or red Daily that crosses your path! Confers no benefit. August 2025 Subscriber Item.",
"weaponMystery202511Text": "Frost Sword",
"weaponMystery202511Notes": "The icy glow of this sword will make quick work of even dark red tasks. Confers no benefit. November 2025 Subscriber Item.",
"weaponMystery202512Text": "Cookie Champion's Blade",
"weaponMystery202512Notes": "A shining sword cast from sugar, mint, and arcane enchantments. Confers no benefit. December 2025 Subscriber Item.",
"weaponMystery202601Text": "Winter's Aegis",
"weaponMystery202601Notes": "An icy bubble shield that grants magical protection from opposing elements. Confers no benefit. January 2026 Subscriber Item.",
"weaponMystery301404Text": "Steampunk Cane",
"weaponMystery301404Notes": "Excellent for taking a turn about town. March 3015 Subscriber Item. Confers no benefit.",
@@ -648,7 +661,7 @@
"weaponArmoireBasicLongbowText": "Basic Longbow",
"weaponArmoireBasicLongbowNotes": "A serviceable hand-me-down bow. Increases Strength by <%= str %>. Enchanted Armoire: Basic Archer Set (Item 1 of 3).",
"weaponArmoireHabiticanDiplomaText": "Habitican Diploma",
"weaponArmoireHabiticanDiplomaNotes": "A certificate of significant achievement -- well done! Increases Intelligence by <%= int %>. Enchanted Armoire: Graduate Set (Item 1 of 3).",
"weaponArmoireHabiticanDiplomaNotes": "A certificate of significant achievementwell done! Increases Intelligence by <%= int %>. Enchanted Armoire: Graduate Set (Item 1 of 3).",
"weaponArmoireSandySpadeText": "Sandy Spade",
"weaponArmoireSandySpadeNotes": "A tool for digging, as well as flicking sand into the eyes of enemy monsters. Increases Strength by <%= str %>. Enchanted Armoire: Seaside Set (Item 1 of 3).",
"weaponArmoireCannonText": "Cannon",
@@ -808,7 +821,7 @@
"weaponArmoireCleaningClothText": "Cleaning Cloth",
"weaponArmoireCleaningClothNotes": "Take this tidying tool on your adventures and always be able to polish a pretty plaque or wipe a wooden windowsill. Increases Strength and Constitution by <%= attrs %> each. Enchanted Armoire: Cleaning Supplies Set Two (Item 3 of 3)",
"weaponArmoireRidingBroomText": "Riding Broom",
"weaponArmoireRidingBroomNotes": "Run all your most magical errands on this fine broom--or, just take it for a joyride around the neighborhood. Whee! Increases Strength by <%= str %> and Intelligence by <%= int %>. Enchanted Armoire: Spooky Sorcery Set (Item 1 of 3)",
"weaponArmoireRidingBroomNotes": "Run all your most magical errands on this fine broomor, just take it for a joyride around the neighborhood. Whee! Increases Strength by <%= str %> and Intelligence by <%= int %>. Enchanted Armoire: Spooky Sorcery Set (Item 1 of 3)",
"weaponArmoireRollingPinText": "Rolling Pin",
"weaponArmoireRollingPinNotes": "Roll your dough as thin as you like in-between bonking bad habits when they pop up around you like a certain rodent-bopping game. Increases Strength by <%= str %>. Enchanted Armoire: Cooking Implements Set 2 (Item 2 of 2).",
"weaponArmoireScholarlyTextbooksText": "Scholarly Textbooks",
@@ -837,6 +850,10 @@
"weaponArmoireBeekeepersSmokerNotes": "Use this to calm your bees so you can retrieve some honey. The bees wont mind. Honestly, we could all use a few extra minutes of calm from time to time. Increases Intelligence by <%= int %>. Enchanted Armoire: Beekeeper Set (Item 3 of 4).",
"weaponArmoireBlacksmithsHammerText": "Blacksmith's Hammer",
"weaponArmoireBlacksmithsHammerNotes": "This hammer is for metalworking, but it is perfectly adept amidst hot red coals and hot red Daily tasks, as well. Increases Strength by <%= str %>. Enchanted Armoire: Blacksmith Set (Item 3 of 3).",
"weaponArmoireBambooFluteText": "Bamboo Flute",
"weaponArmoireBambooFluteNotes": "Hwhoooo! Hu-whooooo! Gather your party for a meditation session or self-care nap while relaxing to tunes played on this bamboo flute. Increases Constitution and Intelligence by <%= attrs %> each. Enchanted Armoire: Musical Instrument Set 2 (Item 2 of 3)",
"weaponArmoirePrettyPinkParasolText": "Pretty Pink Parasol",
"weaponArmoirePrettyPinkParasolNotes": "Pretty and practical is the preeminent permutation. And for a particularly impressive presentation, give this parasol a spin! Increases all stats by <%= attrs %> each. Enchanted Armoire: Pretty in Pink Set (Item 1 of 2)",
"armor": "armor",
"armorCapitalized": "Armor",
@@ -1189,7 +1206,7 @@
"armorSpecialSpring2020HealerNotes": "Wrap yourself in soft iris leaves and petals to fool enemies into underestimating your healing power. Increases Constitution by <%= con %>. Limited Edition 2020 Spring Gear.",
"armorSpecialSummer2020RogueText": "Crocodile Disguise",
"armorSpecialSummer2020RogueNotes": "A crocodile makes the perfect Rogue, waiting for the perfect moment to strike. Borrow their skills--and their explosive speed. Increases Perception by <%= per %>. Limited Edition 2020 Summer Gear.",
"armorSpecialSummer2020RogueNotes": "A crocodile makes the perfect Rogue, waiting for the perfect moment to strike. Borrow their skillsand their explosive speed. Increases Perception by <%= per %>. Limited Edition 2020 Summer Gear.",
"armorSpecialSummer2020WarriorText": "Rainbow Trout Tail",
"armorSpecialSummer2020WarriorNotes": "You'll be the bright fish in a dull stream, with these dazzling scales! Increases Constitution by <%= con %>. Limited Edition 2020 Summer Gear.",
"armorSpecialSummer2020MageText": "Oarfish Armor",
@@ -1386,6 +1403,15 @@
"armorSpecialFall2025MageText": "Masked Ghost Armor",
"armorSpecialFall2025MageNotes": "This seasonal armor becomes noncorporeal only after you put it on. Increases Intelligence by <%= int %>. Limited Edition Fall 2025 Gear.",
"armorSpecialWinter2026WarriorText": "Rime Reaper Suit",
"armorSpecialWinter2026WarriorNotes": "Icicles will snap and slide with every step on your way to completing your Dailies. Increases Constitution by <%= con %>. Limited Edition Winter 2025-2026 Gear.",
"armorSpecialWinter2026RogueText": "Ski Suit and Skis",
"armorSpecialWinter2026RogueNotes": "Go speedily swishing down the slopes on your way to completing your Dailies. Increases Perception by <%= per %>. Limited Edition Winter 2025-2026 Gear.",
"armorSpecialWinter2026HealerText": "Polar Robe",
"armorSpecialWinter2026HealerNotes": "Like a natural light show, you will be stunning on your way to completing your Dailies. Increases Constitution by <%= con %>. Limited Edition Winter 2025-2026 Gear.",
"armorSpecialWinter2026MageText": "Midwinter Candle Robe",
"armorSpecialWinter2026MageNotes": "Glide smoothly along your path like wax on your way to completing your Dailies. Increases Intelligence by <%= int %>. Limited Edition Winter 2025-2026 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",
@@ -1522,6 +1548,8 @@
"armorMystery202504Notes": "Abominable? More like adorable! Confers no benefit. April 2025 Subscriber Item.",
"armorMystery202509Text": "Windswept Wanderer's Robe",
"armorMystery202509Notes": "Bright silks protect you from the weather, hot or cold. Confers no benefit. September 2025 Subscriber Item.",
"armorMystery202512Text": "Cookie Champion Armor",
"armorMystery202512Notes": "Ready for battle in this plate that is both sweet and strong. Confers no benefit. December 2025 Subscriber Item.",
"armorMystery301404Text": "Steampunk Suit",
"armorMystery301404Notes": "Dapper and dashing, wot! Confers no benefit. February 3015 Subscriber Item.",
@@ -1621,7 +1649,7 @@
"armorArmoireCoverallsOfBookbindingText": "Coveralls of Bookbinding",
"armorArmoireCoverallsOfBookbindingNotes": "Everything you need in a set of coveralls, including pockets for everything. A pair of goggles, loose change, a golden ring... Increases Constitution by <%= con %> and Perception by <%= per %>. Enchanted Armoire: Bookbinder Set (Item 2 of 4).",
"armorArmoireRobeOfSpadesText": "Robe of Spades",
"armorArmoireRobeOfSpadesNotes": "These luxuriant robes conceal hidden pockets for treasures or weapons--your choice! Increases Strength by <%= str %>. Enchanted Armoire: Ace of Spades Set (Item 2 of 3).",
"armorArmoireRobeOfSpadesNotes": "These luxuriant robes conceal hidden pockets for treasures or weaponsyour choice! Increases Strength by <%= str %>. Enchanted Armoire: Ace of Spades Set (Item 2 of 3).",
"armorArmoireSoftBlueSuitText": "Soft Blue Suit",
"armorArmoireSoftBlueSuitNotes": "Blue is a calming colour. So calming, some even wear this soft outfit to sleep... zZz. Increases Intelligence by <%= int %> and Perception by <%= per %>. Enchanted Armoire: Blue Loungewear Set (Item 2 of 3).",
"armorArmoireSoftGreenSuitText": "Soft Green Suit",
@@ -1683,7 +1711,7 @@
"armorArmoireMedievalLaundryDressText": "Laundry Dress",
"armorArmoireMedievalLaundryDressNotes": "Put on your apron and roll up your sleeves: it's time to get the laundry done! Increases Constitution by <%= con %>. Enchanted Armoire: Medieval Launderers Set (Item 2 of 6).",
"armorArmoireBathtubText": "Bathtub",
"armorArmoireBathtubNotes": "Time for a little R&R? Here's your own personal bathtub -- and a guarantee that the water is always the right temperature! Increases Constitution by <%= con %>. Enchanted Armoire: Bubble Bath Set (Item 2 of 4).",
"armorArmoireBathtubNotes": "Time for a little R&R? Here's your own personal bathtuband a guarantee that the water is always the right temperature! Increases Constitution by <%= con %>. Enchanted Armoire: Bubble Bath Set (Item 2 of 4).",
"armorArmoireBagpipersKiltText": "Bagpiper's Kilt",
"armorArmoireBagpipersKiltNotes": "A good sturdy kilt will serve you well. Increases Constitution by <%= con %>. Enchanted Armoire: Bagpiper Set (Item 2 of 3).",
"armorArmoireHeraldsTunicText": "Herald's Tunic",
@@ -1770,6 +1798,8 @@
"armorArmoireBlacksmithsApronNotes": "This apron doesnt feel as heavy as it looks once youve got it on. It will shield you from stray sparks while allowing you to maneuver freely. Increases Constitution by <%= con %>. Enchanted Armoire: Blacksmith Set (Item 2 of 3).",
"armorArmoireBlackPartyDressText": "Black Party Dress",
"armorArmoireBlackPartyDressNotes": "Youre strong, smart, hearty, and so fashionable! Increases Strength, Intelligence, and Constitution by <%= attrs %> each. Enchanted Armoire: Black Hairbow Set (Item 2 of 2).",
"armorArmoireLoneCowpokeOutfitText": "Lone Cowpoke Outfit",
"armorArmoireLoneCowpokeOutfitNotes": "Whoa, there! Want to make a statement when you ride into town as a mysterious stranger ready to be productive? Heres the perfect outfit, complete with chaps and a shining, silver belt buckle. Increases Constitution by <%= con %>. Enchanted Armoire: Lone Cowpoke Set (Item 2 of 2)",
"headgear": "helm",
"headgearCapitalized": "Headgear",
@@ -1838,7 +1868,7 @@
"headSpecialLunarWarriorHelmText": "Lunar Warrior Helm",
"headSpecialLunarWarriorHelmNotes": "The power of the moon will strengthen you in battle! Increases Strength and Intelligence by <%= attrs %> each.",
"headSpecialMammothRiderHelmText": "Mammoth Rider Helm",
"headSpecialMammothRiderHelmNotes": "Don't let its fluffiness fool you--this hat will grant you piercing powers of perception! Increases Perception by <%= per %>.",
"headSpecialMammothRiderHelmNotes": "Don't let its fluffiness fool youthis hat will grant you piercing powers of perception! Increases Perception by <%= per %>.",
"headSpecialPageHelmText": "Page Helm",
"headSpecialPageHelmNotes": "Chainmail: for the stylish AND the practical. Increases Perception by <%= per %>.",
"headSpecialRoguishRainbowMessengerHoodText": "Roguish Rainbow Messenger Hood",
@@ -1934,7 +1964,7 @@
"headSpecialFall2015RogueText": "Bat-tle Wings",
"headSpecialFall2015RogueNotes": "Echolocate your enemies with this powerful helm! Increases Perception by <%= per %>. Limited Edition 2015 Fall Gear.",
"headSpecialFall2015WarriorText": "Scarecrow Hat",
"headSpecialFall2015WarriorNotes": "Everyone would want this hat--if they only had a brain. Increases Strength by <%= str %>. Limited Edition 2015 Fall Gear.",
"headSpecialFall2015WarriorNotes": "Everyone would want this hatif they only had a brain. Increases Strength by <%= str %>. Limited Edition 2015 Fall Gear.",
"headSpecialFall2015MageText": "Stitched Hat",
"headSpecialFall2015MageNotes": "Every stitch in this hat augments its power. Increases Perception by <%= per %>. Limited Edition 2015 Fall Gear.",
"headSpecialFall2015HealerText": "Hat of Frog",
@@ -2313,6 +2343,15 @@
"headSpecialFall2025MageText": "Masked Ghost Mask",
"headSpecialFall2025MageNotes": "Ethereal and glowy, this mask covers your head while you cover all your important tasks. Increases Perception by <%= per %>. Limited Edition Fall 2025 Gear.",
"headSpecialWinter2026WarriorText": "Rime Reaper Helmet",
"headSpecialWinter2026WarriorNotes": "Maintain focus and concentration as you set your sights on greater goals this season. Increases Strength by <%= str %>. Limited Edition 2025-2026 Winter Gear.",
"headSpecialWinter2026RogueText": "Ski Mask and Goggles",
"headSpecialWinter2026RogueNotes": "Maintain focus and vision as you set your sights on greater goals this season. Increases Perception by <%= per %>. Limited Edition 2025-2026 Winter Gear.",
"headSpecialWinter2026HealerText": "Polar Bear Mask",
"headSpecialWinter2026HealerNotes": "Maintain focus and clarity as you set your sights on greater goals this season. Increases Intelligence by <%= int %>. Limited Edition 2025-2026 Winter Gear.",
"headSpecialWinter2026MageText": "Midwinter Candle Hat",
"headSpecialWinter2026MageNotes": "Maintain focus and illumination as you set your sights on greater goals this season. Increases Perception by <%= per %>. Limited Edition 2025-2026 Winter 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.",
@@ -2496,6 +2535,10 @@
"headMystery202504Notes": "Wear this mysterious visage to dwell undetected among the worlds most obscure cyptids. Confers no benefit. April 2025 Subscriber Item.",
"headMystery202507Text": "Spunky Skater Cap",
"headMystery202507Notes": "Backwards hats are still cool, right? Confers no benefit. July 2025 Subscriber Item.",
"headMystery202512Text": "Cookie Champion Helm",
"headMystery202512Notes": "Gingerbread forged with ancient magic will protect you as long as you can hold off your urge to try a bite! Confers no benefit. December 2025 Subscriber Item.",
"headMystery202602Text": "Sakura Fox Ears",
"headMystery202602Notes": " Your hearing will be sharpened by these ears such that you can hear the buds of blossoms growing on tree branches as spring approaches. Confers no benefit. February 2026 Subscriber Item.",
"headMystery301404Text": "Fancy Top Hat",
"headMystery301404Notes": "A fancy top hat for the finest of gentlefolk! January 3015 Subscriber Item. Confers no benefit.",
@@ -2724,6 +2767,8 @@
"headArmoireBlackHairbowNotes": "Become strong, smart, and hearty while wearing this beautiful Black Hairbow! Increases Strength, Intelligence, and Constitution by <%= attrs %> each. Enchanted Armoire: Black Hairbow Set (Item 1 of 2).",
"headArmoireBlacksmithsGogglesText": "Blacksmith's Goggles",
"headArmoireBlacksmithsGogglesNotes": "Shatter and heat-resistant ocular protection is yours when youre working in a forge. Increases Perception by <%= per %>. Enchanted Armoire: Blacksmith Set (Item 1 of 3).",
"headArmoireLoneCowpokeHatText": "Lone Cowpoke Hat",
"headArmoireLoneCowpokeHatNotes": "Howdy there, pardner! Dyou hate when youre out on the range, workin on tasks, and sun gets in your eyes? Well, good thing youve got a hat for that now. Increases Perception by <%= per %>. Enchanted Armoire: Lone Cowpoke Set (Item 1 of 2)",
"offhand": "off-hand item",
"offHandCapitalized": "Off-Hand Item",
@@ -3036,6 +3081,11 @@
"shieldSpecialFall2025HealerText": "Kobold Shield",
"shieldSpecialFall2025HealerNotes": "Buy yourself some extra time to gather supplies by shielding yourself from your chores. Increases Constitution by <%= con %>. Limited Edition Fall 2025 Gear.",
"shieldSpecialWinter2026WarriorText": "Rime Shield",
"shieldSpecialWinter2026WarriorNotes": "Stop obstacles cold with this handy, spikey shield. Increases Constitution by <%= con %>. Limited Edition Winter 2025-2026 Gear.",
"shieldSpecialWinter2026HealerText": "Starburst",
"shieldSpecialWinter2026HealerNotes": "Stars help with wayfinding, energy, and illumination—all things that help you better conquer a task list. Increases Constitution by <%= con %>. Limited Edition Winter 2025-2026 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",
@@ -3095,7 +3145,7 @@
"shieldArmoireMushroomDruidShieldText": "Mushroom Druid Shield",
"shieldArmoireMushroomDruidShieldNotes": "Though made from a mushroom, there's nothing mushy about this tough shield! Increases Constitution by <%= con %> and Strength by <%= str %>. Enchanted Armoire: Mushroom Druid Set (Item 3 of 3).",
"shieldArmoireFestivalParasolText": "Festival Parasol",
"shieldArmoireFestivalParasolNotes": "This lightweight parasol will shield you from the glare--whether it's from the sun or from dark red Dailies! Increases Constitution by <%= con %>. Enchanted Armoire: Festival Attire Set (Item 2 of 3).",
"shieldArmoireFestivalParasolNotes": "This lightweight parasol will shield you from the glarewhether it's from the sun or from dark red Dailies! Increases Constitution by <%= con %>. Enchanted Armoire: Festival Attire Set (Item 2 of 3).",
"shieldArmoireVikingShieldText": "Viking Shield",
"shieldArmoireVikingShieldNotes": "This sturdy shield of wood and hide can stand up to the most daunting of foes. Increases Perception by <%= per %> and Intelligence by <%= int %>. Enchanted Armoire: Viking Set (Item 3 of 3).",
"shieldArmoireSwanFeatherFanText": "Swan Feather Fan",
@@ -3189,7 +3239,7 @@
"shieldArmoireBouncyBubblesText": "Bouncy Bubbles",
"shieldArmoireBouncyBubblesNotes": "Complete your relaxing bath with these exuberant bubbles! Increases Strength by <%= str %>. Enchanted Armoire: Bubble Bath Set (Item 4 of 4).",
"shieldArmoireBagpipesText": "Bagpipes",
"shieldArmoireBagpipesNotes": "The uncharitable might say you're planning to wake the dead with these bagpipes -- but you know you're just motivating your Party to success! Increases Strength by <%= str %>. Enchanted Armoire: Bagpiper Set (Item 3 of 3).",
"shieldArmoireBagpipesNotes": "The uncharitable might say you're planning to wake the dead with these bagpipesbut you know you're just motivating your Party to success! Increases Strength by <%= str %>. Enchanted Armoire: Bagpiper Set (Item 3 of 3).",
"shieldArmoireHeraldsMessageScrollText": "Herald's Message Scroll",
"shieldArmoireHeraldsMessageScrollNotes": "What exciting news does this scroll contain? Could it be about a new pet or a long habit streak? Increases Perception by <%= per %>. Enchanted Armoire: Herald Set (Item 4 of 4)",
"shieldArmoireSoftBlackPillowText": "Soft Black Pillow",
@@ -3244,6 +3294,10 @@
"shieldArmoireFlyFishingRodNotes": "Put a lure on this long and flexible rod and fish will mistake it for an insect every single time. Increases Strength and Intelligence by <%= attrs %> each. Enchanted Armoire: Fly Fishing Set (Item 3 of 3)",
"shieldArmoireSoftOrangePillowText": "Soft Orange Pillow",
"shieldArmoireSoftOrangePillowNotes": "The ready warrior packs a pillow for any expedition. Get ready to take on new obligations… even while you nap. Increases Intelligence and Perception by <%= attrs %> each. Enchanted Armoire: Orange Loungewear Set (Item 3 of 3).",
"shieldArmoireDoubleBassText": "Double Bass",
"shieldArmoireDoubleBassNotes": "Bom doo bom brrrr brr brr brrrr! Gather your party for some grounding or dancing as you listen to music on this deep double bass. Increases Constitution and Strength by <%= attrs %> each. Enchanted Armoire: Musical Instrument Set 2 (Item 3 of 3)",
"shieldArmoirePrettyPinkGiftBoxText": "Pretty Pink Present",
"shieldArmoirePrettyPinkGiftBoxNotes": "Is this gift from a dear friend? A caring relative? A true love? A secret admirer? Whoever sent it knows youll be pleased with whats inside. Increases all stats by <%= attrs %> each. Enchanted Armoire: Pretty in Pink Set (Item 2 of 2)",
"back": "Back Accessory",
"backBase0Text": "No Back Accessory",
@@ -3334,6 +3388,13 @@
"backMystery202507Notes": "Your steed for the sidewalks and halfpipes. Confers no benefit. July 2025 Subscriber Item.",
"backMystery202510Text": "Gliding Ghoul Wings",
"backMystery202510Notes": "Fly silently across the haunted skies with these giant wings. Confers no benefit. October 2025 Subscriber Item.",
"backMystery202601Text": "Winter's Sigil",
"backMystery202601Notes": "This mark grants the user control over the elements of the season of cold and frost. Confers no benefit. January 2026 Subscriber Item.",
"backMystery202602Text": "Five Tails of Sakura",
"backMystery202602Notes": "These fluffy tails are the color of cherry blossoms, a reminder that spring is on the way! Confers no benefit. February 2026 Subscriber Item.",
"backArmoireHarpsichordText": "Harpsichord",
"backArmoireHarpsichordNotes": "Pting! Ptiiing! Gather your party for a dinner or picnic and listen to a tinny melody on this harpsichord. Increases Perception and Intelligence by <%= attrs %> each. Enchanted Armoire: Musical Instrument Set 2 (Item 1 of 3)",
"backSpecialWonderconRedText": "Mighty Cape",
"backSpecialWonderconRedNotes": "Swishes with strength and beauty. Confers no benefit. Special Edition Convention Item.",
@@ -3552,7 +3613,7 @@
"headAccessoryMystery201908Text": "Footloose Faun Horns",
"headAccessoryMystery201908Notes": "If wearing horns floats your goat, you're in luck! Confers no benefit. August 2019 Subscriber Item.",
"headAccessoryMystery202004Text": "Mighty Monarch Antennae",
"headAccessoryMystery202004Notes": "They twitch just a bit if the scent of flowers drifts by--use them to find a pretty garden! Confers no benefit. April 2020 Subscriber Item.",
"headAccessoryMystery202004Notes": "They twitch just a bit if the scent of flowers drifts byuse them to find a pretty garden! Confers no benefit. April 2020 Subscriber Item.",
"headAccessoryMystery202005Text": "Wondrous Wyvern Horns",
"headAccessoryMystery202005Notes": "With such mighty horns, what creature dares challenge you? Confers no benefit. May 2020 Subscriber Item.",
"headAccessoryMystery202009Text": "Marvelous Moth Antennae",
+2 -1
View File
@@ -242,5 +242,6 @@
"whyReportingPlayerPlaceholder": "Reason for report",
"playerReportModalBody": "You should only report a player who violates the <%= firstLinkStart %>Community Guidelines<%= linkEnd %> and/or <%= secondLinkStart %>Terms of Service<%= linkEnd %>. Submitting a false report is a violation of Habiticas Community Guidelines.",
"targetUserNotExist": "Target User: '<%= userName %>' does not exist.",
"rememberToBeKind": "Please remember to be kind, respectful, and follow the <a href='/static/community-guidelines' target='_blank'>Community Guidelines</a>."
"rememberToBeKind": "Please remember to be kind, respectful, and follow the <a href='/static/community-guidelines' target='_blank'>Community Guidelines</a>.",
"confirmPurchase": "Confirm Purchase"
}
+3 -1
View File
@@ -426,5 +426,7 @@
"tavernDiscontinuedLinks": "Read more about the <a href='/static/faq/tavern-and-guilds'>Tavern and Guild Service Discontinuation</a> or head back to the <a href='/'>homepage</a>.",
"chatSunsetWarning": "⚠️ <strong>Habitica Guilds and Tavern chat will be discontinued on 8/8/2023.</strong> <a href='/static/faq/tavern-and-guilds'>Click here</a> to read more about this change.",
"interestedLearningMore": "Interested in Learning More?",
"checkGroupPlanFAQ": "Check out the <a href='/static/faq#what-is-group-plan'>Group Plans FAQ</a> to learn how to get the most out of your shared task experience."
"checkGroupPlanFAQ": "Check out the <a href='/static/faq#what-is-group-plan'>Group Plans FAQ</a> to learn how to get the most out of your shared task experience.",
"groupPlanBillingFYI": "Group Plan subscriptions automatically renew unless you cancel at least 24 hours before the end of your current period. You can cancel from the Group Billing tab of your Group Plan. You will be charged within 24 hours before your subscription renews, based on the number of members in your Group Plan at that time. If you add members between payment periods, you'll see an additional prorated charge for their benefits at your next billing cycle.",
"groupPlanBillingFYIShort": "Group Plan subscriptions automatically renew unless you cancel at least 24 hours before the end of your current period. You will be charged within 24 hours before your subscription renews, based on the number of members in your Group Plan at that time. If you add members between payment periods, you'll see an additional prorated charge for their benefits at your next billing cycle."
}
+4
View File
@@ -239,6 +239,10 @@
"fall2025SkeletonRogueSet": "Skeleton Rogue Set",
"fall2025KoboldHealerSet": "Kobold Healer Set",
"fall2025MaskedGhostMageSet": "Masked Ghost Mage Set",
"winter2026RimeReaperWarriorSet": "Rime Reaper Warrior Set",
"winter2026SkiRogueSet": "Ski Rogue Set",
"winter2026PolarBearHealerSet": "Polar Bear Healer Set",
"winter2026MidwinterCandleMageSet": "Midwinter Candle Mage Set",
"winterPromoGiftHeader": "GIFT A SUBSCRIPTION, GET ONE FREE!",
"winterPromoGiftDetails1": "Until January 6th only, when you gift somebody a subscription, you get the same subscription for yourself for free!",
"winterPromoGiftDetails2": "Please note that if you or your gift recipient already have a recurring subscription, the gifted subscription will only start after that subscription is cancelled or has expired. Thanks so much for your support! <3",
-1
View File
@@ -104,7 +104,6 @@
"success": "Success!",
"classGear": "Class Gear",
"classGearText": "Congratulations on choosing a class! I've added your new basic weapon to your inventory. Take a look below to equip it!",
"autoAllocate": "Auto Allocate",
"spells": "Skills",
"skillsTitle": "<%= classStr %> Skills",
"toDo": "To Do",
+18 -18
View File
@@ -65,7 +65,7 @@
"questSpiderText": "The Icy Arachnid",
"questSpiderNotes": "As the weather starts cooling down, delicate frost begins appearing on Habiticans' windowpanes in lacy webs... except for @Arcosine, whose windows are frozen completely shut by the Frost Spider currently taking up residence in his home. Oh dear.",
"questSpiderCompletion": "The Frost Spider collapses, leaving behind a small pile of frost and a few of her enchanted egg sacs. @Arcosine rather hurriedly offers them to you as a reward--perhaps you could raise some non-threatening spiders as pets of your own?",
"questSpiderCompletion": "The Frost Spider collapses, leaving behind a small pile of frost and a few of her enchanted egg sacs. @Arcosine rather hurriedly offers them to you as a rewardperhaps you could raise some non-threatening spiders as pets of your own?",
"questSpiderBoss": "Spider",
"questSpiderDropSpiderEgg": "Spider (Egg)",
"questSpiderUnlockText": "Unlocks Spider Eggs for purchase in the Market",
@@ -134,7 +134,7 @@
"questGroupEarnable": "Earnable Quests",
"questBasilistText": "The Basi-List",
"questBasilistNotes": "There's a commotion in the marketplace--the kind that should make you run away. Being a courageous adventurer, you run towards it instead, and discover a Basi-list, coalescing from a clump of incomplete To Do's! Nearby Habiticans are paralyzed with fear at the length of the Basi-list, unable to start working. From somewhere in the vicinity, you hear @Arcosine shout: \"Quick! Complete your To Do's and Dailies to defang the monster, before someone gets a paper cut!\" Strike fast, adventurer, and check something off - but beware! If you leave any Dailies undone, the Basi-list will attack you and your party!",
"questBasilistNotes": "There's a commotion in the marketplacethe kind that should make you run away. Being a courageous adventurer, you run towards it instead, and discover a Basi-list, coalescing from a clump of incomplete To Do's! Nearby Habiticans are paralyzed with fear at the length of the Basi-list, unable to start working. From somewhere in the vicinity, you hear @Arcosine shout: \"Quick! Complete your To Do's and Dailies to defang the monster, before someone gets a paper cut!\" Strike fast, adventurer, and check something off - but beware! If you leave any Dailies undone, the Basi-list will attack you and your party!",
"questBasilistCompletion": "The Basi-list has scattered into paper scraps, which shimmer gently in rainbow colors. \"Whew!\" says @Arcosine. \"Good thing you guys were here!\" Feeling more experienced than before, you gather up some fallen gold from among the papers.",
"questBasilistBoss": "The Basi-List",
@@ -296,7 +296,7 @@
"questDilatoryDistress3DropShield": "Moonpearl Shield (Off-Hand Item)",
"questCheetahText": "Such a Cheetah",
"questCheetahNotes": "As you hike across the Sloensteadi Savannah with your friends @PainterProphet, @tivaquinn, @Unruly Hyena, and @Crawford, you're startled to see a Cheetah screeching past with a new Habitican clamped in its jaws. Under the Cheetah's scorching paws, tasks burn away as though complete -- before anyone has the chance to actually finish them! The Habitican sees you and yells, \"Please help me! This Cheetah is making me level too quickly, but I'm not getting anything done. I want to slow down and enjoy the game. Make it stop!\" You fondly remember your own fledgling days, and know that you have to help the newbie by stopping the Cheetah!",
"questCheetahNotes": "As you hike across the Sloensteadi Savannah with your friends @PainterProphet, @tivaquinn, @Unruly Hyena, and @Crawford, you're startled to see a Cheetah screeching past with a new Habitican clamped in its jaws. Under the Cheetah's scorching paws, tasks burn away as though completebefore anyone has the chance to actually finish them! The Habitican sees you and yells, \"Please help me! This Cheetah is making me level too quickly, but I'm not getting anything done. I want to slow down and enjoy the game. Make it stop!\" You fondly remember your own fledgling days, and know that you have to help the newbie by stopping the Cheetah!",
"questCheetahCompletion": "The new Habitican is breathing heavily after the wild ride, but thanks you and your friends for your help. \"I'm glad that Cheetah won't be able to grab anyone else. It did leave some Cheetah eggs for us, so maybe we can raise them into more trustworthy pets!\"",
"questCheetahBoss": "Cheetah",
"questCheetahDropCheetahEgg": "Cheetah (Egg)",
@@ -323,7 +323,7 @@
"questBurnoutBossRageTavern": "`Burnout uses EXHAUST STRIKE!`\n\nMany Habiticans have been hiding from Burnout in the Tavern, but no longer! With a screeching howl, Burnout rakes the Tavern with its white-hot hands. As the Tavern patrons flee, Daniel is caught in Burnout's grip, and transforms into an Exhaust Spirit right in front of you!\n\nThis hot-headed horror has gone on for too long. Don't give up... we're so close to vanquishing Burnout for once and for all!",
"questFrogText": "Swamp of the Clutter Frog",
"questFrogNotes": "As you and your friends are slogging through the Swamps of Stagnation, @starsystemic points at a large sign. \"Stay on the path -- if you can.\"<br><br>\"Surely that isn't hard!\" @RosemonkeyCT says. \"It's broad and clear.\"<br><br>But as you continue, you notice that path is gradually overtaken by the muck of the swamp, laced with bits of strange blue debris and clutter, until it's impossible to proceed.<br><br>As you look around, wondering how it got this messy, @Jon Arjinborn shouts, \"Look out!\" An angry frog leaps from the sludge, clad in dirty laundry and lit by blue fire. You will have to overcome this poisonous Clutter Frog to progress!",
"questFrogNotes": "As you and your friends are slogging through the Swamps of Stagnation, @starsystemic points at a large sign. \"Stay on the pathif you can.\"<br><br>\"Surely that isn't hard!\" @RosemonkeyCT says. \"It's broad and clear.\"<br><br>But as you continue, you notice that path is gradually overtaken by the muck of the swamp, laced with bits of strange blue debris and clutter, until it's impossible to proceed.<br><br>As you look around, wondering how it got this messy, @Jon Arjinborn shouts, \"Look out!\" An angry frog leaps from the sludge, clad in dirty laundry and lit by blue fire. You will have to overcome this poisonous Clutter Frog to progress!",
"questFrogCompletion": "The frog cowers back into the muck, defeated. As it slinks away, the blue slime fades, leaving the way ahead clear.<br><br>Sitting in the middle of the path are three pristine eggs. \"You can even see the tiny tadpoles through the clear casing!\" @Breadstrings says. \"Here, you should take them.\"",
"questFrogBoss": "Clutter Frog",
"questFrogDropFrogEgg": "Frog (Egg)",
@@ -365,7 +365,7 @@
"questSnailUnlockText": "Unlocks Snail Eggs for purchase in the Market",
"questBewilderText": "The Be-Wilder",
"questBewilderNotes": "The party begins like any other.<br><br>The appetizers are excellent, the music is swinging, and even the dancing elephants have become routine. Habiticans laugh and frolic amid the overflowing floral centerpieces, happy to have a distraction from their least-favorite tasks, and the April Fool whirls among them, eagerly providing an amusing trick here and a witty twist there.<br><br>As the Mistiflying clock tower strikes midnight, the April Fool leaps onto the stage to give a speech.<br><br>“Friends! Enemies! Tolerant acquaintances! Lend me your ears.” The crowd chuckles as animal ears sprout from their heads, and they pose with their new accessories.<br><br>“As you know,” the Fool continues, “my confusing illusions usually only last a single day. But Im pleased to announce that Ive discovered a shortcut that will guarantee us non-stop fun, without having to deal with the pesky weight of our responsibilities. Charming Habiticans, meet my magical new friend... the Be-Wilder!”<br><br>Lemoness pales suddenly, dropping her hors d'oeuvres. “Wait! Dont trust--”<br><br>But suddenly mists are pouring into the room, glittering and thick, and they swirl around the April Fool, coalescing into cloudy feathers and a stretching neck. The crowd is speechless as a monstrous bird unfolds before them, its wings shimmering with illusions. It lets out a horrible screeching laugh.<br><br>“Oh, it has been ages since a Habitican has been foolish enough to summon me! How wonderful it feels, to have a tangible form at last.”<br><br>Buzzing in terror, the magic bees of Mistiflying flee the floating city, which sags from the sky. One by one, the brilliant spring flowers wither up and wisp away.<br><br>“My dearest friends, why so alarmed?” crows the Be-Wilder, beating its wings. “Theres no need to toil for your rewards any more. Ill just give you all the things that you desire!”<br><br>A rain of coins pours from the sky, hammering into the ground with brutal force, and the crowd screams and flees for cover. “Is this a joke?” Baconsaur shouts, as the gold smashes through windows and shatters roof shingles.<br><br>PainterProphet ducks as lightning bolts crackle overhead, and fog blots out the sun. “No! This time, I dont think it is!”<br><br>Quickly, Habiticans, dont let this World Boss distract us from our goals! Stay focused on the tasks that you need to complete so we can rescue Mistiflying -- and hopefully, ourselves.",
"questBewilderNotes": "The party begins like any other.<br><br>The appetizers are excellent, the music is swinging, and even the dancing elephants have become routine. Habiticans laugh and frolic amid the overflowing floral centerpieces, happy to have a distraction from their least-favorite tasks, and the April Fool whirls among them, eagerly providing an amusing trick here and a witty twist there.<br><br>As the Mistiflying clock tower strikes midnight, the April Fool leaps onto the stage to give a speech.<br><br>“Friends! Enemies! Tolerant acquaintances! Lend me your ears.” The crowd chuckles as animal ears sprout from their heads, and they pose with their new accessories.<br><br>“As you know,” the Fool continues, “my confusing illusions usually only last a single day. But Im pleased to announce that Ive discovered a shortcut that will guarantee us non-stop fun, without having to deal with the pesky weight of our responsibilities. Charming Habiticans, meet my magical new friend... the Be-Wilder!”<br><br>Lemoness pales suddenly, dropping her hors d'oeuvres. “Wait! Dont trust”<br><br>But suddenly mists are pouring into the room, glittering and thick, and they swirl around the April Fool, coalescing into cloudy feathers and a stretching neck. The crowd is speechless as a monstrous bird unfolds before them, its wings shimmering with illusions. It lets out a horrible screeching laugh.<br><br>“Oh, it has been ages since a Habitican has been foolish enough to summon me! How wonderful it feels, to have a tangible form at last.”<br><br>Buzzing in terror, the magic bees of Mistiflying flee the floating city, which sags from the sky. One by one, the brilliant spring flowers wither up and wisp away.<br><br>“My dearest friends, why so alarmed?” crows the Be-Wilder, beating its wings. “Theres no need to toil for your rewards any more. Ill just give you all the things that you desire!”<br><br>A rain of coins pours from the sky, hammering into the ground with brutal force, and the crowd screams and flees for cover. “Is this a joke?” Baconsaur shouts, as the gold smashes through windows and shatters roof shingles.<br><br>PainterProphet ducks as lightning bolts crackle overhead, and fog blots out the sun. “No! This time, I dont think it is!”<br><br>Quickly, Habiticans, dont let this World Boss distract us from our goals! Stay focused on the tasks that you need to complete so we can rescue Mistiflyingand hopefully, ourselves.",
"questBewilderCompletion": "<strong>The Be-Wilder is DEFEATED!</strong><br><br>We've done it! The Be-Wilder lets out a ululating cry as it twists in the air, shedding feathers like falling rain. Slowly, gradually, it coils into a cloud of sparkling mist. As the newly-revealed sun pierces the fog, it burns away, revealing the coughing, mercifully human forms of Bailey, Matt, Alex.... and the April Fool himself.<br><br><strong>Mistiflying is saved!</strong><br><br>The April Fool has enough shame to look a bit sheepish. “Oh, hm,” he says. “Perhaps I got a little…. carried away.”<br><br>The crowd mutters. Sodden flowers wash up on sidewalks. Somewhere in the distance, a roof collapses with a spectacular splash.<br><br>“Er, yes,” the April Fool says. “That is. What I meant to say was, Im dreadfully sorry.” He heaves a sigh. “I suppose it cant all be fun and games, after all. It might not hurt to focus occasionally. Maybe Ill get a head start on next years pranking.”<br><br>Redphoenix coughs meaningfully.<br><br>“I mean, get a head start on this years spring cleaning!” the April Fool says. “Nothing to fear, Ill have Habit City in spit-shape soon. Luckily nobody is better than I at dual-wielding mops.”<br><br>Encouraged, the marching band starts up.<br><br>It isnt long before all is back to normal in Habit City. Plus, now that the Be-Wilder has evaporated, the magical bees of Mistiflying bustle back to work, and soon the flowers are blooming and the city is floating once more.<br><br>As Habiticans cuddle the magical fuzzy bees, the April Fools eyes light up. “Oho, Ive had a thought! Why dont you all keep some of these fuzzy Bee Pets and Mounts? Its a gift that perfectly symbolizes the balance between hard work and sweet rewards, if Im going to get all boring and allegorical on you.” He winks. “Besides, they dont have stingers! Fools honor.”",
"questBewilderCompletionChat": "`The Be-Wilder is DEFEATED!`\n\nWe've done it! The Be-Wilder lets out a ululating cry as it twists in the air, shedding feathers like falling rain. Slowly, gradually, it coils into a cloud of sparkling mist. As the newly-revealed sun pierces the fog, it burns away, revealing the coughing, mercifully human forms of Bailey, Matt, Alex.... and the April Fool himself.\n\n`Mistiflying is saved!`\n\nThe April Fool has enough shame to look a bit sheepish. “Oh, hm,” he says. “Perhaps I got a little…. carried away.”\n\nThe crowd mutters. Sodden flowers wash up on sidewalks. Somewhere in the distance, a roof collapses with a spectacular splash.\n\n“Er, yes,” the April Fool says. “That is. What I meant to say was, Im dreadfully sorry.” He heaves a sigh. “I suppose it cant all be fun and games, after all. It might not hurt to focus occasionally. Maybe Ill get a head start on next years pranking.”\n\nRedphoenix coughs meaningfully.\n\n“I mean, get a head start on this years spring cleaning!” the April Fool says. “Nothing to fear, Ill have Habit City in spit-shape soon. Luckily nobody is better than I at dual-wielding mops.”\n\nEncouraged, the marching band starts up.\n\nIt isnt long before all is back to normal in Habit City. Plus, now that the Be-Wilder has evaporated, the magical bees of Mistiflying bustle back to work, and soon the flowers are blooming and the city is floating once more.\n\nAs Habiticans cuddle the magical fuzzy bees, the April Fools eyes light up. “Oho, Ive had a thought! Why dont you all keep some of these fuzzy Bee Pets and Mounts? Its a gift that perfectly symbolizes the balance between hard work and sweet rewards, if Im going to get all boring and allegorical on you.” He winks. “Besides, they dont have stingers! Fools honor.”",
"questBewilderBossRageTitle": "Beguilement Strike",
@@ -415,7 +415,7 @@
"questArmadilloUnlockText": "Unlocks Armadillo Eggs for purchase in the Market",
"questCowText": "The Mootant Cow",
"questCowNotes": "Its been a long, hot day at Sparring Farms, and there is nothing more you want than a long sip of water and some sleep. You're standing there daydreaming when @Soloana suddenly screams, \"Everyone run! The prize cow has mootated!\"<br><br>@eevachu gulps. \"It must be our bad habits that infected it.\"<br><br>\"Quick!\" @Feralem Tau says. \"Lets do something before the udder cows mootate, too.\"<br><br>Youve herd enough. No more daydreaming -- it's time to get those bad habits under control!",
"questCowNotes": "Its been a long, hot day at Sparring Farms, and there is nothing more you want than a long sip of water and some sleep. You're standing there daydreaming when @Soloana suddenly screams, \"Everyone run! The prize cow has mootated!\"<br><br>@eevachu gulps. \"It must be our bad habits that infected it.\"<br><br>\"Quick!\" @Feralem Tau says. \"Lets do something before the udder cows mootate, too.\"<br><br>Youve herd enough. No more daydreamingit's time to get those bad habits under control!",
"questCowCompletion": "You milk your good habits for all they are worth until the cow reverts to its original form. The cow looks over at you with her pretty brown eyes and nudges over three eggs.<br><br>@fuzzytrees laughs and hands you the eggs, \"Maybe it still is mootated if there are baby cows in these eggs. But I trust you to stick to your good habits when you raise them!\"",
"questCowBoss": "Mootant Cow",
"questCowDropCowEgg": "Cow (Egg)",
@@ -449,7 +449,7 @@
"questTaskwoodsTerror2DropArmor": "Pyromancer's Robes (Armor)",
"questTaskwoodsTerror3Text": "Terror in the Taskwoods, Part 3: Jacko of the Lantern",
"questTaskwoodsTerror3Notes": "Ready for battle, your group marches to the heart of the forest, where the renegade spirit is trying to destroy an ancient apple tree surrounded by fruitful berry bushes. His pumpkin-like head radiates a terrible light wherever it turns, and in his left hand he holds a long rod, with a lantern hanging from its tip. Instead of fire or flame, however, the lantern contains a dark crystal that chills you to the very bone.<br><br>The Joyful Reaper raises a bony hand to her mouth. \"That's -- that's Jacko, the Lantern Spirit! But he's a helpful harvest ghost who guides our farmers. What could possibly drive the dear soul to act this way?\"<br><br>\"I don't know,\" says @bridgetteempress. \"But it looks like that 'dear soul' is about to attack us!\"",
"questTaskwoodsTerror3Notes": "Ready for battle, your group marches to the heart of the forest, where the renegade spirit is trying to destroy an ancient apple tree surrounded by fruitful berry bushes. His pumpkin-like head radiates a terrible light wherever it turns, and in his left hand he holds a long rod, with a lantern hanging from its tip. Instead of fire or flame, however, the lantern contains a dark crystal that chills you to the very bone.<br><br>The Joyful Reaper raises a bony hand to her mouth. \"That'sthat's Jacko, the Lantern Spirit! But he's a helpful harvest ghost who guides our farmers. What could possibly drive the dear soul to act this way?\"<br><br>\"I don't know,\" says @bridgetteempress. \"But it looks like that 'dear soul' is about to attack us!\"",
"questTaskwoodsTerror3Completion": "After a long battle, you manage to land a well-aimed blow at the lantern that Jacko carries, and the crystal within shatters. Jacko suddenly snaps back to his senses and bursts into glowing tears. \"Oh, my beautiful forest! What have I done?!\" he wails. His tears extinguish the remaining fires, and the apple tree and wild berries are saved.<br><br>After you help him relax, he explains, \"I met this charming lady named Tzina, and she gave me this glowing crystal as a gift. At her urging, I put it in my lantern... but that's the last thing I recall.\" He turns to you with a golden smile. \"Perhaps you should take it for safekeeping while I help the wild orchards to regrow.\"",
"questTaskwoodsTerror3Boss": "Jacko of the Lantern",
"questTaskwoodsTerror3DropStrawberry": "Strawberry (Food)",
@@ -494,7 +494,7 @@
"questSlothUnlockText": "Unlocks Sloth Eggs for purchase in the Market",
"questTriceratopsText": "The Trampling Triceratops",
"questTriceratopsNotes": "The snow-capped Stoïkalm Volcanoes are always bustling with hikers and sight-seers. One tourist, @plumilla, calls over a crowd. \"Look! I enchanted the ground to glow so that we can play field games on it for our outdoor activity Dailies!\" Sure enough, the ground is swirling with glowing red patterns. Even some of the prehistoric pets from the area come over to play.<br><br>Suddenly, there's a loud snap -- a curious Triceratops has stepped on @plumilla's wand! It's engulfed in a burst of magic energy, and the ground starts shaking and growing hot. The Triceratops' eyes shine red, and it roars and begins to stampede!<br><br>\"That's not good,\" calls @McCoyly, pointing in the distance. Each magic-fueled stomp is causing the volcanoes to erupt, and the glowing ground is turning to lava beneath the dinosaur's feet! Quickly, you must hold off the Trampling Triceratops until someone can reverse the spell!",
"questTriceratopsNotes": "The snow-capped Stoïkalm Volcanoes are always bustling with hikers and sight-seers. One tourist, @plumilla, calls over a crowd. \"Look! I enchanted the ground to glow so that we can play field games on it for our outdoor activity Dailies!\" Sure enough, the ground is swirling with glowing red patterns. Even some of the prehistoric pets from the area come over to play.<br><br>Suddenly, there's a loud snapa curious Triceratops has stepped on @plumilla's wand! It's engulfed in a burst of magic energy, and the ground starts shaking and growing hot. The Triceratops' eyes shine red, and it roars and begins to stampede!<br><br>\"That's not good,\" calls @McCoyly, pointing in the distance. Each magic-fueled stomp is causing the volcanoes to erupt, and the glowing ground is turning to lava beneath the dinosaur's feet! Quickly, you must hold off the Trampling Triceratops until someone can reverse the spell!",
"questTriceratopsCompletion": "With quick thinking, you herd the creature towards the soothing Stoïkalm Steppes so that @*~Seraphina~* and @PainterProphet can reverse the lava spell without distraction. The calming aura of the Steppes takes effect, and the Triceratops curls up as the volcanoes go dormant once more. @PainterProphet passes you some eggs that were rescued from the lava. \"Without you, we wouldn't have been able to concentrate to stop the eruptions. Give these pets a good home.\"",
"questTriceratopsBoss": "Trampling Triceratops",
"questTriceratopsDropTriceratopsEgg": "Triceratops (Egg)",
@@ -502,7 +502,7 @@
"questGroupStoikalmCalamity": "Stoïkalm Calamity",
"questStoikalmCalamity1Text": "Stoïkalm Calamity, Part 1: Earthen Enemies",
"questStoikalmCalamity1Notes": "A terse missive arrives from @Kiwibot, and the frost-crusted scroll chills your heart as well as your fingertips. \"Visiting Stoïkalm Steppes -- monsters bursting from earth -- send help!\" You gather your party and ride north, but as soon as you venture down from the mountains, the snow beneath your feet explodes and gruesomely grinning skulls surround you!<br><br>Suddenly, a spear sails past, burying itself in a skull that was burrowing through the snow in an attempt to catch you unawares. A tall woman in finely-crafted armor gallops into the fray on the back of a mastodon, her long braid swinging as she yanks the spear unceremoniously from the crushed beast. It's time to fight off these foes with the help of Lady Glaciate, the leader of the Mammoth Riders!",
"questStoikalmCalamity1Notes": "A terse missive arrives from @Kiwibot, and the frost-crusted scroll chills your heart as well as your fingertips. \"Visiting Stoïkalm Steppesmonsters bursting from earthsend help!\" You gather your party and ride north, but as soon as you venture down from the mountains, the snow beneath your feet explodes and gruesomely grinning skulls surround you!<br><br>Suddenly, a spear sails past, burying itself in a skull that was burrowing through the snow in an attempt to catch you unawares. A tall woman in finely-crafted armor gallops into the fray on the back of a mastodon, her long braid swinging as she yanks the spear unceremoniously from the crushed beast. It's time to fight off these foes with the help of Lady Glaciate, the leader of the Mammoth Riders!",
"questStoikalmCalamity1Completion": "As you deliver a final blow to the skulls, they dissipate in a puff of magic. \"The dratted swarm may be gone,\" Lady Glaciate says, \"but we have bigger problems. Follow me.\" She tosses you a cloak to protect you from the chill air, and you ride off after her.",
"questStoikalmCalamity1Boss": "Earth Skull Swarm",
"questStoikalmCalamity1RageTitle": "Swarm Respawn",
@@ -513,7 +513,7 @@
"questStoikalmCalamity1DropArmor": "Mammoth Rider Armor",
"questStoikalmCalamity2Text": "Stoïkalm Calamity, Part 2: Seek the Icicle Caverns",
"questStoikalmCalamity2Notes": "The stately hall of the Mammoth Riders is an austere masterpiece of architecture, but it is also entirely empty. There's no furniture, the weapons are missing, and even the columns were picked clean of their inlays.<br><br>\"Those skulls scoured the place,\" Lady Glaciate says, and there is a blizzard brewing in her tone. \"Humiliating. Not a soul is to mention this to the April Fool, or I will never hear the end of it.\"<br><br>\"How mysterious!\" says @Beffymaroo. \"But where did they--\"<br><br>\"The icicle drake caverns.\" Lady Glaciate gestures at shining coins spilled in the snow outside. \"Sloppy.\"<br><br>\"But aren't icicle drakes honorable creatures with their own treasure hoards?\" @Beffymaroo asks. \"Why would they possibly--\"<br><br>\"Mind control,\" says Lady Glaciate, utterly unfazed. \"Or something equally melodramatic and inconvenient.\" She begins to stride from the hall. \"Why are you just standing there?\"<br><br>Quickly, go follow the trail of Icicle Coins!",
"questStoikalmCalamity2Notes": "The stately hall of the Mammoth Riders is an austere masterpiece of architecture, but it is also entirely empty. There's no furniture, the weapons are missing, and even the columns were picked clean of their inlays.<br><br>\"Those skulls scoured the place,\" Lady Glaciate says, and there is a blizzard brewing in her tone. \"Humiliating. Not a soul is to mention this to the April Fool, or I will never hear the end of it.\"<br><br>\"How mysterious!\" says @Beffymaroo. \"But where did they\"<br><br>\"The icicle drake caverns.\" Lady Glaciate gestures at shining coins spilled in the snow outside. \"Sloppy.\"<br><br>\"But aren't icicle drakes honorable creatures with their own treasure hoards?\" @Beffymaroo asks. \"Why would they possibly\"<br><br>\"Mind control,\" says Lady Glaciate, utterly unfazed. \"Or something equally melodramatic and inconvenient.\" She begins to stride from the hall. \"Why are you just standing there?\"<br><br>Quickly, go follow the trail of Icicle Coins!",
"questStoikalmCalamity2Completion": "The Icicle Coins lead you straight to the buried entrance of a cleverly hidden cavern. Though the weather outside is calm and lovely, with the sunlight sparkling across the expanse of snow, there is a howling within like a fierce winter wind. Lady Glaciate grimaces and hands you a Mammoth Rider helm. \"Wear this,\" she says. \"You'll need it.\"",
"questStoikalmCalamity2CollectIcicleCoins": "Icicle Coins",
"questStoikalmCalamity2DropHeadgear": "Mammoth Rider Helm (Headgear)",
@@ -527,21 +527,21 @@
"questStoikalmCalamity3DropWeapon": "Mammoth Rider Spear (Weapon)",
"questGuineaPigText": "The Guinea Pig Gang",
"questGuineaPigNotes": "You're casually strolling through Habit City's famous Market when @Pandah waves you down. \"Hey, check these out!\" They're holding up a brown and beige egg you don't recognize.<br><br>Alexander the Merchant frowns at it. \"I don't remember putting that out. I wonder where it came--\" A small paw cuts him off.<br><br>\"Guinea all your gold, merchant!\" squeaks a tiny voice brimming with evil.<br><br>\"Oh no, the egg was a distraction!\" @mewrose exclaims. \"It's the gritty, greedy Guinea Pig Gang! They never do their Dailies, so they constantly steal gold to buy health potions.\"<br><br>\"Robbing the Market?\" says @emmavig. \"Not on our watch!\" Without further prompting, you leap to Alexander's aid.",
"questGuineaPigCompletion": "\"We submit!\" The Guinea Pig Gang Boss waves his paws at you, fluffy head hanging in shame. From underneath his hat falls a list, and @snazzyorange quickly swipes it for evidence. \"Wait a minute,\" you say. \"It's no wonder you've been getting hurt! You've got way too many Dailies. You don't need health potions -- you just need help organizing.\"<br><br>\"Really?\" squeaks the Guinea Pig Gang Boss. \"We've robbed so many people because of this! Please take our eggs as an apology for our crooked ways.\"",
"questGuineaPigNotes": "You're casually strolling through Habit City's famous Market when @Pandah waves you down. \"Hey, check these out!\" They're holding up a brown and beige egg you don't recognize.<br><br>Alexander the Merchant frowns at it. \"I don't remember putting that out. I wonder where it came\" A small paw cuts him off.<br><br>\"Guinea all your gold, merchant!\" squeaks a tiny voice brimming with evil.<br><br>\"Oh no, the egg was a distraction!\" @mewrose exclaims. \"It's the gritty, greedy Guinea Pig Gang! They never do their Dailies, so they constantly steal gold to buy health potions.\"<br><br>\"Robbing the Market?\" says @emmavig. \"Not on our watch!\" Without further prompting, you leap to Alexander's aid.",
"questGuineaPigCompletion": "\"We submit!\" The Guinea Pig Gang Boss waves his paws at you, fluffy head hanging in shame. From underneath his hat falls a list, and @snazzyorange quickly swipes it for evidence. \"Wait a minute,\" you say. \"It's no wonder you've been getting hurt! You've got way too many Dailies. You don't need health potionsyou just need help organizing.\"<br><br>\"Really?\" squeaks the Guinea Pig Gang Boss. \"We've robbed so many people because of this! Please take our eggs as an apology for our crooked ways.\"",
"questGuineaPigBoss": "Guinea Pig Gang",
"questGuineaPigDropGuineaPigEgg": "Guinea Pig (Egg)",
"questGuineaPigUnlockText": "Unlocks Guinea Pig Eggs for purchase in the Market",
"questPeacockText": "The Push-and-Pull Peacock",
"questPeacockNotes": "You trek through the Taskwoods, wondering which of the enticing new goals you should pick. As you go deeper into the forest, you realize that you're not alone in your indecision. \"I could learn a new language, or go to the gym...\" @Cecily Perez mutters. \"I could sleep more,\" muses @Lilith of Alfheim, \"or spend time with my friends...\" It looks like @PainterProphet, @Pfeffernusse, and @Draayder are equally paralyzed by the overwhelming options.<br><br>You realize that these ever-more-demanding feelings aren't really your own... you've stumbled straight into the trap of the pernicious Push-and-Pull Peacock! Before you can run, it leaps from the bushes. With each head pulling you in conflicting directions, you start to feel burnout overcoming you. You can't defeat both foes at once, so you only have one option -- concentrate on the nearest task to fight back!",
"questPeacockNotes": "You trek through the Taskwoods, wondering which of the enticing new goals you should pick. As you go deeper into the forest, you realize that you're not alone in your indecision. \"I could learn a new language, or go to the gym...\" @Cecily Perez mutters. \"I could sleep more,\" muses @Lilith of Alfheim, \"or spend time with my friends...\" It looks like @PainterProphet, @Pfeffernusse, and @Draayder are equally paralyzed by the overwhelming options.<br><br>You realize that these ever-more-demanding feelings aren't really your own... you've stumbled straight into the trap of the pernicious Push-and-Pull Peacock! Before you can run, it leaps from the bushes. With each head pulling you in conflicting directions, you start to feel burnout overcoming you. You can't defeat both foes at once, so you only have one optionconcentrate on the nearest task to fight back!",
"questPeacockCompletion": "The Push-and-Pull Peacock is caught off guard by your sudden conviction. Defeated by your single-minded drive, its heads merge back into one, revealing the most beautiful creature you've ever seen. \"Thank you,\" the peacock says. \"Ive spent so long pulling myself in different directions that I lost sight of what I truly wanted. Please accept these eggs as a token of my gratitude.\"",
"questPeacockBoss": "Push-and-Pull Peacock",
"questPeacockDropPeacockEgg": "Peacock (Egg)",
"questPeacockUnlockText": "Unlocks Peacock Eggs for purchase in the Market",
"questButterflyText": "Bye, Bye, Butterfry",
"questButterflyNotes": "Your gardener friend @Megan sends you an invitation: “These warm days are the perfect time to visit Habiticas butterfly garden in the Taskan countryside. Come see the butterflies migrate!” When you arrive, however, the garden is in shambles -- little more than scorched grass and dried-out weeds. Its been so hot that the Habiticans havent come out to water the flowers, and the dark-red Dailies have turned it into a dry, sun-baked, fire-hazard. There's only one butterfly there, and there's something odd about it...<br><br>“Oh no! This is the perfect hatching ground for the Flaming Butterfry,” cries @Leephon.<br><br>“If we dont catch it, itll destroy everything!” gasps @Eevachu.<br><br>Time to say bye, bye to Butterfry!",
"questButterflyNotes": "Your gardener friend @Megan sends you an invitation: “These warm days are the perfect time to visit Habiticas butterfly garden in the Taskan countryside. Come see the butterflies migrate!” When you arrive, however, the garden is in shambleslittle more than scorched grass and dried-out weeds. Its been so hot that the Habiticans havent come out to water the flowers, and the dark-red Dailies have turned it into a dry, sun-baked, fire-hazard. There's only one butterfly there, and there's something odd about it...<br><br>“Oh no! This is the perfect hatching ground for the Flaming Butterfry,” cries @Leephon.<br><br>“If we dont catch it, itll destroy everything!” gasps @Eevachu.<br><br>Time to say bye, bye to Butterfry!",
"questButterflyCompletion": "After a blazing battle, the Flaming Butterfry is captured. “Great job catching that would-be arsonist,” says @Megan with a sigh of relief. “Still, its hard to vilify even the vilest butterfly. Wed better free this Butterfry someplace safe…like the desert.”<br><br>One of the other gardeners, @Beffymaroo, comes up to you, singed but smiling. “Will you help raise these foundling chrysalises we found? Perhaps next year well have a greener garden for them.”",
"questButterflyBoss": "Flaming Butterfry",
"questButterflyDropButterflyEgg": "Caterpillar (Egg)",
@@ -712,7 +712,7 @@
"questSeaSerpentUnlockText": "Unlocks Sea Serpent Eggs for purchase in the Market",
"questKangarooText": "Kangaroo Catastrophe",
"questKangarooNotes": "Maybe you should have finished that last task… you know, the one you keep avoiding, even though it always comes back around? But @Mewrose and @LilithofAlfheim invited you and @stefalupagus to see a rare kangaroo troop hopping through the Sloensteadi Savannah; how could you say no?! As the troop comes into view, something hits you on the back of the head with a mighty <em>whack!</em><br><br>Shaking the stars from your vision, you pick up the responsible object--a dark red boomerang, with the very task you continually push back etched into its surface. A quick glance around confirms the rest of your party met a similar fate. One larger kangaroo looks at you with a smug grin, like shes daring you to face her and that dreaded task once and for all!",
"questKangarooNotes": "Maybe you should have finished that last task… you know, the one you keep avoiding, even though it always comes back around? But @Mewrose and @LilithofAlfheim invited you and @stefalupagus to see a rare kangaroo troop hopping through the Sloensteadi Savannah; how could you say no?! As the troop comes into view, something hits you on the back of the head with a mighty <em>whack!</em><br><br>Shaking the stars from your vision, you pick up the responsible objecta dark red boomerang, with the very task you continually push back etched into its surface. A quick glance around confirms the rest of your party met a similar fate. One larger kangaroo looks at you with a smug grin, like shes daring you to face her and that dreaded task once and for all!",
"questKangarooCompletion": "“NOW!” You signal your party to throw the boomerangs back at the kangaroo. The beast hops further away with each hit until she flees, leaving nothing more than a dark red cloud of dust, a few eggs, and some gold coins.<br><br>@Mewrose walks forward to where the kangaroo once stood. “Hey, where did the boomerangs go?”<br><br>“They probably dissolved into dust, making that dark red cloud, when we finished our respective tasks,” @stefalupagus speculates.<br><br>@LilithofAlfheim squints at the horizon. “Is that another kangaroo troop heading our way?”<br><br>You all break into a run back to Habit City. Better to face your difficult tasks than take another lump to the back of the head!",
"questKangarooBoss": "Catastrophic Kangaroo",
"questKangarooDropKangarooEgg": "Kangaroo (Egg)",
@@ -784,7 +784,7 @@
"questAmberText": "The Amber Alliance",
"questAmberNotes": "Youre sitting in the Tavern with @beffymaroo and @-Tyr- when @Vikte bursts through the door and excitedly tells you about the rumors of another type of Magic Hatching Potion hidden in the Taskwoods. Having completed your Dailies, the three of you immediately agree to help @Vikte on their search. After all, whats the harm in a little adventure?<br><br>After walking through the Taskwoods for hours, youre beginning to regret joining such a wild chase. Youre about to head home, when you hear a surprised yelp and turn to see a huge lizard with shiny amber scales coiled around a tree, clutching @Vikte in her claws. @beffymaroo reaches for her sword.<br><br>“Wait!” cries @-Tyr-. “Its the Trerezin! Shes not dangerous, just dangerously clingy!”",
"questAmberCompletion": "“Trerezin?” @-Tyr- says calmly. “Could you let @Vikte go? I dont think theyre enjoying being so high up.”<br><br>The Trerezins amber skin blushes crimson and she gently lowers @Vikte to the ground. “My apologies! Its been so long since Ive had any guests that Ive forgotten my manners!” She slithers forward to greet you properly before disappearing into her treehouse, and returning with an armful of Amber Hatching Potions as thank-you gifts!<br><br>“Magic Potions!” @Vikte gasps.<br><br>“Oh, these old things?” The Trerezin's tongue flickers as she thinks. “How about this? Ill give you this whole stack if you promise to visit me every so often...”<br><br>And so you leave the Taskwoods, excited to tell everyone about the new potions--and your new friend!",
"questAmberCompletion": "“Trerezin?” @-Tyr- says calmly. “Could you let @Vikte go? I dont think theyre enjoying being so high up.”<br><br>The Trerezins amber skin blushes crimson and she gently lowers @Vikte to the ground. “My apologies! Its been so long since Ive had any guests that Ive forgotten my manners!” She slithers forward to greet you properly before disappearing into her treehouse, and returning with an armful of Amber Hatching Potions as thank-you gifts!<br><br>“Magic Potions!” @Vikte gasps.<br><br>“Oh, these old things?” The Trerezin's tongue flickers as she thinks. “How about this? Ill give you this whole stack if you promise to visit me every so often...”<br><br>And so you leave the Taskwoods, excited to tell everyone about the new potionsand your new friend!",
"questAmberBoss": "Trerezin",
"questAmberDropAmberPotion": "Amber Hatching Potion",
"questAmberUnlockText": "Unlocks Amber Hatching Potions for purchase in the Market",
@@ -800,7 +800,7 @@
"questWaffleText": "Waffling with the Fool: Disaster Breakfast!",
"questWaffleNotes": "“April Fool!” storms a flustered Lady Glaciate. “You said your dessert-themed prank was over with and completely cleaned up!”<br><br>“Why, it was and is, my dear,” replies the Fool, puzzled. “And I am the most honest of Fools. What's wrong?”<br><br>“There's a giant sugary monster approaching Habit City!”<br><br>“Hmm,” muses the Fool. “I did raid a few lairs for the mystic reagents for my last event. Maybe I attracted some unwanted attention. Is it the Saccharine Serpent? The Torte-oise? Tiramisu Rex?”<br><br>“No! It's some sort of... Awful Waffle!”<br><br>“Huh. That's a new one! Perhaps it spawned from all the ambient shenanigan energy.” He turns to you and @beffymaroo with a lopsided smile. “I don't suppose you'd be available for some heroics?”",
"questWaffleCompletion": "Battered and buttered but triumphant, you savor sweet victory as the Awful Waffle collapses into a pool of sticky goo.<br><br>“Wow, you really creamed that monster,” says Lady Glaciate, impressed.<br><br>“A piece of cake!” beams the April Fool.<br><br>“Kind of a shame, though,” says @beffymaroo. “It looked good enough to eat.”<br><br>The Fool takes a set of potion bottles from somewhere in his cape, fills them with the syrupy leavings of the Waffle, and mixes in a pinch of sparkling dust. The liquid swirls with color--new Hatching Potions! He tosses them into your arms. “All that adventure has given me an appetite. Who wants to join me for breakfast?”",
"questWaffleCompletion": "Battered and buttered but triumphant, you savor sweet victory as the Awful Waffle collapses into a pool of sticky goo.<br><br>“Wow, you really creamed that monster,” says Lady Glaciate, impressed.<br><br>“A piece of cake!” beams the April Fool.<br><br>“Kind of a shame, though,” says @beffymaroo. “It looked good enough to eat.”<br><br>The Fool takes a set of potion bottles from somewhere in his cape, fills them with the syrupy leavings of the Waffle, and mixes in a pinch of sparkling dust. The liquid swirls with colornew Hatching Potions! He tosses them into your arms. “All that adventure has given me an appetite. Who wants to join me for breakfast?”",
"questWaffleBoss": "Awful Waffle",
"questWaffleRageTitle": "Maple Mire",
"questWaffleRageDescription": "Maple Mire: This bar fills when you don't complete your Dailies. When it is full, the Awful Waffle will subtract from the pending damage that party members have built up!",
@@ -819,7 +819,7 @@
"questFluoriteUnlockText": "Unlocks Fluorite Hatching Potions for purchase in the Market",
"questWindupText": "A Whirl with a Wind-Up Warrior",
"questWindupNotes": "Habit City is seldom quiet, but you werent prepared for the cacophony of creaks, squeaks and screams escaping Good Timekeeping, Habiticas finest clockwork emporium. You sigh--you just wanted your watch fixed. The proprietor, known only as “Great and Powerful”, tumbles out the door, pursued by a clanking copper colossus!<br><br>“Ki-! Ki-! Ki!” it clangs, arms smashing up and down. Its gears grind and screech in protest.<br><br>“My robot Clankton has gone mad! Its trying to kill me!” the supposedly Powerful one shrieks.<br><br>Even with a broken watch, you can tell when its time to fight. You leap forward to defend the panicking watchmaker. @Vikte and @a_diamond also step up to help!<br><br>“Ki-! Ki-! Ki-!” Clankton chants with each blow. “Mew!”<br><br>Wait, was that mechanical mewling amidst the murderous monotone?",
"questWindupNotes": "Habit City is seldom quiet, but you werent prepared for the cacophony of creaks, squeaks and screams escaping Good Timekeeping, Habiticas finest clockwork emporium. You sighyou just wanted your watch fixed. The proprietor, known only as “Great and Powerful”, tumbles out the door, pursued by a clanking copper colossus!<br><br>“Ki-! Ki-! Ki!” it clangs, arms smashing up and down. Its gears grind and screech in protest.<br><br>“My robot Clankton has gone mad! Its trying to kill me!” the supposedly Powerful one shrieks.<br><br>Even with a broken watch, you can tell when its time to fight. You leap forward to defend the panicking watchmaker. @Vikte and @a_diamond also step up to help!<br><br>“Ki-! Ki-! Ki-!” Clankton chants with each blow. “Mew!”<br><br>Wait, was that mechanical mewling amidst the murderous monotone?",
"questWindupCompletion": "As you dodge the attacks, you notice something odd: a stripy brass tail sticking out of the robots chassis. You plunge a hand amid the grinding gears and pull out… a trembling wind-up tiger cub. It snuggles against your shirt.<br><br>The clockwork robot immediately stops flailing and smiles, its cogs clicking back into place. “Ki-Ki-Kitty! Kitty got in me!”<br><br>“Great!” the Powerful says, blushing. “Ive been working hard on these wind-up pet potions. I guess I lost track of my new creations. Ive been missing my Tidy the workshop daily a lot lately…”<br><br>You follow the tinkerer and Clankton inside. Parts, tools and potions cover every surface. “Powerful” takes your watch, but hands you a few potions.<br><br>“Take these. Clearly theyll be safer with you!”",
"questWindupBoss": "Clankton",
"questWindupDropWindupPotion": "Wind-Up Hatching Potion",
+6 -1
View File
@@ -180,6 +180,9 @@
"mysterySet202509": "Windswept Wanderer Set",
"mysterySet202510": "Gliding Ghoul Set",
"mysterySet202511": "Frost Warrior Set",
"mysterySet202512": "Cookie Champion Set",
"mysterySet202601": "Winter's Aegis Set",
"mysterySet202602": "Sakura Fox Set",
"mysterySet301404": "Steampunk Standard Set",
"mysterySet301405": "Steampunk Accessories Set",
"mysterySet301703": "Peacock Steampunk Set",
@@ -269,5 +272,7 @@
"unlockNGemsGift": "They'll unlock <strong><%= count %> Gems</strong> per month in the Market",
"earn2GemsGift": "They'll earn <strong>+2 Gems</strong> every month they're subscribed",
"maxGemCapGift": "They'll have the max <strong>Gem Cap</strong>",
"subscribeAgainContinueHourglasses": "Subscribe again to continue receiving Mystic Hourglasses"
"subscribeAgainContinueHourglasses": "Subscribe again to continue receiving Mystic Hourglasses",
"subscriptionBillingFYI": "Subscriptions automatically renew unless you cancel at least 24 hours before the end of the current period. You can manage your subscription from the Subscription tab in settings. Your account will be charged within 24 hours of your renewal date, at the same price you initially paid.",
"subscriptionBillingFYIShort": "Subscriptions automatically renew unless you cancel at least 24 hours before the end of the current period. Your account will be charged within 24 hours of your renewal date, at the same price you initially paid."
}
+7 -2
View File
@@ -89,7 +89,7 @@
"fortify": "Fortify",
"fortifyComplete": "Fortify complete!",
"deleteTaskType": "Delete this <%= type %>",
"sureDeleteType": "Are you sure you want to delete this <%= type %>?",
"sureDeleteType": "Are you sure you want to delete this task?",
"streakCoins": "Streak Bonus!",
"taskToTop": "To top",
"taskToBottom": "To bottom",
@@ -138,5 +138,10 @@
"pressEnterToAddTag": "Press Enter to add tag: '<%= tagName %>'",
"taskSummary": "<%= type %> Summary",
"scoreUp": "Score up",
"scoreDown": "Score down"
"scoreDown": "Score down",
"deleteType": "Delete <%= type %>",
"deleteTask": "Delete Task",
"deleteXTasks": "Delete <%= count %> Tasks",
"brokenChallengeTaskCount": "This is one of <%= count %> tasks that are part of a Challenge that no longer exists.",
"confirmDeleteTasks": "Would you like to delete the tasks?"
}
+10 -1
View File
@@ -921,5 +921,14 @@
"backgroundInsideForestWitchsCottageNotes": "Weave spells inside a Forest Witch's Cottage.",
"backgrounds112025": "SET 138: Released November 2025",
"backgroundCastleKeepWithBannersText": "Castle Hall with Banners",
"backgroundCastleKeepWithBannersNotes": "Sing tales of heroic deeds in a Castle Hall with Banners."
"backgroundCastleKeepWithBannersNotes": "Sing tales of heroic deeds in a Castle Hall with Banners.",
"backgroundNighttimeStreetWithShopsText": "Night-time Street with Shops",
"backgroundElegantPalaceNotes": "Admire the colourful halls of an Elegant Palace.",
"backgroundNighttimeStreetWithShopsNotes": "Enjoy the warm glow of a Night-time Street with Shops.",
"backgrounds122025": "SET 139: Released December 2025",
"backgrounds012026": "SET 140: Released January 2026",
"backgroundWinterDesertWithSaguarosText": "Winter Desert with Saguaros",
"backgroundWinterDesertWithSaguarosNotes": "Breathe the crisp air of a Winter Desert with Saguaros.",
"backgrounds022026": "SET 141: Released February 2026",
"backgroundElegantPalaceText": "Elegant Palace"
}
@@ -2,7 +2,6 @@
"challenge": "Challenge",
"challengeDetails": "Challenges are community events in which players compete and earn prizes by completing a group of related tasks.",
"brokenChaLink": "Broken Challenge Link",
"brokenTask": "Broken Challenge Link: this task was part of a challenge, but has been removed from it. What would you like to do?",
"keepIt": "Keep It",
"removeIt": "Remove It",
"brokenChallenge": "Broken Challenge Link: this task was part of a challenge, but the challenge (or group) has been deleted. What to do with the orphan tasks?",
+5 -5
View File
@@ -83,7 +83,7 @@
"allocatePerPop": "Add a Point to Perception",
"allocateInt": "Points allocated to Intelligence:",
"allocateIntPop": "Add a Point to Intelligence",
"noMoreAllocate": "Now that you've hit level 100, you won't gain any more Stat Points. You can continue leveling up, or start a new adventure at level 1 by using the <a href='/shops/market'>Orb of Rebirth</a>!",
"noMoreAllocate": "Now that you've hit level 100, you won't gain any more Stat Points. You can continue levelling up, or start a new adventure at level 1 by using the <a href='/shops/market'>Orb of Rebirth</a>.",
"stats": "Stats",
"strength": "Strength",
"strText": "Strength increases the chance of random \"critical hits\" and the Gold, Experience, and drop chance boost from them. It also helps deal damage to boss monsters.",
@@ -116,10 +116,10 @@
"autoAllocationPop": "Places Points into Stats according to your preferences, when you level up.",
"evenAllocation": "Distribute Stat Points evenly",
"evenAllocationPop": "Assigns the same number of Points to each Stat.",
"classAllocation": "Distribute Points based on Class",
"classAllocationPop": "Assigns more Points to the Stats important to your Class.",
"taskAllocation": "Distribute Points based on task activity",
"taskAllocationPop": "Assigns Points based on the Strength, Intelligence, Constitution, and Perception categories associated with the tasks you complete.",
"classAllocation": "Distribute based on class",
"classAllocationPop": "Assigns more points to the attributes important to your class",
"taskAllocation": "Distribute based on task activity",
"taskAllocationPop": "Assigns points based on the Strength, Intelligence, Constitution, and Perception categories associated with the tasks you complete",
"distributePoints": "Distribute Unallocated Points",
"distributePointsPop": "Assigns all unallocated Stat Points according to the selected allocation scheme.",
"warriorText": "Warriors score more and better \"critical hits\", which randomly give bonus Gold, Experience, and drop chance for scoring a task. They also deal heavy damage to boss monsters. Play a Warrior if you find motivation from unpredictable jackpot-style rewards, or want to dish out the hurt in boss Quests!",
+2 -2
View File
@@ -3,8 +3,8 @@
"dontDespair": "Don't despair!",
"deathPenaltyDetails": "You lost a Level, your Gold, and a piece of Equipment, but you can get them all back with hard work! Good luck—you'll do great.",
"refillHealthTryAgain": "Refill Health & Try Again",
"dyingOftenTips": "Is this happening often? <a href='http://habitica.fandom.com/wiki/Death_Mechanics#Strategies_for_Staying_Alive' target='_blank'>Here are some tips!</a>",
"losingHealthWarning": "CarefulYou're Losing Health!",
"dyingOftenTips": "Is this happening often? <a href='/static/faq#prevent-damage' target='_blank'>Here are some tips!</a>",
"losingHealthWarning": "Careful - You're Losing Health!",
"losingHealthWarning2": "Don't let your Health drop to zero! If you do, you'll lose a level, your Gold, and a piece of equipment.",
"toRegainHealth": "To regain Health:",
"lowHealthTips1": "Level up to fully heal!",
+2 -2
View File
@@ -1,7 +1,7 @@
{
"frequentlyAskedQuestions": "Frequently Asked Questions",
"iosFaqStillNeedHelp": "If you have a question that isn't on this list or on the [Wiki FAQ](http://habitica.fandom.com/wiki/FAQ), come ask in the Tavern chat under Menu > Tavern! We're happy to help.",
"androidFaqStillNeedHelp": "If you have a question that isn't on this list or on the [Wiki FAQ](http://habitica.fandom.com/wiki/FAQ)! We're happy to help.",
"androidFaqStillNeedHelp": "If you have a question that isn't on this list or on the [Wiki FAQ](https://habitica.fandom.com/wiki/FAQ), use the Ask a Question form! We're happy to help.",
"webFaqStillNeedHelp": "If you have a question that isn't on this list or on the [Wiki FAQ](http://habitica.fandom.com/wiki/FAQ), come ask in the [Habitica Help guild](https://habitica.com/groups/guild/5481ccf3-5d2d-48a9-a871-70a7380cee5a)! We're happy to help.",
"commonQuestions": "Common Questions",
"faqQuestion25": "What are the different task types?",
@@ -22,7 +22,7 @@
"webFaqAnswer28": "Yes! The “Pause Damage” button can be found in Settings. It will prevent you from losing HP for missed Dailies. This is helpful if you are on holiday, need a rest, or for any other reason you might need a break. If you are participating in a Quest, your own pending progress will be paused, but you will still take damage from your Party members missed Dailies.\n\nTo pause specific Dailies, you can edit the scheduling to make it due every 0 days until youre ready to restart it.",
"webFaqAnswer29": "You can recover 15 HP by purchasing a Health Potion from your Rewards column for 25 Gold. Additionally, you will always recover full HP when you level up!",
"faqQuestion30": "What happens when I run out of HP?",
"webFaqAnswer30": "If your HP reaches zero, youll lose one level, all of your Gold, and a piece of Equipment that can be repurchased.",
"webFaqAnswer30": "If your HP reaches zero, you'll lose one level, that level's stat point, all of your Gold, and a piece of equipment that can be repurchased. You can rebuild by completing tasks and levelling up again.",
"faqQuestion31": "Why did I lose HP when interacting with a non-negative task?",
"webFaqAnswer31": "If you complete a task and lose HP when you shouldnt have, you encountered a delay while the server was syncing changes made on other platforms. For example, if you use Gold, Mana, or lose HP on the mobile app and then complete a task on the website, the server is simply confirming everything is in sync.",
"faqQuestion32": "How can I choose a class?",
+4 -1
View File
@@ -183,5 +183,8 @@
"marketing3Lead1Title": "Android & iOS apps",
"marketing4Lead3Button": "Get Started Today",
"missingClientHeader": "Missing x-client headers.",
"emailBlockedRegistration": "This E-Mail is blocked from registration. If you think this is a mistake, please contact us at admin@habitica.com."
"emailBlockedRegistration": "This E-Mail is blocked from registration. If you think this is a mistake, please contact us at admin@habitica.com.",
"minPasswordLengthLogin": "Your password is at least 8 characters long.",
"enterValidEmail": "Please enter a valid email address.",
"whatToCallYou": "What should we call you?"
}
+50 -1
View File
@@ -2507,5 +2507,54 @@
"headSpecialFall2022MageNotes": "Entrance and lure others close with this magical maiden mask. Increases Perception by <%= per %>. Limited Edition 2022 Autumn Gear.",
"headSpecialFall2022HealerNotes": "Beauty is in there. Somewhere! Increases Intelligence by <%= int %>. Limited Edition 2022 Autumn Gear.",
"shieldSpecialFall2022HealerNotes": "Eye Two, look upon this costume and tremble. Increases Constitution by <%= con %>. Limited Edition 2022 Autumn Gear.",
"headSpecialSummer2024HealerNotes": "This spiral shell helps remind you to stop spiralling out of control. Increases Intelligence by <%= int %>. Limited Edition Summer 2024 Gear."
"headSpecialSummer2024HealerNotes": "This spiral shell helps remind you to stop spiralling out of control. Increases Intelligence by <%= int %>. Limited Edition Summer 2024 Gear.",
"weaponMystery202408Text": "Arcane Aegis",
"weaponSpecialSummer2024RogueText": "Nudibranch Trident",
"weaponSpecialSummer2024WarriorText": "Whale Shark Tooth Slicer",
"weaponSpecialSummer2024MageText": "Sea Anemone Wand",
"weaponSpecialSummer2024HealerText": "Sea Snail Staff",
"weaponMystery202104Text": "Thorny Thistle Staff",
"weaponSpecialFall2024WarriorText": "Sword of Flame",
"weaponSpecialFall2024RogueText": "Ribbon Wand",
"weaponSpecialFall2024HealerText": "Space Scythe",
"weaponSpecialFall2024MageText": "Staff of the Underworld",
"weaponSpecialSpring2024MageText": "Hibiscus Staff",
"weaponSpecialSpring2024WarriorText": "Fluorite Spear",
"weaponSpecialSpring2024HealerText": "Bluebird Feather Wand",
"weaponMystery202404Text": "Mycelial Magus Staff",
"weaponSpecialFall2025WarriorText": "Sasquatch Axe",
"weaponSpecialFall2025RogueText": "Skeleton Blade",
"weaponSpecialFall2025HealerText": "Kobold Axe",
"weaponSpecialFall2025MageText": "Masked Ghost Axe",
"weaponMystery202211Text": "Electromancer Staff",
"weaponMystery202404Notes": "This staff will bestow upon you an ancient wisdom as ageless as the rocks and trees. Confers no benefit. April 2024 Subscriber Item.",
"weaponSpecialWinter2025RogueText": "Snowflake Burst",
"weaponSpecialWinter2025HealerText": "Star Wand",
"weaponSpecialWinter2025MageText": "Northern Lights Display",
"weaponMystery202408Notes": "A magic bubble shield that protects you from enemy spells or helps you float in the air or water. Confers no benefit. August 2024 Subscriber Item.",
"weaponMystery202403Text": "Lucky Emerald Sword",
"weaponMystery202403Notes": "Carrying the biggest sword around is surely a way to create your own luck! Confers no benefit. March 2024 Subscriber Item.",
"weaponSpecialSpring2025WarriorText": "Sunshine Scimitar",
"weaponSpecialSpring2025RogueText": "Crystal Point Flail",
"weaponSpecialSpring2025HealerText": "Plumeria Crook",
"weaponSpecialSpring2025MageText": "Mantis Staff",
"weaponMystery202211Notes": "Harness the awesome power of a lightning storm with this staff. Confers no benefit. November 2022 Subscriber Item.",
"weaponMystery202209Text": "Magic Manual",
"weaponMystery202209Notes": "This book will guide you through your journey into magic-making. Confers no benefit. September 2022 Subscriber Item.",
"weaponSpecialSummer2025WarriorText": "Scallop Lance",
"weaponSpecialSummer2025RogueText": "Squid Tentacle",
"weaponSpecialSummer2025HealerText": "Sea Angel Wing Paddle",
"weaponSpecialSummer2025MageText": "Branch Coral",
"weaponMystery202508Text": "Brilliant Crimson Blade",
"weaponMystery202306Text": "Rainbow Umbrella",
"weaponMystery202311Text": "All-Seeing Staff",
"weaponMystery202311Notes": "See beyond the bounds of space and time! Confers no benefit. November 2023 Subscriber Item.",
"weaponMystery202201Notes": "Unleash a cloud of gold and silver glitter when the clock strikes midnight. Happy New Year! Now who's cleaning this up? Confers no benefit. January 2022 Subscriber Item.",
"weaponMystery202212Notes": "The glowing snowflake in this wand holds the power to warm hearts on even the coldest winter night! Confers no benefit. December 2022 Subscriber Item.",
"weaponMystery202201Text": "Midnight Confetti Cannon",
"weaponMystery202111Text": "Chronomancer's Staff",
"weaponMystery202111Notes": "Shape the flow of time with this mysterious and powerful staff. Confers no benefit. November 2021 Subscriber Item.",
"weaponMystery202212Text": "Glacial Wand",
"weaponSpecialWinter2024MageNotes": "Thanks to a generous, magical narwhal that sensed your great abilities, you have been gifted a tusk that lets you sense changes happening around you. Increases Intelligence by <%= int %>. Limited Edition Winter 2023-2024 Gear.",
"weaponSpecialSpring2024RogueNotes": "Challenges that are as hard as ice can be sliced into smaller pieces. Increases Strength by <%= str %>. Limited Edition Spring 2024 Gear."
}
+3 -1
View File
@@ -426,5 +426,7 @@
"groupParentChildren": "Using with my household",
"groupFriends": "Using with friends",
"groupManager": "Using for work",
"groupTeacher": "Using for education"
"groupTeacher": "Using for education",
"groupPlanBillingFYI": "Group Plan subscriptions will automatically renew unless you cancel at least 24 hours before the end of your current period. You can cancel from the Group Billing tab of your Group Plan. You will be charged within 24 hours before your subscription renews, based on the number of members in your Group Plan at that time. If you add members between payment periods, you will see an additional pro-rated charge for their benefits in your next billing cycle.",
"groupPlanBillingFYIShort": "Group Plan subscriptions will automatically renew unless you cancel at least 24 hours before the end of your current period. You can cancel from the Group Billing tab of your Group Plan. You will be charged within 24 hours before your subscription renews, based on the number of members in your Group Plan at that time. If you add members between payment periods, you will see an additional pro-rated charge for their benefits in your next billing cycle."
}
-1
View File
@@ -88,7 +88,6 @@
"success": "Success!",
"classGear": "Class Gear",
"classGearText": "Congratulations on choosing a class! I've added your new basic weapon to your inventory. Take a look below to equip it!",
"autoAllocate": "Auto Allocate",
"spells": "Skills",
"skillsTitle": "<%= classStr %> Skills",
"toDo": "To Do",
+15 -1
View File
@@ -259,5 +259,19 @@
"changeEmailDisclaimer": "This is the email address that you use to log in to Habitica, as well as receive notifications.",
"transaction_subscription_bonus": "<b>Subscription</b> bonus",
"privacySettingsOverview": "Habitica uses cookies to analyse performance, handle support requests, and provide you with the best possible gamified experience. To do that, we need to request the following permissions. You can change these at any time from your account settings.",
"privacyOverview": "In today's world, it feels like every company is looking to profit from your data. This can make it difficult to find the right app to improve your habits. Habitica uses cookies that store data only to analyse performance, handle support requests, and provide you with the best possible gamified experience. You can change this at any time from your account settings."
"privacyOverview": "In today's world, it feels like every company is looking to profit from your data. This can make it difficult to find the right app to improve your habits. Habitica uses cookies that store data only to analyse performance, handle support requests, and provide you with the best possible gamified experience. You can change this at any time from your account settings.",
"acceptAllCookies": "Accept All Cookies",
"denyNonEssentialCookies": "Deny Non-Essential Cookies",
"managePrivacyPreferences": "Manage Your Privacy Preferences",
"yourPrivacyPreferences": "Your Privacy Preferences",
"strictlyNecessary": "Strictly Necessary",
"alwaysActive": "Always Active",
"requiredToRun": "These are required by our website and apps to run at their best.",
"performanceAnalytics": "Performance and Analytics",
"usedForSupport": "These are used to improve the user experience, performance, and services of our website and apps. This data is used by our support team when handling requests and bug reports.",
"savePreferences": "Save Preferences",
"habiticaPrivacyPolicy": "Habitica's Privacy Policy",
"learnMorePrivacy": "To learn more, review our <a href='/static/privacy' target='_blank'>Privacy Policy</a>.",
"gpcWarning": "<a href='<%= url %>' target='_blank'>GPC</a> is enabled. Turning on tracking below will override this setting and send data to our analytics partners.",
"gpcPlusAnalytics": "<a href='<%= url %>' target='_blank'>GPC</a> is enabled. You have opted in to tracking and to sending data to our analytics partners."
}
+24 -1
View File
@@ -234,5 +234,28 @@
"mysterySet202310": "Ghostlight Wraith Set",
"monthlyMysticHourglass": "Monthly Mystic Hourglass",
"mysterySet202407": "Amiable Axolotl Set",
"mysterySet202408": "Arcane Aegis Set"
"mysterySet202408": "Arcane Aegis Set",
"mysterySet202409": "Heliotrope Magus Set",
"mysterySet202410": "Candy Corn Fox Set",
"mysterySet202412": "Candy Cane Cottontail Set",
"mysterySet202503": "Jade Juggernaut Set",
"mysterySet202501": "Frostbinder Set",
"mysterySet202502": "Heartfelt Harlequin Set",
"mysterySet202411": "Bristled Brawler Set",
"mysterySet202509": "Windswept Wanderer Set",
"mysterySet202504": "Elusive Yeti Set",
"mysterySet202506": "Solar Shine Set",
"mysterySet202505": "Soaring Swallowtail Set",
"mysterySet202510": "Gliding Ghoul Set",
"mysterySet202511": "Frost Warrior Set",
"subscribeAgainContinueHourglasses": "Subscribe again to continue receiving Mystic Hourglasses",
"subscribeTo": "Subscribe To",
"popular": "Popular",
"monthlyGemsLabel": "Monthly Gems",
"recurringMonthly": "Recurring every month",
"selectPayment": "Select Payment",
"giftSubscriptionLeadText": "Choose the subscription you'd like to gift below! This purchase will not automatically renew.",
"oneMonthGift": "For 1 month",
"subscribe": "Subscribe",
"resubscribeToPickUp": "Resubscribe to pick up where you left off!"
}
-1
View File
@@ -123,7 +123,6 @@
"errorTemporaryItem": "This item is temporary and cannot be pinned.",
"addNotes": "Add notes",
"addATitle": "Add a title",
"sureDeleteType": "Are you sure you want to delete this <%= type %>?",
"deleteTaskType": "Delete this <%= type %>",
"pressEnterToAddTag": "Press Enter to add tag: '<%= tagName %>'",
"enterTag": "Enter a tag",
+3 -3
View File
@@ -1,8 +1,8 @@
{
"achievement": "Logro",
"onwards": "¡Adelante!",
"levelup": "¡Al cumplir tus objetivos en la vida real, has subido de nivel y has recuperado toda tu salud!",
"reachedLevel": "Has alcanzado el nivel <%= level %>",
"levelup": "Al cumplir tus objetivos en la vida real, ¡has subido de nivel y has recuperado toda tu salud!",
"reachedLevel": "Has Alcanzado el Nivel <%= level %>",
"achievementLostMasterclasser": "Completador de Aventuras: Serie Arquimaestra",
"achievementLostMasterclasserText": "¡Ha completado las dieciséis misiones en la Serie Arquimaestra y resuelto el misterio de la Arquimaestra Perdida!",
"achievementLostMasterclasserModalText": "¡Completaste las dieciséis misiones en la Serie Maestro de Clases y resolviste el misterio de la Arquimaestra Perdida!",
@@ -70,7 +70,7 @@
"foundNewItemsExplanation": "Completar tareas te da la oportunidad de encontrar objetos, como Huevos, Pociones de Eclosión y Alimento para Mascotas.",
"foundNewItems": "¡Encontraste nuevos artículos!",
"onboardingCompleteDescSmall": "¡Si quieres aún más, mira tus Logros y empieza a coleccionarlos!",
"yourProgress": "Tu progreso",
"yourProgress": "Tu Progreso",
"onboardingComplete": "¡Has completado tus tareas de incorporación!",
"achievementRosyOutlookModalText": "¡Has domado todas las monturas de algodón de azúcar rosa!",
"achievementRosyOutlookText": "Ha domado todas las monturas de algodón de azúcar rosa.",
+10 -1
View File
@@ -921,5 +921,14 @@
"backgroundInsideForestWitchsCottageNotes": "Teje hechizos en el interior de la Cabaña de una Bruja en el Bosque.",
"backgrounds112025": "Conjunto 138: Publicado en Noviembre 2025",
"backgroundCastleKeepWithBannersText": "Salón del Castillo con Banderas",
"backgroundCastleKeepWithBannersNotes": "Canta las gloriosas hazañas de los grandes héroes en el Salón del Castillo con Banderas."
"backgroundCastleKeepWithBannersNotes": "Canta las gloriosas hazañas de los grandes héroes en el Salón del Castillo con Banderas.",
"backgrounds122025": "CONJUNTO 139: Publicado en Diciembre 2025",
"backgroundNighttimeStreetWithShopsText": "Bulevar Nocturno",
"backgroundNighttimeStreetWithShopsNotes": "Deléitate con el cálido resplandor del Bulevar Nocturno.",
"backgrounds012026": "CONJUNTO 140: Publicado en Enero 2026",
"backgroundWinterDesertWithSaguarosText": "Cactus en Desierto Invernal",
"backgroundWinterDesertWithSaguarosNotes": "Exalta tus sentidos entre los Cactus en Desierto Invernal.",
"backgrounds022026": "CONJUNTO 141: Publicado en Febrero 2026",
"backgroundElegantPalaceText": "Palacio Elegante",
"backgroundElegantPalaceNotes": "Quédate obnubilado por las coloridas salas del Palacio Elegante."
}
-1
View File
@@ -2,7 +2,6 @@
"challenge": "Desafío",
"challengeDetails": "Los Desafíos son eventos de la comunidad en los que jugadores compiten y ganan premios por completar un grupo de tareas relacionadas.",
"brokenChaLink": "El enlace al desafío no funciona",
"brokenTask": "Enlace al desafío interrumpido: esta tarea formaba parte de un desafío, pero se ha eliminado de él. ¿Qué deseas hacer?",
"keepIt": "Conservarla",
"removeIt": "Eliminarla",
"brokenChallenge": "Enlace al desafío interrumpido: esta tarea formaba parte de un desafío, pero el desafío (o el grupo) se ha eliminado. ¿Qué hacemos con las tareas del desafío?",
+1 -1
View File
@@ -3,7 +3,7 @@
"dontDespair": "¡No te desesperes!",
"deathPenaltyDetails": "Has perdido un Nivel, tu Oro y una pieza de equipamiento, ¡pero puedes recuperarlos con trabajo duro! Buena suerte--lo harás genial.",
"refillHealthTryAgain": "Rellenar salud y volver a intentarlo",
"dyingOftenTips": "¿Pasa esto a menudo? <a href='https://habitica.fandom.com/wiki/Death_Mechanics#Strategies_for_Staying_Alive' target='_blank'>¡Aqui tienes ayuda!</a>",
"dyingOftenTips": "¿Pasa esto a menudo? <a href='/static/faq#prevent-damage' target='_blank'>¡Aqui tienes ayuda!</a>",
"losingHealthWarning": "¡Cuidado, estás perdiendo salud rápidamente!",
"losingHealthWarning2": "¡No dejes que tu salud baje a cero! Si lo haces, perderás un nivel, tu Oro y un artículo.",
"toRegainHealth": "Para recuperar tu Salud:",
+1 -1
View File
@@ -132,7 +132,7 @@
"invalidReqParams": "Parámetros de solicitud no válidos.",
"memberIdRequired": "\"member\" debe ser una UUID válida.",
"heroIdRequired": "\"herold\" debe ser una UUID válida.",
"cannotFulfillReq": "Por favor introduce una dirección de correo electrónico válida. Manda un email a admin@habitica.com si el error persiste.",
"cannotFulfillReq": "Está dirección de correo electrónico ya está en uso. Puedes conectarte por medio de ella o usar otra dirección de correo para registrarte. Si necesitas ayuda, por favor contacta con admin@habitica.com.",
"modelNotFound": "Este modelo no existe.",
"signUpWithSocial": "Continuar con <%= social %>",
"loginWithSocial": "Conectarse con <%= social %>",
+68 -12
View File
@@ -246,7 +246,7 @@
"weaponSpecialWinter2018WarriorText": "Martillo de Proa Festivo",
"weaponSpecialWinter2018WarriorNotes": "¡La centelleante apariencia de esta brillante arma deslumbrará a tus enemigos mientras la balanceas! Aumenta la Fuerza en <%= str %>. Equipamiento de edición limitada de invierno 2017-2018.",
"weaponSpecialWinter2018MageText": "Confeti Festivo",
"weaponSpecialWinter2018MageNotes": "¡La magia--y el brillo--está en el aire! Aumenta la Inteligencia en <%= int %> y la Percepción en <%= per %>. Equipamiento de edición limitada de invierno 2017-2018.",
"weaponSpecialWinter2018MageNotes": "¡La magiay el brilloestá en el aire! Aumenta la Inteligencia en <%= int %> y la Percepción en <%= per %>. Equipamiento de edición limitada de invierno 2017-2018.",
"weaponSpecialWinter2018HealerText": "Varita de Muérdago",
"weaponSpecialWinter2018HealerNotes": "¡Esta pelota de muérdago seguramente encantará y deleitará a los transeúntes! Aumenta la Inteligencia en <%= int %>. Equipamiento de edición limitada de invierno 2017-2018.",
"weaponSpecialSpring2018RogueText": "Totora Boyante",
@@ -326,7 +326,7 @@
"weaponArmoireBasicLongbowText": "Arco longo básico",
"weaponArmoireBasicLongbowNotes": "Un útil arco de segunda mano. Incrementa tu Fuerza un <%= str %>. Armario encantado: Juego Básico de Arquero (Artículo 1 de 3).",
"weaponArmoireHabiticanDiplomaText": "Diploma de Habiticano",
"weaponArmoireHabiticanDiplomaNotes": "Un certificado de un logro significativo -- ¡Bien hecho! Aumenta la inteligencia en <%= int %>. Armario encantado: Conjunto del graduado (Artículo 1 de 3).",
"weaponArmoireHabiticanDiplomaNotes": "Un certificado de un logro significativo ¡Bien hecho! Aumenta la Inteligencia en <%= int %>. Armario encantado: Conjunto de Graduado (Artículo 1 de 3).",
"weaponArmoireSandySpadeText": "Pala de Arena",
"weaponArmoireSandySpadeNotes": "Una herramienta tanto para cavar como para tirar arena a los ojos de monstruos enemigos. Aumenta la fuerza en <%= str %>. Armario encantado: Set playero(Objeto 1 de 3).",
"weaponArmoireCannonText": "Cañón",
@@ -806,7 +806,7 @@
"armorArmoireCoverallsOfBookbindingText": "Cubretodo de Encuadernación",
"armorArmoireCoverallsOfBookbindingNotes": "Todo lo que necesitas en un conjunto de cubretodo, incluyendo bolsillos para todo. Un par de gafas de bucear, dinero suelto, un anillo de oro... Aumenta la Constitución en <%= con %> y la Percepción en <%= per %>. Armario Encantado: Conjunto de Encuadernador (item 2 de 4).",
"armorArmoireRobeOfSpadesText": "Ropaje de Picas",
"armorArmoireRobeOfSpadesNotes": "Estos lujosos ropajes esconden bolsillos ocultos para tesoros o armas, ¡tú eliges! Aumenta la Fuerza en <%= str %>. Armario encantado: Conjunto As de Picas (Artículo 2 de 3).",
"armorArmoireRobeOfSpadesNotes": "Estos lujosos ropajes esconden bolsillos ocultos para tesoros o armas ¡tú eliges! Aumenta la Fuerza en <%= str %>. Armario encantado: Conjunto As de Picas (Artículo 2 de 3).",
"armorArmoireSoftBlueSuitText": "Ropa Mullidita Azul",
"armorArmoireSoftBlueSuitNotes": "El azul es un color que relaja. Relaja tanto que algunos incluso usan esta ropa tan mullidita para irse a dormir... zZz. Aumenta la Inteligencia en <%= int %> y la Percepción en <%= per %>. Armario encantado: Conjunto ropa de casa azul (Artículo 2 de 3).",
"armorArmoireSoftGreenSuitText": "Ropa Mullidita Verde",
@@ -876,7 +876,7 @@
"headSpecialLunarWarriorHelmText": "Yelmo de Guerrero Lunar",
"headSpecialLunarWarriorHelmNotes": "¡El poder de la luna te fortalecerá en la batalla! Aumenta la Fuerza y la Inteligencia en <%= attrs %> cada uno.",
"headSpecialMammothRiderHelmText": "Casco de Jinete de Mamut",
"headSpecialMammothRiderHelmNotes": "No deje que su espnjosidad le engañe--este sombrero le otorgará poderes de percepción penetrante. Aumenta la Percepción en <%= per %>.",
"headSpecialMammothRiderHelmNotes": "No deje que su espnjosidad le engañeeste sombrero le otorgará poderes de percepción penetrante. Aumenta la Percepción en <%= per %>.",
"headSpecialPageHelmText": "Yelmo de Paje",
"headSpecialPageHelmNotes": "Cota de malla: para los estilosos Y los prácticos. Aumenta la Percepción en <%= per %>.",
"headSpecialRoguishRainbowMessengerHoodText": "Capucha del Mensajero Picaresco Arcoiris",
@@ -960,7 +960,7 @@
"headSpecialFall2015RogueText": "Alas de Bati-Batalla",
"headSpecialFall2015RogueNotes": "¡Utiliza la eco localización para ubicar a tus enemigos con este poderoso yelmo! Aumenta la Percepción en <%= per %>. Equipamiento de edición limitada de Otoño 2015.",
"headSpecialFall2015WarriorText": "Sombrero de Espantapájaros",
"headSpecialFall2015WarriorNotes": "Todos querrían este sombrero--si tan sólo tuvieran un cerebro. Aumenta la Fuerza en <%= str %>. Equipamiento de edición limitada de Otoño 2015.",
"headSpecialFall2015WarriorNotes": "Todos querrían este sombrerosi tan sólo tuvieran un cerebro. Aumenta la Fuerza en <%= str %>. Equipamiento de edición limitada de Otoño 2015.",
"headSpecialFall2015MageText": "Sombrero Cosido",
"headSpecialFall2015MageNotes": "Cada puntada en este sombrero aumenta su poder. Aumenta la Percepción en <%= per %>. Equipamiento de edición limitada de Otoño 2015.",
"headSpecialFall2015HealerText": "Sombrero de Rana",
@@ -1435,7 +1435,7 @@
"shieldArmoireMushroomDruidShieldText": "Escudo de Druida de Champiñón",
"shieldArmoireMushroomDruidShieldNotes": "Aunque está hecho con un champiñón, ¡este robusto escudo no tiene nada de débil! Aumenta Constitución por <%= con %> y Fuerza por <%= str %>. Armario Encantado: Juego de Druida de Champiñón (Artículo 3 de 3).",
"shieldArmoireFestivalParasolText": "Parasol Festivo",
"shieldArmoireFestivalParasolNotes": "Este ligero parasol te protegerá del deslumbramiento--¡ya sea el del sol o el de tus Tareas Diarias rojo oscuro! Aumenta la Constitución en <%= con %>. Armario Encantado: Conjunto Atuendo Festivo (Objeto 2 de 3).",
"shieldArmoireFestivalParasolNotes": "Este ligero parasol te protegerá del deslumbramiento¡ya sea el del sol o el de tus Tareas Diarias rojo oscuro! Aumenta la Constitución en <%= con %>. Armario Encantado: Conjunto Atuendo Festivo (Objeto 2 de 3).",
"shieldArmoireVikingShieldText": "Escudo Vikingo",
"shieldArmoireVikingShieldNotes": "Este robusto escudo de madera y cuero aguanta hasta al más desalentador de los enemigos. Aumenta la Percepción en <%= per %> y la Inteligencia en <%= int %>. Armario Encantado: Conjunto Vikingo (Objeto 3 de 3).",
"shieldArmoireSwanFeatherFanText": "Abanico de Alas de Cisne",
@@ -1957,7 +1957,7 @@
"armorSpecialSummer2020MageNotes": "Usa el poder de las profundidades marinas con esta remo-aravillosa armadura. Aumenta la Inteligencia en <%= int %>. Equipamiento de edición limitada de verano 2020.",
"armorSpecialSummer2020MageText": "Armadura de Pez Remo",
"armorSpecialSummer2020WarriorText": "Cola de Trucha Arcoíris",
"armorSpecialSummer2020RogueNotes": "Un cocodrilo es el Pícaro perfecto, esperando el momento perfecto para golpear. Toma prestadas sus habilidades - y su explosiva velocidad. Aumenta la Percepción en <%= per %>. Equipamiento de edición limitada de verano 2020.",
"armorSpecialSummer2020RogueNotes": "Un cocodrilo es el Pícaro perfecto, esperando el momento perfecto para golpear. Toma prestadas sus habilidades y su explosiva velocidad. Aumenta la Percepción en <%= per %>. Equipamiento de edición limitada de verano 2020.",
"armorSpecialSpring2020HealerNotes": "Envuelvete en suaves hojas irisadas y pétalos para engañar a tus enemigos y hacer que subestimen tus poderes de curación. Aumenta la Constitución en <%= con %>. Equipamiento de edición limitada de primavera 2020.",
"armorSpecialSpring2020MageNotes": "¡Si no puedes resistirte a pisotear los charcos que dejan tras de sí las tormentas, esta armadura es para ti! Convierte ese impulso infantil en una muestra de arte místico. Aumenta la Inteligencia en <%= int %>. Equipamiento de edición limitada de primavera 2020.",
"armorMystery201909Notes": "Tu duro exterior es protector, pero no es mala idea vigilar por si aparecen ardillas... No otorga ningún beneficio. Artículo de suscriptor de Septiembre 2019.",
@@ -2123,7 +2123,7 @@
"armorMystery202104Text": "Armadura de cardo suave",
"armorSpecialSummer2021MageText": "Concha de Espiral",
"armorArmoireHeraldsTunicText": "Túnica de heraldo",
"armorArmoireBathtubNotes": "¿Hora de relajarse un poco? Aquí tienes tu bañera personal (¡y la garantía de que el agua estará siempre a la temperatura perfecta!) Aumenta la constitución en <%= con %>. Armario Encantado: Conjunto de baño de burbujas (artículo 3 de 4).",
"armorArmoireBathtubNotes": "¿Hora de relajarse un poco? Aquí tienes tu bañera personal ¡y la garantía de que el agua estará siempre a la temperatura perfecta! Aumenta la constitución en <%= con %>. Armario Encantado: Conjunto de baño de burbujas (artículo 3 de 4).",
"headSpecialWinter2020RogueNotes": "Cuando un pícaro camina entre callejones con este sombrero, todo el mundo sabe que no le tiene miedo a nada. Aumenta la Percepción en <%= per %>. Equipamiento de edición limitada de invierno 2019-2020.",
"armorSpecialSpring2021WarriorNotes": "¡Ten cuidado de no deslumbrarte a ti mismo cuando la luz se refleje sobre esta armadura de piedra solar! Aumenta la Constitución en <%= con %>. Equipamiento de edición limitada de primavera 2021.",
"armorSpecialSpring2021RogueText": "Tallo de Flores Gemelas",
@@ -2329,7 +2329,7 @@
"bodyArmoireClownsBowtieNotes": "Una buena pajarita no es ninguna broma, incluso para un payaso. Aumenta la fuerza, inteligencia, constitución y percepción en <%= attrs %> cada uno. Armario Encantado: conjunto de payaso (artículo 5 de 5).",
"shieldArmoireChocolateFoodNotes": "A todo el mundo le gusta el chocolate, pero a unas mascotas más que a otras... Aumenta la inteligencia en <%= int %>. Armario Encantado: conjunto de comida para mascotas (artículo 8 de 10).",
"shieldArmoireBagpipesText": "Gaitas",
"headAccessoryMystery202004Notes": "Se mueven un poco si detectan el aroma de las flores, ¡utilízalas para encontrar un bonito jardín! No otorga ningún beneficio. Artículo de suscriptor de abril 2020.",
"headAccessoryMystery202004Notes": "Se mueven un poco si detectan el aroma de las flores ¡utilízalas para encontrar un bonito jardín! No otorga ningún beneficio. Artículo de suscriptor de abril 2020.",
"shieldArmoireLifeBuoyText": "Boya salvavidas",
"shieldArmoirePiratesCompanionNotes": "Perfecto si quieres matar a hablar a tus enemigos, porque este loro nunca se calla. ¡Quizás también te recuerde tus tareas! Aumenta la percepción en <%= per %>. Armario Encantado: conjunto pirata (artículo 3 de 3).",
"headAccessoryMystery202109Notes": "Capta el aroma de las flores en la brisa o la esencia del cambio en el viento. No otorga ningún beneficio. Artículo de suscriptor de septiembre 2021.",
@@ -2338,7 +2338,7 @@
"bodyMystery202008Text": "Manto de buhoráculo",
"eyewearSpecialKS2019Notes": "Audaces como un grifo... hmm, los hipogrifos no llevan viseras. Eso te recuerda que... báh, a quién intentas engañar, ¡las llevas porque molan! No otorga ningún beneficio.",
"eyewearSpecialKS2019Text": "Visor de Grifo Legendario",
"shieldArmoireBagpipesNotes": "Los más envidiosos dirán que estás planeas despertar a los muertos con tus gaitas, ¡pero tú sabes que lo haces para llevar tu grupo al éxito! Aumenta la fuerza en <%= str %>. Armario Encantado: conjunto de gaitero (artículo 3 de 3).",
"shieldArmoireBagpipesNotes": "Los más envidiosos dirán que planeas despertar a los muertos con esta gaita ¡pero tú sabes que lo haces para llevar a tu Equipo al éxito! Aumenta la fuerza en <%= str %>. Armario Encantado: conjunto de gaitero (artículo 3 de 3).",
"backMystery202009Text": "Maravillosas alas de polilla",
"backMystery202005Text": "Maravillosas alas de wyverno",
"headAccessoryMystery202105Text": "Cuernos de dragón nebular",
@@ -2659,7 +2659,7 @@
"weaponArmoireFeatherDusterText": "Plumero",
"weaponArmoireMopText": "Fregona",
"weaponArmoireRidingBroomText": "Escoba voladora",
"weaponArmoireRidingBroomNotes": "Reparte todos tus pedidos de objetos mágicos sobre esta estilizada escoba— o simplemente impresiona a tus vecinos. ¡Jejeje! Aumenta la Fuerza en <%= str %> y la Inteligencia en <%= int %>. Armario Encantado: Conjunto Bruja Espeluznante (Artículo 1 de 3)",
"weaponArmoireRidingBroomNotes": "Reparte todos tus pedidos de objetos mágicos sobre esta estilizada escoba — o simplemente impresiona a tus vecinos. ¡Jejeje! Aumenta la Fuerza en <%= str %> y la Inteligencia en <%= int %>. Armario Encantado: Conjunto Bruja Espeluznante (Artículo 1 de 3)",
"weaponArmoireRollingPinText": "Rodillo",
"weaponArmoireRollingPinNotes": "Aplasta la masa de pizza y déjala fina mientras usas el rodillo como mazo contra los ratones de peluche que asoman la cabeza en la máquina de premio. Aumenta la Fuerza en <%= str %>. Armario Encantado: Conjunto de Utensilios de Cocina 2 (Artículo 2 de 2).",
"armorSpecialBirthday2023Notes": "¡Feliz aniversario, Habitica! Lleva puesto este atuendo festivo para celebrar este día tan importante. No otorga ningún beneficio.",
@@ -3439,5 +3439,61 @@
"bodyMystery202509Notes": "Esta bufanda le protege a vuecencia del gélido viento y además le hace vestir a la altura de su alta alcurnia. No otorga ningún beneficio. Artículo de Suscriptor Septiembre 2025.",
"eyewearMystery202510Text": "Ojos de Necrófago Levitando",
"eyewearMystery202510Notes": "Estos ojos espeluznantes brillan como la Luna en su máximo apogeo. No otorga ningún beneficio. Artículo de Suscriptor Octubre 2025.",
"headArmoireBlacksmithsGogglesNotes": "Suficiente protección ocular y resistencia tanto a roturas como al calor cuando trabajas en una forja enana, incluso en las más famosas de Khazad-dûm. Aumenta la Percepción en <%= per %>. Armario Encantado: Conjunto de Herrero (Artículo 1 de 3)."
"headArmoireBlacksmithsGogglesNotes": "Suficiente protección ocular y resistencia tanto a roturas como al calor cuando trabajas en una forja enana, incluso en las más famosas de Khazad-dûm. Aumenta la Percepción en <%= per %>. Armario Encantado: Conjunto de Herrero (Artículo 1 de 3).",
"weaponSpecialWinter2026WarriorText": "Guadaña Escarcha",
"weaponSpecialWinter2026WarriorNotes": "Una guadaña ayuda a cortar, cosechar y cubre muchos campos —todo lo que necesitas para refinar y afianzar tu lista de tareas. Aumenta la Fuerza en <%= str %>. Equipamiento de edición limitada Invierno 2025-2026.",
"weaponSpecialWinter2026RogueText": "Bastón de Esquí",
"weaponSpecialWinter2026RogueNotes": "Los bastones de esquiar te ayudan a mantener el equilibrio, la estabilidad, y el ritmo —todo lo que necesitas para ser productivo, colega. Aumenta la Fuerza en <%= str %>.Equipamiento de edición limitada Invierno 2025-2026.",
"weaponSpecialWinter2026HealerText": "Báculo Polar",
"weaponSpecialWinter2026HealerNotes": "Los báculos sirven de apoyo, dan estabilidad, y dirección —todo lo que necesitas y más para conquistar tu lista de tareas, insensato. Aumenta la Inteligencia en <%= int %>. Equipamiento de edición limitada Invierno 2025-2026.",
"weaponSpecialWinter2026MageText": "Candelabro de Pie",
"weaponSpecialWinter2026MageNotes": "Los Candelabros son muy útiles ya que por ejemplo tienen muchas velas, y alumbran, tu sabes, en las mazmorras, necesitas luz —así que sigue su ejemplo la próxima vez que necesites activar tu modo multitarea, se la vela hermano. Aumenta la Inteligencia en <%= int %> y la Percepción en <%= per %>. Equipamiento de edición limitada Invierno 2025-2026.",
"weaponMystery202512Text": "Hoja de Galleta Ganadora",
"weaponMystery202512Notes": "Una brillante y deliciosa espada recubierta con azúcar y menta, imbuida con encantamientos arcanos irresistibles, una locura. No otorga ningún beneficio. Artículo de Suscriptor Diciembre 2025.",
"weaponMystery202601Text": "Égida de Invierno",
"weaponMystery202601Notes": "Una burbuja helada como escudo que te concede una protección mágica contra elementos opuestos. No otorga ningún beneficio. Artículo de Suscriptor Enero 2026.",
"weaponArmoireBambooFluteText": "Flauta de Bambú",
"weaponArmoireBambooFluteNotes": "¡Fiuuu! ¡Fiu! ¡Tweeeet! Reúne a tu equipo para una sesión de meditación o una buena siesta mientras os relajáis con las suaves notas sostenidas que emana esta flauta de bambú, escuchad como suena una mano aplaudiendo sola. Aumenta la Constitución y la Inteligencia en <%= attrs %> cada una. Armario Encantado: Conjunto Instrumento Musical 2 (Artículo 2 de 3)",
"weaponArmoirePrettyPinkParasolText": "Hermosa Sombrilla Rosa",
"weaponArmoirePrettyPinkParasolNotes": "Hermosa y práctica fuere la preeminente permutación predispuesta. Y como no, particularmente pragmática hubiese predestinada, ¡dale otro giro a la sombrilla! Aumenta todas las estadisticas en <%= attrs %> cada una. Armario Encantado: Conjunto Hermosa en Rosa (Artículo 1 de 2)",
"armorSpecialWinter2026WarriorNotes": "Los carámbanos se romperán y se deslizarán con cada paso que des mientras completas tus tareas diarias. Aumenta la Constitución en <%= con %>. Equipamiento de edición limitada Invierno 2025-2026.",
"armorSpecialWinter2026RogueText": "Vestido y Esquís de Esquiador",
"armorSpecialWinter2026RogueNotes": "Corre veloz, no te demores, balancéate mientras bajas por la pista roja del cumplimiento de tus Tareas Diarias. Aumenta la Percepción en <%= per %>. Equipamiento de edición limitada Invierno 2025-2026.",
"armorSpecialWinter2026HealerText": "Ropajes Polares",
"armorSpecialWinter2026HealerNotes": "Cuál espectáculo de luz natural, dejarás a todos alucinados en tus formas de cumplimentar tus Tareas Diarias. Aumenta la Constitución en <%= con %>. Equipamiento de edición limitada Invierno 2025-2026.",
"armorSpecialWinter2026WarriorText": "Vestido de Destripador Escarcha",
"armorSpecialWinter2026MageText": "Atuendo de Candelabro Invernal",
"armorSpecialWinter2026MageNotes": "Deslízate suavemente cual ave galliforme, por tu camino, huyendo como la cera mientras completas tus Tareas Diarias. Aumenta la Inteligencia en <%= int %>. Equipamiento de edición limitada Invierno 2025-2026.",
"armorMystery202512Text": "Armadura de Galleta Ganadora",
"armorMystery202512Notes": "Ya estás listo para la batalla con esta placa pectoral que es a la vez dulce y dura y deliciosa. No otorga ningún beneficio. Artículo de Suscriptor Diciembre 2025.",
"armorArmoireLoneCowpokeOutfitText": "Traje de Vaquero Solitario",
"headSpecialWinter2026WarriorText": "Yelmo de Destripador Escarcha",
"headSpecialWinter2026MageNotes": "Mantente centrado y iluminado, cual hombre en el faro, mientras pones tus aspiraciones por encima de los límites de la realidad durante esta temporada. Aumenta la Percepción en <%= per %>. Equipamiento de Edición Limitada Invierno 2025-2026.",
"headArmoireLoneCowpokeHatNotes": "¡Ey, para el carro! ¿Detestas cuando estás lejos del rancho, currando bajo un sol de justicia y se te calienta el melón y empiezas a ver chiribitas muchacho? Bueno, ahora ya tienes un sombrero, por fin le has encontrado un uso a la perola. Aumenta la Percepción en <%= per %>. Armario Encantado: Conjunto Vaquero Solotario (Artículo 1 de 2)",
"shieldSpecialWinter2026WarriorNotes": "Evita obstáculos y para los golpes con este útil y escarchado escudo. Aumenta la Constitución en <%= con %>. Equipamiento de Edición Limitada Invierno 2025-2026.",
"shieldSpecialWinter2026HealerNotes": "Las estrellas te ayudan a encontrar tu senda, tu energía, la iluminación y el sonido de una mano aplaudiendo —todas las cosas, menos una, que necesitas para conquistar la gloria y tu lista de tareas. Aumenta la Constitución en <%= con %>. Equipamiento de Edición Limitada Invierno 2025-2026.",
"shieldArmoireDoubleBassText": "Contrabajo",
"shieldArmoireDoubleBassNotes": "¡Burum bumm bum buum, bam, bom bum! Reúne a tu Equipo al rededor de la fogata para que bailen como indios mientras escuchan la música procedente de este contrabajo. Aumenta la Constitución y la Fuerza en <%= attrs %>. Armario Encantado: Conjunto Instrumento Musical 2 (Artículo 3 de 3)",
"armorArmoireLoneCowpokeOutfitNotes": "¡Yiiiiijaaa! ¿Quieres romper la pana al llegar a la ciudad como un misterioso vaquero listo para ser productivo? Aquí tienes el atuendo perfecto, con chaparreras y una brillante hebilla de cinturón plateada. Aumenta la Constitución en <%= con %>. Armario Encantado: Cojunto Vaquero Solitario (Artículo 2 de 2)",
"headSpecialWinter2026WarriorNotes": "Mantente concentrado y enfocado mientras pones tus miras en objetivos se más envergadura durante esta temporada. Aumenta la Fuerza en <%= str %>. Equipamiento de Edición Limitada Invierno 2025-2026.",
"headSpecialWinter2026RogueText": "Máscara y Gafas de Esquiar",
"headSpecialWinter2026RogueNotes": "Mantente centrado y visualiza tu objetivo cuál ave galliforme, mientras apuntas a metas más elevadas durante esta temporada. Aumenta la Percepción en <%= per %>. Equipamiento de Edición Limitada Invierno 2025-2026.",
"headSpecialWinter2026HealerText": "Máscara de Oso Polar",
"headSpecialWinter2026HealerNotes": "Mantente centrado y con la mente clara mientras elevas tus expectativas a nieveles estratosféricos durante esta temporada. Aumenta la Inteligencia en <%= int %>. Equipamiento de Edición Limitada Invierno 2025-2026.",
"headSpecialWinter2026MageText": "Sombrero Vela Invernal",
"headMystery202512Text": "Yelmo de Galleta Ganadora",
"headMystery202512Notes": "Pan de jengibre forjado con números hechizos arcanos que acabaron con la cordura de sus conjuradores, protección mística ¡siempre y cuando no te lo comas! No otorga ningún beneficio. Artículo de Suscriptor Diciembre 2025.",
"headMystery202602Text": "Orejas de Zorro del Sakura",
"headMystery202602Notes": " Tu percepción de los sonidos será tan aguzada debido a estas orejas, que podrás escuchar no solo una mano aplaudiendo sola, si no también el florecimiento de las hermosas florecillas cuando la primavera se vaya acercando, florecilla. No otorga ningún beneficio. Artículo de Suscriptor Febrero 2026.",
"headArmoireLoneCowpokeHatText": "Sombrero de Vaquero Solitario",
"shieldSpecialWinter2026WarriorText": "Escudo Escarcha",
"shieldSpecialWinter2026HealerText": "Explosión Estelar",
"shieldArmoirePrettyPinkGiftBoxNotes": "¿Es este regalo para un buen amigo? ¿Un familiar apreciado? ¿Tu amor verdadero? ¿Un admirador secreto, mi tessssorooo? Sea para quien sea estará encantado de tenerlo, mejor que en los bolsillos de ese sucio hobbit preciossssso mío. Aumenta todas las estadisticas en <%= attrs %>. Armario Encantado: Conjunto Hermosa en Rosa (Artículo 2 de 2)",
"backMystery202601Notes": "Este sello concede a quien lo usa el control de los elementos en la estación del frío y la escarcha, imbuido en el corazón de la disformidad. No otorga ningún beneficio. Artículo de Suscriptor Enero 2026.",
"backMystery202602Notes": "Estas esponjosas colas son del color del cerezo en flor, ¡un recordatorio de que la primavera siempre llega! No otorga ningún beneficio. Artículo de Suscriptor Febrero 2026.",
"shieldArmoirePrettyPinkGiftBoxText": "Hermoso Regalo Rosa",
"backMystery202601Text": "Símbolo Invernal",
"backMystery202602Text": "Las Cinco Colas de Sakura",
"backArmoireHarpsichordText": "Clavicémbalo",
"backArmoireHarpsichordNotes": "¡Duing! ¡Ding! Reúne a tu equipo ya sea para un almuerzo campestre o un picnic, algo totalmente diferente a lo anterior, y una vez allí deleita sus pabellones auditivos mientras interpretas Highway to Hell en tu clavicémbalo. Aumenta la Percepción y la Inteligencia en <%= attrs %> cada uno.Armario Encantado: Conjunto Instrumentos Musicales 2 (Artículo 1 de 3)"
}

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