Compare commits

..

76 Commits

Author SHA1 Message Date
SabreCat 2ac21104a4 4.260.1 2023-02-13 11:51:45 -06:00
SabreCat 6b95f648c4 Merge remote-tracking branch 'CuriousMagpie/footer-link-updates' into release 2023-02-13 11:28:14 -06:00
SabreCat f9db4b9b5b fix(event): correct logic for various Valentine's items 2023-02-13 11:25:02 -06:00
SabreCat 74da6d8798 4.260.0 2023-02-12 23:17:16 -06:00
Natalie L a73e4d399e chore(content): add Pink Marble Magic Hatching Potion (#14497)
* chore(content): add quest text

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

* fix(image): pad quest scroll image

* feat(quest): add Rage action

---------

Co-authored-by: SabreCat <sabe@habitica.com>
2023-02-12 23:17:56 -06:00
Natalie L 8f4d668b0f chore(content): add pet quest bundle and magic hatching potions for February (#14499) 2023-02-12 23:17:09 -06:00
CuriousMagpie 945c19cc80 chore(links): add weblate link to footer and update data display tool 2023-02-10 15:11:36 -05:00
gwenexner 7b4cfee290 Fixed release info for Set 105 (#14494)
Removed a stray space at the front of "Set 105", changed year to 2023.
2023-02-10 10:30:27 -06:00
SabreCat 015631685b 4.259.1 2023-02-08 15:04:19 -06:00
Natalie L 0b8f2bc58e update(content): revise community guidelines (#14481)
* update(content); revise community guidelines

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

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

---------

Co-authored-by: SabreCat <sabe@habitica.com>
2023-02-08 15:04:30 -06:00
SabreCat 6c536c0b89 Merge branch 'release' into develop 2023-02-07 09:12:03 -06:00
SabreCat 1de2adf301 4.259.0 2023-02-07 09:11:52 -06:00
Natalie L 0335eb1f7e chore(content): add February backgrounds and Enchanted Armoire Items (#14482)
* chore(content): add February backgrounds and Enchanted Armoire Items

* fix(test): birthday week adjustment

* fix(strings): .

* fix(strings): correct background tokens

---------

Co-authored-by: SabreCat <sabe@habitica.com>
Co-authored-by: Sabe Jones <sabrecat@gmail.com>
2023-02-07 09:12:19 -06:00
SabreCat e0a5938711 fix(test): update expectations for new flagging logic 2023-02-06 21:34:51 -06:00
SabreCat c7deb1eb19 4.258.2 2023-02-03 09:23:27 -06:00
SabreCat a213fb723a fix(purchases): correct hardcoded date range for Gryph 2023-02-03 09:23:21 -06:00
SabreCat 5f66aa35f2 4.258.1 2023-02-02 16:36:44 -06:00
SabreCat 96a8c1a41c fix(chat): correctly hide flag counts from non-moderators 2023-02-02 16:36:37 -06:00
SabreCat 0f9b6ab591 fix(lint): revert bad lint rule again 2023-01-31 11:00:08 -06:00
SabreCat 3470382528 fix(lint): revert bad lint rule again 2023-01-31 10:59:53 -06:00
SabreCat 4d953890c3 Merge branch 'release' into develop 2023-01-31 10:56:23 -06:00
SabreCat dd6897ac53 Merge branch 'sabrecat/admin-panel-gems' into release 2023-01-31 10:53:11 -06:00
SabreCat a19b5356b5 Merge branch 'sabrecat/admin-panel-gems' into develop 2023-01-31 10:53:03 -06:00
SabreCat b59fcd203b Merge branch 'sabrecat/fixes-202302' into release 2023-01-31 10:51:41 -06:00
SabreCat 0ca339829f 4.258.0 2023-01-31 10:35:50 -06:00
Natalie L 059269f9b0 chore(content): add February subscriber items (#14466)
* chore(content): add February subscriber items

* fix(strings): month typo

---------

Co-authored-by: SabreCat <sabe@habitica.com>
2023-01-31 10:33:36 -06:00
SabreCat 5eda99b0b8 Merge branch 'release' into develop 2023-01-31 10:02:54 -06:00
Natalie L cfa85850bf chore(typos): miscellaneous string fixes (#14414)
* fix(string): questVice1Notes html changed to a mobile-device friendly format

* fix(strings): updated limited.json with "dateEnd" & "monthYYYY" months & put in chronological order

* fix(string): remove extra word from headSpecialSummer2022WarriorNotes

* fix(string): corrected armorSpecialSummer2022MageNotes

* fix: remove duplicated string and adjust upgrade button style

* fix(style): set border radii to 8px on upgrading-group id

* fix(payments): remove duplicate entry from another modal

* chore(fix): restore string inadvertently removed during a refactor

* chore(fix): comma dangle

* chore(typo): who knew, that Y was actually important...

* chore(typo): fix text in questBewilderNotes

* chore(string): clarify polar pets requirements

* couple small changes to the footer as pointed out by users

* chore(fix): correct name of Fabulous Party Hat

---------

Co-authored-by: SabreCat <sabe@habitica.com>
2023-01-31 10:03:06 -06:00
SabreCat dd9e03044f chore(subproject): update habitica-images 2023-01-31 10:02:43 -06:00
SabreCat 27964a2d86 fix(analytics): add headers to group task assignment 2023-01-27 19:57:15 -06:00
SabreCat ecac3f0c5f fix(backgrounds): disallow equipping unowned bashground
Also add missing headers when recording group task creation
2023-01-27 19:26:19 -06:00
Weblate 9f64633a57 Merge branch 'origin/develop' into Weblate. 2023-01-26 22:11:34 +01:00
SabreCat 5dc4fccddc Merge branch 'release' into develop 2023-01-26 15:09:09 -06:00
SabreCat f03c37f420 4.257.0 2023-01-26 15:06:27 -06:00
SabreCat f31103094b fix(events): don't start "no event" until after birthday10 2023-01-26 15:05:07 -06:00
Weblate f30074ed7a Translated using Weblate (Malay)
Currently translated at 98.6% (144 of 146 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (746 of 746 strings)

Translated using Weblate (Indonesian)

Currently translated at 87.3% (652 of 746 strings)

Translated using Weblate (Arabic)

Currently translated at 60.1% (449 of 746 strings)

Translated using Weblate (Malay)

Currently translated at 4.9% (9 of 181 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (746 of 746 strings)

Translated using Weblate (Arabic)

Currently translated at 58.4% (436 of 746 strings)

Translated using Weblate (Russian)

Currently translated at 99.4% (2735 of 2749 strings)

Translated using Weblate (Malay)

Currently translated at 96.5% (141 of 146 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (746 of 746 strings)

Translated using Weblate (Indonesian)

Currently translated at 86.5% (646 of 746 strings)

Translated using Weblate (Malay)

Currently translated at 95.2% (139 of 146 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (746 of 746 strings)

Translated using Weblate (Indonesian)

Currently translated at 86.3% (644 of 746 strings)

Translated using Weblate (Malay)

Currently translated at 93.8% (137 of 146 strings)

Translated using Weblate (Malay)

Currently translated at 93.8% (137 of 146 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (746 of 746 strings)

Translated using Weblate (Russian)

Currently translated at 99.4% (2734 of 2749 strings)

Translated using Weblate (Indonesian)

Currently translated at 86.3% (644 of 746 strings)

Translated using Weblate (Malay)

Currently translated at 92.4% (135 of 146 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Malay)

Currently translated at 91.0% (133 of 146 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Arabic)

Currently translated at 61.6% (1695 of 2749 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (47 of 47 strings)

Translated using Weblate (Portuguese)

Currently translated at 92.0% (197 of 214 strings)

Translated using Weblate (Malay)

Currently translated at 89.0% (130 of 146 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Malay)

Currently translated at 87.6% (128 of 146 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2749 of 2749 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Malay)

Currently translated at 86.9% (127 of 146 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (94 of 94 strings)

Translated using Weblate (Hebrew)

Currently translated at 69.1% (101 of 146 strings)

Translated using Weblate (Malay)

Currently translated at 86.3% (126 of 146 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (2749 of 2749 strings)

Translated using Weblate (Japanese)

Currently translated at 99.8% (2746 of 2749 strings)

Translated using Weblate (Malay)

Currently translated at 84.9% (124 of 146 strings)

Translated using Weblate (Ukrainian)

Currently translated at 24.4% (673 of 2749 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (238 of 238 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (238 of 238 strings)

Translated using Weblate (Russian)

Currently translated at 99.3% (2732 of 2749 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (746 of 746 strings)

Translated using Weblate (Malay)

Currently translated at 83.5% (122 of 146 strings)

Translated using Weblate (Ukrainian)

Currently translated at 66.3% (501 of 755 strings)

Translated using Weblate (Malay)

Currently translated at 82.1% (120 of 146 strings)

Translated using Weblate (Malay)

Currently translated at 81.5% (119 of 146 strings)

Translated using Weblate (Japanese)

Currently translated at 99.7% (2743 of 2749 strings)

Translated using Weblate (Malay)

Currently translated at 75.3% (110 of 146 strings)

Translated using Weblate (Indonesian)

Currently translated at 86.3% (644 of 746 strings)

Translated using Weblate (Malay)

Currently translated at 73.9% (108 of 146 strings)

Translated using Weblate (Filipino)

Currently translated at 90.6% (164 of 181 strings)

Translated using Weblate (Indonesian)

Currently translated at 85.7% (640 of 746 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (210 of 210 strings)

Translated using Weblate (Japanese)

Currently translated at 99.6% (2740 of 2749 strings)

Translated using Weblate (Filipino)

Currently translated at 91.1% (165 of 181 strings)

Translated using Weblate (Filipino)

Currently translated at 91.9% (343 of 373 strings)

Translated using Weblate (Japanese)

Currently translated at 99.5% (2737 of 2749 strings)

Translated using Weblate (Filipino)

Currently translated at 40.9% (9 of 22 strings)

Translated using Weblate (Japanese)

Currently translated at 99.3% (2731 of 2749 strings)

Translated using Weblate (Japanese)

Currently translated at 99.0% (2723 of 2749 strings)

Translated using Weblate (Filipino)

Currently translated at 91.1% (165 of 181 strings)

Translated using Weblate (Japanese)

Currently translated at 98.9% (2719 of 2749 strings)

Translated using Weblate (Malay)

Currently translated at 66.4% (97 of 146 strings)

Translated using Weblate (Arabic)

Currently translated at 86.8% (53 of 61 strings)

Translated using Weblate (Japanese)

Currently translated at 98.8% (2717 of 2749 strings)

Translated using Weblate (Russian)

Currently translated at 99.1% (2727 of 2749 strings)

Translated using Weblate (Bulgarian)

Currently translated at 65.0% (95 of 146 strings)

Translated using Weblate (Russian)

Currently translated at 99.0% (2724 of 2749 strings)

Translated using Weblate (Indonesian)

Currently translated at 82.6% (105 of 127 strings)

Translated using Weblate (Japanese)

Currently translated at 98.6% (2711 of 2749 strings)

Translated using Weblate (Japanese)

Currently translated at 98.5% (2710 of 2749 strings)

Translated using Weblate (Japanese)

Currently translated at 98.5% (2709 of 2749 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (238 of 238 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (214 of 214 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (60 of 60 strings)

Translated using Weblate (Ukrainian)

Currently translated at 61.7% (466 of 755 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (210 of 210 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (111 of 111 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (404 of 404 strings)

Translated using Weblate (Malay)

Currently translated at 65.7% (96 of 146 strings)

Translated using Weblate (Malay)

Currently translated at 64.3% (94 of 146 strings)

Translated using Weblate (Russian)

Currently translated at 99.0% (2722 of 2749 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (746 of 746 strings)

Translated using Weblate (Russian)

Currently translated at 98.8% (2717 of 2749 strings)

Translated using Weblate (Malay)

Currently translated at 60.9% (89 of 146 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (210 of 210 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Malay)

Currently translated at 47.9% (70 of 146 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (238 of 238 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2749 of 2749 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (60 of 60 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 99.5% (2738 of 2749 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (186 of 186 strings)

Translated using Weblate (French)

Currently translated at 100.0% (238 of 238 strings)

Translated using Weblate (French)

Currently translated at 100.0% (2749 of 2749 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (186 of 186 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (238 of 238 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (2749 of 2749 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (181 of 181 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Russian)

Currently translated at 99.5% (237 of 238 strings)

Translated using Weblate (Russian)

Currently translated at 98.5% (2709 of 2749 strings)

Translated using Weblate (Malay)

Currently translated at 38.3% (56 of 146 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (221 of 221 strings)

Translated using Weblate (Malay)

Currently translated at 55.2% (116 of 210 strings)

Translated using Weblate (Malay)

Currently translated at 21.9% (32 of 146 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (238 of 238 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (2749 of 2749 strings)

Translated using Weblate (Indonesian)

Currently translated at 95.9% (212 of 221 strings)

Co-authored-by: Ana Beatriz <anabeatriz.augusto06@yahoo.com>
Co-authored-by: Arthur Ouzlaner <panther1984@gmail.com>
Co-authored-by: Benoit Hetru <me+hbtc@gahanka.net>
Co-authored-by: Falzart Werefox <muh_fauzi_ramadhan@yahoo.co.id>
Co-authored-by: Hanafi <naflizo@gmail.com>
Co-authored-by: Keva Kursakov <kevakursakov@gmail.com>
Co-authored-by: LiziKnight <liziknight0316@outlook.com>
Co-authored-by: M <maperray@gmail.com>
Co-authored-by: Natalie Luhrs <eilatan@gmail.com>
Co-authored-by: Nazar Paruna <nazarparuna@gmail.com>
Co-authored-by: Salman Mujeeb <kingleopard22@gmail.com>
Co-authored-by: Sandra Marcial <sandramarcial80@gmail.com>
Co-authored-by: Sergey Shevelev <vlkgamer45@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: mattya 226 <worldworld1114@gmail.com>
Co-authored-by: polyglottericus <vincemorel.vilan.889@gmail.com>
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ar/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/bg/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/he/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ms/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ar/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/id/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/character/id/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/id/
Translate-URL: https://translate.habitica.com/projects/habitica/content/fil/
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/id/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/front/fil/
Translate-URL: https://translate.habitica.com/projects/habitica/front/ms/
Translate-URL: https://translate.habitica.com/projects/habitica/front/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ar/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/
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/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/it/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/loginincentives/fil/
Translate-URL: https://translate.habitica.com/projects/habitica/messages/ar/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/quests/he/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/id/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/it/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ms/
Translation: Habitica/Achievements
Translation: Habitica/Backgrounds
Translation: Habitica/Character
Translation: Habitica/Communityguidelines
Translation: Habitica/Content
Translation: Habitica/Contrib
Translation: Habitica/Faq
Translation: Habitica/Front
Translation: Habitica/Gear
Translation: Habitica/Generic
Translation: Habitica/Groups
Translation: Habitica/Limited
Translation: Habitica/Loginincentives
Translation: Habitica/Messages
Translation: Habitica/Pets
Translation: Habitica/Quests
Translation: Habitica/Questscontent
Translation: Habitica/Settings
Translation: Habitica/Subscriber
2023-01-26 20:39:15 +01:00
SabreCat 9aa8b6d64d fix(shops): use gala-specific logic for gala gear canBuy 2023-01-25 12:45:55 -06:00
SabreCat ce96f4065d fix(event): adjust potions end date 2023-01-25 11:08:35 -06:00
SabreCat def9aa16b5 fix(events): handle overlap of unseasonal events and seasonal 2023-01-25 10:51:47 -06:00
SabreCat efae9429c0 feat(event): adjust dates, add NPC variations 2023-01-24 16:11:16 -06:00
SabreCat ac239e32ce fix(payments): wrap up adjusted test expectations 2023-01-23 00:45:31 -06:00
SabreCat e1deb6adff fix(payments): add missing SKU variations 2023-01-22 23:21:22 -06:00
SabreCat 3474cbf138 fix(payments): correct more tests 2023-01-22 23:02:18 -06:00
SabreCat f845bbd7a0 fix(payments): address some test failures 2023-01-22 22:30:48 -06:00
SabreCat 0dfc8de300 fix(lint): remove extraneous import 2023-01-20 16:25:24 -06:00
SabreCat 1988ef957d fix(strings): dedupe jubilantGryphatrice 2023-01-20 16:15:33 -06:00
SabreCat e5bbde7e97 feat(event): 10th Birthday Bash
with @CuriousMagpie and @phillipthelen
2023-01-20 16:14:33 -06:00
dependabot[bot] b87cfb71f1 build(deps): bump core-js from 3.27.1 to 3.27.2 in /website/client (#14454)
Bumps [core-js](https://github.com/zloirock/core-js/tree/HEAD/packages/core-js) from 3.27.1 to 3.27.2.
- [Release notes](https://github.com/zloirock/core-js/releases)
- [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zloirock/core-js/commits/v3.27.2/packages/core-js)

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

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-20 15:22:43 -05:00
dependabot[bot] 352b1170c4 build(deps): bump @vue/cli-plugin-babel in /website/client (#14116)
Bumps [@vue/cli-plugin-babel](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-babel) from 4.5.15 to 5.0.8.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v5.0.8/packages/@vue/cli-plugin-babel)

---
updated-dependencies:
- dependency-name: "@vue/cli-plugin-babel"
  dependency-type: direct:production
  update-type: version-update:semver-major
...

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-20 15:21:44 -05:00
dependabot[bot] 19d4c5102a build(deps): bump @babel/core from 7.20.5 to 7.20.12 (#14444)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.20.5 to 7.20.12.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.20.12/packages/babel-core)

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

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-20 15:16:10 -05:00
dependabot[bot] 2c880708e3 build(deps): bump stripe from 11.4.0 to 11.6.0 (#14442)
Bumps [stripe](https://github.com/stripe/stripe-node) from 11.4.0 to 11.6.0.
- [Release notes](https://github.com/stripe/stripe-node/releases)
- [Changelog](https://github.com/stripe/stripe-node/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stripe/stripe-node/compare/v11.4.0...v11.6.0)

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

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-20 15:12:39 -05:00
dependabot[bot] 9d0e2217d5 build(deps): bump core-js from 3.26.1 to 3.27.1 in /website/client (#14437)
Bumps [core-js](https://github.com/zloirock/core-js/tree/HEAD/packages/core-js) from 3.26.1 to 3.27.1.
- [Release notes](https://github.com/zloirock/core-js/releases)
- [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zloirock/core-js/commits/v3.27.1/packages/core-js)

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

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-20 14:57:27 -05:00
dependabot[bot] 076c090197 build(deps): bump flat and @vue/cli-plugin-unit-mocha in /website/client (#14436)
Bumps [flat](https://github.com/hughsk/flat) to 5.0.2 and updates ancestor dependency [@vue/cli-plugin-unit-mocha](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-unit-mocha). These dependencies need to be updated together.


Updates `flat` from 4.1.1 to 5.0.2
- [Release notes](https://github.com/hughsk/flat/releases)
- [Commits](https://github.com/hughsk/flat/compare/4.1.1...5.0.2)

Updates `@vue/cli-plugin-unit-mocha` from 4.5.15 to 5.0.8
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v5.0.8/packages/@vue/cli-plugin-unit-mocha)

---
updated-dependencies:
- dependency-name: flat
  dependency-type: indirect
- dependency-name: "@vue/cli-plugin-unit-mocha"
  dependency-type: direct:production
...

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-20 14:57:00 -05:00
dependabot[bot] c8a9730ea1 build(deps-dev): bump axios from 1.2.1 to 1.2.2 (#14435)
Bumps [axios](https://github.com/axios/axios) from 1.2.1 to 1.2.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.2.1...1.2.2)

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

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-20 14:56:28 -05:00
dependabot[bot] 652d792467 build(deps): bump json5 and tsconfig-paths (#14434)
Bumps [json5](https://github.com/json5/json5) and [tsconfig-paths](https://github.com/dividab/tsconfig-paths). These dependencies needed to be updated together.

Updates `json5` from 2.2.1 to 2.2.2
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](https://github.com/json5/json5/compare/v2.2.1...v2.2.2)

Updates `tsconfig-paths` from 3.9.0 to 3.10.1
- [Release notes](https://github.com/dividab/tsconfig-paths/releases)
- [Changelog](https://github.com/dividab/tsconfig-paths/blob/master/CHANGELOG.md)
- [Commits](https://github.com/dividab/tsconfig-paths/compare/v3.9.0...v3.10.1)

---
updated-dependencies:
- dependency-name: json5
  dependency-type: indirect
- dependency-name: tsconfig-paths
  dependency-type: indirect
...

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-20 14:56:02 -05:00
dependabot[bot] b9994f5c49 build(deps-dev): bump @babel/plugin-proposal-optional-chaining (#14426)
Bumps [@babel/plugin-proposal-optional-chaining](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-proposal-optional-chaining) from 7.18.9 to 7.20.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.20.7/packages/babel-plugin-proposal-optional-chaining)

---
updated-dependencies:
- dependency-name: "@babel/plugin-proposal-optional-chaining"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-20 14:48:33 -05:00
dependabot[bot] c164209c47 build(deps): bump jquery from 3.6.1 to 3.6.3 in /website/client (#14425)
Bumps [jquery](https://github.com/jquery/jquery) from 3.6.1 to 3.6.3.
- [Release notes](https://github.com/jquery/jquery/releases)
- [Commits](https://github.com/jquery/jquery/compare/3.6.1...3.6.3)

---
updated-dependencies:
- dependency-name: jquery
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-20 14:48:09 -05:00
SabreCat a8cb303f46 4.256.0 2023-01-10 08:47:00 -06:00
SabreCat 2f5fd4019d fix(admin): don't auto calculate Gem cap
also fixes .eslintrc to stop down prop mutations from error level
2023-01-09 16:08:54 -06:00
SabreCat d85436afbf Merge branch 'release' into develop 2023-01-09 15:53:16 -06:00
SabreCat d9455101d7 Merge branch 'release' into develop 2023-01-09 15:52:57 -06:00
Natalie L a80ac76015 chore(content): add January 2023 Backgrounds and Enchanted Armoire Item (#14440)
* chore: images & spritesheet

* chore: add january backgrounds and armoire item

* fix(backgrounds): typos and 2023 updates

Co-authored-by: SabreCat <sabe@habitica.com>
2023-01-09 15:39:04 -06:00
SabreCat dd569ab178 4.255.2 2023-01-06 15:54:13 -06:00
SabreCat 6726a2a7ac chore(subproj): update habitica-images 2023-01-06 15:54:09 -06:00
SabreCat 5dc372d143 fix(subs): better margins when subbed 2023-01-04 12:04:16 -06:00
SabreCat e251fad12c fix(subs): clarity and layout improvements 2023-01-03 17:05:48 -06:00
SabreCat 4fc880d6de 4.255.1 2022-12-29 11:09:09 -06:00
SabreCat f0c3be4800 fix(event): show NYE card on client 2022-12-29 11:07:17 -06:00
SabreCat c7aadede4d Merge branch 'release' into develop 2022-12-29 10:47:08 -06:00
SabreCat 5a07e5cbf3 4.255.0 2022-12-29 10:46:37 -06:00
Natalie L b1dab729b6 chore(content): january subscriber items (#14433)
Co-authored-by: SabreCat <sabe@habitica.com>
2022-12-29 10:46:17 -06:00
SabreCat 95231b1ede chore(git): update subproject 2022-12-29 10:33:00 -06:00
SabreCat 43a196ffea 4.254.2 2022-12-28 11:43:07 -06:00
SabreCat f72224f9f1 fix(event): more date corrections 2022-12-28 11:42:56 -06:00
Weblate 37d48b3193 Merge branch 'origin/develop' into Weblate. 2022-12-23 22:38:30 +01:00
Weblate 474d3fb76f Translated using Weblate (Russian)
Currently translated at 98.5% (2707 of 2747 strings)

Translated using Weblate (Indonesian)

Currently translated at 93.2% (206 of 221 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Indonesian)

Currently translated at 84.6% (187 of 221 strings)

Translated using Weblate (Indonesian)

Currently translated at 84.6% (187 of 221 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (98 of 98 strings)

Translated using Weblate (Indonesian)

Currently translated at 84.1% (186 of 221 strings)

Translated using Weblate (Russian)

Currently translated at 99.5% (237 of 238 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (238 of 238 strings)

Translated using Weblate (Russian)

Currently translated at 98.4% (2704 of 2747 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (2747 of 2747 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (60 of 60 strings)

Translated using Weblate (Serbian)

Currently translated at 56.1% (419 of 746 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Serbian)

Currently translated at 75.6% (571 of 755 strings)

Translated using Weblate (Serbian)

Currently translated at 91.8% (124 of 135 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 99.5% (2734 of 2747 strings)

Translated using Weblate (Serbian)

Currently translated at 74.9% (566 of 755 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (238 of 238 strings)

Translated using Weblate (Serbian)

Currently translated at 23.9% (35 of 146 strings)

Translated using Weblate (Indonesian)

Currently translated at 89.7% (131 of 146 strings)

Translated using Weblate (French)

Currently translated at 100.0% (238 of 238 strings)

Translated using Weblate (French)

Currently translated at 100.0% (2747 of 2747 strings)

Translated using Weblate (French)

Currently translated at 100.0% (60 of 60 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (755 of 755 strings)

Translated using Weblate (French)

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (2747 of 2747 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (238 of 238 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.5% (2736 of 2747 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (60 of 60 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 99.1% (2725 of 2747 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 99.0% (2720 of 2747 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.0% (2720 of 2747 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 96.6% (58 of 60 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (146 of 146 strings)

Co-authored-by: Ana Beatriz <anabeatriz.augusto06@yahoo.com>
Co-authored-by: Benoit Hetru <me+hbtc@gahanka.net>
Co-authored-by: Falzart Werefox <muh_fauzi_ramadhan@yahoo.co.id>
Co-authored-by: LiziKnight <liziknight0316@outlook.com>
Co-authored-by: Sandra Marcial <sandramarcial80@gmail.com>
Co-authored-by: Sergey Shevelev <vlkgamer45@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: fluffstuff <opositesandreality@gmail.com>
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/id/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/it/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/sr/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/sr/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/id/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/it/
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/gear/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/it/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/it/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/sr/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/id/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/sr/
Translation: Habitica/Achievements
Translation: Habitica/Backgrounds
Translation: Habitica/Challenge
Translation: Habitica/Faq
Translation: Habitica/Gear
Translation: Habitica/Limited
Translation: Habitica/Questscontent
Translation: Habitica/Settings
Translation: Habitica/Tasks
2022-12-23 22:12:37 +01:00
161 changed files with 6330 additions and 1588 deletions
@@ -0,0 +1,88 @@
/* eslint-disable no-console */
import { v4 as uuid } from 'uuid';
import { model as User } from '../../../website/server/models/user';
const MIGRATION_NAME = '20230123_habit_birthday';
const progressCount = 1000;
let count = 0;
async function updateUser (user) {
count += 1;
const inc = { 'balance': 5 };
const set = {};
const push = {};
set.migration = MIGRATION_NAME;
if (typeof user.items.gear.owned.armor_special_birthday2022 !== 'undefined') {
set['items.gear.owned.armor_special_birthday2023'] = true;
} else if (typeof user.items.gear.owned.armor_special_birthday2021 !== 'undefined') {
set['items.gear.owned.armor_special_birthday2022'] = true;
} else if (typeof user.items.gear.owned.armor_special_birthday2020 !== 'undefined') {
set['items.gear.owned.armor_special_birthday2021'] = true;
} else if (typeof user.items.gear.owned.armor_special_birthday2019 !== 'undefined') {
set['items.gear.owned.armor_special_birthday2020'] = true;
} else if (typeof user.items.gear.owned.armor_special_birthday2018 !== 'undefined') {
set['items.gear.owned.armor_special_birthday2019'] = true;
} else if (typeof user.items.gear.owned.armor_special_birthday2017 !== 'undefined') {
set['items.gear.owned.armor_special_birthday2018'] = true;
} else if (typeof user.items.gear.owned.armor_special_birthday2016 !== 'undefined') {
set['items.gear.owned.armor_special_birthday2017'] = true;
} else if (typeof user.items.gear.owned.armor_special_birthday2015 !== 'undefined') {
set['items.gear.owned.armor_special_birthday2016'] = true;
} else if (typeof user.items.gear.owned.armor_special_birthday !== 'undefined') {
set['items.gear.owned.armor_special_birthday2015'] = true;
} else {
set['items.gear.owned.armor_special_birthday'] = true;
}
push.notifications = {
type: 'ITEM_RECEIVED',
data: {
icon: 'notif_head_special_nye',
title: 'Birthday Bash Day 1!',
text: 'Enjoy your new Birthday Robe and 20 Gems on us!',
destination: 'equipment',
},
seen: false,
};
if (count % progressCount === 0) console.warn(`${count} ${user._id}`);
return await User.update({_id: user._id}, {$inc: inc, $set: set, $push: push}).exec();
}
export default async function processUsers () {
let query = {
migration: {$ne: MIGRATION_NAME},
'auth.timestamps.loggedin': {$gt: new Date('2022-12-23')},
};
const fields = {
_id: 1,
items: 1,
};
while (true) { // eslint-disable-line no-constant-condition
const users = await User // eslint-disable-line no-await-in-loop
.find(query)
.limit(250)
.sort({_id: 1})
.select(fields)
.lean()
.exec();
if (users.length === 0) {
console.warn('All appropriate users found and modified.');
console.warn(`\n${count} users processed\n`);
break;
} else {
query._id = {
$gt: users[users.length - 1],
};
}
await Promise.all(users.map(updateUser)); // eslint-disable-line no-await-in-loop
}
};
@@ -0,0 +1,69 @@
/* eslint-disable no-console */
import { v4 as uuid } from 'uuid';
import { model as User } from '../../../website/server/models/user';
const MIGRATION_NAME = '20230127_habit_birthday_day5';
const progressCount = 1000;
let count = 0;
async function updateUser (user) {
count += 1;
const set = {};
const push = {};
set.migration = MIGRATION_NAME;
set['items.gear.owned.back_special_anniversary'] = true;
set['items.gear.owned.body_special_anniversary'] = true;
set['items.gear.owned.eyewear_special_anniversary'] = true;
push.notifications = {
type: 'ITEM_RECEIVED',
data: {
icon: 'notif_head_special_nye',
title: 'Birthday Bash Day 5!',
text: 'Come celebrate by wearing your new Habitica Hero Cape, Collar, and Mask!',
destination: 'equipment',
},
seen: false,
};
if (count % progressCount === 0) console.warn(`${count} ${user._id}`);
return await User.update({_id: user._id}, {$set: set, $push: push}).exec();
}
export default async function processUsers () {
let query = {
migration: {$ne: MIGRATION_NAME},
'auth.timestamps.loggedin': {$gt: new Date('2022-12-23')},
};
const fields = {
_id: 1,
items: 1,
};
while (true) { // eslint-disable-line no-constant-condition
const users = await User // eslint-disable-line no-await-in-loop
.find(query)
.limit(250)
.sort({_id: 1})
.select(fields)
.lean()
.exec();
if (users.length === 0) {
console.warn('All appropriate users found and modified.');
console.warn(`\n${count} users processed\n`);
break;
} else {
query._id = {
$gt: users[users.length - 1],
};
}
await Promise.all(users.map(updateUser)); // eslint-disable-line no-await-in-loop
}
};
@@ -0,0 +1,79 @@
/* eslint-disable no-console */
import { v4 as uuid } from 'uuid';
import { model as User } from '../../../website/server/models/user';
const MIGRATION_NAME = '20230201_habit_birthday_day10';
const progressCount = 1000;
let count = 0;
async function updateUser (user) {
count += 1;
const set = {
migration: MIGRATION_NAME,
'purchased.background.birthday_bash': true,
};
const push = {
notifications: {
type: 'ITEM_RECEIVED',
data: {
icon: 'notif_head_special_nye',
title: 'Birthday Bash Day 10!',
text: 'Join in for the end of our birthday celebrations with 10th Birthday background, Cake, and achievement!',
destination: 'backgrounds',
},
seen: false,
},
};
const inc = {
'items.food.Cake_Skeleton': 1,
'items.food.Cake_Base': 1,
'items.food.Cake_CottonCandyBlue': 1,
'items.food.Cake_CottonCandyPink': 1,
'items.food.Cake_Shade': 1,
'items.food.Cake_White': 1,
'items.food.Cake_Golden': 1,
'items.food.Cake_Zombie': 1,
'items.food.Cake_Desert': 1,
'items.food.Cake_Red': 1,
'achievements.habitBirthdays': 1,
};
if (count % progressCount === 0) console.warn(`${count} ${user._id}`);
return await User.update({_id: user._id}, {$set: set, $push: push, $inc: inc }).exec();
}
export default async function processUsers () {
let query = {
migration: {$ne: MIGRATION_NAME},
'auth.timestamps.loggedin': {$gt: new Date('2022-12-23')},
};
const fields = {
_id: 1,
items: 1,
};
while (true) { // eslint-disable-line no-constant-condition
const users = await User // eslint-disable-line no-await-in-loop
.find(query)
.limit(250)
.sort({_id: 1})
.select(fields)
.lean()
.exec();
if (users.length === 0) {
console.warn('All appropriate users found and modified.');
console.warn(`\n${count} users processed\n`);
break;
} else {
query._id = {
$gt: users[users.length - 1],
};
}
await Promise.all(users.map(updateUser)); // eslint-disable-line no-await-in-loop
}
};
+166 -66
View File
@@ -1,6 +1,6 @@
{
"name": "habitica",
"version": "4.254.1",
"version": "4.260.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -27,24 +27,24 @@
"integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ=="
},
"@babel/core": {
"version": "7.20.5",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.5.tgz",
"integrity": "sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==",
"version": "7.20.12",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz",
"integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==",
"requires": {
"@ampproject/remapping": "^2.1.0",
"@babel/code-frame": "^7.18.6",
"@babel/generator": "^7.20.5",
"@babel/helper-compilation-targets": "^7.20.0",
"@babel/helper-module-transforms": "^7.20.2",
"@babel/helpers": "^7.20.5",
"@babel/parser": "^7.20.5",
"@babel/template": "^7.18.10",
"@babel/traverse": "^7.20.5",
"@babel/types": "^7.20.5",
"@babel/generator": "^7.20.7",
"@babel/helper-compilation-targets": "^7.20.7",
"@babel/helper-module-transforms": "^7.20.11",
"@babel/helpers": "^7.20.7",
"@babel/parser": "^7.20.7",
"@babel/template": "^7.20.7",
"@babel/traverse": "^7.20.12",
"@babel/types": "^7.20.7",
"convert-source-map": "^1.7.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
"json5": "^2.2.1",
"json5": "^2.2.2",
"semver": "^6.3.0"
},
"dependencies": {
@@ -56,16 +56,48 @@
"@babel/highlight": "^7.18.6"
}
},
"@babel/compat-data": {
"version": "7.20.10",
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz",
"integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg=="
},
"@babel/generator": {
"version": "7.20.5",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.5.tgz",
"integrity": "sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==",
"version": "7.20.7",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz",
"integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==",
"requires": {
"@babel/types": "^7.20.5",
"@babel/types": "^7.20.7",
"@jridgewell/gen-mapping": "^0.3.2",
"jsesc": "^2.5.1"
}
},
"@babel/helper-compilation-targets": {
"version": "7.20.7",
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz",
"integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==",
"requires": {
"@babel/compat-data": "^7.20.5",
"@babel/helper-validator-option": "^7.18.6",
"browserslist": "^4.21.3",
"lru-cache": "^5.1.1",
"semver": "^6.3.0"
}
},
"@babel/helper-module-transforms": {
"version": "7.20.11",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz",
"integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==",
"requires": {
"@babel/helper-environment-visitor": "^7.18.9",
"@babel/helper-module-imports": "^7.18.6",
"@babel/helper-simple-access": "^7.20.2",
"@babel/helper-split-export-declaration": "^7.18.6",
"@babel/helper-validator-identifier": "^7.19.1",
"@babel/template": "^7.20.7",
"@babel/traverse": "^7.20.10",
"@babel/types": "^7.20.7"
}
},
"@babel/helper-validator-identifier": {
"version": "7.19.1",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
@@ -82,31 +114,41 @@
}
},
"@babel/parser": {
"version": "7.20.5",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.5.tgz",
"integrity": "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA=="
"version": "7.20.7",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz",
"integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg=="
},
"@babel/traverse": {
"version": "7.20.5",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.5.tgz",
"integrity": "sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==",
"@babel/template": {
"version": "7.20.7",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz",
"integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==",
"requires": {
"@babel/code-frame": "^7.18.6",
"@babel/generator": "^7.20.5",
"@babel/parser": "^7.20.7",
"@babel/types": "^7.20.7"
}
},
"@babel/traverse": {
"version": "7.20.12",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.12.tgz",
"integrity": "sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==",
"requires": {
"@babel/code-frame": "^7.18.6",
"@babel/generator": "^7.20.7",
"@babel/helper-environment-visitor": "^7.18.9",
"@babel/helper-function-name": "^7.19.0",
"@babel/helper-hoist-variables": "^7.18.6",
"@babel/helper-split-export-declaration": "^7.18.6",
"@babel/parser": "^7.20.5",
"@babel/types": "^7.20.5",
"@babel/parser": "^7.20.7",
"@babel/types": "^7.20.7",
"debug": "^4.1.0",
"globals": "^11.1.0"
}
},
"@babel/types": {
"version": "7.20.5",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.5.tgz",
"integrity": "sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==",
"version": "7.20.7",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz",
"integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==",
"requires": {
"@babel/helper-string-parser": "^7.19.4",
"@babel/helper-validator-identifier": "^7.19.1",
@@ -123,6 +165,22 @@
"@jridgewell/trace-mapping": "^0.3.9"
}
},
"browserslist": {
"version": "4.21.4",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz",
"integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==",
"requires": {
"caniuse-lite": "^1.0.30001400",
"electron-to-chromium": "^1.4.251",
"node-releases": "^2.0.6",
"update-browserslist-db": "^1.0.9"
}
},
"caniuse-lite": {
"version": "1.0.30001442",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001442.tgz",
"integrity": "sha512-239m03Pqy0hwxYPYR5JwOIxRJfLTWtle9FV8zosfV5pHg+/51uD4nxcUlM8+mWWGfwKtt8lJNHnD3cWw9VZ6ow=="
},
"chalk": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
@@ -133,10 +191,37 @@
"supports-color": "^5.3.0"
}
},
"json5": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="
},
"lru-cache": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
"requires": {
"yallist": "^3.0.2"
}
},
"semver": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
},
"update-browserslist-db": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
"integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
"requires": {
"escalade": "^3.1.1",
"picocolors": "^1.0.0"
}
},
"yallist": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
}
}
},
@@ -581,13 +666,13 @@
}
},
"@babel/helpers": {
"version": "7.20.6",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.6.tgz",
"integrity": "sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==",
"version": "7.20.7",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz",
"integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==",
"requires": {
"@babel/template": "^7.18.10",
"@babel/traverse": "^7.20.5",
"@babel/types": "^7.20.5"
"@babel/template": "^7.20.7",
"@babel/traverse": "^7.20.7",
"@babel/types": "^7.20.7"
},
"dependencies": {
"@babel/code-frame": {
@@ -599,11 +684,11 @@
}
},
"@babel/generator": {
"version": "7.20.5",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.5.tgz",
"integrity": "sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==",
"version": "7.20.7",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz",
"integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==",
"requires": {
"@babel/types": "^7.20.5",
"@babel/types": "^7.20.7",
"@jridgewell/gen-mapping": "^0.3.2",
"jsesc": "^2.5.1"
}
@@ -624,31 +709,41 @@
}
},
"@babel/parser": {
"version": "7.20.5",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.5.tgz",
"integrity": "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA=="
"version": "7.20.7",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz",
"integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg=="
},
"@babel/traverse": {
"version": "7.20.5",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.5.tgz",
"integrity": "sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==",
"@babel/template": {
"version": "7.20.7",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz",
"integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==",
"requires": {
"@babel/code-frame": "^7.18.6",
"@babel/generator": "^7.20.5",
"@babel/parser": "^7.20.7",
"@babel/types": "^7.20.7"
}
},
"@babel/traverse": {
"version": "7.20.12",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.12.tgz",
"integrity": "sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==",
"requires": {
"@babel/code-frame": "^7.18.6",
"@babel/generator": "^7.20.7",
"@babel/helper-environment-visitor": "^7.18.9",
"@babel/helper-function-name": "^7.19.0",
"@babel/helper-hoist-variables": "^7.18.6",
"@babel/helper-split-export-declaration": "^7.18.6",
"@babel/parser": "^7.20.5",
"@babel/types": "^7.20.5",
"@babel/parser": "^7.20.7",
"@babel/types": "^7.20.7",
"debug": "^4.1.0",
"globals": "^11.1.0"
}
},
"@babel/types": {
"version": "7.20.5",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.5.tgz",
"integrity": "sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==",
"version": "7.20.7",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz",
"integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==",
"requires": {
"@babel/helper-string-parser": "^7.19.4",
"@babel/helper-validator-identifier": "^7.19.1",
@@ -3057,9 +3152,9 @@
"integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA=="
},
"axios": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.2.1.tgz",
"integrity": "sha512-I88cFiGu9ryt/tfVEi4kX2SITsvDddTajXTOFmt2uK1ZVA8LytjtdeyefdQWEf5PU8w+4SSJDoYnggflB5tW4A==",
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.2.2.tgz",
"integrity": "sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==",
"dev": true,
"requires": {
"follow-redirects": "^1.15.0",
@@ -9689,9 +9784,9 @@
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
},
"json5": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
"integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA=="
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.2.tgz",
"integrity": "sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ=="
},
"jsonfile": {
"version": "6.1.0",
@@ -14191,9 +14286,9 @@
}
},
"stripe": {
"version": "11.4.0",
"resolved": "https://registry.npmjs.org/stripe/-/stripe-11.4.0.tgz",
"integrity": "sha512-8feL70RhzN6i8rpUG5SC4ZN5KcPYCUfRYRk/yUcnHG8uLdS26AgKXAEozqddDGUUufRPKYuqs44kPg21/P5JRg==",
"version": "11.6.0",
"resolved": "https://registry.npmjs.org/stripe/-/stripe-11.6.0.tgz",
"integrity": "sha512-ht8S1l8CJJE3jtv2NM1mEQzZBkITYvb9uDpSeXYeNz9iJkFFgDU169htwOW00OdIESvFaIsGgWQatAE5dfOERQ==",
"requires": {
"@types/node": ">=8.1.0",
"qs": "^6.11.0"
@@ -14886,13 +14981,13 @@
"integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw=="
},
"tsconfig-paths": {
"version": "3.9.0",
"resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz",
"integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==",
"version": "3.14.1",
"resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz",
"integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==",
"requires": {
"@types/json5": "^0.0.29",
"json5": "^1.0.1",
"minimist": "^1.2.0",
"minimist": "^1.2.6",
"strip-bom": "^3.0.0"
},
"dependencies": {
@@ -14903,6 +14998,11 @@
"requires": {
"minimist": "^1.2.0"
}
},
"minimist": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
"integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g=="
}
}
},
+4 -4
View File
@@ -1,10 +1,10 @@
{
"name": "habitica",
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
"version": "4.254.1",
"version": "4.260.1",
"main": "./website/server/index.js",
"dependencies": {
"@babel/core": "^7.20.5",
"@babel/core": "^7.20.12",
"@babel/preset-env": "^7.20.2",
"@babel/register": "^7.18.9",
"@google-cloud/trace-agent": "^7.1.2",
@@ -67,7 +67,7 @@
"remove-markdown": "^0.5.0",
"rimraf": "^3.0.2",
"short-uuid": "^4.2.2",
"stripe": "^11.4.0",
"stripe": "^11.6.0",
"superagent": "^8.0.6",
"universal-analytics": "^0.5.3",
"useragent": "^2.1.9",
@@ -110,7 +110,7 @@
"apidoc": "gulp apidoc"
},
"devDependencies": {
"axios": "^1.2.1",
"axios": "^1.2.2",
"chai": "^4.3.7",
"chai-as-promised": "^7.1.1",
"chai-moment": "^0.1.0",
@@ -17,7 +17,7 @@ describe('Amazon Payments - Checkout', () => {
let closeOrderReferenceSpy;
let paymentBuyGemsStub;
let paymentCreateSubscritionStub;
let paymentCreateSubscriptionStub;
let amount = gemsBlock.price / 100;
function expectOrderReferenceSpy () {
@@ -85,8 +85,8 @@ describe('Amazon Payments - Checkout', () => {
paymentBuyGemsStub = sinon.stub(payments, 'buyGems');
paymentBuyGemsStub.resolves({});
paymentCreateSubscritionStub = sinon.stub(payments, 'createSubscription');
paymentCreateSubscritionStub.resolves({});
paymentCreateSubscriptionStub = sinon.stub(payments, 'createSubscription');
paymentCreateSubscriptionStub.resolves({});
sinon.stub(common, 'uuid').returns('uuid-generated');
sandbox.stub(gems, 'validateGiftMessage');
@@ -109,6 +109,7 @@ describe('Amazon Payments - Checkout', () => {
user,
paymentMethod,
headers,
sku: undefined,
};
if (gift) {
expectedArgs.gift = gift;
@@ -215,13 +216,14 @@ describe('Amazon Payments - Checkout', () => {
});
gift.member = receivingUser;
expect(paymentCreateSubscritionStub).to.be.calledOnce;
expect(paymentCreateSubscritionStub).to.be.calledWith({
expect(paymentCreateSubscriptionStub).to.be.calledOnce;
expect(paymentCreateSubscriptionStub).to.be.calledWith({
user,
paymentMethod: amzLib.constants.PAYMENT_METHOD_GIFT,
headers,
gift,
gemsBlock: undefined,
sku: undefined,
});
expectAmazonStubs();
});
+25 -25
View File
@@ -12,10 +12,10 @@ const { i18n } = common;
describe('Apple Payments', () => {
const subKey = 'basic_3mo';
describe('verifyGemPurchase', () => {
describe('verifyPurchase', () => {
let sku; let user; let token; let receipt; let
headers;
let iapSetupStub; let iapValidateStub; let iapIsValidatedStub; let paymentBuyGemsStub; let
let iapSetupStub; let iapValidateStub; let iapIsValidatedStub; let paymentBuySkuStub; let
iapGetPurchaseDataStub; let validateGiftMessageStub;
beforeEach(() => {
@@ -36,7 +36,7 @@ describe('Apple Payments', () => {
productId: 'com.habitrpg.ios.Habitica.21gems',
transactionId: token,
}]);
paymentBuyGemsStub = sinon.stub(payments, 'buyGems').resolves({});
paymentBuySkuStub = sinon.stub(payments, 'buySkuItem').resolves({});
validateGiftMessageStub = sinon.stub(gems, 'validateGiftMessage');
});
@@ -45,7 +45,7 @@ describe('Apple Payments', () => {
iap.validate.restore();
iap.isValidated.restore();
iap.getPurchaseData.restore();
payments.buyGems.restore();
payments.buySkuItem.restore();
gems.validateGiftMessage.restore();
});
@@ -54,7 +54,7 @@ describe('Apple Payments', () => {
iapIsValidatedStub = sinon.stub(iap, 'isValidated')
.returns(false);
await expect(applePayments.verifyGemPurchase({ user, receipt, headers }))
await expect(applePayments.verifyPurchase({ user, receipt, headers }))
.to.eventually.be.rejected.and.to.eql({
httpCode: 401,
name: 'NotAuthorized',
@@ -66,7 +66,7 @@ describe('Apple Payments', () => {
iapGetPurchaseDataStub.restore();
iapGetPurchaseDataStub = sinon.stub(iap, 'getPurchaseData').returns([]);
await expect(applePayments.verifyGemPurchase({ user, receipt, headers }))
await expect(applePayments.verifyPurchase({ user, receipt, headers }))
.to.eventually.be.rejected.and.to.eql({
httpCode: 401,
name: 'NotAuthorized',
@@ -76,7 +76,7 @@ describe('Apple Payments', () => {
it('errors if the user cannot purchase gems', async () => {
sinon.stub(user, 'canGetGems').resolves(false);
await expect(applePayments.verifyGemPurchase({ user, receipt, headers }))
await expect(applePayments.verifyPurchase({ user, receipt, headers }))
.to.eventually.be.rejected.and.to.eql({
httpCode: 401,
name: 'NotAuthorized',
@@ -94,14 +94,16 @@ describe('Apple Payments', () => {
productId: 'badProduct',
transactionId: token,
}]);
paymentBuySkuStub.restore();
await expect(applePayments.verifyGemPurchase({ user, receipt, headers }))
await expect(applePayments.verifyPurchase({ user, receipt, headers }))
.to.eventually.be.rejected.and.to.eql({
httpCode: 401,
name: 'NotAuthorized',
httpCode: 400,
name: 'BadRequest',
message: applePayments.constants.RESPONSE_INVALID_ITEM,
});
paymentBuySkuStub = sinon.stub(payments, 'buySkuItem').resolves({});
user.canGetGems.restore();
});
@@ -138,7 +140,7 @@ describe('Apple Payments', () => {
}]);
sinon.stub(user, 'canGetGems').resolves(true);
await applePayments.verifyGemPurchase({ user, receipt, headers });
await applePayments.verifyPurchase({ user, receipt, headers });
expect(iapSetupStub).to.be.calledOnce;
expect(iapValidateStub).to.be.calledOnce;
@@ -148,13 +150,13 @@ describe('Apple Payments', () => {
expect(iapGetPurchaseDataStub).to.be.calledOnce;
expect(validateGiftMessageStub).to.not.be.called;
expect(paymentBuyGemsStub).to.be.calledOnce;
expect(paymentBuyGemsStub).to.be.calledWith({
expect(paymentBuySkuStub).to.be.calledOnce;
expect(paymentBuySkuStub).to.be.calledWith({
user,
paymentMethod: applePayments.constants.PAYMENT_METHOD_APPLE,
gemsBlock: common.content.gems[gemTest.gemsBlock],
headers,
gift: undefined,
paymentMethod: applePayments.constants.PAYMENT_METHOD_APPLE,
sku: gemTest.productId,
headers,
});
expect(user.canGetGems).to.be.calledOnce;
user.canGetGems.restore();
@@ -173,7 +175,7 @@ describe('Apple Payments', () => {
}]);
const gift = { uuid: receivingUser._id };
await applePayments.verifyGemPurchase({
await applePayments.verifyPurchase({
user, gift, receipt, headers,
});
@@ -187,18 +189,16 @@ describe('Apple Payments', () => {
expect(validateGiftMessageStub).to.be.calledOnce;
expect(validateGiftMessageStub).to.be.calledWith(gift, user);
expect(paymentBuyGemsStub).to.be.calledOnce;
expect(paymentBuyGemsStub).to.be.calledWith({
expect(paymentBuySkuStub).to.be.calledOnce;
expect(paymentBuySkuStub).to.be.calledWith({
user,
paymentMethod: applePayments.constants.PAYMENT_METHOD_APPLE,
headers,
gift: {
type: 'gems',
gems: { amount: 4 },
member: sinon.match({ _id: receivingUser._id }),
uuid: receivingUser._id,
member: sinon.match({ _id: receivingUser._id }),
},
gemsBlock: common.content.gems['4gems'],
paymentMethod: applePayments.constants.PAYMENT_METHOD_APPLE,
sku: 'com.habitrpg.ios.Habitica.4gems',
headers,
});
});
});
+34 -29
View File
@@ -12,11 +12,11 @@ const { i18n } = common;
describe('Google Payments', () => {
const subKey = 'basic_3mo';
describe('verifyGemPurchase', () => {
describe('verifyPurchase', () => {
let sku; let user; let token; let receipt; let signature; let
headers; const gemsBlock = common.content.gems['21gems'];
headers;
let iapSetupStub; let iapValidateStub; let iapIsValidatedStub; let
paymentBuyGemsStub; let validateGiftMessageStub;
paymentBuySkuStub; let validateGiftMessageStub;
beforeEach(() => {
sku = 'com.habitrpg.android.habitica.iap.21gems';
@@ -27,11 +27,10 @@ describe('Google Payments', () => {
iapSetupStub = sinon.stub(iap, 'setup')
.resolves();
iapValidateStub = sinon.stub(iap, 'validate')
.resolves({});
iapValidateStub = sinon.stub(iap, 'validate').resolves({ productId: sku });
iapIsValidatedStub = sinon.stub(iap, 'isValidated')
.returns(true);
paymentBuyGemsStub = sinon.stub(payments, 'buyGems').resolves({});
paymentBuySkuStub = sinon.stub(payments, 'buySkuItem').resolves({});
validateGiftMessageStub = sinon.stub(gems, 'validateGiftMessage');
});
@@ -39,7 +38,7 @@ describe('Google Payments', () => {
iap.setup.restore();
iap.validate.restore();
iap.isValidated.restore();
payments.buyGems.restore();
payments.buySkuItem.restore();
gems.validateGiftMessage.restore();
});
@@ -48,7 +47,7 @@ describe('Google Payments', () => {
iapIsValidatedStub = sinon.stub(iap, 'isValidated')
.returns(false);
await expect(googlePayments.verifyGemPurchase({
await expect(googlePayments.verifyPurchase({
user, receipt, signature, headers,
}))
.to.eventually.be.rejected.and.to.eql({
@@ -60,21 +59,25 @@ describe('Google Payments', () => {
it('should throw an error if productId is invalid', async () => {
receipt = `{"token": "${token}", "productId": "invalid"}`;
iapValidateStub.restore();
iapValidateStub = sinon.stub(iap, 'validate').resolves({});
await expect(googlePayments.verifyGemPurchase({
paymentBuySkuStub.restore();
await expect(googlePayments.verifyPurchase({
user, receipt, signature, headers,
}))
.to.eventually.be.rejected.and.to.eql({
httpCode: 401,
name: 'NotAuthorized',
httpCode: 400,
name: 'BadRequest',
message: googlePayments.constants.RESPONSE_INVALID_ITEM,
});
paymentBuySkuStub = sinon.stub(payments, 'buySkuItem').resolves({});
});
it('should throw an error if user cannot purchase gems', async () => {
sinon.stub(user, 'canGetGems').resolves(false);
await expect(googlePayments.verifyGemPurchase({
await expect(googlePayments.verifyPurchase({
user, receipt, signature, headers,
}))
.to.eventually.be.rejected.and.to.eql({
@@ -88,7 +91,7 @@ describe('Google Payments', () => {
it('purchases gems', async () => {
sinon.stub(user, 'canGetGems').resolves(true);
await googlePayments.verifyGemPurchase({
await googlePayments.verifyPurchase({
user, receipt, signature, headers,
});
@@ -101,15 +104,17 @@ describe('Google Payments', () => {
signature,
});
expect(iapIsValidatedStub).to.be.calledOnce;
expect(iapIsValidatedStub).to.be.calledWith({});
expect(iapIsValidatedStub).to.be.calledWith(
{ productId: sku },
);
expect(paymentBuyGemsStub).to.be.calledOnce;
expect(paymentBuyGemsStub).to.be.calledWith({
expect(paymentBuySkuStub).to.be.calledOnce;
expect(paymentBuySkuStub).to.be.calledWith({
user,
paymentMethod: googlePayments.constants.PAYMENT_METHOD_GOOGLE,
gemsBlock,
headers,
gift: undefined,
paymentMethod: googlePayments.constants.PAYMENT_METHOD_GOOGLE,
sku,
headers,
});
expect(user.canGetGems).to.be.calledOnce;
user.canGetGems.restore();
@@ -120,7 +125,7 @@ describe('Google Payments', () => {
await receivingUser.save();
const gift = { uuid: receivingUser._id };
await googlePayments.verifyGemPurchase({
await googlePayments.verifyPurchase({
user, gift, receipt, signature, headers,
});
@@ -134,20 +139,20 @@ describe('Google Payments', () => {
signature,
});
expect(iapIsValidatedStub).to.be.calledOnce;
expect(iapIsValidatedStub).to.be.calledWith({});
expect(iapIsValidatedStub).to.be.calledWith(
{ productId: sku },
);
expect(paymentBuyGemsStub).to.be.calledOnce;
expect(paymentBuyGemsStub).to.be.calledWith({
expect(paymentBuySkuStub).to.be.calledOnce;
expect(paymentBuySkuStub).to.be.calledWith({
user,
paymentMethod: googlePayments.constants.PAYMENT_METHOD_GOOGLE,
gemsBlock,
headers,
gift: {
type: 'gems',
gems: { amount: 21 },
member: sinon.match({ _id: receivingUser._id }),
uuid: receivingUser._id,
member: sinon.match({ _id: receivingUser._id }),
},
paymentMethod: googlePayments.constants.PAYMENT_METHOD_GOOGLE,
sku,
headers,
});
});
});
@@ -0,0 +1,40 @@
import {
canBuySkuItem,
} from '../../../../../website/server/libs/payments/skuItem';
import { model as User } from '../../../../../website/server/models/user';
describe('payments/skuItems', () => {
let user;
let clock;
beforeEach(() => {
user = new User();
clock = null;
});
afterEach(() => {
if (clock !== null) clock.restore();
});
describe('#canBuySkuItem', () => {
it('returns true for random sku', () => {
expect(canBuySkuItem('something', user)).to.be.true;
});
describe('#gryphatrice', () => {
const sku = 'Pet-Gryphatrice-Jubilant';
it('returns true during birthday week', () => {
clock = sinon.useFakeTimers(new Date('2023-01-31'));
expect(canBuySkuItem(sku, user)).to.be.true;
});
it('returns false outside of birthday week', () => {
clock = sinon.useFakeTimers(new Date('2023-01-20'));
expect(canBuySkuItem(sku, user)).to.be.false;
});
it('returns false if user already owns it', () => {
clock = sinon.useFakeTimers(new Date('2023-02-01'));
user.items.pets['Gryphatrice-Jubilant'] = 5;
expect(canBuySkuItem(sku, user)).to.be.false;
});
});
});
});
@@ -66,7 +66,7 @@ describe('POST /groups/:id/chat/:id/clearflags', () => {
type: 'party',
privacy: 'private',
},
members: 1,
members: 2,
});
await members[0].update({ 'auth.timestamps.created': new Date('2022-01-01') });
@@ -76,12 +76,17 @@ describe('POST /groups/:id/chat/:id/clearflags', () => {
await admin.post(`/groups/${group._id}/chat/${privateMessage.id}/flag`);
// first test that the flag was actually successful
// author always sees own message; flag count is hidden from non-admins
let messages = await members[0].get(`/groups/${group._id}/chat`);
expect(messages[0].flagCount).to.eql(5);
expect(messages[0].flagCount).to.eql(0);
messages = await members[1].get(`/groups/${group._id}/chat`);
expect(messages.length).to.eql(0);
// admin cannot directly request private group chat, but after unflag,
// message should be revealed again and still have flagCount of 0
await admin.post(`/groups/${group._id}/chat/${privateMessage.id}/clearflags`);
messages = await members[0].get(`/groups/${group._id}/chat`);
messages = await members[1].get(`/groups/${group._id}/chat`);
expect(messages.length).to.eql(1);
expect(messages[0].flagCount).to.eql(0);
});
@@ -21,11 +21,11 @@ describe('payments : apple #verify', () => {
let verifyStub;
beforeEach(async () => {
verifyStub = sinon.stub(applePayments, 'verifyGemPurchase').resolves({});
verifyStub = sinon.stub(applePayments, 'verifyPurchase').resolves({});
});
afterEach(() => {
applePayments.verifyGemPurchase.restore();
applePayments.verifyPurchase.restore();
});
it('makes a purchase', async () => {
@@ -21,11 +21,11 @@ describe('payments : google #verify', () => {
let verifyStub;
beforeEach(async () => {
verifyStub = sinon.stub(googlePayments, 'verifyGemPurchase').resolves({});
verifyStub = sinon.stub(googlePayments, 'verifyPurchase').resolves({});
});
afterEach(() => {
googlePayments.verifyGemPurchase.restore();
googlePayments.verifyPurchase.restore();
});
it('makes a purchase', async () => {
+2296 -747
View File
File diff suppressed because it is too large Load Diff
+5 -5
View File
@@ -19,10 +19,10 @@
"@storybook/addon-notes": "5.3.21",
"@storybook/addons": "6.5.9",
"@storybook/vue": "6.5.14",
"@vue/cli-plugin-babel": "^4.5.15",
"@vue/cli-plugin-babel": "^5.0.8",
"@vue/cli-plugin-eslint": "^4.5.19",
"@vue/cli-plugin-router": "^5.0.8",
"@vue/cli-plugin-unit-mocha": "^4.5.15",
"@vue/cli-plugin-unit-mocha": "^5.0.8",
"@vue/cli-service": "^4.5.15",
"@vue/test-utils": "1.0.0-beta.29",
"amplitude-js": "^8.21.3",
@@ -32,7 +32,7 @@
"bootstrap": "^4.6.0",
"bootstrap-vue": "^2.23.1",
"chai": "^4.3.7",
"core-js": "^3.26.1",
"core-js": "^3.27.2",
"dompurify": "^2.4.1",
"eslint": "^6.8.0",
"eslint-config-habitrpg": "^6.2.0",
@@ -42,7 +42,7 @@
"hellojs": "^1.19.5",
"inspectpack": "^4.7.1",
"intro.js": "^6.0.0",
"jquery": "^3.6.1",
"jquery": "^3.6.3",
"lodash": "^4.17.21",
"moment": "^2.29.4",
"nconf": "^0.12.0",
@@ -66,6 +66,6 @@
"webpack": "^4.46.0"
},
"devDependencies": {
"@babel/plugin-proposal-optional-chaining": "^7.18.9"
"@babel/plugin-proposal-optional-chaining": "^7.20.7"
}
}
+6
View File
@@ -35,6 +35,7 @@
<sub-canceled-modal v-if="isUserLoaded" />
<bug-report-modal v-if="isUserLoaded" />
<bug-report-success-modal v-if="isUserLoaded" />
<birthday-modal />
<snackbars />
<router-view v-if="!isUserLoggedIn || isStaticPage" />
<template v-else>
@@ -42,6 +43,7 @@
<damage-paused-banner />
<gems-promo-banner />
<gift-promo-banner />
<birthday-banner />
<notifications-display />
<app-menu />
<div
@@ -153,11 +155,13 @@
import axios from 'axios';
import { loadProgressBar } from 'axios-progress-bar';
import birthdayModal from '@/components/news/birthdayModal';
import AppMenu from './components/header/menu';
import AppHeader from './components/header/index';
import DamagePausedBanner from './components/header/banners/damagePaused';
import GemsPromoBanner from './components/header/banners/gemsPromo';
import GiftPromoBanner from './components/header/banners/giftPromo';
import BirthdayBanner from './components/header/banners/birthdayBanner';
import AppFooter from './components/appFooter';
import notificationsDisplay from './components/notifications';
import snackbars from './components/snackbars/notifications';
@@ -191,9 +195,11 @@ export default {
AppMenu,
AppHeader,
AppFooter,
birthdayModal,
DamagePausedBanner,
GemsPromoBanner,
GiftPromoBanner,
BirthdayBanner,
notificationsDisplay,
snackbars,
BuyModal,
@@ -156,6 +156,12 @@
height: 99px;
}
.Pet-Gryphatrice-Jubilant {
background: url("https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Gryphatrice-Jubilant.gif") no-repeat;
width: 81px;
height: 96px;
}
.Mount_Head_Gryphon-Gryphatrice, .Mount_Body_Gryphon-Gryphatrice {
width: 135px;
height: 135px;
@@ -665,6 +665,11 @@
width: 141px;
height: 147px;
}
.background_birthday_bash {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_birthday_bash.png');
width: 141px;
height: 147px;
}
.background_birthday_party {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_birthday_party.png');
width: 141px;
@@ -940,6 +945,11 @@
width: 141px;
height: 147px;
}
.background_fancy_bedroom {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_fancy_bedroom.png');
width: 141px;
height: 147px;
}
.background_fantastical_shoe_store {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_fantastical_shoe_store.png');
width: 141px;
@@ -1159,6 +1169,11 @@
width: 141px;
height: 147px;
}
.background_golden_birdcage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_golden_birdcage.png');
width: 141px;
height: 147px;
}
.background_gorgeous_greenhouse {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_gorgeous_greenhouse.png');
width: 141px;
@@ -1314,6 +1329,11 @@
width: 141px;
height: 147px;
}
.background_in_front_of_fountain {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_in_front_of_fountain.png');
width: 141px;
height: 147px;
}
.background_in_the_armory {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_in_the_armory.png');
width: 141px;
@@ -1624,6 +1644,11 @@
width: 141px;
height: 147px;
}
.background_rime_ice {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_rime_ice.png');
width: 141px;
height: 147px;
}
.background_river_of_lava {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_river_of_lava.png');
width: 141px;
@@ -1729,6 +1754,11 @@
width: 141px;
height: 147px;
}
.background_snowy_temple {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_snowy_temple.png');
width: 141px;
height: 147px;
}
.background_snowy_village {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_snowy_village.png');
width: 141px;
@@ -2059,6 +2089,11 @@
width: 141px;
height: 147px;
}
.background_winter_lake_with_swans {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_winter_lake_with_swans.png');
width: 141px;
height: 147px;
}
.background_winter_night {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_winter_night.png');
width: 141px;
@@ -2281,6 +2316,11 @@
width: 68px;
height: 68px;
}
.icon_background_birthday_bash {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_birthday_bash.png');
width: 68px;
height: 68px;
}
.icon_background_birthday_party {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_birthday_party.png');
width: 68px;
@@ -2561,6 +2601,11 @@
width: 68px;
height: 68px;
}
.icon_background_fancy_bedroom {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_fancy_bedroom.png');
width: 68px;
height: 68px;
}
.icon_background_fantastical_shoe_store {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_fantastical_shoe_store.png');
width: 68px;
@@ -2780,6 +2825,11 @@
width: 68px;
height: 68px;
}
.icon_background_golden_birdcage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_golden_birdcage.png');
width: 68px;
height: 68px;
}
.icon_background_gorgeous_greenhouse {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_gorgeous_greenhouse.png');
width: 68px;
@@ -2935,6 +2985,11 @@
width: 68px;
height: 68px;
}
.icon_background_in_front_of_fountain {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_in_front_of_fountain.png');
width: 68px;
height: 68px;
}
.icon_background_in_the_armory {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_in_the_armory.png');
width: 68px;
@@ -3245,6 +3300,11 @@
width: 68px;
height: 68px;
}
.icon_background_rime_ice {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_rime_ice.png');
width: 60px;
height: 60px;
}
.icon_background_river_of_lava {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_river_of_lava.png');
width: 68px;
@@ -3350,6 +3410,11 @@
width: 68px;
height: 68px;
}
.icon_background_snowy_temple {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_snowy_temple.png');
width: 68px;
height: 68px;
}
.icon_background_snowy_village {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_snowy_village.png');
width: 68px;
@@ -3685,6 +3750,11 @@
width: 68px;
height: 68px;
}
.icon_background_winter_lake_with_swans {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_winter_lake_with_swans.png');
width: 68px;
height: 68px;
}
.icon_background_winter_night {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_winter_night.png');
width: 68px;
@@ -18555,6 +18625,11 @@
width: 114px;
height: 90px;
}
.broad_armor_armoire_shawlCollarCoat {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_armoire_shawlCollarCoat.png');
width: 114px;
height: 90px;
}
.broad_armor_armoire_sheetGhostCostume {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_armoire_sheetGhostCostume.png');
width: 114px;
@@ -18615,6 +18690,11 @@
width: 114px;
height: 90px;
}
.broad_armor_armoire_teaGown {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_armoire_teaGown.png');
width: 114px;
height: 90px;
}
.broad_armor_armoire_vermilionArcherArmor {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_armoire_vermilionArcherArmor.png');
width: 90px;
@@ -19055,6 +19135,11 @@
width: 90px;
height: 90px;
}
.head_armoire_teaHat {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_armoire_teaHat.png');
width: 114px;
height: 90px;
}
.head_armoire_toqueBlanche {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_armoire_toqueBlanche.png');
width: 114px;
@@ -19420,6 +19505,11 @@
width: 114px;
height: 87px;
}
.shield_armoire_teaKettle {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_armoire_teaKettle.png');
width: 114px;
height: 90px;
}
.shield_armoire_treasureMap {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_armoire_treasureMap.png');
width: 114px;
@@ -19790,6 +19880,11 @@
width: 68px;
height: 68px;
}
.shop_armor_armoire_shawlCollarCoat {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_armoire_shawlCollarCoat.png');
width: 68px;
height: 68px;
}
.shop_armor_armoire_sheetGhostCostume {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_armoire_sheetGhostCostume.png');
width: 68px;
@@ -19850,6 +19945,11 @@
width: 68px;
height: 68px;
}
.shop_armor_armoire_teaGown {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_armoire_teaGown.png');
width: 68px;
height: 68px;
}
.shop_armor_armoire_vermilionArcherArmor {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_armoire_vermilionArcherArmor.png');
width: 68px;
@@ -20305,6 +20405,11 @@
width: 68px;
height: 68px;
}
.shop_head_armoire_teaHat {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_armoire_teaHat.png');
width: 68px;
height: 68px;
}
.shop_head_armoire_toqueBlanche {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_armoire_toqueBlanche.png');
width: 68px;
@@ -20670,6 +20775,11 @@
width: 68px;
height: 68px;
}
.shop_shield_armoire_teaKettle {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_armoire_teaKettle.png');
width: 68px;
height: 68px;
}
.shop_shield_armoire_treasureMap {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_armoire_treasureMap.png');
width: 68px;
@@ -21500,6 +21610,11 @@
width: 114px;
height: 90px;
}
.slim_armor_armoire_shawlCollarCoat {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_armoire_shawlCollarCoat.png');
width: 114px;
height: 90px;
}
.slim_armor_armoire_sheetGhostCostume {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_armoire_sheetGhostCostume.png');
width: 114px;
@@ -21560,6 +21675,11 @@
width: 114px;
height: 90px;
}
.slim_armor_armoire_teaGown {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_armoire_teaGown.png');
width: 114px;
height: 90px;
}
.slim_armor_armoire_vermilionArcherArmor {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_armoire_vermilionArcherArmor.png');
width: 90px;
@@ -22780,6 +22900,16 @@
width: 68px;
height: 68px;
}
.back_special_anniversary {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/back_special_anniversary.png');
width: 114px;
height: 90px;
}
.body_special_anniversary {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/body_special_anniversary.png');
width: 114px;
height: 90px;
}
.broad_armor_special_birthday {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_birthday.png');
width: 90px;
@@ -22825,6 +22955,16 @@
width: 114px;
height: 90px;
}
.broad_armor_special_birthday2023 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_birthday2023.png');
width: 114px;
height: 90px;
}
.eyewear_special_anniversary {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/eyewear_special_anniversary.png');
width: 90px;
height: 90px;
}
.shop_armor_special_birthday {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_birthday.png');
width: 68px;
@@ -22870,6 +23010,26 @@
width: 68px;
height: 68px;
}
.shop_armor_special_birthday2023 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_birthday2023.png');
width: 68px;
height: 68px;
}
.shop_back_special_anniversary {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_back_special_anniversary.png');
width: 68px;
height: 68px;
}
.shop_body_special_anniversary {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_body_special_anniversary.png');
width: 68px;
height: 68px;
}
.shop_eyewear_special_anniversary {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_eyewear_special_anniversary.png');
width: 68px;
height: 68px;
}
.slim_armor_special_birthday {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_birthday.png');
width: 90px;
@@ -22915,6 +23075,11 @@
width: 114px;
height: 90px;
}
.slim_armor_special_birthday2023 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_birthday2023.png');
width: 114px;
height: 90px;
}
.broad_armor_special_fall2015Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_fall2015Healer.png');
width: 93px;
@@ -27535,6 +27700,56 @@
width: 114px;
height: 90px;
}
.back_mystery_202301 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/back_mystery_202301.png');
width: 114px;
height: 90px;
}
.head_mystery_202301 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_mystery_202301.png');
width: 114px;
height: 90px;
}
.shop_back_mystery_202301 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_back_mystery_202301.png');
width: 68px;
height: 68px;
}
.shop_head_mystery_202301 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_mystery_202301.png');
width: 68px;
height: 68px;
}
.shop_set_mystery_202301 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_set_mystery_202301.png');
width: 68px;
height: 68px;
}
.back_mystery_202302 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/back_mystery_202302.png');
width: 114px;
height: 90px;
}
.headAccessory_mystery_202302 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_mystery_202302.png');
width: 114px;
height: 90px;
}
.shop_back_mystery_202302 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_back_mystery_202302.png');
width: 68px;
height: 68px;
}
.shop_headAccessory_mystery_202302 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_mystery_202302.png');
width: 68px;
height: 68px;
}
.shop_set_mystery_202302 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_set_mystery_202302.png');
width: 68px;
height: 68px;
}
.broad_armor_mystery_301404 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_mystery_301404.png');
width: 90px;
@@ -32305,11 +32520,6 @@
width: 68px;
height: 68px;
}
.shop_weapon_special_Winter2023Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_Winter2023Rogue.png');
width: 68px;
height: 68px;
}
.shop_weapon_special_candycane {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_candycane.png');
width: 68px;
@@ -32495,6 +32705,11 @@
width: 68px;
height: 68px;
}
.shop_weapon_special_winter2023Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_winter2023Rogue.png');
width: 68px;
height: 68px;
}
.shop_weapon_special_winter2023Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_winter2023Warrior.png');
width: 68px;
@@ -34748,6 +34963,11 @@
width: 40px;
height: 40px;
}
.notif_head_special_nye {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/notif_head_special_nye.png');
width: 28px;
height: 28px;
}
.notif_inventory_present_01 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/notif_inventory_present_01.png');
width: 28px;
@@ -35253,6 +35473,11 @@
width: 190px;
height: 183px;
}
.quest_pinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/quest_pinkMarble.png');
width: 219px;
height: 219px;
}
.quest_pterodactyl {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/quest_pterodactyl.png');
width: 219px;
@@ -36033,6 +36258,11 @@
width: 68px;
height: 68px;
}
.inventory_quest_scroll_pinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/inventory_quest_scroll_pinkMarble.png');
width: 68px;
height: 68px;
}
.inventory_quest_scroll_pterodactyl {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/inventory_quest_scroll_pterodactyl.png');
width: 68px;
@@ -37383,6 +37613,11 @@
width: 105px;
height: 105px;
}
.Mount_Body_BearCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_BearCub-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Body_BearCub-Polar {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_BearCub-Polar.png');
width: 105px;
@@ -37808,6 +38043,11 @@
width: 105px;
height: 105px;
}
.Mount_Body_Cactus-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Cactus-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Body_Cactus-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Cactus-PolkaDot.png');
width: 105px;
@@ -38328,6 +38568,11 @@
width: 105px;
height: 105px;
}
.Mount_Body_Dragon-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Dragon-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Body_Dragon-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Dragon-PolkaDot.png');
width: 105px;
@@ -38748,6 +38993,11 @@
width: 105px;
height: 105px;
}
.Mount_Body_FlyingPig-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_FlyingPig-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Body_FlyingPig-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_FlyingPig-PolkaDot.png');
width: 105px;
@@ -39018,6 +39268,11 @@
width: 105px;
height: 105px;
}
.Mount_Body_Fox-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Fox-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Body_Fox-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Fox-PolkaDot.png');
width: 105px;
@@ -39678,6 +39933,11 @@
width: 105px;
height: 105px;
}
.Mount_Body_LionCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_LionCub-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Body_LionCub-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_LionCub-PolkaDot.png');
width: 105px;
@@ -40168,6 +40428,11 @@
width: 105px;
height: 105px;
}
.Mount_Body_PandaCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_PandaCub-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Body_PandaCub-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_PandaCub-PolkaDot.png');
width: 105px;
@@ -41393,6 +41658,11 @@
width: 105px;
height: 105px;
}
.Mount_Body_TigerCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_TigerCub-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Body_TigerCub-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_TigerCub-PolkaDot.png');
width: 105px;
@@ -41973,6 +42243,11 @@
width: 135px;
height: 135px;
}
.Mount_Body_Wolf-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Wolf-PinkMarble.png');
width: 135px;
height: 135px;
}
.Mount_Body_Wolf-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Wolf-PolkaDot.png');
width: 135px;
@@ -42493,6 +42768,11 @@
width: 105px;
height: 105px;
}
.Mount_Head_BearCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_BearCub-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Head_BearCub-Polar {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_BearCub-Polar.png');
width: 105px;
@@ -42918,6 +43198,11 @@
width: 105px;
height: 105px;
}
.Mount_Head_Cactus-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Cactus-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Head_Cactus-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Cactus-PolkaDot.png');
width: 105px;
@@ -43438,6 +43723,11 @@
width: 105px;
height: 105px;
}
.Mount_Head_Dragon-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Dragon-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Head_Dragon-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Dragon-PolkaDot.png');
width: 105px;
@@ -43858,6 +44148,11 @@
width: 105px;
height: 105px;
}
.Mount_Head_FlyingPig-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_FlyingPig-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Head_FlyingPig-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_FlyingPig-PolkaDot.png');
width: 105px;
@@ -44128,6 +44423,11 @@
width: 105px;
height: 105px;
}
.Mount_Head_Fox-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Fox-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Head_Fox-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Fox-PolkaDot.png');
width: 105px;
@@ -44788,6 +45088,11 @@
width: 105px;
height: 105px;
}
.Mount_Head_LionCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_LionCub-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Head_LionCub-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_LionCub-PolkaDot.png');
width: 105px;
@@ -45278,6 +45583,11 @@
width: 105px;
height: 105px;
}
.Mount_Head_PandaCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_PandaCub-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Head_PandaCub-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_PandaCub-PolkaDot.png');
width: 105px;
@@ -46503,6 +46813,11 @@
width: 105px;
height: 105px;
}
.Mount_Head_TigerCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_TigerCub-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Head_TigerCub-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_TigerCub-PolkaDot.png');
width: 105px;
@@ -47083,6 +47398,11 @@
width: 135px;
height: 135px;
}
.Mount_Head_Wolf-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Wolf-PinkMarble.png');
width: 135px;
height: 135px;
}
.Mount_Head_Wolf-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Wolf-PolkaDot.png');
width: 135px;
@@ -47608,6 +47928,11 @@
width: 81px;
height: 99px;
}
.Mount_Icon_BearCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_BearCub-PinkMarble.png');
width: 81px;
height: 99px;
}
.Mount_Icon_BearCub-Polar {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_BearCub-Polar.png');
width: 81px;
@@ -48033,6 +48358,11 @@
width: 81px;
height: 99px;
}
.Mount_Icon_Cactus-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_Cactus-PinkMarble.png');
width: 81px;
height: 99px;
}
.Mount_Icon_Cactus-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_Cactus-PolkaDot.png');
width: 81px;
@@ -48553,6 +48883,11 @@
width: 81px;
height: 99px;
}
.Mount_Icon_Dragon-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_Dragon-PinkMarble.png');
width: 81px;
height: 99px;
}
.Mount_Icon_Dragon-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_Dragon-PolkaDot.png');
width: 81px;
@@ -48973,6 +49308,11 @@
width: 81px;
height: 99px;
}
.Mount_Icon_FlyingPig-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_FlyingPig-PinkMarble.png');
width: 81px;
height: 99px;
}
.Mount_Icon_FlyingPig-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_FlyingPig-PolkaDot.png');
width: 81px;
@@ -49243,6 +49583,11 @@
width: 81px;
height: 99px;
}
.Mount_Icon_Fox-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_Fox-PinkMarble.png');
width: 81px;
height: 99px;
}
.Mount_Icon_Fox-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_Fox-PolkaDot.png');
width: 81px;
@@ -49908,6 +50253,11 @@
width: 81px;
height: 99px;
}
.Mount_Icon_LionCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_LionCub-PinkMarble.png');
width: 81px;
height: 99px;
}
.Mount_Icon_LionCub-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_LionCub-PolkaDot.png');
width: 81px;
@@ -50398,6 +50748,11 @@
width: 81px;
height: 99px;
}
.Mount_Icon_PandaCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_PandaCub-PinkMarble.png');
width: 81px;
height: 99px;
}
.Mount_Icon_PandaCub-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_PandaCub-PolkaDot.png');
width: 81px;
@@ -51623,6 +51978,11 @@
width: 81px;
height: 99px;
}
.Mount_Icon_TigerCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_TigerCub-PinkMarble.png');
width: 81px;
height: 99px;
}
.Mount_Icon_TigerCub-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_TigerCub-PolkaDot.png');
width: 81px;
@@ -52203,6 +52563,11 @@
width: 81px;
height: 99px;
}
.Mount_Icon_Wolf-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_Wolf-PinkMarble.png');
width: 81px;
height: 99px;
}
.Mount_Icon_Wolf-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_Wolf-PolkaDot.png');
width: 81px;
@@ -52733,6 +53098,11 @@
width: 81px;
height: 99px;
}
.Pet-BearCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-BearCub-PinkMarble.png');
width: 81px;
height: 99px;
}
.Pet-BearCub-Polar {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-BearCub-Polar.png');
width: 81px;
@@ -53173,6 +53543,11 @@
width: 81px;
height: 99px;
}
.Pet-Cactus-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Cactus-PinkMarble.png');
width: 81px;
height: 99px;
}
.Pet-Cactus-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Cactus-PolkaDot.png');
width: 81px;
@@ -53713,6 +54088,11 @@
width: 81px;
height: 99px;
}
.Pet-Dragon-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Dragon-PinkMarble.png');
width: 81px;
height: 99px;
}
.Pet-Dragon-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Dragon-PolkaDot.png');
width: 81px;
@@ -54148,6 +54528,11 @@
width: 81px;
height: 99px;
}
.Pet-FlyingPig-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-FlyingPig-PinkMarble.png');
width: 81px;
height: 99px;
}
.Pet-FlyingPig-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-FlyingPig-PolkaDot.png');
width: 81px;
@@ -54433,6 +54818,11 @@
width: 81px;
height: 99px;
}
.Pet-Fox-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Fox-PinkMarble.png');
width: 81px;
height: 99px;
}
.Pet-Fox-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Fox-PolkaDot.png');
width: 81px;
@@ -55113,6 +55503,11 @@
width: 81px;
height: 99px;
}
.Pet-LionCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-LionCub-PinkMarble.png');
width: 81px;
height: 99px;
}
.Pet-LionCub-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-LionCub-PolkaDot.png');
width: 81px;
@@ -55618,6 +56013,11 @@
width: 81px;
height: 99px;
}
.Pet-PandaCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-PandaCub-PinkMarble.png');
width: 81px;
height: 99px;
}
.Pet-PandaCub-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-PandaCub-PolkaDot.png');
width: 81px;
@@ -56868,6 +57268,11 @@
width: 81px;
height: 99px;
}
.Pet-TigerCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-TigerCub-PinkMarble.png');
width: 81px;
height: 99px;
}
.Pet-TigerCub-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-TigerCub-PolkaDot.png');
width: 81px;
@@ -57468,6 +57873,11 @@
width: 81px;
height: 99px;
}
.Pet-Wolf-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Wolf-PinkMarble.png');
width: 81px;
height: 99px;
}
.Pet-Wolf-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Wolf-PolkaDot.png');
width: 81px;
@@ -57803,6 +58213,11 @@
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet_HatchingPotion_PinkMarble.png');
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet_HatchingPotion_PolkaDot.png');
width: 68px;
Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 850 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -0,0 +1,61 @@
<svg width="199" height="24" viewBox="0 0 199 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g filter="url(#c19w6aye5a)" fill="#fff">
<path d="M56.47 18.83V6.003L56 3.662l.47-1.405h8.942c1.773 0 3.193.344 4.26 1.03 1.066.687 1.6 1.733 1.6 3.137 0 .765-.142 1.397-.424 1.896a4.175 4.175 0 0 1-1.035 1.24 4.14 4.14 0 0 1 1.505.703c.471.327.855.772 1.154 1.334.297.546.447 1.225.447 2.036 0 1.639-.487 2.918-1.46 3.839-.956.905-2.502 1.358-4.635 1.358H56.471zm5.177-10.136h2.777c.533 0 .918-.078 1.153-.234.235-.171.353-.429.353-.772 0-.359-.173-.609-.518-.75-.345-.155-.753-.233-1.223-.233h-2.542v1.99zm0 5.688h4c.628 0 1.067-.093 1.318-.28a.974.974 0 0 0 .377-.796c0-.75-.486-1.124-1.46-1.124h-4.235v2.2zM75.515 18.83V6.003l-.236-2.341.236-1.405h5.2V18.83h-5.2zM84 18.83V6.026l-.471-2.364.47-1.405h8.472c1.27 0 2.36.203 3.27.61.91.405 1.608 1.06 2.095 1.965.486.89.73 2.068.73 3.535 0 1.357-.228 2.473-.683 3.347a4.552 4.552 0 0 1-2 1.99l.4.327 1.623 2.2 1.341 1.194v1.405h-6.235l-2.588-4.284h-1.248v.515l.236 2.34-.236 1.429H84zm5.176-8.66h1.365c.55 0 1.02-.024 1.412-.071.408-.047.722-.187.941-.421.22-.25.33-.648.33-1.194 0-.578-.118-.991-.353-1.24-.236-.25-.565-.399-.989-.446a9.614 9.614 0 0 0-1.435-.093h-1.506l.235 3.464zM104.666 18.83V6.728l-4.706.234V2.257h14.707v4.705l-4.824-.234v8.357l.259 2.34-.259 1.405h-5.177zM116.785 18.83V6.026l-.235-2.34.235-1.429h5.177v6.344h4.918V2.257h5.177v8.802l.235 1.615v6.156h-5.412v-5.946h-4.918v1.639l.235 4.307h-5.412zM135.588 18.83V6.026l-.471-2.34.471-1.429h7.977c1.114 0 2.188.11 3.223.328 1.051.203 1.985.593 2.801 1.17.831.578 1.49 1.405 1.976 2.482.486 1.076.73 2.473.73 4.19 0 1.716-.251 3.128-.753 4.236-.487 1.092-1.146 1.943-1.977 2.552a7.477 7.477 0 0 1-2.8 1.264 14.463 14.463 0 0 1-3.2.35h-7.977zm5.224-4.448h1.788c.926 0 1.702-.101 2.33-.304a2.498 2.498 0 0 0 1.458-1.147c.33-.577.495-1.412.495-2.504 0-1.108-.173-1.92-.518-2.435-.33-.53-.816-.874-1.459-1.03-.628-.171-1.396-.257-2.306-.257h-1.788v7.677zM153.013 18.83l1.13-3.956V11.9l1.741-.702 3.294-8.918h7.083l4.024 10.486 1.812 3.324v2.739h-5.106l-1.177-3.488h-6.377l-1.012 3.488h-5.412zm7.977-7.584h3.53l-1.553-4.658h-.494l-1.483 4.658zM176.04 18.83v-6.788l-5.835-8.38V2.257h5.906l2.353 4.822h.47l2.33-4.822h5.883v1.405l-6.001 8.52.141 2.364v4.284h-5.247zM191.923 12.72l-2.07-8.847L192.676 2l2.8 1.896-2.141 8.824h-1.412zm.518 7.28-3.059-3.043 3.059-3.043 3.059 3.043L192.441 20z"/>
</g>
<g filter="url(#s1alkvv8kb)">
<path d="M5.87 18.825V7.601H3V3.17l8.228-.937.239 1.406-.24 2.344v12.841H5.87z" fill="url(#xidihnl5xc)"/>
<path d="M21.258 19.06a9.043 9.043 0 0 1-2.87-.446 6.484 6.484 0 0 1-2.369-1.453c-.67-.671-1.195-1.546-1.578-2.624-.383-1.094-.574-2.43-.574-4.007 0-1.562.191-2.883.574-3.96.382-1.094.909-1.977 1.578-2.648a6.092 6.092 0 0 1 2.368-1.453A8.63 8.63 0 0 1 21.257 2c1.356 0 2.584.281 3.684.844 1.116.562 2.001 1.468 2.655 2.718.67 1.234 1.004 2.89 1.004 4.968s-.335 3.741-1.004 4.991c-.654 1.25-1.539 2.156-2.655 2.718-1.1.547-2.328.82-3.683.82zm0-5.039c.701 0 1.187-.25 1.459-.75.27-.5.406-1.413.406-2.741 0-1.313-.136-2.219-.407-2.719-.27-.515-.757-.773-1.459-.773-.685 0-1.18.258-1.483.773-.287.516-.43 1.422-.43 2.719 0 1.312.143 2.226.43 2.742.303.5.798.75 1.483.75z" fill="url(#9hqzmmkygd)"/>
<path d="M32.721 12.014V4.745l-2.87.14V2.06h8.97v2.826l-2.943-.141v5.02l.158 1.405-.158.844h-3.157z" fill="url(#bzq8gpt5ve)"/>
<path d="M40.543 12.014v-7.69l-.144-1.407.144-.857H43.7v3.81h3V2.06h3.156v5.286l.144.97v3.698h-3.3V8.443h-3v.984l.143 2.587h-3.3z" fill="url(#4t6arxwa4f)"/>
</g>
<defs>
<linearGradient id="xidihnl5xc" x1="3" y1="2" x2="29.822" y2="35.308" gradientUnits="userSpaceOnUse">
<stop stop-color="#6133B4"/>
<stop offset="1" stop-color="#4F2A93"/>
</linearGradient>
<linearGradient id="9hqzmmkygd" x1="3" y1="2" x2="29.822" y2="35.308" gradientUnits="userSpaceOnUse">
<stop stop-color="#6133B4"/>
<stop offset="1" stop-color="#4F2A93"/>
</linearGradient>
<linearGradient id="bzq8gpt5ve" x1="3" y1="2" x2="29.822" y2="35.308" gradientUnits="userSpaceOnUse">
<stop stop-color="#6133B4"/>
<stop offset="1" stop-color="#4F2A93"/>
</linearGradient>
<linearGradient id="4t6arxwa4f" x1="3" y1="2" x2="29.822" y2="35.308" gradientUnits="userSpaceOnUse">
<stop stop-color="#6133B4"/>
<stop offset="1" stop-color="#4F2A93"/>
</linearGradient>
<filter id="c19w6aye5a" x="53" y="0" width="145.5" height="24" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="1"/>
<feGaussianBlur stdDeviation="1.5"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix values="0 0 0 0 0.101961 0 0 0 0 0.0941176 0 0 0 0 0.113725 0 0 0 0.12 0"/>
<feBlend in2="BackgroundImageFix" result="effect1_dropShadow_45_799"/>
<feColorMatrix in="SourceAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="1"/>
<feGaussianBlur stdDeviation="1"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix values="0 0 0 0 0.101961 0 0 0 0 0.0941176 0 0 0 0 0.113725 0 0 0 0.24 0"/>
<feBlend in2="effect1_dropShadow_45_799" result="effect2_dropShadow_45_799"/>
<feBlend in="SourceGraphic" in2="effect2_dropShadow_45_799" result="shape"/>
</filter>
<filter id="s1alkvv8kb" x="0" y="0" width="53" height="23.059" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="1"/>
<feGaussianBlur stdDeviation="1.5"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix values="0 0 0 0 0.101961 0 0 0 0 0.0941176 0 0 0 0 0.113725 0 0 0 0.12 0"/>
<feBlend in2="BackgroundImageFix" result="effect1_dropShadow_45_799"/>
<feColorMatrix in="SourceAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="1"/>
<feGaussianBlur stdDeviation="1"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix values="0 0 0 0 0.101961 0 0 0 0 0.0941176 0 0 0 0 0.113725 0 0 0 0.24 0"/>
<feBlend in2="effect1_dropShadow_45_799" result="effect2_dropShadow_45_799"/>
<feBlend in="SourceGraphic" in2="effect2_dropShadow_45_799" result="shape"/>
</filter>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 6.8 KiB

@@ -0,0 +1,22 @@
<svg width="58" height="48" viewBox="0 0 58 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="m16.853 4.36 7.959-1.453-2.71 7.556-2.708 7.557-5.25-6.103-5.25-6.103 7.959-1.453z" fill="#5DDEAB"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M32.771 1.454 40.731 0l-2.71 7.556-2.709 7.556-5.25-6.102-5.25-6.103 7.96-1.453z" fill="#5DDEAB"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m43.272 13.659-7.96 1.453 2.71-7.556L40.73 0l5.25 6.103 5.25 6.102-7.96 1.454z" fill="#38C38D"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m27.353 16.566-7.96 1.453 2.71-7.556 2.709-7.556 5.25 6.103 5.25 6.102-7.96 1.454zM11.434 19.473l-7.959 1.453 2.71-7.556 2.708-7.556 5.25 6.103 5.25 6.102-7.959 1.454z" fill="#B0F1D7"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m3.475 20.926 28.05 18.662L19.394 18.02 3.475 20.926z" fill="#38C38D"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M51.249 12.202 31.525 39.588l3.805-24.48 15.919-2.906z" fill="#B0F1D7"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m19.394 18.02 12.131 21.568 3.787-24.476-15.918 2.907z" fill="#5DDEAB"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m51.904 26.44-3.832-.897 1.132 3.736 1.132 3.737 2.7-2.84 2.7-2.84-3.832-.896zM44.24 24.647l-3.832-.897 1.132 3.736 1.132 3.736 2.7-2.84 2.7-2.839-3.832-.896z" fill="#87E3E1"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m38.84 30.326 3.832.896-1.132-3.736-1.132-3.736-2.7 2.84-2.7 2.839 3.832.897zM46.504 32.12l3.832.896-1.132-3.736-1.132-3.737-2.7 2.84-2.7 2.84 3.832.896z" fill="#C0FBFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M54.168 33.912 58 34.81l-1.132-3.736-1.133-3.736-2.7 2.84-2.7 2.839 3.833.896z" fill="#5EC5C2"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m58 34.81-14.084 8.395 6.42-10.19L58 34.81z" fill="#C0FBFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m35 29.427 8.916 13.779-1.252-11.986L35 29.427z" fill="#5EC5C2"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m50.336 33.016-6.42 10.19-1.244-11.984 7.664 1.794z" fill="#87E3E1"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m16.877 22.666-5.078 1.971 4.262 3.372 4.262 3.37.816-5.341.816-5.343-5.078 1.971zM6.721 26.609l-5.078 1.97 4.262 3.372 4.262 3.371.816-5.342.816-5.343-5.078 1.972z" fill="#7BE3CF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m5.09 37.294 5.077-1.972-4.262-3.371-4.261-3.371-.817 5.342-.816 5.343 5.078-1.971z" fill="#C5F3EA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m15.245 33.351 5.078-1.971-4.262-3.371-4.262-3.371-.816 5.342-.816 5.342 5.078-1.97z" fill="#C5F3EA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m25.4 29.41 5.078-1.972-4.262-3.371-4.261-3.372-.816 5.343-.816 5.342 5.078-1.97z" fill="#41C7AF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M30.478 27.438 21.117 48l-.794-16.62 10.155-3.942z" fill="#C5F3EA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m0 39.269 21.117 8.73-10.961-12.672L0 39.269z" fill="#41C7AF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.323 31.38 21.117 48l-10.95-12.678 10.156-3.942z" fill="#7BE3CF"/>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

@@ -0,0 +1,22 @@
<svg width="518" height="152" viewBox="0 0 518 152" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M144.48 65.487v5.042h-1.772v-5.042h1.772zm1.621 6.671h5.013v1.782h-5.013v-1.782zm-10.027 0h5.013v1.782h-5.013v-1.782zm8.406 3.412v5.041h-1.772V75.57h1.772z" fill="#36205D" style="mix-blend-mode:multiply" opacity=".5"/>
<path opacity=".92" fill-rule="evenodd" clip-rule="evenodd" d="m9.504 29.894 2.707-4.715 1.658.962-2.707 4.715-1.658-.962zm2.066-7.12-4.689-2.722.958-1.667 4.688 2.723-.957 1.667zm9.378 5.445-4.689-2.722.957-1.667 4.69 2.722-.958 1.667zm-6.03-7.755 2.707-4.715 1.658.962-2.707 4.715-1.658-.962z" fill="#fff"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m60.85 11.508.708-3.662 1.288.251-.708 3.662-1.288-.252zm-.24-5.076-3.642-.712.25-1.295 3.642.712-.25 1.295zm7.283 1.423-3.642-.711.25-1.295 3.642.712-.25 1.294zm-5.627-3.671.708-3.662 1.287.251-.708 3.662-1.287-.251z" fill="#36205D" style="mix-blend-mode:multiply" opacity=".81"/>
<path opacity=".76" fill-rule="evenodd" clip-rule="evenodd" d="m107.034 22.162.493 5.675-1.995.175-.494-5.674 1.996-.176zm2.477 7.349 5.643-.497.175 2.007-5.644.496-.174-2.006zm-11.287.993 5.644-.497.174 2.007-5.643.496-.175-2.006zm9.797 3.008.494 5.675-1.996.175-.493-5.675 1.995-.175z" fill="#fff"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m16.191 92.492-5.006 1.636-.575-1.78 5.006-1.636.575 1.78zm-6.098 3.792 1.626 5.034-1.77.578-1.626-5.034 1.77-.578zM6.839 86.215l1.627 5.035-1.77.578-1.627-5.034 1.77-.579zm-.66 9.549-5.006 1.635-.576-1.78 5.007-1.635.575 1.78z" fill="#36205D" style="mix-blend-mode:multiply" opacity=".91"/>
<path opacity=".92" fill-rule="evenodd" clip-rule="evenodd" d="m35.176 59.176 5.102-1.97.692 1.814-5.101 1.97-.693-1.814zm6.118-4.264-1.958-5.13 1.803-.696 1.958 5.13-1.803.696zm3.916 10.26-1.958-5.13 1.804-.696 1.958 5.13-1.804.696zm.17-9.935 5.1-1.969.693 1.814-5.101 1.969-.693-1.814z" fill="#fff"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m95.733 86.583-4.383 2.649-.931-1.559 4.383-2.648.93 1.558zm-4.949 4.93 2.634 4.407-1.55.936-2.633-4.407 1.55-.937zm-5.267-8.816 2.633 4.408-1.55.936-2.633-4.408 1.55-.936zm1.45 9.183-4.384 2.648-.93-1.558 4.382-2.648.931 1.558z" fill="#36205D" style="mix-blend-mode:multiply"/>
<path opacity=".98" fill-rule="evenodd" clip-rule="evenodd" d="m24.804 132.406-2.1-3.015 1.06-.746 2.1 3.014-1.06.747zm-3.747-3.307-2.998 2.111-.742-1.066 2.998-2.111.742 1.066zm5.996-4.222-2.998 2.111-.742-1.066 2.998-2.11.742 1.065zm-6.447 1.5-2.1-3.015 1.06-.746 2.1 3.014-1.06.747z" fill="#fff"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m60.65 142.295-1.594 3.144-1.105-.567 1.593-3.144 1.105.567zm-1.098 4.678 3.126 1.602-.563 1.112-3.127-1.602.564-1.112zm-6.254-3.204 3.127 1.602-.563 1.112-3.127-1.603.563-1.111zm4.165 4.814-1.593 3.144-1.106-.566 1.593-3.144 1.106.566z" fill="#36205D" style="mix-blend-mode:multiply" opacity=".82"/>
<path opacity=".71" fill-rule="evenodd" clip-rule="evenodd" d="m110.507 140.233 2.321-4.582 1.611.826-2.321 4.581-1.611-.825zm1.599-6.817-4.556-2.335.821-1.62 4.556 2.335-.821 1.62zm9.112 4.669-4.556-2.335.821-1.62 4.556 2.335-.821 1.62zm-6.068-7.015 2.321-4.582 1.611.825-2.321 4.582-1.611-.825z" fill="#fff"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M373.52 65.487v5.042h1.772v-5.042h-1.772zm-1.621 6.671h-5.013v1.782h5.013v-1.782zm10.027 0h-5.013v1.782h5.013v-1.782zm-8.406 3.412v5.041h1.772V75.57h-1.772z" fill="#36205D" style="mix-blend-mode:multiply" opacity=".5"/>
<path opacity=".92" fill-rule="evenodd" clip-rule="evenodd" d="m508.496 29.894-2.707-4.715-1.658.962 2.707 4.715 1.658-.962zm-2.066-7.12 4.689-2.722-.958-1.667-4.689 2.723.958 1.667zm-9.378 5.445 4.689-2.722-.957-1.667-4.689 2.722.957 1.667zm6.03-7.755-2.707-4.715-1.658.962 2.707 4.715 1.658-.962z" fill="#fff"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m457.15 11.508-.708-3.662-1.287.251.707 3.662 1.288-.252zm.24-5.076 3.642-.712-.25-1.295-3.642.712.25 1.295zm-7.283 1.423 3.642-.711-.251-1.295-3.641.712.25 1.294zm5.627-3.671-.708-3.662-1.287.251.708 3.662 1.287-.251z" fill="#36205D" style="mix-blend-mode:multiply" opacity=".81"/>
<path opacity=".76" fill-rule="evenodd" clip-rule="evenodd" d="m410.966 22.162-.493 5.675 1.995.175.494-5.674-1.996-.176zm-2.477 7.349-5.643-.497-.175 2.007 5.644.496.174-2.006zm11.287.993-5.644-.497-.174 2.007 5.643.496.175-2.006zm-9.797 3.008-.494 5.675 1.996.175.493-5.675-1.995-.175z" fill="#fff"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m501.809 92.492 5.006 1.636.575-1.78-5.006-1.636-.575 1.78zm6.098 3.792-1.626 5.034 1.77.578 1.626-5.034-1.77-.578zm3.254-10.069-1.627 5.035 1.77.578 1.627-5.034-1.77-.579zm.66 9.549 5.006 1.635.576-1.78-5.007-1.635-.575 1.78z" fill="#36205D" style="mix-blend-mode:multiply" opacity=".91"/>
<path opacity=".92" fill-rule="evenodd" clip-rule="evenodd" d="m482.824 59.176-5.102-1.97-.692 1.814 5.101 1.97.693-1.814zm-6.118-4.264 1.958-5.13-1.803-.696-1.958 5.13 1.803.696zm-3.916 10.26 1.958-5.13-1.804-.696-1.958 5.13 1.804.696zm-.169-9.935-5.102-1.969-.692 1.814 5.101 1.969.693-1.814z" fill="#fff"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m422.267 86.583 4.383 2.649.932-1.559-4.384-2.648-.931 1.558zm4.949 4.93-2.634 4.407 1.55.936 2.634-4.407-1.55-.937zm5.267-8.816-2.633 4.408 1.549.936 2.634-4.408-1.55-.936zm-1.449 9.183 4.383 2.648.931-1.558-4.383-2.648-.931 1.558z" fill="#36205D" style="mix-blend-mode:multiply"/>
<path opacity=".98" fill-rule="evenodd" clip-rule="evenodd" d="m493.196 132.406 2.099-3.015-1.06-.746-2.099 3.014 1.06.747zm3.747-3.307 2.998 2.111.742-1.066-2.998-2.111-.742 1.066zm-5.996-4.222 2.998 2.111.742-1.066-2.998-2.11-.742 1.065zm6.447 1.5 2.1-3.015-1.06-.746-2.099 3.014 1.059.747z" fill="#fff"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m457.351 142.295 1.593 3.144 1.105-.567-1.593-3.144-1.105.567zm1.097 4.678-3.126 1.602.563 1.112 3.127-1.602-.564-1.112zm6.254-3.204-3.127 1.602.563 1.112 3.127-1.603-.563-1.111zm-4.165 4.814 1.593 3.144 1.106-.566-1.593-3.144-1.106.566z" fill="#36205D" style="mix-blend-mode:multiply" opacity=".82"/>
<path opacity=".71" fill-rule="evenodd" clip-rule="evenodd" d="m407.493 140.233-2.321-4.582-1.611.826 2.321 4.581 1.611-.825zm-1.599-6.817 4.556-2.335-.821-1.62-4.556 2.335.821 1.62zm-9.112 4.669 4.556-2.335-.821-1.62-4.556 2.335.821 1.62zm6.068-7.015-2.321-4.582-1.611.825 2.321 4.582 1.611-.825z" fill="#fff"/>
</svg>

After

Width:  |  Height:  |  Size: 6.4 KiB

+3
View File
@@ -0,0 +1,3 @@
<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M1.26512 0L4.84341 3.57829L3.57829 4.84341L0 1.26512L1.26512 0ZM7.15659 3.57829L10.7349 5.33207e-08L12 1.26512L8.42171 4.84341L7.15659 3.57829ZM5.33207e-08 10.7349L3.57829 7.15659L4.84341 8.42171L1.26512 12L5.33207e-08 10.7349ZM8.42171 7.15659L12 10.7349L10.7349 12L7.15659 8.42171L8.42171 7.15659Z" fill="#FFB445"/>
</svg>

After

Width:  |  Height:  |  Size: 469 B

@@ -0,0 +1,4 @@
<svg width="138" height="12" viewBox="0 0 138 12" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="m127.265 0 3.578 3.578-1.265 1.265L126 1.265 127.265 0zm5.892 3.578L136.735 0 138 1.265l-3.578 3.578-1.265-1.265zM126 10.735l3.578-3.578 1.265 1.265L127.265 12 126 10.735zm8.422-3.578L138 10.735 136.735 12l-3.578-3.578 1.265-1.265z" fill="#FFB445"/>
<path d="M114.445 4.555 112.5 1l-1.945 3.555L107.914 6h-3.828l-1.349-.737L101.5 3l-1.237 2.263L98.914 6H0v1h98.914l1.349.737L101.5 10l1.237-2.263L104.086 7h3.828l2.641 1.445L112.5 12l1.945-3.555L118 6.5l-3.555-1.945z" fill="#36205D"/>
</svg>

After

Width:  |  Height:  |  Size: 647 B

@@ -0,0 +1,37 @@
<svg width="85" height="32" viewBox="0 0 85 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="m4.93 12.255 2.466-.63-1.983-1.597-.63-2.468-1.595 1.986-2.465.63 1.983 1.597.63 2.468 1.595-1.986zM80.034 7.698l2.465-.63-1.983-1.597-.63-2.468-1.594 1.985-2.466.631 1.983 1.596.63 2.469 1.595-1.986zM42.27 7.427l2.929.487-1.368-2.638.487-2.932-2.635 1.37-2.928-.488 1.367 2.638-.486 2.932 2.634-1.37zM78.215 26.355l2.694 2.064.033-3.396 2.063-2.697-3.393-.034-2.694-2.065-.033 3.397-2.062 2.697 3.392.034zM38.321 28.092l2.092.348-.977-1.885.347-2.094-1.881.978-2.092-.348.977 1.884-.348 2.095 1.882-.978zM12.17 30.035l.916 1.915.981-1.882 1.913-.916-1.88-.982-.915-1.916-.981 1.882-1.913.917 1.88.982z" fill="#fff" fill-opacity=".5"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m24.878 12.01 6.73-1.805 2.524 9.433-6.73 1.806-2.524-9.433z" fill="#F9F9F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m18.148 13.816 6.73-1.805 2.524 9.433-6.73 1.805-2.524-9.433z" fill="#E1E0E3"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m23.532 12.372 1.346-.361 2.524 9.433-1.346.36-2.524-9.432z" fill="#6133B4"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m24.878 12.01 1.346-.36 2.524 9.433-1.346.36-2.524-9.432z" fill="#9A62FF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m25.696 20.457 1.345-.36.361 1.347-1.346.36-.36-1.347zM23.532 12.372l1.346-.361.36 1.347-1.346.361-.36-1.347z" fill="#4F2A93"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m18.148 13.816 5.384-1.444.36 1.348-5.383 1.444-.36-1.348zM20.312 21.902l5.384-1.445.36 1.348-5.383 1.444-.36-1.347zM26.224 11.65l5.383-1.445.36 1.348-5.383 1.444-.36-1.347zM28.387 19.735l5.384-1.444.36 1.347-5.383 1.445-.36-1.348z" fill="#BDA8FF" fill-opacity=".3"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m27.041 20.096 1.346-.36.361 1.347-1.346.36-.36-1.347zM24.878 12.01l1.346-.36.36 1.347-1.346.361-.36-1.347z" fill="#6133B4"/>
<path clip-rule="evenodd" d="M24.735 4.954c-.335-1.183-1.148-2.301-2.285-2.51-1.138-.21-1.923.616-1.7 1.476.221.86 1 1.122 3.498 2.183.71.302.823.034.487-1.149z" stroke="#6133B4" stroke-width="1.5"/>
<path clip-rule="evenodd" d="M27.66 5.365c.648-1.044 1.737-1.895 2.888-1.782 1.151.112 1.678 1.123 1.228 1.889-.45.765-1.27.802-3.964 1.133-.765.094-.8-.195-.152-1.24z" stroke="#9A62FF" stroke-width="1.5"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M26.319 4.294c-2.24-.315-1.259 2.44-.36 2.566.898.126 2.6-2.25.36-2.566z" fill="#4F2A93"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m26.016 6.454 8.279 1.165-.582 4.145-8.279-1.165.582-4.145z" fill="#F9F9F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m17.737 5.29 8.279 1.164-.582 4.145-8.279-1.165.582-4.145z" fill="#E1E0E3"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m23.256 6.066 5.52.777-.582 4.144-5.52-.776.582-4.145z" fill="#9A62FF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m23.256 6.066 2.76.388-.582 4.145-2.76-.388.582-4.145z" fill="#6133B4"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m26.016 6.454 2.76.389-.195 1.381-2.76-.388.195-1.382z" fill="#6133B4"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m23.256 6.066 2.76.388-.194 1.382-2.76-.388.194-1.382z" fill="#4F2A93"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m17.349 8.053 5.52.776-.195 1.382-5.519-.777.194-1.381zM28.388 9.606l5.519.776-.194 1.382-5.52-.777.195-1.381z" fill="#BDA8FF" fill-opacity=".3"/>
<path clip-rule="evenodd" d="M56.55 9.16c-.624-1.413-1.83-2.662-3.282-2.724-1.452-.062-2.285 1.104-1.858 2.135.426 1.031 1.441 1.22 4.734 2.104.935.25 1.03-.102.406-1.515z" stroke="#6133B4" stroke-width="1.5"/>
<path clip-rule="evenodd" d="M60.26 9.16c.624-1.413 1.83-2.662 3.283-2.724 1.451-.062 2.284 1.104 1.857 2.135-.426 1.031-1.44 1.22-4.734 2.104-.935.25-1.03-.102-.406-1.515z" stroke="#9A62FF" stroke-width="1.5"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M58.405 8.061c-2.842 0-1.14 3.256 0 3.256s2.842-3.256 0-3.256z" fill="#4F2A93"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M58.405 10.802H68.91v5.259H58.405v-5.259z" fill="#F9F9F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M47.901 10.802h10.504v5.259H47.901v-5.259z" fill="#E1E0E3"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M54.904 10.802h7.002v5.259h-7.002v-5.259z" fill="#9A62FF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M54.904 10.802h3.501v5.259h-3.501v-5.259zM58.405 10.802h3.501v1.753h-3.5v-1.753z" fill="#6133B4"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M54.904 10.802h3.501v1.753h-3.501v-1.753z" fill="#4F2A93"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M58.405 16.06h8.753v12.27h-8.753V16.06z" fill="#F9F9F9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M49.652 16.06h8.753v12.27h-8.753V16.06z" fill="#E1E0E3"/>
<path fill="#6133B4" d="M56.654 16.061h1.751v12.27h-1.751z"/>
<path fill="#9A62FF" d="M58.405 16.061h1.751v12.27h-1.751z"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M56.654 26.578h1.751v1.753h-1.75v-1.753zM56.654 16.06h1.751v1.754h-1.75V16.06z" fill="#4F2A93"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M49.652 16.06h7.002v1.754h-7.002V16.06z" fill="#BDA8FF" fill-opacity=".3"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M47.901 14.308h7.003v1.753H47.9v-1.753zM49.652 26.578h7.002v1.753h-7.002v-1.753zM60.156 16.06h7.002v1.754h-7.002V16.06z" fill="#BDA8FF" fill-opacity=".3"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M61.906 14.308h7.003v1.753h-7.003v-1.753zM60.156 26.578h7.002v1.753h-7.002v-1.753z" fill="#BDA8FF" fill-opacity=".3"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M58.405 26.578h1.75v1.753h-1.75v-1.753zM58.405 16.06h1.75v1.754h-1.75V16.06z" fill="#6133B4"/>
</svg>

After

Width:  |  Height:  |  Size: 5.7 KiB

@@ -0,0 +1,9 @@
<svg width="68" height="68" viewBox="0 0 68 68" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<path fill="url(#sxizdfpdya)" d="M0 0h68v68H0z"/>
<defs>
<pattern id="sxizdfpdya" patternContentUnits="objectBoundingBox" width="1" height="1">
<use xlink:href="#pomapjzcdb" transform="scale(.0147)"/>
</pattern>
<image id="pomapjzcdb" width="68" height="68" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEQAAABECAYAAAA4E5OyAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5gwJFx8lKwafmAAABjRJREFUeNrtm39MVWUYx78IV5BfF3Qg8kNppNIoyhKWZmUBlpRNpC3Uac7EUUGrscxM+AOHia1foKmDHOHItkbhLGnpzGVBimtlozmVTeByCRDhwgXll/THc17de3zvuedernDd3uefc895f5/zuc/3ed57DyBNmjRpzpuH+sLvR8fGAODR0nS+YmAgAMCQNQMAMJKwkys//+tUAMDQDTrPzNgIACj58iAAoLH5LADgx/Kzwols/zyba3+jny9n7WNmJ3LXffzoONUHTrVPyvDg7sEUyQRvXrYKrvX2AgCmK2RUxL9OT35oDzWs38bVf3XlNe78sfindE3gam/TpCw87fwPwuuSEL2EXMg6DgBY/HW6+E4OdQAA4lZ4CYnotVgBAEvShuiIRwAAXxV/y9Xbve+jSSHj2SfIl1RLQpwkRO1LmDEimJV+Qyqy+709wvZx/3wBAFhk3QQAONlYqKoxpGuijLDfvnduodmnTwIAUrM2ataThDhKSEp9FH2o38/5iopCuuO1/drqceAy+YiSAPI5m+rE9UvLcjTnweKfJWk7nVtppb5qkhB7hLAI01Y8wdSjyzLM9aCOJ9qrI+jDZTqkNlwBAByLixZOpMtk4uIeZrVrqkgVhtYL4x9m830iXXJDJCH2CGGqwXKB4gKxevw9eBgA0HDwIgAg94UdAICZL1JSkd5H5w2VVB4ZHg8A6IkkEoKMREKPhVTM/AHFPdNLxHFP6TnKdTIX8vOp7a8AABxWcpnVwZ9pLvjSlRYAwNzoKEmIS1TGlnqc2H1aWO5n8qSIFGsAAKdazVx53pR5pDog1SkMuF8z7rnD1yi+a4bRICy39vUBAPwDAhSVe5uy3Scp283+iUjE8ymSEJcQolaPVxZkkldPJRKiYmZqtl+3iy9vaWwk1agcJTUKJ18S9TI5gSu59ASjP07R9F0PW1YLV1BlzSMfhh1SZSaEkHe25ZMK1LQBANpa2wEAyTELxjUw64dZFOYJs21bxkjxcdAL1qzdCgBYXrlLEuJSlWFPdGlmuOIL6Lz/L4pITeZmIicnnH/SVV5cOfM9rJ9TpUyF5rl0YZXtebpISTr6viTEpXHIgy9NAwD4+voCAA4da+YIamn05OqbzKNc+bqMhwAAAwMDCiHudUMkIc4Swr7zakvf7698omNoaKiKqA6uXG+/kpB7jRCmBsEhscoVyikWrpoFAPAYJZ8wcqvjQQBAeKgRADDmST7n3HdXlRoGpV+KXFcVxWiO391F+zCY7dxC9baXhOglxPIL/UhqNlOEunKfNwAgInKYU5kLJ9Sbqjds9Ej15iYZOJVhVlfM9k3oERqf8ZE+xK0JYZElix96/iQ1iFRtXcYm+3E+5OaUafwdv3md8yEWi0WoMrcjVjKjiyNXSYirCWE5hzqrPVPA5ybZR4xc+d6VlzlfkKbakj20voMrj00f4fZNWI4k4xB3J4R9p5dmQjM3OX7AU3Of4+cy7XI/Ve7Dxk3eEiMJuSciVZbd3jZSjfkgdVi2KUyzvb1ydf+Tnf1KQvQSYisLTcyYodlh8ub7uPjDXnt1xGpr3M7OrnEtVG97SYg9QrYVPQcAWDywXZXdQslF9HXMIlZbpDBrrTOofAhlv7W+bwjr118sI082SL/wfZpfJ33IhBJiDAxWvtx0iFg0zMcR9bwqtGFM1cOAQ0NGLBLXvzUPdRbe2y1Vxi1UpiFsr/LpE+76rIQR7jzI3yD0Hepsl1mPdVilMrbGhSY51zt7JSFuEameKZjOZbfrKnxdOoGqLCuX/U62SUIcJaS8ZQN3fmItX74hqpwj6M1q/h9BJataOQLKW14TD9Sib8JMZT7MrZOEuAUhDhO0AuMiwJb919k0LjIu/UH7MMuXSUIcsjveuYt7IH7MHSdq7FkOAAgJpm3/t/Lpf6v23rlj/7Pt7DYJ28t37hwlJDHh8TEA6LcOCJ8QM3an7e5DKE/mDrUIquHO/fzF8Y2X6WnhdTb+lqJsISHs/R1b47P2R/7NkYQ4pDJhIXPoCXp3c/sOIR7OvW1gi6QRPyJimnegMLtlqhI+JwgAYG7qEZL37uatuubB+rltVqkyExKH3G1TkzHefhixhkBJiDRp0qTddfsfGCIUXNZsU4gAAAAASUVORK5CYII="/>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg id="a" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><rect width="16" height="16" fill="none"/><g id="b"><g id="c"><g id="d"><polygon id="e" points="12.2 2 14 3.8 9.8 8 14 12.2 12.2 14 8 9.8 3.8 14 2 12.2 6.2 8 2 3.8 3.8 2 8 6.2 12.2 2"/></g></g></g></svg>

After

Width:  |  Height:  |  Size: 308 B

+5
View File
@@ -0,0 +1,5 @@
<svg width="48" height="20" viewBox="0 0 48 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M48 10.334c0-3.418-1.653-6.115-4.813-6.115-3.174 0-5.094 2.697-5.094 6.088 0 4.019 2.267 6.048 5.52 6.048 1.587 0 2.787-.36 3.694-.868v-2.67c-.907.454-1.947.735-3.267.735-1.293 0-2.44-.454-2.587-2.03h6.52c0-.173.027-.868.027-1.188zm-6.587-1.268c0-1.51.92-2.137 1.76-2.137.813 0 1.68.628 1.68 2.136h-3.44zM32.947 4.22c-1.307 0-2.147.613-2.614 1.04l-.173-.827h-2.933V20l3.333-.707.013-3.779c.48.347 1.187.841 2.36.841 2.387 0 4.56-1.922 4.56-6.155-.013-3.871-2.213-5.98-4.546-5.98zm-.8 9.198c-.787 0-1.254-.28-1.574-.627l-.013-4.954c.347-.387.827-.654 1.587-.654 1.213 0 2.053 1.362 2.053 3.11 0 1.79-.827 3.125-2.053 3.125zM22.64 3.431l3.346-.72V0L22.64.708V3.43z" fill="#635BFF"/>
<path fill="#635BFF" d="M22.64 4.446h3.347v11.682H22.64z"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m19.053 5.434-.213-.988h-2.88v11.682h3.333V8.211c.787-1.028 2.12-.841 2.534-.694V4.446c-.427-.16-1.987-.454-2.774.988zM12.387 1.549l-3.254.694-.013 10.694c0 1.976 1.48 3.431 3.453 3.431 1.094 0 1.894-.2 2.334-.44v-2.71c-.427.173-2.534.787-2.534-1.189V7.29h2.534V4.447h-2.534l.014-2.897zM3.373 7.837c0-.52.427-.72 1.134-.72 1.013 0 2.293.306 3.306.854V4.833a8.783 8.783 0 0 0-3.306-.614C1.8 4.22 0 5.634 0 7.997c0 3.685 5.067 3.098 5.067 4.687 0 .614-.534.814-1.28.814-1.107 0-2.52-.454-3.64-1.068v3.178a9.233 9.233 0 0 0 3.64.76c2.773 0 4.68-1.375 4.68-3.764-.014-3.98-5.094-3.271-5.094-4.767z" fill="#635BFF"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@@ -43,42 +43,55 @@
</label>
</div>
<div>
Months until renewal:
Perk offset months:
<strong>{{ hero.purchased.plan.consecutive.offset }}</strong>
</div>
<div>
Next Mystic Hourglass:
<strong>{{ nextHourglassDate }}</strong>
</div>
<div class="form-inline">
<label>
Mystic Hourglasses:
<input
v-model="hero.purchased.plan.consecutive.trinkets"
class="form-control"
type="number"
min="0"
step="1"
>
</label>
</div>
<div>
Gem cap:
<strong>{{ hero.purchased.plan.consecutive.gemCapExtra + 25 }}</strong>
</div>
<div class="form-inline">
<label>
Gems bought this month:
<input
v-model="hero.purchased.plan.gemsBought"
class="form-control"
type="number"
min="0"
:max="hero.purchased.plan.consecutive.gemCapExtra + 25"
step="1"
>
</label>
</div>
<div>
Next Mystic Hourglass:
<strong>{{ nextHourglassDate }}</strong>
</div>
<div class="form-inline">
<label>
Mystic Hourglasses:
<input
v-model="hero.purchased.plan.consecutive.trinkets"
class="form-control"
type="number"
min="0"
step="1"
>
</label>
</div>
<div class="form-inline">
<label>
Gem cap increase:
<input
v-model="hero.purchased.plan.consecutive.gemCapExtra"
class="form-control"
type="number"
min="0"
max="25"
step="5"
>
</label>
</div>
<div>
Total Gem cap:
<strong>{{ Number(hero.purchased.plan.consecutive.gemCapExtra) + 25 }}</strong>
</div>
<div class="form-inline">
<label>
Gems bought this month:
<input
v-model="hero.purchased.plan.gemsBought"
class="form-control"
type="number"
min="0"
:max="hero.purchased.plan.consecutive.gemCapExtra + 25"
step="1"
>
</label>
</div>
<div
v-if="hero.purchased.plan.extraMonths > 0"
>
@@ -139,13 +152,6 @@ export default {
return currentPlanContext.nextHourglassDate.format('MMMM');
},
},
watch: {
'hero.purchased.plan.consecutive.count' () { // eslint-disable-line object-shorthand
this.hero.purchased.plan.consecutive.gemCapExtra = Math.min(
Math.floor(this.hero.purchased.plan.consecutive.count / 3) * 5, 25,
);
},
},
methods: {
dateFormat (date) {
return moment(date).format('YYYY/MM/DD');
+10 -2
View File
@@ -86,6 +86,13 @@
>{{ $t('companyContribute') }}
</a>
</li>
<li>
<a
href="https://translate.habitica.com/"
target="_blank"
>{{ $t('translateHabitica') }}
</a>
</li>
</ul>
</div>
<!-- Support -->
@@ -224,7 +231,7 @@
></div>
</a><a
class="social-circle"
href="https://www.tumblr.com/Habitica"
href="http://blog.habitrpg.com/"
target="_blank"
>
<div
@@ -578,6 +585,7 @@ h3 {
.text{
display: inline-block;
vertical-align: bottom;
text-overflow: hidden;
}
}
@@ -814,7 +822,7 @@ export default {
...mapState({ user: 'user.data' }),
...mapState(['isUserLoaded']),
getDataDisplayToolUrl () {
const base = 'https://oldgods.net/habitrpg/habitrpg_user_data_display.html';
const base = 'https://tools.habitica.com/';
if (!this.user) return null;
return `${base}?uuid=${this.user._id}`;
},
+67 -39
View File
@@ -121,7 +121,7 @@
v-if="editing"
class="menu-container col-2"
:class="{active: activeTopPage === 'backgrounds'}"
@click="changeTopPage('backgrounds', '2022')"
@click="changeTopPage('backgrounds', '2023')"
>
<div class="menu-item">
<div
@@ -198,52 +198,79 @@
</div>
</div>
<div
v-if="!filterBackgrounds"
class="row text-center title-row"
>
<strong>{{ backgroundShopSets[1].text }}</strong>
</div>
<div
v-if="!filterBackgrounds"
class="row title-row"
v-if="!filterBackgrounds && user.purchased.background.birthday_bash"
>
<div
v-for="bg in backgroundShopSets[1].items"
:key="bg.key"
class="col-4 text-center customize-option background-button"
:popover-title="bg.text"
:popover="bg.notes"
popover-trigger="mouseenter"
@click="!user.purchased.background[bg.key]
? backgroundSelected(bg) : unlock('background.' + bg.key)"
class="row text-center title-row"
>
<strong>{{ backgroundShopSets[2].text }}</strong>
</div>
<div
class="row title-row"
>
<div
class="background"
:class="[`background_${bg.key}`, backgroundLockedStatus(bg.key)]"
></div>
<i
v-if="!user.purchased.background[bg.key]"
class="glyphicon glyphicon-lock"
></i>
<div
v-if="!user.purchased.background[bg.key]"
class="purchase-background single d-flex align-items-center justify-content-center"
v-for="bg in backgroundShopSets[2].items"
:key="bg.key"
class="col-4 text-center customize-option background-button"
:popover-title="bg.text"
:popover="bg.notes"
popover-trigger="mouseenter"
@click="unlock('background.' + bg.key)"
>
<div
class="svg-icon hourglass"
v-html="icons.hourglass"
class="background"
:class="`background_${bg.key}`"
></div>
<span class="price">1</span>
</div>
<span
v-if="!user.purchased.background[bg.key]"
class="badge-top"
@click.stop.prevent="togglePinned(bg)"
</div>
</div>
<div v-if="!filterBackgrounds">
<div
class="row text-center title-row"
>
<strong>{{ backgroundShopSets[1].text }}</strong>
</div>
<div
class="row title-row"
>
<div
v-for="bg in backgroundShopSets[1].items"
:key="bg.key"
class="col-4 text-center customize-option background-button"
:popover-title="bg.text"
:popover="bg.notes"
popover-trigger="mouseenter"
@click="!user.purchased.background[bg.key]
? backgroundSelected(bg) : unlock('background.' + bg.key)"
>
<pin-badge
:pinned="isBackgroundPinned(bg)"
/>
</span>
<div
class="background"
:class="[`background_${bg.key}`, backgroundLockedStatus(bg.key)]"
></div>
<i
v-if="!user.purchased.background[bg.key]"
class="glyphicon glyphicon-lock"
></i>
<div
v-if="!user.purchased.background[bg.key]"
class="purchase-background single d-flex align-items-center justify-content-center"
>
<div
class="svg-icon hourglass"
v-html="icons.hourglass"
></div>
<span class="price">1</span>
</div>
<span
v-if="!user.purchased.background[bg.key]"
class="badge-top"
@click.stop.prevent="togglePinned(bg)"
>
<pin-badge
:pinned="isBackgroundPinned(bg)"
/>
</span>
</div>
</div>
</div>
<sub-menu
@@ -1185,7 +1212,7 @@ export default {
},
],
bgSubMenuItems: ['2022', '2021', '2020', '2019', '2018', '2017', '2016', '2015', '2014'].map(y => ({
bgSubMenuItems: ['2023', '2022', '2021', '2020', '2019', '2018', '2017', '2016', '2015', '2014'].map(y => ({
id: y,
label: y,
})),
@@ -1214,6 +1241,7 @@ export default {
2020: [],
2021: [],
2022: [],
2023: [],
};
// Hack to force update for now until we restructure the data
@@ -340,7 +340,7 @@
<li>
<a
v-once
href="https://oldgods.net/habitrpg/habitrpg_user_data_display.html"
href="https://tools.habitica.com/"
target="_blank"
>{{ $t('dataDisplayTool') }}</a>
</li>
@@ -759,6 +759,7 @@
</style>
<script>
import find from 'lodash/find';
import { mapState } from '@/libs/store';
import { goToModForm } from '@/libs/modform';
@@ -835,22 +836,23 @@ export default {
computed: {
...mapState({
user: 'user.data',
currentEvent: 'worldState.data.currentEvent',
currentEventList: 'worldState.data.currentEventList',
}),
questData () {
if (!this.group.quest) return {};
return quests.quests[this.group.quest.key];
},
imageURLs () {
if (!this.currentEvent || !this.currentEvent.season) {
const currentEvent = find(this.currentEventList, event => Boolean(event.season));
if (!currentEvent) {
return {
background: 'url(/static/npc/normal/tavern_background.png)',
npc: 'url(/static/npc/normal/tavern_npc.png)',
};
}
return {
background: `url(/static/npc/${this.currentEvent.season}/tavern_background.png)`,
npc: `url(/static/npc/${this.currentEvent.season}/tavern_npc.png)`,
background: `url(/static/npc/${currentEvent.season}/tavern_background.png)`,
npc: `url(/static/npc/${currentEvent.season}/tavern_npc.png)`,
};
},
},
@@ -0,0 +1,119 @@
<template>
<base-banner
banner-id="birthday-banner"
class="birthday-banner"
:show="showBirthdayBanner"
height="3rem"
:can-close="false"
>
<div
slot="content"
:aria-label="$t('celebrateBirthday')"
class="content d-flex justify-content-around align-items-center ml-auto mr-auto"
@click="showBirthdayModal"
>
<div
v-once
class="svg-icon svg-gifts left-gift"
v-html="icons.giftsBirthday"
>
</div>
<div
v-once
class="svg-icon svg-ten-birthday"
v-html="icons.tenBirthday"
>
</div>
<div
v-once
class="announce-text"
v-html="$t('celebrateBirthday')"
>
</div>
<div
v-once
class="svg-icon svg-gifts right-gift"
v-html="icons.giftsBirthday"
>
</div>
</div>
</base-banner>
</template>
<style lang="scss" scoped>
@import '~@/assets/scss/colors.scss';
.announce-text {
color: $purple-50;
}
.birthday-banner {
width: 100%;
min-height: 48px;
padding: 8px;
background-image: linear-gradient(90deg,
rgba(255,190,93,0) 0%,
rgba(255,190,93,1) 25%,
rgba(255,190,93,1) 75%,
rgba(255,190,93,0) 100%),
url('~@/assets/images/glitter.png');
cursor: pointer;
}
.left-gift {
margin: auto;
}
.right-gift {
margin: auto auto auto 8px;
filter: flipH;
transform: scaleX(-1);
}
.svg-gifts {
width: 85px;
}
.svg-ten-birthday {
width: 192.5px;
margin-left: 8px;
margin-right: 8.5px;
}
</style>
<script>
import find from 'lodash/find';
import { mapState } from '@/libs/store';
import BaseBanner from './base';
import giftsBirthday from '@/assets/svg/gifts-birthday.svg';
import tenBirthday from '@/assets/svg/10th-birthday-linear.svg';
export default {
components: {
BaseBanner,
},
data () {
return {
icons: Object.freeze({
giftsBirthday,
tenBirthday,
}),
};
},
computed: {
...mapState({
currentEventList: 'worldState.data.currentEventList',
}),
showBirthdayBanner () {
return Boolean(find(this.currentEventList, event => Boolean(event.event === 'birthday10')));
},
},
methods: {
showBirthdayModal () {
this.$root.$emit('bv::show::modal', 'birthday-modal');
},
},
};
</script>
@@ -0,0 +1,58 @@
<template>
<base-notification
:can-remove="canRemove"
:has-icon="true"
:notification="notification"
:read-after-click="true"
@click="action"
>
<div
slot="content"
>
<strong> {{ notification.data.title }} </strong>
<span> {{ notification.data.text }} </span>
</div>
<div
slot="icon"
class="mt-3"
:class="notification.data.icon"
></div>
</base-notification>
</template>
<script>
import BaseNotification from './base';
export default {
components: {
BaseNotification,
},
props: {
notification: {
type: Object,
default (data) {
return data;
},
},
canRemove: {
type: Boolean,
default: true,
},
},
methods: {
action () {
if (!this.notification || !this.notification.data) {
return;
}
if (this.notification.data.destination === 'backgrounds') {
this.$store.state.avatarEditorOptions.editingUser = true;
this.$store.state.avatarEditorOptions.startingPage = 'backgrounds';
this.$store.state.avatarEditorOptions.subpage = '2023';
this.$root.$emit('bv::show::modal', 'avatar-modal');
} else {
this.$router.push({ name: this.notification.data.destination || 'items' });
}
},
},
};
</script>
@@ -123,23 +123,24 @@ import successImage from '@/assets/svg/success.svg';
import starBadge from '@/assets/svg/star-badge.svg';
// Notifications
import NEW_STUFF from './notifications/newStuff';
import GROUP_TASK_NEEDS_WORK from './notifications/groupTaskNeedsWork';
import GUILD_INVITATION from './notifications/guildInvitation';
import PARTY_INVITATION from './notifications/partyInvitation';
import CARD_RECEIVED from './notifications/cardReceived';
import CHALLENGE_INVITATION from './notifications/challengeInvitation';
import QUEST_INVITATION from './notifications/questInvitation';
import GIFT_ONE_GET_ONE from './notifications/g1g1';
import GROUP_TASK_ASSIGNED from './notifications/groupTaskAssigned';
import GROUP_TASK_CLAIMED from './notifications/groupTaskClaimed';
import UNALLOCATED_STATS_POINTS from './notifications/unallocatedStatsPoints';
import NEW_MYSTERY_ITEMS from './notifications/newMysteryItems';
import CARD_RECEIVED from './notifications/cardReceived';
import NEW_INBOX_MESSAGE from './notifications/newPrivateMessage';
import GROUP_TASK_NEEDS_WORK from './notifications/groupTaskNeedsWork';
import GUILD_INVITATION from './notifications/guildInvitation';
import ITEM_RECEIVED from './notifications/itemReceived';
import NEW_CHAT_MESSAGE from './notifications/newChatMessage';
import WORLD_BOSS from './notifications/worldBoss';
import VERIFY_USERNAME from './notifications/verifyUsername';
import NEW_INBOX_MESSAGE from './notifications/newPrivateMessage';
import NEW_MYSTERY_ITEMS from './notifications/newMysteryItems';
import NEW_STUFF from './notifications/newStuff';
import ONBOARDING_COMPLETE from './notifications/onboardingComplete';
import GIFT_ONE_GET_ONE from './notifications/g1g1';
import PARTY_INVITATION from './notifications/partyInvitation';
import QUEST_INVITATION from './notifications/questInvitation';
import UNALLOCATED_STATS_POINTS from './notifications/unallocatedStatsPoints';
import VERIFY_USERNAME from './notifications/verifyUsername';
import WORLD_BOSS from './notifications/worldBoss';
import OnboardingGuide from './onboardingGuide';
export default {
@@ -147,24 +148,25 @@ export default {
MenuDropdown,
MessageCount,
// One component for each type
NEW_STUFF,
GROUP_TASK_NEEDS_WORK,
GUILD_INVITATION,
PARTY_INVITATION,
CARD_RECEIVED,
CHALLENGE_INVITATION,
QUEST_INVITATION,
GIFT_ONE_GET_ONE,
GROUP_TASK_ASSIGNED,
GROUP_TASK_CLAIMED,
UNALLOCATED_STATS_POINTS,
NEW_MYSTERY_ITEMS,
CARD_RECEIVED,
NEW_INBOX_MESSAGE,
GROUP_TASK_NEEDS_WORK,
GUILD_INVITATION,
ITEM_RECEIVED,
NEW_CHAT_MESSAGE,
WorldBoss: WORLD_BOSS,
VERIFY_USERNAME,
OnboardingGuide,
NEW_INBOX_MESSAGE,
NEW_MYSTERY_ITEMS,
NEW_STUFF,
ONBOARDING_COMPLETE,
GIFT_ONE_GET_ONE,
PARTY_INVITATION,
QUEST_INVITATION,
UNALLOCATED_STATS_POINTS,
VERIFY_USERNAME,
WorldBoss: WORLD_BOSS,
OnboardingGuide,
},
data () {
return {
@@ -185,6 +187,7 @@ export default {
// NOTE: Those not listed here won't be shown in the notification panel!
handledNotifications: [
'NEW_STUFF',
'ITEM_RECEIVED',
'GIFT_ONE_GET_ONE',
'GROUP_TASK_NEEDS_WORK',
'GUILD_INVITATION',
@@ -40,7 +40,7 @@
>{{ $t('editAvatar') }}</a>
<a
class="topbar-dropdown-item dropdown-item dropdown-separated"
@click="showAvatar('backgrounds', '2022')"
@click="showAvatar('backgrounds', '2023')"
>{{ $t('backgrounds') }}</a>
<a
class="topbar-dropdown-item dropdown-item"
@@ -0,0 +1,877 @@
<template>
<b-modal
id="birthday-modal"
:hide-header="true"
:hide-footer="true"
>
<div class="modal-content">
<div
class="modal-close"
@click="close()"
>
<div
class="svg-icon svg-close"
v-html="icons.close"
>
</div>
</div>
<div
class="svg-confetti svg-icon"
v-html="icons.confetti"
>
</div>
<div>
<img
src="~@/assets/images/10-birthday.png"
class="ten-birthday"
>
</div>
<div class="limited-wrapper">
<div
class="svg-gifts svg-icon"
v-html="icons.gifts"
>
</div>
<div class="limited-event">
{{ $t('limitedEvent') }}
</div>
<div class="dates">
{{ $t('anniversaryLimitedDates') }}
</div>
<div
class="svg-gifts-flip svg-icon"
v-html="icons.gifts"
>
</div>
</div>
<div class="celebrate d-flex justify-content-center">
{{ $t('celebrateAnniversary') }}
</div>
<h2 class="d-flex justify-content-center">
<span
class="left-divider"
v-html="icons.divider"
></span>
<span
class="svg-cross"
v-html="icons.cross"
>
</span>
{{ $t('jubilantGryphatricePromo') }}
<span
class="svg-cross"
v-html="icons.cross"
>
</span>
<span
class="right-divider"
></span>
</h2>
<!-- gryphatrice info -->
<div class="d-flex">
<div class="jubilant-gryphatrice d-flex mr-auto">
<img
src="https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Gryphatrice-Jubilant-Large.gif"
width="156px"
height="144px"
alt="a pink, purple, and green gryphatrice pet winks at you adorably"
>
</div>
<div class="align-items-center">
<div class="limited-edition mr-auto">
{{ $t('limitedEdition') }}
</div>
<div class="gryphatrice-text">
{{ $t('anniversaryGryphatriceText') }}
</div>
<div
class="gryphatrice-price"
v-html="$t('anniversaryGryphatricePrice')"
>
</div>
</div>
</div>
<!-- beginning of payments -->
<!-- buy with money OR gems -->
<div
v-if="!ownGryphatrice && !gryphBought"
>
<div
v-if="selectedPage !== 'payment-buttons'"
id="initial-buttons"
class="d-flex justify-content-center"
>
<button
class="btn btn-secondary buy-now-left"
:class="{active: selectedPage === 'payment-buttons'}"
@click="selectedPage = 'payment-buttons'"
>
{{ $t('buyNowMoneyButton') }}
</button>
<button
class="btn btn-secondary buy-now-right"
@click="buyGryphatriceGems()"
>
{{ $t('buyNowGemsButton') }}
</button>
</div>
<!-- buy with money -->
<div
v-else-if="selectedPage === 'payment-buttons'"
id="payment-buttons"
class="d-flex flex-column"
>
<button
class="btn btn-secondary d-flex stripe"
@click="redirectToStripe({ sku: 'price_0MPZ6iZCD0RifGXlLah2furv' })"
>
<span
class="svg-stripe"
v-html="icons.stripe"
>
</span>
</button>
<button
class="btn btn-secondary d-flex paypal"
@click="openPaypal({
url: paypalCheckoutLink, type: 'sku', sku: 'Pet-Gryphatrice-Jubilant'
})"
>
<span
class="svg-paypal"
v-html="icons.paypal"
>
</span>
</button>
<amazon-button
:disabled="disabled"
:amazon-data="amazonData"
class="btn btn-secondary d-flex amazon"
v-html="icons.amazon"
/>
<div
class="pay-with-gems"
@click="selectedPage = 'initial-buttons'"
>
{{ $t('wantToPayWithGemsText') }}
</div>
</div>
</div>
<!-- Own the gryphatrice -->
<div
v-else
class="d-flex"
>
<button
class="own-gryphatrice-button"
@click="closeAndRedirect('/inventory/stable')"
v-html="$t('ownJubilantGryphatrice')"
>
</button>
</div>
<!-- end of payments -->
<h2 class="d-flex justify-content-center">
<span
class="left-divider"
v-html="icons.divider"
></span>
<span
class="svg-cross"
v-html="icons.cross"
>
</span>
{{ $t('plentyOfPotions') }}
<span
class="svg-cross"
v-html="icons.cross"
>
</span>
<span
class="right-divider"
></span>
</h2>
<div class="plenty-of-potions d-flex">
{{ $t('plentyOfPotionsText') }}
</div>
<div class="potions">
<div class="pot-1">
<img src="https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet_HatchingPotion_Porcelain.png">
</div>
<div class="pot-2">
<img src="https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet_HatchingPotion_Vampire.png">
</div>
<div class="pot-3">
<img src="https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet_HatchingPotion_Aquatic.png">
</div>
<div class="pot-4">
<img src="https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet_HatchingPotion_StainedGlass.png">
</div>
<div class="pot-5">
<img src="https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet_HatchingPotion_Celestial.png">
</div>
<div class="pot-6">
<img src="https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet_HatchingPotion_Glow.png">
</div>
<div class="pot-7">
<img src="https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet_HatchingPotion_AutumnLeaf.png">
</div>
<div class="pot-8">
<img src="https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet_HatchingPotion_SandSculpture.png">
</div>
<div class="pot-9">
<img src="https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet_HatchingPotion_Peppermint.png">
</div>
<div class="pot-10">
<img src="https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet_HatchingPotion_Shimmer.png">
</div>
</div>
<button
class="btn btn-secondary d-flex justify-content-center visit-the-market"
@click="closeAndRedirect('/shops/market')"
>
{{ $t('visitTheMarketButton') }}
</button>
<h2 class="d-flex justify-content-center">
<span
class="left-divider"
v-html="icons.divider"
></span>
<span
class="svg-cross"
v-html="icons.cross"
>
</span>
{{ $t('fourForFree') }}
<span
class="svg-cross"
v-html="icons.cross"
>
</span>
<span
class="right-divider"
></span>
</h2>
<div class="four-for-free">
{{ $t('fourForFreeText') }}
</div>
<div class="four-grid d-flex justify-content-center">
<div class="day-one-a">
<div class="day-text">
{{ $t('dayOne') }}
</div>
<div class="gift d-flex justify-content-center align-items-middle">
<img
src="~@/assets/images/robes.webp"
class="m-auto"
width="40px"
height="66px"
>
</div>
<div class="description">
{{ $t('partyRobes') }}
</div>
</div>
<div class="day-one-b">
<div class="day-text">
{{ $t('dayOne') }}
</div>
<div class="gift d-flex justify-content-center align-items-middle">
<div
class="svg-gem svg-icon m-auto"
v-html="icons.birthdayGems"
>
</div>
</div>
<div class="description">
{{ $t('twentyGems') }}
</div>
</div>
<div class="day-five">
<div class="day-text">
{{ $t('dayFive') }}
</div>
<div class="gift d-flex justify-content-center align-items-middle">
<img
src="~@/assets/images/habitica-hero-goober.webp"
class="m-auto"
><!-- Birthday Set -->
</div>
<div class="description">
{{ $t('birthdaySet') }}
</div>
</div>
<div class="day-ten">
<div class="day-text">
{{ $t('dayTen') }}
</div>
<div class="gift d-flex justify-content-center align-items-middle">
<div
class="svg-background svg-icon m-auto"
v-html="icons.birthdayBackground"
>
</div>
</div>
<div class="description">
{{ $t('background') }}
</div>
</div>
</div>
</div>
<div class="modal-bottom">
<div class="limitations d-flex justify-content-center">
{{ $t('limitations') }}
</div>
<div class="fine-print">
{{ $t('anniversaryLimitations') }}
</div>
</div>
</b-modal>
</template>
<style lang="scss">
#birthday-modal {
.modal-body {
padding: 0px;
border: 0px;
}
.modal-content {
border-radius: 14px;
border: 0px;
}
.modal-footer {
border-radius: 14px;
border: 0px;
}
.amazon {
margin-bottom: 16px;
svg {
width: 84px;
position: absolute;
}
.amazonpay-button-inner-image {
opacity: 0;
width: 100%;
}
}
}
</style>
<style scoped lang="scss">
@import '~@/assets/scss/colors.scss';
@import '~@/assets/scss/mixins.scss';
#birthday-modal {
h2 {
font-size: 1.25rem;
font-weight: bold;
line-height: 1.4;
color: $white;
column-gap: 0.5rem;
display: flex;
flex-wrap: nowrap;
justify-content: space-between;
align-content: center;
}
.modal-body{
box-shadow: 0 14px 28px 0 rgba(26, 24, 29, 0.24), 0 10px 10px 0 rgba(26, 24, 29, 0.28);
}
.modal-content {
width: 566px;
padding: 32px 24px 24px;
background: linear-gradient(158deg,#6133b4,#4f2a93);
border-top-left-radius: 12px;
border-top-right-radius: 12px;
border-bottom-left-radius: 0px;
border-bottom-right-radius: 0px;
}
.modal-bottom {
width: 566px;
background-color: $purple-50;
color: $purple-500;
line-height: 1.33;
border-top: 0px;
padding: 16px 40px 28px 40px;
border-bottom-left-radius: 12px;
border-bottom-right-radius: 12px;
}
.limitations {
color: $white;
font-weight: bold;
line-height: 1.71;
margin-top: 8px;
justify-content: center;
}
.fine-print {
font-size: 0.75rem;
color: $purple-500;
line-height: 1.33;
margin-top: 8px;
text-align: center;
}
.ten-birthday {
position: relative;
width: 268px;
height: 244px;
margin: 0 125px 16px;
}
.limited-event {
font-size: 0.75rem;
font-weight: bold;
text-transform: uppercase;
text-align: center;
justify-content: center;
letter-spacing: 2.4px;
margin-top: -8px;
color: $yellow-50;
}
.dates {
font-size: 0.875rem;
font-weight: bold;
line-height: 1.71;
text-align: center;
justify-content: center;
color: $white;
}
.celebrate {
font-size: 1.25rem;
font-weight: bold;
line-height: 1.4;
margin: 16px 16px 24px 16px;
text-align: center;
color: $yellow-50;
}
.jubilant-gryphatrice {
height: 176px;
width: 204px;
border-radius: 12px;
background-color: $purple-50;
align-items: center;
justify-content: center;
margin-right: 24px;
margin-left: 4px;
color: $white;
}
.limited-wrapper {
margin-top: -36px;
margin-bottom: -36px;
}
.limited-edition, .gryphatrice-text, .gryphatrice-price {
max-width: 274px;
}
.limited-edition {
font-size: 0.75rem;
font-weight: bold;
text-transform: uppercase;
line-height:1.33;
letter-spacing:2.4px;
padding-top: 18px;
margin-left: 24px;
margin-bottom: 8px;
color: $yellow-50;
}
.gryphatrice-text, .gryphatrice-price {
font-size: 0.875rem;
line-height: 1.71;
margin-left: 24px;
margin-right: 4px;
color: $white;
}
.gryphatrice-price {
padding-top: 16px;
margin-left: 24px;
}
.buy-now-left {
width: 243px;
margin: 24px 8px 24px 0px;
border-radius: 4px;
box-shadow: 0 1px 3px 0 rgba(26, 24, 29, 0.12), 0 1px 2px 0 rgba(26, 24, 29, 0.24);
}
.buy-now-right {
width: 243px;
margin: 24px 0px 24px 8px;
border-radius: 4px;
box-shadow: 0 1px 3px 0 rgba(26, 24, 29, 0.12), 0 1px 2px 0 rgba(26, 24, 29, 0.24);
}
.stripe {
margin-top: 24px;
margin-bottom: 8px;
padding-bottom: 10px;
}
.paypal {
margin-bottom: 8px;
padding-bottom: 10px;
}
.stripe, .paypal, .amazon {
width: 506px;
height: 32px;
margin-left: 4px;
margin-right: 4px;
border-radius: 4px;
flex-direction: row;
justify-content: center;
align-items: center;
cursor: pointer;
}
.pay-with-gems {
color: $white;
text-align: center;
margin-bottom: 24px;
cursor: pointer;
}
.pay-with-gems:hover {
text-decoration: underline;
cursor: pointer;
}
.own-gryphatrice-button {
width: 506px;
height: 32px;
margin: 24px 4px;
border-radius: 4px;
justify-content: center;
align-items: center;
border: $green-100;
background-color: $green-100;
color: $green-1;
cursor: pointer;
}
.plenty-of-potions {
font-size: 0.875rem;
line-height: 1.71;
margin: 0 8px 24px;
text-align: center;
color: $white;
}
.potions {
display: grid;
grid-template-columns: 5;
grid-template-rows: 2;
gap: 24px 24px;
justify-content: center;
.pot-1, .pot-2, .pot-3, .pot-4, .pot-5,
.pot-6, .pot-7, .pot-8, .pot-9, .pot-10 {
height: 68px;
width: 68px;
border-radius: 8px;
background-color: $purple-50;
}
.pot-1 {
grid-column: 1 / 1;
grid-row: 1 / 2;
}
.pot-2 {
grid-column: 2 / 2;
grid-row: 1 / 2;
}
.pot-3 {
grid-column: 3 / 3;
grid-row: 1 / 2;
}
.pot-4 {
grid-column: 4 / 4;
grid-row: 1 / 2;
}
.pot-5 {
grid-column: 5 / 5;
grid-row: 1 / 2;
}
.pot-6 {
grid-column: 1 / 5;
grid-row: 2 / 2;
}
.pot-7 {
grid-column: 2 / 5;
grid-row: 2 / 2;
}
.pot-8 {
grid-column: 3 / 5;
grid-row: 2 / 2;
}
.pot-9 {
grid-column: 4 / 5;
grid-row: 2 / 2;
}
.pot-10 {
grid-column: 5 / 5;
grid-row: 2 / 2;
}
}
.visit-the-market {
height: 32px;
margin: 24px 4px;
border-radius: 4px;
box-shadow: 0 1px 3px 0 rgba(26, 24, 29, 0.12), 0 1px 2px 0 rgba(26, 24, 29, 0.24);
cursor: pointer;
}
.four-for-free {
font-size: 0.875rem;
line-height: 1.71;
margin: 0 36px 24px;
text-align: center;
color: $white;
}
.four-grid {
display: grid;
grid-template-columns: 4;
grid-template-rows: 1;
gap: 24px;
}
.day-one-a, .day-one-b, .day-five, .day-ten {
height: 140px;
width: 100px;
border-radius: 8px;
background-color: $purple-50;
}
.day-one-a {
grid-column: 1 / 1;
grid-row: 1 / 1;
}
.day-one-b {
grid-column: 2 / 2;
grid-row: 1 / 1;
}
.day-five {
grid-column: 3 / 3;
grid-row: 1 / 1;
}
.day-ten {
grid-column: 4 / 4;
grid-row: 1 / 1;
}
.day-text {
font-size: 0.75rem;
font-weight: bold;
line-height: 1.33;
letter-spacing: 2.4px;
text-align: center;
text-transform: uppercase;
padding: 4px 0px;
color: $yellow-50;
}
.gift {
height: 80px;
width: 84px;
margin: 0 8px 32px;
background-color: $purple-100;
}
.description {
font-size: 0.75rem;
line-height: 1.33;
text-align: center;
padding: 8px 0px;
margin-top: -32px;
color: $white;
}
// SVG CSS
.modal-close {
position: absolute;
right: 16px;
top: 16px;
cursor: pointer;
.svg-close {
width: 18px;
height: 18px;
vertical-align: middle;
fill: $purple-50;
& svg path {
fill: $purple-50 !important;;
}
& :hover {
fill: $purple-50;
}
}
}
.svg-confetti {
position: absolute;
height: 152px;
width: 518px;
margin-top: 24px;
}
.svg-gifts, .svg-gifts-flip {
position: relative;
height: 32px;
width: 85px;
}
.svg-gifts {
margin-left: 70px;
top: 30px;
}
.svg-gifts-flip {
-webkit-transform: scaleX(-1);
transform: scaleX(-1);
left: 366px;
bottom: 34px;
}
.left-divider, .right-divider {
background-image: url('~@/assets/images/fancy-divider.png');
background-position: right center;
background-repeat: no-repeat;
display: inline-flex;
flex-grow: 2;
min-height: 1.25rem;
}
.right-divider {
-webkit-transform: scaleX(-1);
transform: scaleX(-1);
}
.svg-cross {
height: 12px;
width: 12px;
color: $yellow-50;
}
.svg-gem {
height: 48px;
width: 58px;
}
.svg-background {
height: 68px;
width: 68px;
}
.svg-stripe {
height: 20px;
width: 48px;
}
.svg-paypal {
height: 16px;
width: 60px;
}
}
</style>
<script>
// to check if user owns JG or not
import { mapState } from '@/libs/store';
// Purchase functionality
import buy from '@/mixins/buy';
import notifications from '@/mixins/notifications';
import payments from '@/mixins/payments';
import content from '@/../../common/script/content/index';
import amazonButton from '@/components/payments/buttons/amazon';
// import images
import close from '@/assets/svg/new-close.svg';
import confetti from '@/assets/svg/confetti.svg';
import gifts from '@/assets/svg/gifts-birthday.svg';
import cross from '@/assets/svg/cross.svg';
import stripe from '@/assets/svg/stripe.svg';
import paypal from '@/assets/svg/paypal-logo.svg';
import amazon from '@/assets/svg/amazonpay.svg';
import birthdayGems from '@/assets/svg/birthday-gems.svg';
import birthdayBackground from '@/assets/svg/icon-background-birthday.svg';
export default {
components: {
amazonButton,
},
mixins: [buy, notifications, payments],
data () {
return {
amazonData: {
type: 'single',
sku: 'Pet-Gryphatrice-Jubilant',
},
icons: Object.freeze({
close,
confetti,
gifts,
cross,
stripe,
paypal,
amazon,
birthdayGems,
birthdayBackground,
}),
selectedPage: 'initial-buttons',
gryphBought: false,
};
},
computed: {
...mapState({
user: 'user.data',
}),
ownGryphatrice () {
return Boolean(this.user && this.user.items.pets['Gryphatrice-Jubilant']);
},
},
methods: {
hide () {
this.$root.$emit('bv::hide::modal', 'birthday-modal');
},
buyGryphatriceGems () {
const gryphatrice = content.petInfo['Gryphatrice-Jubilant'];
if (this.user.balance * 4 < gryphatrice.value) {
this.$root.$emit('bv::show::modal', 'buy-gems');
return this.hide();
}
if (!this.confirmPurchase(gryphatrice.currency, gryphatrice.value)) {
return null;
}
this.makeGenericPurchase(gryphatrice);
this.gryphBought = true;
return this.purchased(gryphatrice.text());
},
closeAndRedirect (route) {
const routeTerminator = route.split('/')[route.split('/').length - 1];
if (this.$router.history.current.name !== routeTerminator) {
this.$router.push(route);
}
this.hide();
},
close () {
this.$root.$emit('bv::hide::modal', 'birthday-modal');
},
},
};
</script>
@@ -78,6 +78,7 @@ export default {
orderReferenceId: null,
subscription: null,
coupon: null,
sku: null,
},
isAmazonSetup: false,
amazonButtonEnabled: false,
@@ -174,7 +175,10 @@ export default {
storePaymentStatusAndReload (url) {
let paymentType;
if (this.amazonPayments.type === 'single' && !this.amazonPayments.gift) paymentType = 'gems';
if (this.amazonPayments.type === 'single') {
if (this.amazonPayments.sku) paymentType = 'sku';
else if (!this.amazonPayments.gift) paymentType = 'gems';
}
if (this.amazonPayments.type === 'subscription') paymentType = 'subscription';
if (this.amazonPayments.groupId || this.amazonPayments.groupToCreate) paymentType = 'groupPlan';
if (this.amazonPayments.type === 'single' && this.amazonPayments.gift && this.amazonPayments.giftReceiver) {
@@ -223,6 +227,7 @@ export default {
const data = {
orderReferenceId: this.amazonPayments.orderReferenceId,
gift: this.amazonPayments.gift,
sku: this.amazonPayments.sku,
};
if (this.amazonPayments.gemsBlock) {
@@ -83,6 +83,7 @@
}
h4 {
color: $gray-10;
font-size: 0.875rem;
font-weight: bold;
text-align: center;
@@ -1,8 +1,8 @@
<template>
<b-modal
id="payments-success-modal"
:hide-footer="isNewGroup || isGems || isSubscription"
:modal-class="isNewGroup || isGems || isSubscription
:hide-footer="isNewGroup || isGems || isSubscription || ownsJubilantGryphatrice"
:modal-class="isNewGroup || isGems || isSubscription || ownsJubilantGryphatrice
? ['modal-hidden-footer'] : []"
>
<!-- HEADER -->
@@ -20,7 +20,7 @@
<div class="check-container d-flex align-items-center justify-content-center">
<div
v-once
class="svg-icon check"
class="svg-icon svg-check"
v-html="icons.check"
></div>
</div>
@@ -107,6 +107,35 @@
class="small-text auto-renew"
>{{ $t('paymentAutoRenew') }}</span>
</template>
<!-- if you buy the Jubilant Gryphatrice during 10th birthday -->
<template
v-if="ownsJubilantGryphatrice"
>
<div class="words">
<p class="jub-success">
<span
v-once
v-html="$t('jubilantSuccess')"
>
</span>
</p>
<p class="jub-success">
<span
v-once
v-html="$t('stableVisit')"
>
</span>
</p>
</div>
<div class="gryph-bg">
<img
src="https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Gryphatrice-Jubilant-Large.gif"
alt="a pink, purple, and green gryphatrice pet winks at you adorably"
width="78px"
height="72px"
>
</div>
</template>
<!-- buttons for subscriptions / new Group / buy Gems for self -->
<button
v-if="isNewGroup || isGems || isSubscription"
@@ -116,6 +145,14 @@
>
{{ $t('onwards') }}
</button>
<!-- buttons for Jubilant Gryphatrice purchase during 10th birthday -->
<button
v-if="ownsJubilantGryphatrice"
class="btn btn-primary mx-auto btn-jub"
@click="closeAndRedirect()"
>
{{ $t('takeMeToStable') }}
</button>
</div>
</div>
<!-- FOOTER -->
@@ -232,9 +269,8 @@
margin-bottom: 16px;
}
.check {
width: 35.1px;
height: 28px;
.svg-check {
width: 45px;
color: $white;
}
}
@@ -293,6 +329,34 @@
.group-billing-date {
width: 269px;
}
.words {
margin-bottom: 16px;
justify-content: center;
font-size: 0.875rem;
color: $gray-50;
line-height: 1.71;
}
.jub-success {
margin-top: 0px;
margin-bottom: 0px;
}
.gryph-bg {
width: 110px;
height: 104px;
align-items: center;
justify-content: center;
padding: 16px;
border-radius: 4px;
background-color: $gray-700;
}
.btn-jub {
margin-bottom: 8px;
margin-top: 24px;
}
}
.modal-footer {
background: $gray-700;
@@ -430,6 +494,9 @@ export default {
isNewGroup () {
return this.paymentData.paymentType === 'groupPlan' && this.paymentData.newGroup;
},
ownsJubilantGryphatrice () {
return this.paymentData.paymentType === 'sku'; // will need to be revised when there are other discrete skus in system
},
},
mounted () {
this.$root.$on('habitica:payment-success', data => {
@@ -458,6 +525,12 @@ export default {
this.sendingInProgress = false;
this.$root.$emit('bv::hide::modal', 'payments-success-modal');
},
closeAndRedirect () {
if (this.$router.history.current.name !== 'stable') {
this.$router.push('/inventory/stable');
}
this.close();
},
submit () {
if (this.paymentData.group && !this.paymentData.newGroup) {
Analytics.track({
@@ -93,7 +93,7 @@
<div class="subscribe-card mx-auto">
<div
v-if="hasSubscription && !hasCanceledSubscription"
class="d-flex flex-column align-items-center"
class="d-flex flex-column align-items-center pt-4"
>
<div class="round-container bg-green-10 d-flex align-items-center justify-content-center">
<div
@@ -107,7 +107,7 @@
</h2>
<div
v-if="hasGroupPlan"
class="mx-5 text-center"
class="mx-5 mb-4 text-center"
>
{{ $t('youHaveGroupPlan') }}
</div>
@@ -130,7 +130,7 @@
</div>
<button
class="btn btn-primary btn-update-card
d-flex justify-content-center align-items-center"
d-flex justify-content-center align-items-center mb-4"
@click="redirectToStripeEdit()"
>
<div
@@ -143,21 +143,61 @@
</div>
<div
v-else
class="svg-icon"
class="svg-icon mb-4"
:class="paymentMethodLogo.class"
v-html="paymentMethodLogo.icon"
>
</div>
<div
v-if="purchasedPlanExtraMonthsDetails.months > 0"
class="extra-months green-10 py-2 px-3 mt-4"
class="extra-months green-10 py-2 px-3 mb-4"
v-html="$t('purchasedPlanExtraMonths',
{months: purchasedPlanExtraMonthsDetails.months})"
>
</div>
</div>
<div
v-if="hasCanceledSubscription"
v-if="hasGiftSubscription"
class="d-flex flex-column align-items-center mt-4"
>
<div class="round-container bg-green-10 d-flex align-items-center justify-content-center">
<div
v-once
class="svg-icon svg-check"
v-html="icons.checkmarkIcon"
></div>
</div>
<h2 class="green-10 mx-auto mb-75">
{{ $t('youAreSubscribed') }}
</h2>
<div
class="mx-4 text-center mb-4 lh-71"
>
<span v-once>
{{ $t('haveNonRecurringSub') }}
</span>
<span
v-once
v-html="$t('subscriptionInactiveDate', {date: subscriptionEndDate})"
>
</span>
</div>
<h2 v-once>
{{ $t('switchToRecurring') }}
</h2>
<small
v-once
class="mx-4 mb-3 text-center"
>
{{ $t('continueGiftSubBenefits') }}
</small>
<subscription-options
:note="'subscriptionCreditConversion'"
class="w-100 mb-2"
/>
</div>
<div
v-else-if="hasCanceledSubscription"
class="d-flex flex-column align-items-center mt-4"
>
<div class="round-container bg-gray-300 d-flex align-items-center justify-content-center">
@@ -180,7 +220,7 @@
</div>
<div
v-if="hasSubscription"
class="bg-gray-700 py-3 mt-4 mb-3 text-center"
class="bg-gray-700 py-3 mb-3 text-center"
>
<div class="header-mini mb-3">
{{ $t('subscriptionStats') }}
@@ -322,6 +362,12 @@
max-width: 21rem;
}
small {
color: $gray-100;
font-size: 12px ;
line-height: 1.33;
}
strong {
font-size: 16px;
}
@@ -399,6 +445,10 @@
height: 49px;
}
.lh-71 {
line-height: 1.71;
}
.maroon-50 {
color: $maroon-50;
}
@@ -443,7 +493,6 @@
}
.subscribe-card {
padding-top: 2rem;
width: 28rem;
border-radius: 8px;
box-shadow: 0 2px 2px 0 rgba(26, 24, 29, 0.16), 0 1px 4px 0 rgba(26, 24, 29, 0.12);
@@ -472,8 +521,7 @@
}
.svg-check {
width: 35.1px;
height: 28px;
width: 36px;
color: $white;
}
@@ -670,6 +718,9 @@ export default {
hasSubscription () {
return Boolean(this.user.purchased.plan.customerId);
},
hasGiftSubscription () {
return this.user.purchased.plan.customerId === 'Gift';
},
hasCanceledSubscription () {
return (
this.hasSubscription
@@ -1,6 +1,6 @@
<template>
<div id="subscription-form">
<b-form-group class="mb-4 w-100 h-100">
<b-form-group class="mb-3 w-100 h-100">
<!-- eslint-disable vue/no-use-v-if-with-v-for -->
<b-form-radio
v-for="block in subscriptionBlocksOrdered"
@@ -32,6 +32,15 @@
</div>
</b-form-radio>
</b-form-group>
<div class="mx-4 mb-4 text-center">
<small
v-if="note"
v-once
class="font-italic"
>
{{ $t(note) }}
</small>
</div>
<!-- payment buttons first is for gift subs and the second is for renewing subs -->
<payments-buttons
v-if="userReceivingGift && userReceivingGift._id"
@@ -82,7 +91,10 @@
.subscription-bubble, .discount-bubble {
border-radius: 100px;
padding-left: 12px;
padding-right: 12px;
font-size: 12px;
line-height: 1.33;
}
.subscription-bubble {
@@ -100,8 +112,20 @@
<style lang="scss" scoped>
@import '~@/assets/scss/colors.scss';
small {
color: $gray-100;
display: inline-block;
font-size: 12px ;
font-weight: normal;
line-height: 1.33;
}
.subscribe-option {
border-bottom: 1px solid $gray-600;
background-color: $gray-700;
&:not(:last-of-type) {
border-bottom: 1px solid $gray-600;
}
}
</style>
@@ -121,6 +145,10 @@ export default {
paymentsMixin,
],
props: {
note: {
type: String,
default: null,
},
userReceivingGift: {
type: Object,
default () {},
@@ -154,13 +182,13 @@ export default {
subscriptionBubbles (subscription) {
switch (subscription) {
case 'basic_3mo':
return '<span class="subscription-bubble px-2 py-1 mr-1">Gem cap raised to 30</span><span class="subscription-bubble px-2 py-1">+1 Mystic Hourglass</span>';
return '<span class="subscription-bubble py-1 mr-1">Gem cap raised to 30</span><span class="subscription-bubble py-1">+1 Mystic Hourglass</span>';
case 'basic_6mo':
return '<span class="subscription-bubble px-2 py-1 mr-1">Gem cap raised to 35</span><span class="subscription-bubble px-2 py-1">+2 Mystic Hourglass</span>';
return '<span class="subscription-bubble py-1 mr-1">Gem cap raised to 35</span><span class="subscription-bubble py-1">+2 Mystic Hourglass</span>';
case 'basic_12mo':
return '<span class="discount-bubble px-2 py-1 mr-1">Save 20%</span><span class="subscription-bubble px-2 py-1 mr-1">Gem cap raised to 45</span><span class="subscription-bubble px-2 py-1">+4 Mystic Hourglass</span>';
return '<span class="discount-bubble py-1 mr-1">Save 20%</span><span class="subscription-bubble py-1 mr-1">Gem cap raised to 45</span><span class="subscription-bubble py-1">+4 Mystic Hourglass</span>';
default:
return '<span class="subscription-bubble px-2 py-1">Gem cap at 25</span>';
return '<span class="subscription-bubble py-1">Gem cap at 25</span>';
}
},
updateSubscriptionData (key) {
@@ -146,6 +146,7 @@
</style>
<script>
import find from 'lodash/find';
import _filter from 'lodash/filter';
import _map from 'lodash/map';
import _throttle from 'lodash/throttle';
@@ -225,7 +226,7 @@ export default {
user: 'user.data',
userStats: 'user.data.stats',
userItems: 'user.data.items',
currentEvent: 'worldState.data.currentEvent',
currentEventList: 'worldState.data.currentEventList',
}),
market () {
return shops.getMarketShop(this.user);
@@ -292,15 +293,16 @@ export default {
return Object.values(this.viewOptions).some(g => g.selected);
},
imageURLs () {
if (!this.currentEvent || !this.currentEvent.season) {
const currentEvent = find(this.currentEventList, event => Boolean(event.season));
if (!currentEvent) {
return {
background: 'url(/static/npc/normal/market_background.png)',
npc: 'url(/static/npc/normal/market_banner_npc.png)',
};
}
return {
background: `url(/static/npc/${this.currentEvent.season}/market_background.png)`,
npc: `url(/static/npc/${this.currentEvent.season}/market_banner_npc.png)`,
background: `url(/static/npc/${currentEvent.season}/market_background.png)`,
npc: `url(/static/npc/${currentEvent.season}/market_banner_npc.png)`,
};
},
},
@@ -397,6 +397,7 @@
</style>
<script>
import find from 'lodash/find';
import _filter from 'lodash/filter';
import _sortBy from 'lodash/sortBy';
import _throttle from 'lodash/throttle';
@@ -512,7 +513,7 @@ export default {
user: 'user.data',
userStats: 'user.data.stats',
userItems: 'user.data.items',
currentEvent: 'worldState.data.currentEvent',
currentEventList: 'worldState.data.currentEventList',
}),
shop () {
return shops.getQuestShop(this.user);
@@ -536,15 +537,16 @@ export default {
return Object.values(this.viewOptions).some(g => g.selected);
},
imageURLs () {
if (!this.currentEvent || !this.currentEvent.season) {
const currentEvent = find(this.currentEventList, event => Boolean(event.season));
if (!currentEvent) {
return {
background: 'url(/static/npc/normal/quest_shop_background.png)',
npc: 'url(/static/npc/normal/quest_shop_npc.png)',
};
}
return {
background: `url(/static/npc/${this.currentEvent.season}/quest_shop_background.png)`,
npc: `url(/static/npc/${this.currentEvent.season}/quest_shop_npc.png)`,
background: `url(/static/npc/${currentEvent.season}/quest_shop_background.png)`,
npc: `url(/static/npc/${currentEvent.season}/quest_shop_npc.png)`,
};
},
},
@@ -2,7 +2,7 @@
<div class="container-fluid">
<h1>{{ $t('communityGuidelines') }}</h1>
<hr>
<p>{{ $t('lastUpdated') }} July 28, 2021</p>
<p>{{ $t('lastUpdated') }} February 8, 2023</p>
<h2 id="welcome">
{{ $t('commGuideHeadingWelcome') }}
</h2>
@@ -21,6 +21,7 @@
<p v-html="$t('commGuidePara016')"></p>
<p v-html="$t('commGuidePara017')"></p>
<ul>
<li v-html="$t('commGuideList01F')"></li>
<li v-html="$t('commGuideList01A')"></li>
<li v-html="$t('commGuideList01B')"></li>
<li v-html="$t('commGuideList01C')"></li>
@@ -32,6 +33,7 @@
<img src="~@/assets/images/community-guidelines/publicSpaces.png">
</div>
<ul>
<li v-html="$t('commGuideList02N')"></li>
<li v-html="$t('commGuideList02A')"></li>
<li v-html="$t('commGuideList02B')"></li>
<li v-html="$t('commGuideList02G')"></li>
@@ -150,7 +152,6 @@
<li>{{ $t('commGuideList10A1') }}</li>
</ul>
</li>
<li v-html="$t('commGuideList10C')"></li>
<li v-html="$t('commGuideList10D')"></li>
<li v-html="$t('commGuideList10F')"></li>
</ul>
@@ -176,50 +177,53 @@
<h2 id="meet-the-mods">
{{ $t('commGuideHeadingMeet') }}
</h2>
<p v-html="$t('commGuidePara006')"></p>
<p v-html="$t('commGuidePara007')"></p>
<p v-html="$t('commGuidePara008')"></p>
<p v-html="$t('commGuidePara009')"></p>
<div class="media align-items-center">
<img src="~@/assets/images/community-guidelines/staff.png">
<div class="media-body">
<ul>
<li>{{ $t('commGuideAKA', {habitName: 'Viirus', realName: 'Phillip'}) }}</li>
<li>
{{ $t('commGuideAKA', {habitName: 'heyeilatan', realName: 'Natalie'}) }}
({{ $t('commGuideOnGitHub', {gitHubName: 'CuriousMagpie'}) }})
- Web Developer
</li>
<li>
{{ $t('commGuideAKA', {habitName: 'Viirus', realName: 'Phillip'}) }}
- Mobile Developer
</li>
<li>
{{ $t('commGuideAKA', {habitName: 'redphoenix', realName: 'Vicky'}) }}
({{ $t('commGuideOnGitHub', {gitHubName: 'veeeeeee'}) }})
- Co-Founder
</li>
<li>
{{ $t('commGuideAKA', {habitName: 'Beffymaroo', realName: 'Beth'}) }}
- Art, Community Management, Many Hats
</li>
<li>
{{ $t('commGuideAKA', {habitName: 'SabreCat', realName: 'Sabe'}) }}
- Web Developer
</li>
<li>
{{ $t('commGuideAKA', {habitName: 'Apollo', realName: 'Tressley'}) }}
- Designer
</li>
<li>
{{ $t('commGuideAKA', {habitName: 'Piyo', realName: 'Sara'}) }}
- Mobile Designer
</li>
<li>{{ $t('commGuideAKA', {habitName: 'Beffymaroo', realName: 'Beth'}) }}</li>
<li>{{ $t('commGuideAKA', {habitName: 'SabreCat', realName: 'Sabe'}) }}</li>
<li>{{ $t('commGuideAKA', {habitName: 'Apollo', realName: 'Tressley'}) }}</li>
<li>{{ $t('commGuideAKA', {habitName: 'Piyo', realName: 'Sara'}) }}</li>
</ul>
</div>
</div>
<p v-html="$t('commGuidePara010')"></p>
<div class="media align-items-center">
<img src="~@/assets/images/community-guidelines/moderators.png">
<div class="media-body">
<p v-html="$t('commGuidePara011')"></p>
<ul>
<li>Dewines</li>
<li>Nakonana</li>
<li>Cantras</li>
<li>Alys (LadyAlys {{ $t('commGuidePara011c') }})</li>
<li>Fox_town</li>
<li>MaybeSteveRogers</li>
<li>shanaqui</li>
<li>deilann (not yet pictured)</li>
</ul>
</div>
</div>
<p v-html="$t('commGuidePara012')"></p>
<p v-html="$t('commGuidePara013')"></p>
<p>
{{ $t('commGuidePara014') }}<br>
<em>
Lemoness, lefnire, Slappybag, litenull, Shaner, Bobbyroberts99, wc8,
Breadstrings, Megan, Blade, and Daniel the Bard
Breadstrings, Megan, Blade, Daniel the Bard, deilann, shanaqui, Nakonana,
Dewines, Alys, Fox_town, MaybeSteveRogers, and Cantras.
</em>
</p>
<h2 id="final">
@@ -240,6 +244,7 @@
</ul>
<p v-html="$t('commGuidePara069')"></p>
<ul class="list-2col list-unstyled">
<li>Beffymaroo</li>
<li>Breadstrings</li>
<li>Draayder</li>
<li>Kiwibot</li>
+1
View File
@@ -26,6 +26,7 @@ export default {
'Fox-Veteran',
'JackOLantern-Glow',
'Gryphon-Gryphatrice',
'Gryphatrice-Jubilant',
'JackOLantern-RoyalPurple',
];
const BASE_PETS = [
+9 -1
View File
@@ -9,7 +9,6 @@ import { CONSTANTS, setLocalSetting } from '@/libs/userlocalManager';
const { STRIPE_PUB_KEY } = process.env;
// const habiticaUrl = `${window.location.protocol}//${window.location.host}`;
let stripeInstance = null;
export default {
@@ -70,6 +69,7 @@ export default {
type,
giftData,
gemsBlock,
sku,
} = data;
let { url } = data;
@@ -93,6 +93,11 @@ export default {
url += `?gemsBlock=${gemsBlock.key}`;
}
if (type === 'sku') {
appState.sku = sku;
url += `?sku=${sku}`;
}
setLocalSetting(CONSTANTS.savedAppStateValues.SAVED_APP_STATE, JSON.stringify(appState));
window.open(url, '_blank');
@@ -129,6 +134,7 @@ export default {
if (data.group || data.groupToCreate) paymentType = 'groupPlan';
if (data.gift && data.gift.type === 'gems') paymentType = 'gift-gems';
if (data.gift && data.gift.type === 'subscription') paymentType = 'gift-subscription';
if (data.sku) paymentType = 'sku';
let url = '/stripe/checkout-session';
const postData = {};
@@ -148,6 +154,7 @@ export default {
if (data.coupon) postData.coupon = data.coupon;
if (data.groupId) postData.groupId = data.groupId;
if (data.demographics) postData.demographics = data.demographics;
if (data.sku) postData.sku = data.sku;
const response = await axios.post(url, postData);
@@ -250,6 +257,7 @@ export default {
if (data.type === 'single') {
this.amazonPayments.gemsBlock = data.gemsBlock;
this.amazonPayments.sku = data.sku;
}
if (data.gift) {
+15 -9
View File
@@ -127,16 +127,22 @@
"achievementReptacularRumbleModalText": "لقد جمعت كل الزواحف الأليفة!",
"achievementReptacularRumbleText": "لقد فقس جميع الألوان القياسية للحيوانات الأليفة الزواحف: التمساح، الزاحف المجنح، الأفعى، ترايسيراتوبس، السلحفاة، التيرانوصور ريكس وفيلوسيرابتور!",
"achievementBirdsOfAFeather": "أصدقاء الطيران",
"achievementZodiacZookeeper": "حارس حديقة الحيوانات الفلكية",
"achievementShadyCustomerText": "جمع كل حيوانات الظل الأليفة.",
"achievementShadyCustomerModalText": "لقد جمعت كل حيوانات الظل الأليفة!",
"achievementZodiacZookeeperModalText": "لقد جمعت كل الحيوانات الأليفة الفلكية!",
"achievementZodiacZookeeper": "حارس البروج",
"achievementShadyCustomerText": "جمعت كل الحيوانات الأليفة السوداء.",
"achievementShadyCustomerModalText": "لقد جمعت كل الحيوانات الأليفة السوداء!",
"achievementZodiacZookeeperModalText": "لقد جمعت كل حيوانات البروج الأليفة!",
"achievementBirdsOfAFeatherText": "لقد فقس جميع الألوان القياسية للحيوانات الأليفة الطائرة: الخنزير الطائر، البومة، الببغاء، الزاحف المجنح، الجرايفون، فالكون، الطاووس والديك!",
"achievementShadeOfItAllModalText": "قمت بترويض كل الحيوانات السوداء",
"achievementShadyCustomer": "عميل الظل",
"achievementShadeOfItAll": "الظل فوق كل شيء",
"achievementShadeOfItAllText": "روض كل حيوانات الظل السوداء.",
"achievementShadeOfItAllModalText": "لقد قمت بترويض كل الركوبات السوداء!",
"achievementShadyCustomer": "عميل مشبوه",
"achievementShadeOfItAll": "كل شيء في الظلام",
"achievementShadeOfItAllText": "قام بترويض كل الركوبات السوداء.",
"achievementWoodlandWizard": "ساحر الغابة",
"achievementWoodlandWizardText": "لقد فقس جميع الألوان القياسية لمخلوقات الغابة: الغرير، الدب، الغزال، الثعلب، الضفدع، القنفذ، البومة، الأفعى، السنجاب والشجيرة!",
"achievementWoodlandWizardModalText": "لقد جمعت كل حيوانات الغابة الأليفة!"
"achievementWoodlandWizardModalText": "لقد جمعت كل حيوانات الغابة الأليفة!",
"achievementPolarPro": "المحترف القطبي",
"achievementPolarProText": "فقست جميع الحيوانات الأليفة القطبية: الدب ، الثعلب ، البطريق ، الحوت ، والذئب!",
"achievementPolarProModalText": "لقد جمعت كل الحيوانات الأليفة القطبية!",
"achievementBoneToPick": "جامع العظام",
"achievementBoneToPickText": "فقست جميع الحيوانات الأليفة الهيكلية المغامرة والكلاسيكية!",
"achievementBoneToPickModalText": "لقد جمعت كل الحيوانات الأليفة الهيكلية المغامرة والكلاسيكية!"
}
+27 -1
View File
@@ -422,5 +422,31 @@
"backgroundDuckPondNotes": "أطعم الطيور المائية في بركة البط.",
"backgroundValentinesDayFeastingHallNotes": "اشعر بالحب في قاعة احتفالات عيد الحب.",
"hideLockedBackgrounds": "إخفاء الخلفيات المقفلة",
"backgrounds032019": "SET 58: تم إصداره في مارس 2019"
"backgrounds032019": "SET 58: تم إصداره في مارس 2019",
"backgroundFieldWithColoredEggsNotes": "ابحث عن كنز الربيع في حقل به بيض ملون.",
"backgroundFlowerMarketNotes": "اعثر على الزهور المثالية لباقة أو حديقة في سوق الزهور.",
"backgrounds052019": "المجموعة 60: صدرت في مايو 2019",
"backgroundHalflingsHouseNotes": "قم بزيارة منزل هافلينج الساحر.",
"backgroundBirchForestText": "غابة البتولا",
"backgroundBlossomingDesertNotes": "شاهد إزهارًا هائلًا نادرًا في الصحراء المزهرة.",
"backgroundDojoText": "دوجو",
"backgroundBlossomingDesertText": "الصحراء المزهرة",
"backgroundHalflingsHouseText": "منزل هافلينج",
"backgroundFlowerMarketText": "سوق الزهور",
"backgroundBirchForestNotes": "اقضِ بعض الوقت في غابة البتولا الهادئة.",
"backgroundFieldWithColoredEggsText": "حقل به بيض ملون",
"backgrounds042019": "المجموعة 59: صدرت في أبريل 2019",
"backgroundRainbowMeadowNotes": "ابحث عن وعاء الذهب حيث ينتهي قوس قزح في مرج.",
"backgrounds062019": "المجموعة 61: صدرت في يونيو 2019",
"backgroundUnderwaterVentsNotes": "غص في الأعماق حيث تكمن الفتحات المائية الحرارية.",
"backgroundRainbowMeadowText": "مرج قوس قزح",
"backgroundSeasideCliffsNotes": "قف على الشاطئ وسط جمال المنحدرات الساحلية المحيطة.",
"backgroundSchoolOfFishNotes": "اسبح بين سرب من الأسماك.",
"backgroundUnderwaterVentsText": "الفتحات الحرارية المائية",
"backgroundSeasideCliffsText": "المنحدرات الساحلية",
"backgroundParkWithStatueText": "حديقة بها تمثال",
"backgroundDojoNotes": "تعلم حركات جديدة في دوجو.",
"backgroundSchoolOfFishText": "سرب من الأسماك",
"backgrounds072019": "المجموعة 62: صدرت في يوليو 2019",
"backgroundParkWithStatueNotes": "اتبع مسارًا تصطف على جانبيه الأزهار عبر حديقة بها تمثال."
}
+2 -2
View File
@@ -91,7 +91,7 @@
"weaponSpecialTakeThisText": "Take This Sword",
"weaponSpecialTakeThisNotes": "This sword was earned by participating in a sponsored Challenge made by Take This. Congratulations! Increases all Stats by <%= attrs %>.",
"weaponSpecialTridentOfCrashingTidesText": "ترايدنت الأمواج المتضاربة",
"weaponSpecialTridentOfCrashingTidesNotes": "يمنحك القدرة على التحكم بالأسماك، وكذلك القدرة على تقديم بعض الطعنات القوية لمهماتك. يزيد الذكاء بقدر <%= int %>.",
"weaponSpecialTridentOfCrashingTidesNotes": "يمنحك القدرة على التحكم بالأسماك، وكذلك القدرة على توجيه بعض الطعنات القوية لمهماتك. يزيد الذكاء بقدر <%= int %>.",
"weaponSpecialTaskwoodsLanternText": "Taskwoods Lantern",
"weaponSpecialTaskwoodsLanternNotes": "Given at the dawn of time to the guardian ghost of the Taskwood Orchards, this lantern can illuminate the deepest darkness and weave powerful spells. Increases Perception and Intelligence by <%= attrs %> each.",
"weaponSpecialBardInstrumentText": "Bardic Lute",
@@ -117,7 +117,7 @@
"weaponSpecialYetiText": "رمح مروض اليتي",
"weaponSpecialYetiNotes": "هذا الرمح يسمح لمستخدمه الصيطرة على أي يتي. يزيد القوة بقدر <%= str %>. معدات الطبعة المحدودة لشتاء 2013-2014.",
"weaponSpecialSkiText": "عمود المتزلج القاتل",
"weaponSpecialSkiNotes": "سلاح قادر على تدمير المجموعات الكبيرة من الأعداء. وأيضاً يساعد مستخدمه على الانعطافات المتوازية. يزيد القوة بقدر <%= str %>. معدات الطبعة المحدودة لشتاء 2013-2014.",
"weaponSpecialSkiNotes": "سلاح قادر على تدمير المجموعات الكبيرة من الأعداء. وأيضاً يساعد مستخدمه على الانعطافات المتوازية. يزيد القوة بقدر <%= str %>. معدات الطبعة المحدودة لشتاء 2013-2014.",
"weaponSpecialCandycaneText": "قضيب حلوى القصب",
"weaponSpecialCandycaneNotes": "A powerful mage's staff. Powerfully DELICIOUS, we mean! Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2013-2014 Winter Gear.",
"weaponSpecialSnowflakeText": "العصا السحرية ذات ندفة الثلج",
+4 -2
View File
@@ -11,7 +11,7 @@
"messageLikesFood": "<%= egg %> يحب <%= foodText %> كثيراً!",
"messageDontEnjoyFood": "<%= egg %> يأكل <%= foodText %> ولكنه لا يبدو مستمتعاً.",
"messageBought": "لقد اشتريت <%= itemText %>",
"messageUnEquipped": "<%= itemText %> unequipped.",
"messageUnEquipped": "<%= itemText %> غير مجهز/ة.",
"messageMissingEggPotion": "تفتقد أيًا من تلك البيضة أو جرعة الفقس.",
"messageInvalidEggPotionCombo": "لا يمكنك فقس بيض حيوانات التنقيب مع جرع فقس سحرية! جرب بيضة أخرى.",
"messageAlreadyPet": "لديك ذلك الحيوان الأليف. حاول فقس تركيبة مختلفة!",
@@ -50,5 +50,7 @@
"unallocatedStatsPoints": "You have <span class=\"notification-bold-blue\"><%= points %> unallocated Stat Points</span>",
"beginningOfConversation": "هذه هي بداية محادثتك مع <%= userName %>. تذكر أن تكون لطيفاً محترماً، واتبع إرشادات المنتدى!",
"messageDeletedUser": "عذراً، لقد حذف هذا المستخدم حسابه.",
"messageMissingDisplayName": "Missing display name."
"messageMissingDisplayName": "Missing display name.",
"messageBattleGearUnEquipped": "المعدات القتالية غير مجهزة.",
"messageCostumeUnEquipped": "الزي غير مجهز."
}
+10 -9
View File
@@ -1,8 +1,8 @@
{
"achievement": "Постижение",
"onwards": "Напред!",
"levelup": "Изпълнявайки целите си в истинския живот, Вие качихте ниво и здравето Ви беше запълнено!",
"reachedLevel": "Достигнахте ниво <%= level %>",
"levelup": "Изпълнявайки целите си в истинския живот, Вие се качихте ниво и здравето Ви беше запълнено!",
"reachedLevel": "Достигнахте Ниво <%= level %>",
"achievementLostMasterclasser": "Изпълнител на Мисии: Серия на Класовите Повелители",
"achievementLostMasterclasserText": "Завършихте шестнадесетте мисии от Серията на Класовите Повелители и разрешихте загадката на Изгубената Класова Повелителка!",
"achievementUndeadUndertaker": "Нежив Погребален Директор",
@@ -59,13 +59,13 @@
"foundNewItemsExplanation": "Завършека на задачи ви дава шанс да намерите предмети като Яйца, Излюпващи Отвари и Животинска Храна.",
"foundNewItems": "Намерихте нови предмети!",
"hideAchievements": "Скрий <%= category %>",
"showAllAchievements": "Покажи Всички",
"onboardingCompleteDescSmall": "Ако желаете още повече, отидете в Постижения и започнете събирането!",
"showAllAchievements": "Покажи Всички <%=category %>",
"onboardingCompleteDescSmall": "Ако желаете още повече, отидете в Постижения и започнете колекционирането!",
"onboardingCompleteDesc": "Получихте <strong>5 Постижения</strong> и <strong class=\"gold-amount\">100 Злато</strong> за завършения списък.",
"onboardingComplete": "Завършихте задачите си!",
"onboardingComplete": "Завършихте уводните си задачи!",
"earnedAchievement": "Получихте постижение!",
"yourProgress": "Вашият Напредък",
"gettingStartedDesc": "Изпълнете задачите и ще получите <strong>5 Постижения </strong> и <strong class=\"gold-amount\">100 Злато </strong>при завършване!",
"gettingStartedDesc": "Изпълнете тези уводни задачи и ще получите <strong>5 Постижения </strong> и <strong class=\"gold-amount\">100 Злато </strong>при завършване!",
"achievementPrimedForPaintingModalText": "Събрахте всички Бели Животни!",
"achievementPearlyProModalText": "Опитомихте всички Бели Оседлани Зверове!",
"achievementPearlyProText": "Опетомили са всички Оседлани Зверове.",
@@ -75,13 +75,13 @@
"achievementFedPet": "Нахрани Животно",
"achievementHatchedPetModalText": "Отиди в инвентара си и смеси излюпваща отвара с Яйце",
"achievementHatchedPet": "Излюпи Животно",
"viewAchievements": "Постижения",
"viewAchievements": регледай Постижения",
"letsGetStarted": "Нека да започнем!",
"onboardingProgress": "<%= percentage %>% напредък",
"achievementBareNecessitiesModalText": "Завършихте мисиите за Маймуна, Ленивец и Фиданка!",
"achievementBareNecessitiesText": "Завършили са всички мисии за Маймуна, Ленивец и Фиданка.",
"achievementBareNecessities": "От първа необходимост",
"achievementBoneCollectorText": "Събрали сте всички Скелети домашни любимци.",
"achievementBoneCollectorText": "Събрали са всички Скелетни Любимци.",
"achievementBoneCollector": "Колекционер на кости",
"achievementAllThatGlittersModalText": "Събрахте всички оседлани Златни животни!",
"achievementAllThatGlittersText": "Събрали сте всички оседлани Златни животни.",
@@ -92,5 +92,6 @@
"achievementFreshwaterFriendsModalText": "Завършихте мисиите за аксолотъла, жабата и хипопотама!",
"achievementFreshwaterFriendsText": "Завършили сте мисиите за домашни любимци за аксолотъла, жабата и хипопотама.",
"achievementFreshwaterFriends": "Сладководни приятели",
"yourRewards": "Вашите възнаграждения"
"yourRewards": "Вашите Награди",
"achievementBoneCollectorModalText": "Събрали сте всичките Скелетни Любимци!"
}
+1 -1
View File
@@ -143,6 +143,6 @@
"achievementBoneToPickText": "Has hatched all the Classic and Quest Skeleton Pets!",
"achievementBoneToPickModalText": "You collected all the Classic and Quest Skeleton Pets!",
"achievementPolarPro": "Polar Pro",
"achievementPolarProText": "Has hatched all Polar pets: Bear, Fox, Penguin, Whale, and Wolf!",
"achievementPolarProText": "Has hatched all standard colors of Polar pets: Bear, Fox, Penguin, Whale, and Wolf!",
"achievementPolarProModalText": "You collected all the Polar Pets!"
}
+21 -1
View File
@@ -843,11 +843,31 @@
"backgroundSnowyVillageText": "Snowy Village",
"backgroundSnowyVillageNotes": "Admire a Snowy Village.",
"backgrounds012023": "SET 104: Released January 2023",
"backgroundRimeIceText": "Rime Ice",
"backgroundRimeIceNotes": "Admire Sparkly Rime Ice.",
"backgroundSnowyTempleText": "Snowy Temple",
"backgroundSnowyTempleNotes": "View a Serene Snowy Temple.",
"backgroundWinterLakeWithSwansText": "Winter Lake With Swans",
"backgroundWinterLakeWithSwansNotes": "Enjoy Nature at a Winter Lake With Swans.",
"backgrounds022023": "SET 105: Released February 2023",
"backgroundInFrontOfFountainText": "In Front of a Fountain",
"backgroundInFrontOfFountainNotes": "Stroll In Front of a Fountain.",
"backgroundGoldenBirdcageText": "Golden Birdcage",
"backgroundGoldenBirdcageNotes": "Hide out in a Golden Birdcage.",
"backgroundFancyBedroomText": "Fancy Bedroom",
"backgroundFancyBedroomNotes": "Luxuriate in a Fancy Bedroom.",
"timeTravelBackgrounds": "Steampunk Backgrounds",
"backgroundAirshipText": "Airship",
"backgroundAirshipNotes": "Become a sky sailor on board your very own Airship.",
"backgroundSteamworksText": "Steamworks",
"backgroundSteamworksNotes": "Build mighty contraptions of vapor and steel in a Steamworks.",
"backgroundClocktowerText": "Clock Tower",
"backgroundClocktowerNotes": "Situate your secret lair behind the face of a Clock Tower."
"backgroundClocktowerNotes": "Situate your secret lair behind the face of a Clock Tower.",
"eventBackgrounds": "Event Backgrounds",
"backgroundBirthdayBashText": "Birthday Bash",
"backgroundBirthdayBashNotes": "Habitica's having a birthday party, and everyone's invited!"
}
@@ -5,53 +5,55 @@
"commGuideHeadingWelcome": "Welcome to Habitica!",
"commGuidePara001": "Greetings, adventurer! Welcome to Habitica, the land of productivity, healthy living, and the occasional rampaging gryphon. We have a cheerful community full of helpful people supporting each other on their way to self-improvement. To fit in, all it takes is a positive attitude, a respectful manner, and the understanding that everyone has different skills and limitations -- including you! Habiticans are patient with one another and try to help whenever they can.",
"commGuidePara002": "To help keep everyone safe, happy, and productive in the community, we do have some guidelines. We have carefully crafted them to make them as friendly and easy-to-read as possible. Please take the time to read them before you start chatting.",
"commGuidePara003": "These rules apply to all of the social spaces we use, including (but not necessarily limited to) Trello, GitHub, Weblate, and the Habitica Wiki on Fandom. As communities grow and change, their rules may adapt from time to time. When there are substantive changes to these Guidelines, you'll hear about it in a Bailey announcement and/or our social media!",
"commGuidePara003": "These rules apply to all of the social spaces we use, including (but not necessarily limited to) Trello, GitHub, Weblate, and the Habitica Wiki on Fandom. As communities grow and change, their rules may adapt from time to time. When there are substantive changes to the community rules listed here, you'll hear about it in a Bailey announcement and/or our social media!",
"commGuideHeadingInteractions": "Interactions in Habitica",
"commGuidePara015": "Habitica has two kinds of social spaces: public, and private. Public spaces include the Tavern, Public Guilds, GitHub, Trello, and the Wiki. Private spaces are Private Guilds, Party chat, and Private Messages. All Display Names and @usernames must comply with the public space guidelines. To change your Display Name and/or @username, on mobile go to Menu > Settings > Profile. On web, go to User > Settings.",
"commGuidePara016": "When navigating the public spaces in Habitica, there are some general rules to keep everyone safe and happy.",
"commGuidePara017": "Here's the quick version, but we encourage you to read in more detail below:",
"commGuideList01F": "Please flag posts that break our Community Guidelines or TOS.",
"commGuideList01A": "Terms & Conditions apply across all spaces, including private guilds, party chat, and messages.",
"commGuideList01B": "Prohibited: Any communication that is violent, threatening, promoting of discrimination etc. including memes, images, and jokes.",
"commGuideList01C": "All discussions must be appropriate for all ages and be free of profanity.",
"commGuideList01D": "Please comply with mod requests.",
"commGuideList01E": "Do not instigate or engage in contentious conversation in the Tavern.",
"commGuideList01D": "Please comply with staff requests.",
"commGuideList01E": "<strong>Do not instigate or engage in contentious conversation in the Tavern.</strong>",
"commGuideList01F": "No begging for paid items, spamming, or large header text/all caps.",
"commGuideList02N": "<strong>Flag and report posts that break these Guidelines or the Terms of Service.</strong> We will handle them as quickly as possible. You may also notify staff via <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> but flags are the fastest way to get help.",
"commGuideList02A": "<strong>Respect each other</strong>. Be courteous, kind, friendly, and helpful. Remember: Habiticans come from all backgrounds and have had wildly divergent experiences. This is part of what makes Habitica so cool! Building a community means respecting and celebrating our differences as well as our similarities.",
"commGuideList02B": "<strong>Obey all of the <a href='/static/terms' target='_blank'>Terms and Conditions</a></strong> in both public and private spaces.",
"commGuideList02G": "<strong>Comply immediately with any Mod request.</strong> This could include, but is not limited to, requesting you limit your posts in a particular space, editing your profile to remove unsuitable content, asking you to move your discussion to a more suitable space, etc. Do not argue with moderators. If you have concerns or comments about moderation, email <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> to contact our community manager.",
"commGuideList02B": "<strong>Obey all of the <a href='https://habitica.com/static/terms' target='_blank'>Terms and Conditions</a></strong> in both public and private spaces.",
"commGuideList02G": "<strong>Comply immediately with any Staff request.</strong> This could include, but is not limited to, requesting you limit your posts in a particular space, editing your profile to remove unsuitable content, asking you to move your discussion to a more suitable space, etc. Do not argue with staff. If you have concerns or comments about staff actions, email <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> to contact our community manager.",
"commGuideList02C": "<strong>Do not post images or text that are violent, threatening, or sexually explicit/suggestive, or that promote discrimination, bigotry, racism, sexism, hatred, harassment or harm against any individual or group</strong>. Not even as a joke or meme. This includes slurs as well as statements. Not everyone has the same sense of humor, and so something that you consider a joke may be hurtful to another.",
"commGuideList02D": "<strong>Keep discussions appropriate for all ages</strong>. This means avoiding adult topics in public spaces. We have many young Habiticans who use the site, and people come from all walks of life. We want our community to be as comfortable and inclusive as possible.",
"commGuideList02E": "<strong>Avoid profanity. This includes milder, religious-based oaths that may be acceptable elsewhere and abbreviated or obscured profanity.</strong> We have people from all religious and cultural backgrounds, and we want to make sure that all of them feel comfortable in public spaces. <strong>If a moderator or staff member tells you that a term is disallowed on Habitica, even if it is a term that you did not realize was problematic, that decision is final.</strong> Additionally, slurs will be dealt with very severely, as they are also a violation of the Terms of Service.",
"commGuideList02F": "Avoid extended discussions of divisive topics in the Tavern and where it would be off-topic. If someone mentions something that is allowed by the guidelines but which is hurtful to you, it's okay to politely let them know that. If someone tells you you've made them uncomfortable, take time to reflect instead of responding in anger. But if you feel that a conversation is getting heated, overly emotional, or hurtful, <strong>cease to engage. Instead, report the posts to let us know about it.</strong> Moderators will respond as quickly as possible. You may also email <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> and include screenshots if they may be helpful.",
"commGuideList02E": "<strong>Avoid profanity. This includes abbreviated or obscured profanity.</strong> We have people from all religious and cultural backgrounds, and we want to make sure that all of them feel comfortable in public spaces. <strong>If a staff member tells you that a term is disallowed on Habitica, even if it is a term that you did not realize was problematic, that decision is final.</strong> Additionally, slurs will be dealt with very severely, as they are also a violation of the Terms of Service.",
"commGuideList02F": "Avoid extended discussions of divisive topics in the Tavern and where it would be off-topic. If someone mentions something that is allowed by the guidelines but which is hurtful to you, it's okay to politely let them know that. If someone tells you you've made them uncomfortable, take time to reflect instead of responding in anger. But if you feel that a conversation is getting heated, overly emotional, or hurtful, <strong>cease to engage. Instead, report the posts to let us know about it. </strong>Staff will respond as quickly as possible. You may also email <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> and include screenshots if they may be helpful.",
"commGuideList02M": "Do not ask or beg for gems, subscriptions or membership in Group Plans. This is not allowed in the Tavern, public or private chat spaces, or in PMs. If you receive messages asking for paid items, please report them by flagging. Repeated or severe gem or subscription begging, especially after a warning, may result in an account ban.",
"commGuideList02J": "<strong>Do not spam</strong>. Spamming may include, but is not limited to: posting the same comment or query in multiple places, <strong>posting links without explanation or context</strong>, posting nonsensical messages, posting multiple promotional messages about a Guild, Party or Challenge, or posting many messages in a row. If people clicking on a link will result in any benefit to you, you need to disclose that in the text of your message or that will also be considered spam. Mods may decide what constitutes spam at their discretion.",
"commGuideList02J": "<strong>Do not spam</strong>. Spamming may include, but is not limited to: posting the same comment or query in multiple places, <strong>posting links without explanation or context</strong>, posting nonsensical messages, posting multiple promotional messages about a Guild, Party or Challenge, or posting many messages in a row. If people clicking on a link will result in any benefit to you, you need to disclose that in the text of your message or that will also be considered spam. Staff may decide what constitutes spam at their discretion.",
"commGuideList02K": "<strong>Avoid posting large header text in the public chat spaces, particularly the Tavern</strong>. Much like ALL CAPS, it reads as if you were yelling, and interferes with the comfortable atmosphere.",
"commGuideList02L": "<strong>We highly discourage the exchange of personal information -- particularly information that can be used to identify you -- in public chat spaces</strong>. Identifying information can include but is not limited to: your address, your email address, and your API token/password. This is for your safety! Staff or moderators may remove such posts at their discretion. If you are asked for personal information in a private Guild, Party, or PM, we highly recommend that you politely refuse and alert the staff and moderators by either 1) flagging the message, or 2) emailing <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> and including screenshots.",
"commGuideList02L": "<strong>We highly discourage the exchange of personal information -- particularly information that can be used to identify you -- in public chat spaces</strong>. Identifying information can include but is not limited to: your address, your email address, and your API token/password. This is for your safety! Staff may remove such posts at their discretion. If you are asked for personal information in a private Guild, Party, or PM, we highly recommend that you politely refuse and alert the staff by either 1) flagging the message, or 2) emailing <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> and including screenshots.",
"commGuidePara019": "<strong>In private spaces</strong>, users have more freedom to discuss whatever topics they would like, but they still may not violate the Terms and Conditions, including posting slurs or any discriminatory, violent, or threatening content. Note that, because Challenge names appear in the winner's public profile, ALL Challenge names must obey the public space guidelines, even if they appear in a private space.",
"commGuidePara020": "<strong>Private Messages (PMs)</strong> have some additional guidelines. If someone has blocked you, do not contact them elsewhere to ask them to unblock you. Additionally, you should not send PMs to someone asking for support (since public answers to support questions are helpful to the community). Finally, do not send anyone PMs begging for paid content of any kind.",
"commGuidePara020A": "<strong>If you see a post or private message that you believe is in violation of the public space guidelines outlined above, or if you see a post or private message that concerns you or makes you uncomfortable, you can bring it to the attention of Moderators and Staff by clicking the flag icon to report it</strong>. A Staff member or Moderator will respond to the situation as soon as possible. Please note that intentionally reporting innocent posts is an infraction of these Guidelines (see below in \"Infractions\"). You can also contact the Mods by emailing <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> You may want to do this if there are multiple problematic posts by the same person in different Guilds, or if the situation requires some explanation. You may contact us in your native language if that is easier for you: we may have to use Google Translate, but we want you to feel comfortable about contacting us if you have a problem.",
"commGuidePara020A": "<strong>If you see a post or private message that you believe is in violation of the public space guidelines outlined above, or if you see a post or private message that concerns you or makes you uncomfortable, you can bring it to the attention of Staff by clicking the flag icon to report it</strong>. A Staff member will respond to the situation as soon as possible. Please note that intentionally reporting innocent posts is an infraction of these Guidelines (see below in \"Infractions\"). You can also contact the Staff by emailing <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> You may want to do this if there are multiple problematic posts by the same person in different Guilds, or if the situation requires some explanation. You may contact us in your native language if that is easier for you: we may have to use Google Translate, but we want you to feel comfortable about contacting us if you have a problem.",
"commGuidePara021": "Furthermore, some public spaces in Habitica have additional guidelines.",
"commGuideHeadingTavern": "The Tavern",
"commGuidePara022": "The Tavern is the main spot for Habiticans to mingle. Daniel the Innkeeper keeps the place spic-and-span, and Lemoness will happily conjure up some lemonade while you sit and chat. Just keep in mind…",
"commGuidePara023": "<strong>Conversation tends to revolve around casual chatting and productivity or life improvement tips</strong>. Because the Tavern chat can only hold 200 messages, <strong>it isn't a good place for prolonged conversations on topics, especially sensitive ones</strong> (ex. politics, religion, depression, whether or not goblin-hunting should be banned, etc.). These conversations should be taken to an applicable Guild. A Mod may direct you to a suitable Guild, but it is ultimately your responsibility to find and post in the appropriate place.",
"commGuidePara023": "<strong>Conversation tends to revolve around casual chatting and productivity or life improvement tips</strong>. Because the Tavern chat can only hold 200 messages, <strong>it isn't a good place for prolonged conversations on topics, especially sensitive or contentious ones</strong> (ex. politics, religion, depression, whether or not goblin-hunting should be banned, etc.). These conversations should be taken to an applicable Guild. Staff may direct you to a suitable Guild, but it is ultimately your responsibility to find and post in the appropriate place.",
"commGuidePara024": "<strong>Don't discuss anything addictive in the Tavern</strong>. Many people use Habitica to try to quit their bad Habits. Hearing people talk about addictive/illegal substances may make this much harder for them! Respect your fellow Tavern-goers and take this into consideration. This includes, but is not exclusive to: smoking, alcohol, pornography, gambling, and drug use/abuse.",
"commGuideHeadingPublicGuilds": "Public Guilds",
"commGuidePara029": "<strong>Public Guilds are much like the Tavern, except that instead of being centered around general conversation, they have a focused theme</strong>. Public Guild chat should focus on this theme. For example, members of the Wordsmiths Guild might be cross if the conversation is suddenly focusing on gardening instead of writing, and a Dragon-Fanciers Guild might not have any interest in deciphering ancient runes. Some Guilds are more lax about this than others, but in general, <strong>try to stay on topic</strong>!",
"commGuidePara031": "Some public Guilds will contain sensitive topics such as depression, religion, politics, etc. This is fine as long as the conversations therein do not violate any of the Terms and Conditions or Public Space Rules, and as long as they stay on topic.",
"commGuidePara033": "<strong>Public Guilds may NOT contain 18+ content. If they plan to regularly discuss sensitive content, they should say so in the Guild description</strong>. This is to keep Habitica safe and comfortable for everyone.",
"commGuidePara035": "<strong>If the Guild in question has different kinds of sensitive issues, it is respectful to your fellow Habiticans to place your comment behind a warning (ex. \"Warning: references self-harm\")</strong>. These may be characterized as trigger warnings and/or content notes, and Guilds may have their own rules in addition to those given here. If possible, please use <a href='https://habitica.fandom.com/wiki/Markdown_Cheat_Sheet' target='_blank'>markdown</a> to hide the potentially sensitive content below line breaks so that those who may wish to avoid reading it can scroll past it without seeing the content. Habitica staff and moderators may still remove this material at their discretion.",
"commGuidePara035": "<strong>If the Guild in question has different kinds of sensitive issues, it is respectful to your fellow Habiticans to include a warning (ex. \"Warning: references self-harm\")</strong>. These may be characterized as trigger warnings and/or content notes, and Guilds may have their own rules in addition to those given here. Habitica staff may still remove this material at their discretion.",
"commGuidePara036": "Additionally, the sensitive material should be topical -- bringing up self-harm in a Guild focused on fighting depression may make sense, but is probably less appropriate in a music Guild. If you see someone who is repeatedly violating this guideline, especially after several requests, please report the posts.",
"commGuidePara037": "<strong>No Guilds, Public or Private, should be created for the purpose of attacking any group or individual</strong>. Creating such a Guild is grounds for an instant ban. Fight bad habits, not your fellow adventurers!",
"commGuidePara038": "<strong>All Tavern Challenges and Public Guild Challenges must comply with these rules as well</strong>.",
"commGuideHeadingInfractionsEtc": "Infractions, Consequences, and Restoration",
"commGuideHeadingInfractions": "Infractions",
"commGuidePara050": "Overwhelmingly, Habiticans assist each other, are respectful, and work to make the whole community fun and friendly. However, once in a blue moon, something that a Habitican does may violate one of the above guidelines. When this happens, the Mods will take whatever actions they deem necessary to keep Habitica safe and comfortable for everyone.",
"commGuidePara051": "<strong>There are a variety of infractions, and they are dealt with depending on their severity</strong>. These are not comprehensive lists, and the Mods can make decisions on topics not covered here at their own discretion. The Mods will take context into account when evaluating infractions.",
"commGuidePara050": "Overwhelmingly, Habiticans assist each other, are respectful, and work to make the whole community fun and friendly. However, once in a blue moon, something that a Habitican does may violate one of the above guidelines. When this happens, the Staff will take whatever actions they deem necessary to keep Habitica safe and comfortable for everyone.",
"commGuidePara051": "<strong>There are a variety of infractions, and they are dealt with depending on their severity</strong>. These are not comprehensive lists, and the Staff can make decisions on topics not covered here at their own discretion. The Staff will take context into account when evaluating infractions.",
"commGuideHeadingSevereInfractions": "Severe Infractions",
"commGuidePara052": "Severe infractions greatly harm the safety of Habitica's community and users, and therefore have severe consequences as a result.",
@@ -59,16 +61,16 @@
"commGuideList05A": "Violation of Terms and Conditions",
"commGuideList05B": "Hate Speech/Images, Harassment/Stalking, Cyber-Bullying, Flaming, and Trolling",
"commGuideList05C": "Violation of Probation",
"commGuideList05D": "Impersonation of Staff or Moderators - this includes claiming user-created spaces not affiliated with Habitica are official and/or moderated by Habitica or its Mods/staff",
"commGuideList05D": "Impersonation of Staff - this includes claiming user-created spaces not affiliated with Habitica are official and/or moderated by Habitica or its Staff",
"commGuideList05E": "Repeated Moderate Infractions",
"commGuideList05F": "Creation of a duplicate account to avoid consequences (for example, making a new account to chat after having chat privileges revoked)",
"commGuideList05G": "Intentional deception of Staff or Moderators in order to avoid consequences or to get another user in trouble",
"commGuideList05G": "Intentional deception of Staff in order to avoid consequences or to get another user in trouble",
"commGuideList05H": "Severe or repeated attempts to defraud or pressure other players for real-money items",
"commGuideHeadingModerateInfractions": "Moderate Infractions",
"commGuidePara054": "Moderate infractions do not make our community unsafe, but they do make it unpleasant. These infractions will have moderate consequences. When in conjunction with multiple infractions, the consequences may grow more severe.",
"commGuidePara055": "The following are some examples of Moderate Infractions. This is not a comprehensive list.",
"commGuideList06A": "Ignoring, disrespecting or arguing with a Mod. This includes publicly complaining about moderators or other users, publicly glorifying or defending banned users, or debating whether or not a moderator action was appropriate. If you are concerned about one of the rules or the behaviour of the Mods, please contact the staff via email (<a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a>).",
"commGuideList06A": "<strong>Ignoring, disrespecting or arguing with Staff.</strong> This includes publicly complaining about staff or other users, publicly glorifying or defending banned users, or debating whether or not a staff action was appropriate. If you are concerned about one of the rules or the behavior of the Staff, please contact us via email (<a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a>).",
"commGuideList06B": "Backseat Modding. To quickly clarify a relevant point: A friendly mention of the rules is fine. Backseat modding consists of telling, demanding, and/or strongly implying that someone must take an action that you describe to correct a mistake. You can alert someone to the fact that they have committed a transgression, but please do not demand an action -- for example, saying, \"Just so you know, profanity is discouraged in the Tavern, so you may want to delete that,\" would be better than saying, \"I'm going to have to ask you to delete that post.\"",
"commGuideList06C": "Intentionally flagging innocent posts.",
"commGuideList06D": "Repeatedly Violating Public Space Guidelines",
@@ -78,14 +80,14 @@
"commGuidePara056": "Minor Infractions, while discouraged, still have minor consequences. If they continue to occur, they can lead to more severe consequences over time.",
"commGuidePara057": "The following are some examples of Minor Infractions. This is not a comprehensive list.",
"commGuideList07A": "First-time violation of Public Space Guidelines",
"commGuideList07B": "Any statements or actions that trigger a \"Please Don't\" from a Mod. When you are asked not to do something publicly, this in itself can be a consequence. If Mods have to issue many of these corrections to the same person, it may count as a larger infraction",
"commGuideList07B": "Any statements or actions that trigger a \"Please Don't\" from a Staff member. When you are asked not to do something publicly, this in itself can be a consequence. If Staff have to issue many of these corrections to the same person, it may count as a larger infraction",
"commGuidePara057A": "Some posts may be hidden because they contain sensitive information or might give people the wrong idea. Typically this does not count as an infraction, particularly not the first time it happens!",
"commGuideHeadingConsequences": "Consequences",
"commGuidePara058": "In Habitica -- as in real life -- every action has a consequence, whether it is getting fit because you've been running, getting cavities because you've been eating too much sugar, or passing a class because you've been studying.",
"commGuidePara059": "<strong>Similarly, all infractions have direct consequences.</strong> Some sample consequences are outlined below.",
"commGuidePara060": "<strong>If your infraction has a moderate or severe consequence, there will be a post from a staff member or moderator in the forum in which the infraction occurred explaining</strong>:",
"commGuidePara060": "<strong>If your infraction has a moderate or severe consequence, if appropriate for the circumstances, there will be a post from a staff member in the forum in which the infraction occurred explaining</strong>:",
"commGuideList08A": "what your infraction was",
"commGuideList08B": "what the consequence is",
"commGuideList08C": "what to do to correct the situation and restore your status, if possible.",
@@ -97,35 +99,29 @@
"commGuideList09D": "Removal or demotion of Contributor Tiers",
"commGuideHeadingModerateConsequences": "Examples of Moderate Consequences",
"commGuideList10A": "Restricted public and/or private chat privileges",
"commGuideList10A1": "If your actions result in revocation of your chat privileges, a Moderator or Staff member will PM you and/or post in the forum in which you were muted to notify you of the reason for your muting and the length of time for which you will be muted and/or the action required for reinstatement. You will be reinstated if you comply politely with the actions required and agree to abide by the Community Guidelines and ToS",
"commGuideList10C": "Restricted Guild/Challenge creation privileges",
"commGuideList10A1": "If your actions result in revocation of your chat privileges, you must email <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a>. You may be reinstated at staff discretion if you comply politely with the actions required and agree to abide by the Community Guidelines and ToS",
"commGuideList10D": "Temporarily disabling (\"freezing\") progression through Contributor Tiers",
"commGuideList10F": "Putting users on \"Probation\"",
"commGuideHeadingMinorConsequences": "Examples of Minor Consequences",
"commGuideList11A": "Reminders of Public Space Guidelines",
"commGuideList11B": "Warnings",
"commGuideList11C": "Requests",
"commGuideList11D": "Deletions (Mods/Staff may delete problematic content)",
"commGuideList11E": "Edits (Mods/Staff may edit problematic content)",
"commGuideList11D": "Deletions (Staff may delete problematic content)",
"commGuideList11E": "Edits (Staff may edit problematic content)",
"commGuideHeadingRestoration": "Restoration",
"commGuidePara061": "Habitica is a land devoted to self-improvement, and we believe in second chances. <strong>If you commit an infraction and receive a consequence, view it as a chance to evaluate your actions and strive to be a better member of the community</strong>.",
"commGuidePara062": "The announcement, message, and/or email that you receive explaining the consequences of your actions is a good source of information. Cooperate with any restrictions which have been imposed, and endeavor to meet the requirements to have any penalties lifted.",
"commGuidePara063": "If you do not understand your consequences, or the nature of your infraction, ask the Staff/Moderators for help so you can avoid committing infractions in the future. If you feel a particular decision was unfair, you can contact the staff to discuss it at <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a>.",
"commGuidePara063": "If you do not understand your consequences, or the nature of your infraction, ask the Staff for help so you can avoid committing infractions in the future. If you feel a particular decision was unfair, you can contact the staff to discuss it at <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a>.",
"commGuideHeadingMeet": "Meet the Staff and Mods!",
"commGuidePara006": "Habitica has some tireless knights-errant who join forces with the staff members to keep the community calm, contented, and free of trolls. Each has a specific domain, but will sometimes be called to serve in other social spheres.",
"commGuidePara007": "Staff have purple tags marked with crowns. Their title is \"Heroic\".",
"commGuidePara008": "Mods have dark blue tags marked with stars. Their title is \"Guardian\".",
"commGuideHeadingMeet": "Meet the Staff",
"commGuidePara007": "The Habitica Staff keep the app and sites running and can act as chat moderators. They have purple tags marked with crowns. Their title is \"Heroic\".",
"commGuidePara009": "The current Staff Members are (from left to right):",
"commGuideAKA": "<%= habitName %> aka <%= realName %>",
"commGuideOnGitHub": "<%= gitHubName %> on GitHub",
"commGuidePara010": "There are also several Moderators who assist the staff members. They were selected carefully, so please give them your respect and listen to their suggestions.",
"commGuidePara011": "The current Moderators are (from left to right):",
"commGuidePara011b": "on GitHub/Fandom",
"commGuidePara011c": "on the Wiki",
"commGuidePara011d": "on GitHub",
"commGuidePara012": "If you have an issue or concern about a particular Mod, please send an email to our Staff (<a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a>).",
"commGuidePara013": "In a community as big as Habitica, users come and go, and sometimes a staff member or moderator needs to lay down their noble mantle and relax. The following are Staff and Moderators Emeritus. They no longer act with the power of a Staff member or Moderator, but we would still like to honor their work!",
"commGuidePara014": "Staff and Moderators Emeritus:",
+1
View File
@@ -310,6 +310,7 @@
"hatchingPotionOnyx": "Onyx",
"hatchingPotionVirtualPet": "Virtual Pet",
"hatchingPotionPorcelain": "Porcelain",
"hatchingPotionPinkMarble": "Pink Marble",
"hatchingPotionNotes": "Pour this on an egg, and it will hatch as a <%= potText(locale) %> pet.",
"premiumPotionAddlNotes": "Not usable on quest pet eggs. Available for purchase until <%= date(locale) %>.",
+2 -1
View File
@@ -179,5 +179,6 @@
"signup": "Sign Up",
"getStarted": "Get Started!",
"mobileApps": "Mobile Apps",
"learnMore": "Learn More"
"learnMore": "Learn More",
"translateHabitica": "Translate Habitica"
}
+27 -4
View File
@@ -438,8 +438,8 @@
"headSpecialNye2021Text": "Preposterous Party Hat",
"headSpecialNye2021Notes": "You've received a Preposterous Party Hat! Wear it with pride while ringing in the New Year! Confers no benefit.",
"headSpecialNye2022Text": "Fantastic Party Hat",
"headSpecialNye2022Notes": "You've received a Fantastic Party Hat! Wear it with pride while ringing in the New Year! Confers no benefit.",
"headSpecialNye2022Text": "Fabulous Party Hat",
"headSpecialNye2022Notes": "You've received a Fabulous Party Hat! Wear it with pride while ringing in the New Year! Confers no benefit.",
"weaponSpecialSpring2022RogueText": "Giant Earring Stud",
"weaponSpecialSpring2022RogueNotes": "A shiny! Its so shiny and gleaming and pretty and nice and all yours! Increases Strength by <%= str %>. Limited Edition 2022 Spring Gear.",
@@ -801,7 +801,8 @@
"armorSpecialBirthday2021Notes": "Happy Birthday, Habitica! Wear these Extravagant Party Robes to celebrate this wonderful day. Confers no benefit.",
"armorSpecialBirthday2022Text": "Preposterous Party Robes",
"armorSpecialBirthday2022Notes": "Happy Birthday, Habitica! Wear these Proposterous Party Robes to celebrate this wonderful day. Confers no benefit.",
"armorSpecialBirthday2023Text": "Fabulous Party Robes",
"armorSpecialBirthday2023Notes": "Happy Birthday, Habitica! Wear these Fabulous Party Robes to celebrate this wonderful day. Confers no benefit.",
"armorSpecialGaymerxText": "Rainbow Warrior Armor",
"armorSpecialGaymerxNotes": "In celebration of the GaymerX Conference, this special armor is decorated with a radiant, colorful rainbow pattern! GaymerX is a game convention celebrating LGTBQ and gaming and is open to everyone.",
@@ -1425,6 +1426,10 @@
"armorArmoireSheetGhostCostumeNotes": "Boo! This is the scariest costume in all of Habitica, so wear it wisely... and watch your step so you dont trip. Increases Constitution by <%= con %>. Enchanted Armoire: Independent Item.",
"armorArmoireJewelersApronText": "Jeweler's Apron",
"armorArmoireJewelersApronNotes": "This heavy-duty apron is just the thing to wear when you feel creative. Best of all, there are dozens of small pockets to hold everything you need. Increases Intelligence by <%= int %>. Enchanted Armoire: Jeweler Set (Item 1 of 4).",
"armorArmoireShawlCollarCoatText": "Shawl-Collar Coat",
"armorArmoireShawlCollarCoatNotes": "A wise wizard once said theres nothing better than being both cozy and productive! Wear this warm and stylish coat as you conquer the years challenges. Increases Constitution by <%= con %>. Enchanted Armoire: Independent Item.",
"armorArmoireTeaGownText": "Tea Party Gown",
"armorArmoireTeaGownNotes": "Youre resilient, creative, brilliant, and so fashionable! Increases Strength and Intelligence by <%= attrs %> each. Enchanted Armoire: Tea Party Set (Item 1 of 3).",
"headgear": "helm",
"headgearCapitalized": "Headgear",
@@ -2009,6 +2014,8 @@
"headMystery202210Notes": "This scaly hood will surely terrify your To-Do list into submission! Confers no benefit. October 2022 Subscriber Item.",
"headMystery202211Text": "Electromancer Hat",
"headMystery202211Notes": "Be careful with this powerful hat, its effect on admirers can be quite shocking! Confers no benefit. November 2022 Subscriber Item.",
"headMystery202301Text": "Valiant Vulpine Ears",
"headMystery202301Notes": "Your hearing will be so sharp you'll hear the dawn breaking and the dew sparkling. Confers no benefit. January 2023 Subscriber Item.",
"headMystery301404Text": "Fancy Top Hat",
"headMystery301404Notes": "A fancy top hat for the finest of gentlefolk! January 3015 Subscriber Item. Confers no benefit.",
"headMystery301405Text": "Basic Top Hat",
@@ -2184,6 +2191,8 @@
"headArmoireStrawRainHatNotes": "Youll be able to spot every obstacle in your path when you wear this water-resistant, conical hat. Increases Perception by <%= per %>. Enchanted Armoire: Straw Raincoat Set (Item 2 of 2).",
"headArmoireFancyPirateHatText": "Fancy Pirate Hat",
"headArmoireFancyPirateHatNotes": "Be protected from the sun and any seagulls flying overhead as you drink tea on the deck of your ship. Increases Perception by <%= per %>. Enchanted Armoire: Fancy Pirate Set (Item 2 of 3).",
"headArmoireTeaHatText": "Tea Party Hat",
"headArmoireTeaHatNotes": "This elegant hat is both fancy and functional. Increases Perception by <%= per %>. Enchanted Armoire: Tea Party Set (Item 2 of 3).",
"offhand": "off-hand item",
"offHandCapitalized": "Off-Hand Item",
@@ -2590,7 +2599,8 @@
"shieldArmoireBubblingCauldronNotes": "The perfect cauldron for brewing up a productivity potion or cooking a savory soup. In fact, there is little difference between the two! Increases Constitution by <%= con %>. Enchanted Armoire: Cooking Implements Set (Item 2 of 2).",
"shieldArmoireJewelersPliersText": "Jeweler's Pliers",
"shieldArmoireJewelersPliersNotes": "They cut, twist, pinch, and more. This tool can help you create whatever you can imagine. Increases Strength by <%= str %>. Enchanted Armoire: Jeweler Set (Item 3 of 4).",
"shieldArmoireTeaKettleText": "Tea Kettle",
"shieldArmoireTeaKettleNotes": "All your favorite, flavorful teas can be brewed in this kettle. Are you in the mood for black tea, green tea, oolong, or perhaps an herbal infusion? Increases Constitution by <%= con %>. Enchanted Armoire: Tea Party Set (Item 3 of 3).",
"back": "Back Accessory",
"backBase0Text": "No Back Accessory",
@@ -2657,6 +2667,10 @@
"backMystery202205Notes": "The mighty flap of these vast wings can be heard echoing among the dunes. Confers no benefit. May 2022 Subscriber Item.",
"backMystery202206Text": "Sea Sprite Wings",
"backMystery202206Notes": "Whimsical wings made of water and waves! Confers no benefit. June 2022 Subscriber Item.",
"backMystery202301Text": "Five Tails of Valor",
"backMystery202301Notes": "These fluffy tails contain ethereal power and also a high level of charm! Confers no benefit. January 2023 Subscriber Item.",
"backMystery202302Text": "Trickster Tabby Tail",
"backMystery202302Notes": "Anytime you wear this tail it's sure to be a frabjous day! Callooh! Callay! Confers no benefit. February 2023 Subscriber Item.",
"backSpecialWonderconRedText": "Mighty Cape",
"backSpecialWonderconRedNotes": "Swishes with strength and beauty. Confers no benefit. Special Edition Convention Item.",
@@ -2674,6 +2688,9 @@
"backSpecialTurkeyTailGildedNotes": "Plumage fit for a parade! Confers no benefit.",
"backSpecialNamingDay2020Text": "Royal Purple Gryphon Tail",
"backSpecialNamingDay2020Notes": "Happy Naming Day! Swish this fiery, pixely tail about as you celebrate Habitica. Confers no benefit.",
"backSpecialAnniversaryText": "Habitica Hero Cape",
"backSpecialAnniversaryNotes": "Let this proud cape fly in the wind and tell everyone that you're a Habitica Hero. Confers no benefit. Special Edition 10th Birthday Bash Item.",
"backBearTailText": "Bear Tail",
"backBearTailNotes": "This tail makes you look like a brave bear! Confers no benefit.",
"backCactusTailText": "Cactus Tail",
@@ -2705,6 +2722,8 @@
"bodySpecialTakeThisNotes": "These pauldrons were earned by participating in a sponsored Challenge made by Take This. Congratulations! Increases all Stats by <%= attrs %>.",
"bodySpecialAetherAmuletText": "Aether Amulet",
"bodySpecialAetherAmuletNotes": "This amulet has a mysterious history. Increases Constitution and Strength by <%= attrs %> each.",
"bodySpecialAnniversaryText": "Habitica Hero Collar",
"bodySpecialAnniversaryNotes": "Perfectly complement your royal purple ensemble! Confers no benefit. Special Edition 10th Birthday Bash Item.",
"bodySpecialSummerMageText": "Shining Capelet",
"bodySpecialSummerMageNotes": "Neither salt water nor fresh water can tarnish this metallic capelet. Confers no benefit. Limited Edition 2014 Summer Gear.",
@@ -2861,6 +2880,8 @@
"headAccessoryMystery202205Notes": "These dazzling horns are as bright as a desert sunset. Confers no benefit. May 2022 Subscriber Item.",
"headAccessoryMystery202212Text": "Glacial Tiara",
"headAccessoryMystery202212Notes": "Magnify your warmth and friendship to new heights with this ornate golden tiara. Confers no benefit. December 2022 Subscriber Item.",
"headAccessoryMystery202302Text": "Trickster Tabby Ears",
"headAccessoryMystery202302Notes": "The purr-fect accessory to set off your enchanting grin. Confers no benefit. February 2023 Subscriber Item.",
"headAccessoryMystery301405Text": "Headwear Goggles",
"headAccessoryMystery301405Notes": "\"Goggles are for your eyes,\" they said. \"Nobody wants goggles that you can only wear on your head,\" they said. Hah! You sure showed them! Confers no benefit. August 3015 Subscriber Item.",
@@ -2907,6 +2928,8 @@
"eyewearSpecialAetherMaskNotes": "This mask has a mysterious history. Increases Intelligence by <%= int %>.",
"eyewearSpecialKS2019Text": "Mythic Gryphon Visor",
"eyewearSpecialKS2019Notes": "Bold as a gryphon's... hmm, gryphons don't have visors. It reminds you to... oh, who are we kidding, it just looks cool! Confers no benefit.",
"eyewearSpecialAnniversaryText": "Habitica Hero Mask",
"eyewearSpecialAnniversaryNotes": "Look through the eyes of a Habitica Hero - you! Confers no benefit. Special Edition 10th Birthday Bash Item.",
"eyewearSpecialSummerRogueText": "Roguish Eyepatch",
"eyewearSpecialSummerRogueNotes": "It doesn't take a scallywag to see how stylish this is! Confers no benefit. Limited Edition 2014 Summer Gear.",
+31 -2
View File
@@ -209,6 +209,7 @@
"dateEndOctober": "October 31",
"dateEndNovember": "November 30",
"dateEndDecember": "December 31",
"dateStartFebruary": "February 8",
"januaryYYYY": "January <%= year %>",
"februaryYYYY": "February <%= year %>",
"marchYYYY": "March <%= year %>",
@@ -236,5 +237,33 @@
"g1g1Limitations": "This is a limited time event that starts on December 15th at 8:00 AM ET (13:00 UTC) and will end January 8th at 11:59 PM ET (January 9th 04:59 UTC). This promotion only applies when you gift to another Habitican. If you or your gift recipient already have a subscription, the gifted subscription will add months of credit that will only be used after the current subscription is canceled or expires.",
"noLongerAvailable": "This item is no longer available.",
"gemSaleHow": "Between <%= eventStartMonth %> <%= eventStartOrdinal %> and <%= eventEndOrdinal %>, simply purchase any Gem bundle like usual and your account will be credited with the promotional amount of Gems. More Gems to spend, share, or save for any future releases!",
"gemSaleLimitations": "This promotion only applies during the limited time event. This event starts on <%= eventStartMonth %> <%= eventStartOrdinal %> at 8:00 AM EDT (12:00 UTC) and will end <%= eventStartMonth %> <%= eventEndOrdinal %> at 8:00 PM EDT (00:00 UTC). The promo offer is only available when buying Gems for yourself."
}
"gemSaleLimitations": "This promotion only applies during the limited time event. This event starts on <%= eventStartMonth %> <%= eventStartOrdinal %> at 8:00 AM EDT (12:00 UTC) and will end <%= eventStartMonth %> <%= eventEndOrdinal %> at 8:00 PM EDT (00:00 UTC). The promo offer is only available when buying Gems for yourself.",
"anniversaryLimitations": "This is a limited time event that starts on January 30th at 8:00 AM ET (13:00 UTC) and will end February 8th at 11:59 PM ET (04:59 UTC). The Limited Edition Jubilant Gryphatrice and ten Magic Hatching Potions will be available to buy during this time. The other Gifts listed in the Four for Free section will be automatically delivered to all accounts that were active in the 30 days prior to day the gift is sent. Accounts created after the gifts are sent will not be able to claim them.",
"anniversaryLimitedDates": "January 30th to February 8th",
"limitedEvent": "Limited Event",
"celebrateAnniversary": "Celebrate Habitica's 10th Birthday with gifts and exclusive items below!",
"celebrateBirthday": "Celebrate Habitica's 10th Birthday with gifts and exclusive items!",
"jubilantGryphatricePromo": "Animated Jubilant Gryphatrice Pet",
"limitedEdition": "Limited Edition",
"anniversaryGryphatriceText": "The rare Jubilant Gryphatrice joins the birthday celebrations! Don't miss your chance to own this exclusive animated Pet.",
"anniversaryGryphatricePrice": "Own it today for <strong>$9.99</strong> or <strong>60 gems</strong>",
"buyNowMoneyButton": "Buy Now for $9.99",
"buyNowGemsButton": "Buy Now for 60 Gems",
"wantToPayWithGemsText": "Want to pay with Gems?",
"wantToPayWithMoneyText": "Want to pay with Stripe, Paypal, or Amazon?",
"ownJubilantGryphatrice": "<strong>You own the Jubilant Gryphatrice!</strong> Visit the Stable to equip!",
"jubilantSuccess": "You've successfully purchased the <strong>Jubilant Gryphatrice!</strong>",
"stableVisit": "Visit the Stable to equip!",
"takeMeToStable": "Take me to the Stable",
"plentyOfPotions": "Plenty of Potions",
"plentyOfPotionsText": "We're bringing back 10 of the community's favorite Magic Hatching potions. Head over to The Market to fill out your collection!",
"visitTheMarketButton": "Visit the Market",
"fourForFree": "Four for Free",
"fourForFreeText": "To keep the party going, we'll be giving away Party Robes, 20 Gems, and a limited edition birthday Background and item set that includes a Cape, Pauldrons, and an Eyemask.",
"dayOne": "Day 1",
"dayFive": "Day 5",
"dayTen": "Day 10",
"partyRobes": "Party Robes",
"twentyGems": "20 Gems",
"birthdaySet": "Birthday Set"
}
+1
View File
@@ -32,6 +32,7 @@
"royalPurpleJackalope": "Royal Purple Jackalope",
"invisibleAether": "Invisible Aether",
"gryphatrice": "Gryphatrice",
"jubilantGryphatrice": "Jubilant Gryphatrice",
"potion": "<%= potionType %> Potion",
"egg": "<%= eggType %> Egg",
"eggs": "Eggs",
+12 -2
View File
@@ -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 an 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 Mistiflying -- and 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",
@@ -877,5 +877,15 @@
"questVirtualPetRageDescription": "This bar fills when you don't complete your Dailies. When it is full, the Wotchimon will take away some of your party's pending damage!",
"questVirtualPetRageEffect": "`Wotchimon uses Bothersome Beep!` Wotchimon sounds a bothersome beep, and its happiness bar suddenly disappears! Pending damage reduced.",
"questVirtualPetDropVirtualPetPotion": "Virtual Pet Hatching Potion",
"questVirtualPetUnlockText": "Unlocks Virtual Pet Hatching Potion for purchase in the Market"
"questVirtualPetUnlockText": "Unlocks Virtual Pet Hatching Potion for purchase in the Market",
"questPinkMarbleText": "Calm the Corrupted Cupid",
"questPinkMarbleNotes": "After hearing rumors about a cave in the Meandering Mountains that has pink rocks and dust shooting out of it, your party starts to investigate. As you approach the cave, there is indeed a huge pink dust cloud and strangely, you hear a tiny voice's battle cry, followed by the sound of shattering rock.<br><br>@Empress42 accidentally inhales some of the dust and suddenly feels dreamy and less productive. “Same here!” says @QuartzFox, “I'm suddenly fantasizing about a person that I barely know!”<br><br>@a_diamond peeks into the cave and finds a little being zipping around and smashing pink marbled rock to dust. “Take cover! This Cupid has been corrupted and is using his magic to cause limerence and unrealistic infatuations! We have to subdue him!”",
"questPinkMarbleCompletion": "You manage to pin the little guy down at last he was much tougher and faster than expected. Before he stirs again, you take away his quiver of glowing arrows. He blinks and suddenly looks around in surprise. “To escape my own sorrow and heartbreak for a while I pricked myself with one of my arrows… I don't remember anything after that!”<br><br>He is just about to flee the cave, notices that @Loremi has taken a sample of the marble dust and grins. “Try using some of this pink marble dust in a potion! Nurture the pets that hatch from it and you will find that real relationships are born from communication, mutual trust and care. I wish you luck, and I wish you love!”",
"questPinkMarbleBoss": "Cupido",
"questPinkMarbleRageTitle": "Pink Punch",
"questPinkMarbleRageDescription": "This bar fills when you don't complete your Dailies. When it is full, Cupido will take away some of your party's pending damage!",
"questPinkMarbleRageEffect": "`Cupido uses Pink Punch!` That wasn't affectionate at all! Your partymates are taken aback. Pending damage reduced.",
"questPinkMarbleDropPinkMarblePotion": "Pink Marble Hatching Potion",
"QuestPinkMarbleUnlockText": "Unlocks Pink Marble Hatching Potions for purchase in the Market."
}
+8 -2
View File
@@ -145,6 +145,8 @@
"mysterySet202210": "Ominous Ophidian Set",
"mysterySet202211": "Electromancer Set",
"mysterySet202212": "Glacial Guardian Set",
"mysterySet202301": "Valiant Vulpine Set",
"mysterySet202302": "Trickster Tabby Set",
"mysterySet301404": "Steampunk Standard Set",
"mysterySet301405": "Steampunk Accessories Set",
"mysterySet301703": "Peacock Steampunk Set",
@@ -201,12 +203,16 @@
"lookingForMoreItems": "Looking for More Items?",
"dropCapSubs": "Habitica subscribers can find double the random items each day and receive monthly mystery items!",
"subscriptionCanceled": "Your subscription is canceled",
"subscriptionInactiveDate": "Your subscription benefits will become inactive on <strong><%= date %></strong>",
"subscriptionInactiveDate": "Your subscription benefits will become inactive on <br><strong><%= date %></strong>",
"subscriptionStats": "Subscription Stats",
"subMonths": "Sub Months",
"needToUpdateCard": "Need to update your card?",
"readyToResubscribe": "Are you ready to resubscribe?",
"cancelYourSubscription": "Cancel your subscription?",
"cancelSubAlternatives": "If you're having technical problems or Habitica doesn't seem to be working out for you, please consider <a href='mailto:admin@habitica.com'>contacting us</a>. We want to help you get the most from Habitica.",
"sendAGift": "Send Gift"
"sendAGift": "Send Gift",
"haveNonRecurringSub": "You have a non-recurring gift subscription.",
"switchToRecurring": "Switch to a recurring subscription?",
"continueGiftSubBenefits": "Want to continue your benefits? You can start a new subscription before your gifted one runs out to keep your benefits active.",
"subscriptionCreditConversion": "Starting a new subscription will convert any remaining months to credit that will be used after the recurring subscription is canceled."
}
+3 -3
View File
@@ -303,9 +303,9 @@
"foodCandyRed": "Cinnamon Candy",
"foodCandyRedThe": "the Cinnamon Candy",
"foodCandyRedA": "Cinnamon Candy",
"foodSaddleText": "Siya",
"foodSaddleNotes": "Agád na pinapalakí ang isa sa iyong mga alaga.",
"foodSaddleSellWarningNote": "Uy! Medyo kapaki-pakinabang! Pamilyar ka ba kung papaano gumamit ng Siya sa iyong mga Alagà?",
"foodSaddleText": "Upuán",
"foodSaddleNotes": "Agád na pinalakí ang isa sa iyóng mga alaga.",
"foodSaddleSellWarningNote": "Uy! Kapakípakinabang! May alám ka ba sa paggamit ng mga Upuán sa mga Alagà?",
"foodNotes": "Feed this to a pet and it may grow into a sturdy steed.",
"foodPieRedA": "isang hiwa ng Pulang Cherry Pie",
"foodPieRedThe": "ang Pulang Cherry Pie",
+4 -4
View File
@@ -1,5 +1,5 @@
{
"FAQ": "FAQ",
"FAQ": "MKN (Mga Kadalasang Naitátanong)",
"marketing1Lead1Title": "Buhay Mo, ang Role Playing Game",
"marketing1Header": "Pabutihin ang Iyong mga Gawi sa pamamagitan ng Paglalaro",
"logout": "Log Out",
@@ -23,10 +23,10 @@
"companyAbout": "Paano Gumagana",
"communityInstagram": "Instagram",
"communityFacebook": "Facebook",
"communityExtensions": "<a href='http://habitica.fandom.com/wiki/Extensions,_Add-Ons,_and_Customizations' target='_blank'>Add-ons & Extensions</a>",
"clearBrowserData": "Alisin ang Browser Data",
"communityExtensions": "Mga Pandagdág-Gamit at Pámpalawig-Gamit",
"clearBrowserData": "Burahín ang Alaala ng Tagahanap",
"chores": "Mga Gawaing-Bahay",
"termsAndAgreement": "Sa pagpindot ng button sa ibaba, ipinapahiwatig mong nabasa at sumasang-ayon ka sa <a href='/static/terms'>Terms of Service</a> at <a href='/static/privacy'>Privacy Policy</a>.",
"termsAndAgreement": "Sa pagpindót sa ibabà, ipinápahiwatig n'yo na nabasa at sumasang-ayon ka sa <a href='/static/terms'>Mga Alituntúnin sa Paglílingkód</a> at <a href='/static/privacy'>Pátakarán sa Paglilihim</a>.",
"marketing3Lead1": "Ang **iPhone & Android** apps ay nakatutulong sa'yo upang makatapos ng gawain kahit saan. Napagtanto namin na ang pag-login gamit ang website ay nakakapagod.",
"marketing3Header": "Apps at Extensions",
"marketing2Lead3": "Isang uri ng pakikipagkumpitensya sa iyong mga kaibigan at sa mga hindi kakilala ang mga Hamon. Kung sino ang pinakamagaling sa pagtapos ng bawat hamon ay makatatanggap ng mga espesyal na premyo.",
@@ -15,8 +15,8 @@
"oneOfAllHatchingPotions": "tig-íisá ng bawat pangkaraniwang Mahiwagang Langís na Pampápapisâ",
"threeOfEachFood": "tigtátatló ng bawat pángkaraniwang Pagkaing Pang-alagà",
"fourOfEachFood": "tíg-aapat ng bawat pángkaraniwang Pagkaing Pang-alagà",
"twoSaddles": "two Saddles",
"threeSaddles": "three Saddles",
"twoSaddles": "dalawáng Upuán",
"threeSaddles": "tatlóng Upuán",
"incentiveAchievement": "ang Kakaibang Kalakihan sa Katapatan na tagumpáy",
"royallyLoyal": "Kakaibang Kalakihan sa Katapatan",
"royallyLoyalText": "Limandaáng ulit ng nakapuntá ang tagagamit na itó dito, at napagkaloobán na ng bawat Gantimpalà ng maaaring matanggáp ukol sa dalás ng pagpuntá rito!",
+4 -1
View File
@@ -141,5 +141,8 @@
"achievementWoodlandWizardText": "A fait éclore toutes les créatures de la forêt de couleur basique : Blaireau, ours, cerf, renard, grenouille, hérisson, hiboux, escargot, écureuil et arbrisseau !",
"achievementBoneToPick": "Un os à ronger",
"achievementBoneToPickText": "A fait éclore tous les familiers squelettes classiques et de quête !",
"achievementBoneToPickModalText": "Vous avez collecté tous les familiers squelette classiques et de quête !"
"achievementBoneToPickModalText": "Vous avez collecté tous les familiers squelette classiques et de quête !",
"achievementPolarPro": "Pro polaire",
"achievementPolarProText": "A fait éclore tous les familiers polaires : Ours, renard, pingouin, baleine et loup !",
"achievementPolarProModalText": "Vous avez collecté tous les familiers polaires !"
}
File diff suppressed because one or more lines are too long
+31 -1
View File
@@ -2754,5 +2754,35 @@
"shieldSpecialFall2022HealerNotes": "Deuxième œil, regardez ce costume et tremblez. Augmente la constitution de <%= con %>. Objet en édition limitée de l'automne 2022.",
"eyewearArmoireJewelersEyeLoupeNotes": "Cette loupe oculaire magnifie ce sur quoi vous travaillez pour que vous puissiez en voir tous les détails. Augmente la perception de <%= per %>. Armoire enchantée : ensemble de bijouterie (objet 2 de 4).",
"eyewearArmoireTragedyMaskNotes": "Hélas ! Voici un lourd masque pour ton pauvre avatar, qui se pavane, s'agite et exprime le malheur et la tristesse sur la scène. Augmente l'intelligence de <%= int %>. Armoire enchantée : ensemble de masques de théâtre (objet 2 de 2).",
"eyewearArmoireJewelersEyeLoupeText": "Loupe oculaire de joaillerie"
"eyewearArmoireJewelersEyeLoupeText": "Loupe oculaire de joaillerie",
"headSpecialWinter2023RogueNotes": "Les tentations des gens de vous \"déballer\" les cheveux vous donneront des occasions de pratiquer vos esquives. Augmente la perception de <%= per %>. Équipement en édition limitée de l'hiver 2022-2023.",
"weaponSpecialWinter2023WarriorNotes": "Les deux pointes de cette lance ont la forme de défenses de morse mais sont deux fois plus puissantes. Frappez les doutes et les poèmes stupides jusqu'à ce qu'ils reculent ! Augmente la force de <%= str %>. Équipement en édition limitée de l'hiver 2022-2023.",
"headSpecialWinter2023MageText": "Tiare de lumière féerique",
"weaponSpecialWinter2023MageText": "Feu de renard",
"headSpecialWinter2023MageNotes": "Vous avez été éclos avec une potion nuit étoilée ? Parce que j'ai des étoiles dans les yeux pour vous. Augmente la perception de <%= per %>. Équipement en édition limitée de l'hiver 2022-2023.",
"weaponSpecialWinter2023MageNotes": "Ni renard ni feu, mais totalement festif ! Augmente l'intelligence de <%= int %> et la perception de <%= per %>. Équipement en édition limitée de l'hiver 2022-2023.",
"weaponSpecialWinter2023HealerText": "Couronne de jet",
"shieldSpecialWinter2023WarriorNotes": "Le temps est venu, dit le morse, de parler de beaucoup de choses : des coquilles d'huîtres—et des cloches d'hiver—des chansons que quelqu'un chante—et où est passée la perle de ce bouclier—ou de ce que la nouvelle année apporte ! Augmente la constitution de <%= con %>. Équipement en édition limitée de l'hiver 2022-2023.",
"weaponSpecialWinter2023HealerNotes": "Regardez cette couronne festive et piquante filer dans les airs vers votre ennemi ou vos obstacles et revenir vers vous comme un boomerang pour un autre lancer. Augmente l'intelligence de <%= int %>. Équipement en édition limitée de l'hiver 2022-2023.",
"armorSpecialWinter2023RogueText": "Ruban d'emballage",
"armorSpecialWinter2023RogueNotes": "Obtenez des objets. Empaquetez-les dans un beau papier cadeau. Et donnez-les à votre voleur local ! C'est de saison. Augmente la perception de <%= per %>. Équipement en édition limitée de l'hiver 2022-2023.",
"armorSpecialWinter2023WarriorText": "Costume de morse",
"armorSpecialWinter2023WarriorNotes": "Ce costume de morse résistant est parfait pour une promenade sur une plage au milieu de la nuit. Augmente la Constitution de <%= con %>. Équipement en édition limitée de l'hiver 2022-2023.",
"armorSpecialWinter2023MageText": "Robe de chambre de lumière féerique",
"armorSpecialWinter2023MageNotes": "Juste parce que vous avez beaucoup de lumières ne fait pas de vous un arbre ! ... peut-être l'année prochaine. Augmente l'intelligence de <%= int %>. Équipement en édition limitée de l'hiver 2022-2023.",
"armorSpecialWinter2023HealerText": "Costume cardinal",
"armorSpecialWinter2023HealerNotes": "Ce costume cardinal lumineux est parfait pour voler haut au-dessus de vos problèmes. Augmente la constitution de <%= con %>. Équipement en édition limitée de l'hiver 2022-2023.",
"weaponSpecialWinter2023RogueText": "Ceinture de satin vert",
"weaponSpecialWinter2023RogueNotes": "Les légendes parlent de voleurs qui dérobent les armes de leurs adversaires, les rendent inutilisables, puis les offrent en retour juste pour être mignon. Augmente la force de <%= str %>. Équipement en édition limitée de l'hiver 2022-2023.",
"weaponSpecialWinter2023WarriorText": "Lance défenses",
"headSpecialWinter2023RogueText": "Nœud cadeau",
"headSpecialWinter2023WarriorText": "Casque morse",
"headSpecialWinter2023WarriorNotes": "Ce casque de morse est parfait pour discuter avec un ami ou participer à un repas intelligent. Augmente la force de <%= str %>. Équipement en édition limitée de l'hiver 2022-2023.",
"headSpecialWinter2023HealerText": "Heaume cardinal",
"headSpecialWinter2023HealerNotes": "Ce heaume cardinal est parfait pour siffler et chanter pour annoncer la nouvelle saison. Augmente l'intelligence de <%= int %>. Équipement en édition limitée de l'hiver 2022-2023.",
"shieldSpecialWinter2023WarriorText": "Bouclier huitre",
"shieldSpecialWinter2023HealerText": "Chansonnette fraiche",
"shieldSpecialWinter2023HealerNotes": "Votre chanson de givre et de neige apaisera les esprits de ceux qui l'entendent. Augmente la constitution de <%= con %>. Équipement en édition limitée de l'hiver 2022-2023.",
"headSpecialNye2022Text": "Chapeau de fête fantastique",
"headSpecialNye2022Notes": "Vous avez reçu un chapeau de soirée fantastique ! Portez-le avec fierté en levant votre verre à cette nouvelle année ! Ne confère aucun bonus."
}
+7 -2
View File
@@ -188,7 +188,7 @@
"septemberYYYY": "Septembre <%= year %>",
"royalPurpleJackolantern": "Citrouille d'Habitoween pourpre royal",
"novemberYYYY": "Novembre <%= year %>",
"g1g1Limitations": "Il s'agit d'un événement limité dans le temps, qui démarre le 16 décembre à 08h00 ET (13h00 UTC) et qui finit le 6 Janvier à 20h00 ET (01h00 UTC). Cette promotion ne s'applique que lorsque vous offrez à quelqu'un d'autre. Si la personne désignée a déjà un abonnement, l'abonnement offert ajoutera des mois d'abonnement qui ne seront utilisés qu'après la fin de leur abonnement actuel.",
"g1g1Limitations": "Il s'agit d'un événement limité dans le temps, qui démarre le 15 décembre à 08h00 ET (13h00 UTC) et qui finit le 8 janvier à 23h59 ET (9 janvier04h59 UTC). Cette promotion ne s'applique que lorsque vous offrez à quelqu'un d'autre. Si la personne désignée a déjà un abonnement, l'abonnement offert ajoutera des mois d'abonnement qui ne seront utilisés qu'après la fin de leur abonnement actuel.",
"limitations": "Limitations",
"g1g1HowItWorks": "Entrez l'identifiant du compte auquel vous voulez faire un cadeau. Puis choisissez la durée d'abonnement que vous voulez offrir et validez. Vous recevrez automatiquement la même durée d'abonnement que celle que vous venez d'offrir.",
"howItWorks": "Comment ça marche",
@@ -235,5 +235,10 @@
"fall2022WatcherHealerSet": "Voyeur (Guérisseur)",
"fall2022KappaRogueSet": "Kappa (Voleur)",
"gemSaleHow": "Entre le <%= eventStartOrdinal %> et le <%= eventEndOrdinal %> <%= eventStartMonth %>, achetez simplement n'importe quel ensemble de gemmes comme d'habitude et votre compte sera crédité avec le montant promotionnel de gemmes. Plus de gemmes à dépenser, à partager ou à conserver pour de nouveaux objets !",
"gemSaleLimitations": "Cette promotion s'applique uniquement pendant la durée de l'événement. L'événement démarre le <%= eventStartOrdinal %> <%= eventStartMonth %> à 8:00 EDT (12:00 UTC) et se terminera le <%= eventEndOrdinal %> <%= eventStartMonth %> à 20:00 EDT (00:00 UTC). Cette promotion n'est disponible que pour les gemmes que vous achetez pour vous."
"gemSaleLimitations": "Cette promotion s'applique uniquement pendant la durée de l'événement. L'événement démarre le <%= eventStartOrdinal %> <%= eventStartMonth %> à 8:00 EDT (12:00 UTC) et se terminera le <%= eventEndOrdinal %> <%= eventStartMonth %> à 20:00 EDT (00:00 UTC). Cette promotion n'est disponible que pour les gemmes que vous achetez pour vous.",
"winter2023WalrusWarriorSet": "Morse (Guerrier)",
"winter2023FairyLightsMageSet": "Lumières féeriques (Mage)",
"winter2023CardinalHealerSet": "Cardinal (Guérisseur)",
"spring2023RibbonRogueSet": "Ruban (Voleur)",
"winter2023RibbonRogueSet": "Ruban (Voleur)"
}
+5 -1
View File
@@ -95,5 +95,9 @@
"achievementGoodAsGold": "זהב טהור",
"achievementBugBonanzaModalText": "השלמת את ההרפתקאות של חיות המחמד של החיפושית, הפרפר, החילזון והעכביש!",
"achievementBareNecessities": "רק את הטוב",
"achievementBoneCollector": "אספן עצמות"
"achievementBoneCollector": "אספן עצמות",
"achievementSkeletonCrew": "צוות השלדים",
"achievementBareNecessitiesModalText": "השלמת את המסעות של הקוף, העצלן והעצים הצעירים!",
"achievementBugBonanza": "שיגעון החרקים",
"achievementFreshwaterFriends": "חברים ממים מתוקים"
}
+16 -11
View File
@@ -3,28 +3,28 @@
"quest": "הרפתקה",
"petQuests": "הרפתקאות של חיות מחמד וחיות רכיבה",
"unlockableQuests": "הרפתקאות שאינן ניתנות לפתיחה",
"goldQuests": "",
"goldQuests": "הרפתקאות מסדרת הרב-אמן",
"questDetails": "פרטי הרפתקה",
"questDetailsTitle": "פרטי ההרפתקה",
"questDescription": "",
"questDescription": "הרפתקאות מאפשרות לשחקנים להתרכז במטרות ארוכות טווח בתוך המשחק עם חברי החבורה שלהם.",
"invitations": "הזמנות",
"completed": "הושלם!",
"rewardsAllParticipants": "",
"rewardsQuestOwner": "",
"rewardsAllParticipants": "מזכה את כל המשתתפים של ההרפתקה",
"rewardsQuestOwner": "פרסים נוספים לבעל ההרפתקה",
"inviteParty": "הזמינו את החבורה להרפתקה",
"questInvitation": "הזמנה להרפתקה:",
"questInvitationInfo": "הזמנה להרפתקה <%= quest %> ",
"invitedToQuest": "",
"invitedToQuest": "הוזמנת להרפתקה <span class=\"notification-bold-blue\"><%= quest %></span>",
"askLater": "שאלו אחר כך",
"buyQuest": "קנו הרפתקה",
"accepted": "מוסכם",
"declined": "",
"declined": "סירבו",
"rejected": "נדחה",
"pending": "ממתין לתשובה",
"questCollection": "",
"questCollection": "+ <%= val %> חפצ(ים) של ההרפתקה נמצאו",
"questDamage": "+ <%= val %> damage to boss",
"begin": "התחל",
"bossHP": "",
"bossHP": "נק\"פ של הבוס",
"bossStrength": "עוצמת האויב",
"rage": "זעם",
"collect": "לאסוף",
@@ -34,8 +34,8 @@
"sureLeave": "לעזוב את ההרפתקה? כל ההתקדמות תרד לטמיון.",
"mustComplete": "קודם עליך להשלים את <%= quest %>",
"mustLvlQuest": "עליכם להיות בדרגה <%= level %> כדי לקנות את ההרפתקה הזו!",
"unlockByQuesting": "",
"questConfirm": "Are you sure? Only <%= questmembers %> of your <%= totalmembers %> party members have joined this quest! Quests start automatically when all players have joined or rejected the invitation.",
"unlockByQuesting": "כדי לפתוח את ההרפתקה, תשלימו את <%= title %>.",
"questConfirm": "בטוחים שאתם רוצים להתחיל את ההרפתקה? לא כל חברי החבורה אישרו את ההזמנה. הרפתקאות מתחילות באופן אוטומטי אחרי שכל חברי החבורה השיבו להזמנה.",
"sureCancel": "האם אתם בטוחים שברצונכם לבטל את ההרפתקה? ביטול ההרפתקה תבטל את כל ההזמנות שנשלחו, גם עבור אלה שהסכימו כבר להשתתף, והמגילה תחזור לרשותכם.",
"sureAbort": "האם אתם בטוחים שברצונכם לבטל את ההרפתקה הזו? כל ההתקדמות שלכם תאבד. המגילה תשוב לידי בעליה.",
"doubleSureAbort": "האם אתם באמת באמת בטוחים? כל החבורה שלכם עלולה לשנוא אתכם לנצח!",
@@ -93,5 +93,10 @@
"selectQuestModal": "נא לבחור הרפתקה",
"questAlreadyStartedFriendly": "ההרפתקה כבר החלה, אבל תמיד ניתן להצטרף לבאה אחריה!",
"membersParticipating": "<%= accepted %> / <%= invited %> חברים משתתפים",
"chatQuestAborted": "<%= username %> הפסיק את ההרפתקה <%= questName %>."
"chatQuestAborted": "<%= username %> הפסיק את ההרפתקה <%= questName %>.",
"bossDamage": "פגעת בבוס!",
"questInvitationNotificationInfo": "הוזמנת להצטרף להרפתקה",
"questItemsPending": "<%= amount %> חפצים ממתינים",
"hatchingPotionQuests": "הרפתקאות של שיקויי הבקיעה הקסומים",
"sureLeaveInactive": "בטוחים שאתם רוצים לעזוב את ההרפתה? אתם לא תוכלו להשתתף."
}
+22 -2
View File
@@ -10,7 +10,7 @@
"viewAchievements": "Lihat Penghargaan",
"letsGetStarted": "Mari kita mulai!",
"onboardingProgress": "<%= percentage %>% kemajuan",
"gettingStartedDesc": "Ayo selesaikan tugas pengenalan ini dan kamu akan memperoleh <strong>5 Pencapaian</strong> dan <strong class=\"gold-amount\">100 Emas</strong> setelah kamu selesai!",
"gettingStartedDesc": "Ayo selesaikan tugas pengenalan ini dan kamu akan memperoleh <strong>5 Pencapaian</strong> dan <strong class=\"gold-amount\">100 Emas</strong> setelah kamu selesai!",
"yourProgress": "Perkembangan Anda",
"yourRewards": "Hadiah Anda",
"foundNewItems": "Anda menemukan barang baru!",
@@ -124,5 +124,25 @@
"achievementShadeOfItAll": "Segala Bayang yang Ada",
"achievementShadeOfItAllText": "Telah menjinakkan semua Tunggangan Bayangan.",
"achievementShadeOfItAllModalText": "Kamu menjinakkan semua Tunggangan Bayangan!",
"achievementWoodlandWizardModalText": "Kamu telah mengumpulkan seluruh peliharaan hutan!"
"achievementWoodlandWizardModalText": "Kamu telah mengumpulkan seluruh peliharaan hutan!",
"achievementPolarProModalText": "Kamu mengumpulkan seluruh Peliharaan Kutub!",
"achievementPolarProText": "Telah menetaskan semua peliharaan Kutub: Beruang, Rubah, Pinguin, Paus, dan Serigala!",
"achievementBirdsOfAFeatherModalText": "Kamu mengumpulkan seluruh peliharaan yang bisa terbang!",
"achievementBoneToPickModalText": "Kamu telah mengumpulkan semua Peliharaan Tulang Klasik dan Misi!",
"achievementBoneToPickText": "Telah menetaskan semua Peliharaan Tulang Klasik dan Misi!",
"achievementGroupsBeta2022": "Pengetes Beta Interaktif",
"achievementGroupsBeta2022Text": "Kamu dan grupmu telah memberikan umpan balik yang sangat berharga dalam membantu pengetesan Habitica.",
"achievementGroupsBeta2022ModalText": "Kamu dan grupmu membantu Habitica dengan mengetes dan memberikan umpan balik!",
"achievementPolarPro": "Ahli Kutub",
"achievementWoodlandWizard": "Penyihir Hutan",
"achievementWoodlandWizardText": "Telah menetaskan semua warna standar makhluk-makhluk hutan: Luak, Beruang, Rusa, Rubah, Katak, Landak, Burung Hantu, Siput, Tupai, dan Pepohonan!",
"achievementZodiacZookeeperText": "Telah menetaskan semua warna standar peliharaan zodiak: Tikus, Sapi, Kelinci, Ular, Kuda, Domba, Monyet, Ayam, Serigala, Harimau, Babi Terbang, dan Naga!",
"achievementReptacularRumble": "Gelegar Reptakuler",
"achievementReptacularRumbleText": "Telah menetaskan semua warna standar peliharaan reptil: Aligator, Pterodaktil, Ular, Triceratops, Penyu, T-Rex, dan Velociraptor!",
"achievementReptacularRumbleModalText": "Kamu telah mengumpulkan seluruh peliharaan reptil!",
"achievementBirdsOfAFeather": "Bulu-bulu Burung",
"achievementBirdsOfAFeatherText": "Telah menetaskan semua warna standar peliharaan yang bisa terbang: Babi Terbang, Burung Hantu, Nuri, Pterodaktil, Grifin, Falcon, Merak, dan Ayam!",
"achievementBoneToPick": "Ambil Tulang",
"achievementZodiacZookeeper": "Penangkar Zodiak",
"achievementZodiacZookeeperModalText": "Kamu mengumpulkan seluruh peliharaan zodiak!"
}
+30 -18
View File
@@ -348,28 +348,28 @@
"backgroundFlyingOverAncientForestNotes": "Terbang di atas pepohonan Hutan Kuno.",
"backgrounds052018": "SET 48: Dirilis Mei 2018",
"backgroundTerracedRiceFieldText": "Sawah Padi Berteras",
"backgroundTerracedRiceFieldNotes": "Enjoy a Terraced Rice Field in the growing season.",
"backgroundTerracedRiceFieldNotes": "Nikmati Sengkedan Sawah di musim tanam.",
"backgroundFantasticalShoeStoreText": "Toko Sepatu Fantastis",
"backgroundFantasticalShoeStoreNotes": "Look for fun new footwear in the Fantastical Shoe Store.",
"backgroundFantasticalShoeStoreNotes": "Cari alas kaki lucu di Toko Sepatu Fantastik.",
"backgroundChampionsColosseumText": "Koloseum Jawara",
"backgroundChampionsColosseumNotes": "Berjemur di bawah cahaya kejayaan Koloseum Jawara.",
"backgrounds062018": "SET 49: Dirilis Juni 2018",
"backgroundDocksText": "Dermaga",
"backgroundDocksNotes": "Memancing dari atas Dermaga.",
"backgroundRowboatText": "Rowboat",
"backgroundRowboatNotes": "Sing rounds in a Rowboat.",
"backgroundRowboatText": "Perahu Dayung",
"backgroundRowboatNotes": "Bernyanyi di Perahu Dayung.",
"backgroundPirateFlagText": "Bendera Bajak Laut",
"backgroundPirateFlagNotes": "Kibarkan Bendera Bajak Laut yang menakutkan.",
"backgrounds072018": "SET 50: Dirilis Juli 2018",
"backgroundDarkDeepText": "Dark Deep",
"backgroundDarkDeepNotes": "Swim in the Dark Deep among bioluminescent critters.",
"backgroundDarkDeepText": "Gelap Dalam",
"backgroundDarkDeepNotes": "Berenang di Gelap Dalam bersama makhluk-makhluk bercahaya.",
"backgroundDilatoryCityText": "Kota Dilatory",
"backgroundDilatoryCityNotes": "Meander through the undersea City of Dilatory.",
"backgroundTidePoolText": "Tide Pool",
"backgroundTidePoolNotes": "Observe the ocean life near a Tide Pool.",
"backgroundDilatoryCityNotes": "Berkelana di kedalaman Kota bawah laut Dilatory.",
"backgroundTidePoolText": "Kolam Ombak",
"backgroundTidePoolNotes": "Mengamati kehidupan laut dari dekat Kolam Ombak.",
"backgrounds082018": "SET 51: Dirilis Agustus 2018",
"backgroundTrainingGroundsText": "Training Grounds",
"backgroundTrainingGroundsNotes": "Spar on the Training Grounds.",
"backgroundTrainingGroundsText": "Lapangan Latih",
"backgroundTrainingGroundsNotes": "Bertanding di Lapangan Latih.",
"backgroundFlyingOverRockyCanyonText": "Ngarai Berbatu",
"backgroundFlyingOverRockyCanyonNotes": "Lihat pemandangan menakjubkan di bawahmu selagi kamu terbang di atas Ngarai Berbatu.",
"backgroundBridgeText": "Jembatan",
@@ -382,16 +382,16 @@
"backgroundCozyBarnText": "Lumbung Nyaman",
"backgroundCozyBarnNotes": "Bersantai bersama peliharaan dan tungganganmu di Lumbung Nyaman mereka.",
"backgrounds102018": "SET 53: Dirilis Oktober 2018",
"backgroundBayouText": "Bayou",
"backgroundBayouNotes": "Bask in the fireflies' glow on the misty Bayou.",
"backgroundBayouText": "Rawa",
"backgroundBayouNotes": "Disinari cahaya kunang-kunang di Rawa berkabut.",
"backgroundCreepyCastleText": "Kastil Menyeramkan",
"backgroundCreepyCastleNotes": "Berani mendekati Kastil Menyeramkan.",
"backgroundDungeonText": "Penjara Bawah Tanah",
"backgroundDungeonNotes": "Selamatkan para tahanan dari Penjara Bawah Tanah yang menyeramkan.",
"backgrounds112018": "SET 54: Dirilis November 2018",
"backgroundBackAlleyText": "Back Alley",
"backgroundBackAlleyNotes": "Look shady loitering in a Back Alley.",
"backgroundGlowingMushroomCaveText": "Glowing Mushroom Cave",
"backgroundBackAlleyText": "Gang Belakang",
"backgroundBackAlleyNotes": "Terlihat mencurigakan berkeliaran di Gang Belakang.",
"backgroundGlowingMushroomCaveText": "Goa Jamur Bercahaya",
"backgroundGlowingMushroomCaveNotes": "Stare in awe at a Glowing Mushroom Cave.",
"backgroundCozyBedroomText": "Kamar Tidur Nyaman",
"backgroundCozyBedroomNotes": "Curl up in a Cozy Bedroom.",
@@ -620,7 +620,7 @@
"backgroundClotheslineNotes": "Bersantai sambil mengeringkan pakaian di Jemuran.",
"backgroundClotheslineText": "Jemuran",
"backgrounds062021": "SET 85: Dirilis Juni 2021",
"backgroundWindmillsNotes": ".Pasang pelana dan berjalan di Kincir Angin.",
"backgroundWindmillsNotes": "Pasang pelana dan berjalan di Kincir Angin.",
"backgroundWindmillsText": "Kincir Angin",
"backgroundDragonsLairNotes": "Mencoba untuk tidak mengusik Sarang Naga.",
"backgroundDragonsLairText": "Sarang Naga",
@@ -639,5 +639,17 @@
"backgroundVineyardNotes": "Telusuri Kebun Anggur yang berlimpah ruah.",
"backgroundAutumnLakeshoreText": "Tepi Danau Musim Gugur",
"backgrounds092021": "SET 88: Dirilis September 2021",
"backgroundVineyardText": "Kebun Anggur"
"backgroundVineyardText": "Kebun Anggur",
"backgroundWinterWaterfallText": "Air Terjun Musim Dingin",
"backgroundWinterWaterfallNotes": "Mengagumi Air Terjun Musim Dingin.",
"backgroundOrangeGroveText": "Belukar Jingga",
"backgroundOrangeGroveNotes": "Mengembara ke wangi Belukar Jingga.",
"backgrounds102021": "SET 89: Dirilis Oktober 2021",
"hideLockedBackgrounds": "Sembunyikan latar belakang yang masih terkunci",
"backgroundCrypticCandlesNotes": "Panggil pasukan sihir rahasia di antara Lilin-Lilin Gaib.",
"backgroundHauntedPhotoText": "Foto Berhantu",
"backgroundHauntedPhotoNotes": "Temukan dirimu terperangkap di dunia monokromik dalam Foto Berhantu.",
"backgroundUndeadHandsText": "Tangan Mayat Hidup",
"backgroundUndeadHandsNotes": "Mencoba kabur dari genggaman Tangan Mayat Hidup.",
"backgroundCrypticCandlesText": "Lilin Gaib"
}
+2 -1
View File
@@ -103,5 +103,6 @@
"selectParticipant": "Pilih Seorang Peserta",
"wonChallengeDesc": "<%= challengeName %> memilihmu sebagai pemenang! Kemenanganmu telah dimasukkan ke Pencapaian.",
"yourReward": "Hadiahmu",
"filters": "Filters"
"filters": "Filters",
"removeTasks": "Hapus Tugas"
}
+8 -8
View File
@@ -1,5 +1,5 @@
{
"communityGuidelinesWarning": "Ingatlah bahwa Nama Tampilan, foto profil, dan celotehmu harus mengikuti <a href='https://habitica.com/static/community-guidelines' target='_blank'>Pedoman Komunitas</a> (misalnya, tidak menggunakan bahasa senonoh, topik dewasa, penghinaan, dsb). Jika kamu mempunyai pertanyaan apapun mengenai pantasnya sesuatu hal, silahkan email <%= hrefBlankCommunityManagerEmail %>!",
"communityGuidelinesWarning": "Ingatlah bahwa Nama Tampilan, foto profil, dan celotehmu harus mengikuti <a href='https://habitica.com/static/community-guidelines' target='_blank'>Pedoman Komunitas</a> (misalnya, tidak menggunakan bahasa tidak senonoh, topik dewasa, penghinaan, dsb). Jika kamu mempunyai pertanyaan apapun mengenai pantasnya sesuatu hal, silahkan email <%= hrefBlankCommunityManagerEmail %>!",
"profile": "Profil",
"avatar": "Ubah Tampilan Avatar",
"editAvatar": "Sunting Avatar",
@@ -15,7 +15,7 @@
"imageUrl": "URL Gambar",
"inventory": "Inventori",
"social": "Sosial",
"lvl": "Lvl",
"lvl": "Level",
"buffed": "Mendapat Buff",
"bodyBody": "Tubuh",
"size": "Ukuran",
@@ -37,7 +37,7 @@
"mustache": "Kumis",
"flower": "Bunga",
"accent": "Aksen",
"headband": "Headband",
"headband": "Ikat kepala",
"wheelchair": "Kursi Roda",
"extra": "Ekstra",
"rainbowSkins": "Kulit Warna-Warni",
@@ -62,10 +62,10 @@
"autoEquipPopoverText": "Pilih ini jika kamu ingin langsung memakai perlengkapan setelah membelinya.",
"costumeDisabled": "Kamu telah menonaktifkan kostummu.",
"gearAchievement": "Kamu mendapat lencana \"Ultimate Gear\" karena sudah mendapat semua perlengkapan sesuai dengan pekerjaanmu! Kamu sudah melengkapi perlengkapan berikut:",
"gearAchievementNotification": "You have earned the \"Ultimate Gear\" Achievement for upgrading to the maximum gear set for a class!",
"gearAchievementNotification": "Kamu telah memperoleh Pencapaian \"Perlengkapan Terakhir\" karena telah meng-upgrade semua perlengkapan sampai maksimal untuk suatu pekerjaan!",
"moreGearAchievements": "Untuk mendapatkan lebih banyak lencana Ultimate Gear, ubah pekerjaanmu di <a href='/user/settings/site' target='_blank'>Pengaturan &gt; Laman Situs</a> dan beli perlengkapan untuk pekerjaan barumu!",
"armoireUnlocked": "Kalau ingin lebih banyak perlengkapan, coba cek <strong>Peti Ajaib!</strong> Klik Hadiah Peti Ajaib untuk kesempatan mendapatkan Perlengkapan spesial! Kamu juga bisa mendapatkan pengalaman atau makanan.",
"ultimGearName": "Ultimate Gear - <%= ultClass %>",
"ultimGearName": "Perlengkapan Terakhir - <%= ultClass %>",
"ultimGearText": "Telah meng-upgrade set senjata dan pakaian sampai maksimal untuk pekerjaan <%= ultClass %>.",
"level": "Level",
"levelUp": "Naik Level!",
@@ -85,7 +85,7 @@
"allocatePerPop": "Tambahkan satu poin kepada Persepsi",
"allocateInt": "Poin yang diberikan untuk Kecerdasan:",
"allocateIntPop": "Tambahkan satu poin kepada Kecerdasan",
"noMoreAllocate": "Sekarang kamu sudah mencapai level 100, kamu tidak akan mendapat poin atribut lagi. Kamu bisa terus menaikkan level, atau mulai petualangan baru dari level 1 dengan menggunakan <a href='http://habitica.fandom.com/wiki/Orb_of_Rebirth' target='_blank'>Orb of Rebirth</a>!",
"noMoreAllocate": "Sekarang kamu sudah mencapai level 100, kamu tidak akan mendapat poin atribut lagi. Kamu bisa terus menaikkan level, atau mulai petualangan baru dari level 1 dengan menggunakan <a href='https://habitica.fandom.com/wiki/Orb_of_Rebirth' target='_blank'>Orb of Rebirth</a>!",
"stats": "Atribut",
"achievs": "Pencapaian",
"strength": "Kekuatan",
@@ -164,7 +164,7 @@
"per": "PER",
"int": "KEC",
"notEnoughAttrPoints": "Kamu tidak memiliki cukup Poin Atribut.",
"classNotSelected": "You must select Class before you can assign Stat Points.",
"classNotSelected": "Kamu harus memilih Pekerjaan sebelum bisa menempatkan Poin Status.",
"style": "Gaya",
"facialhair": "Wajah",
"photo": "Foto",
@@ -174,7 +174,7 @@
"latestCheckin": "Check In Terakhir",
"editProfile": "Edit Profil",
"challengesWon": "Tantangan yang Dimenangi",
"questsCompleted": "Misi yang Diselesaikan",
"questsCompleted": "Misi yang diselesaikan",
"headAccess": "Hiasan Kepala.",
"backAccess": "Hiasan Punggung.",
"bodyAccess": "Hiasan Tubuh.",
@@ -8,13 +8,13 @@
"commGuideHeadingInteractions": "Interactions in Habitica",
"commGuidePara015": "Habitica mempunyai dua jenis ruang sosial: umum, dan pribadi. Ruang umum meliputi Kedai Minuman, Guild Umum, GitHub, Trello, dan Wiki. Sedangkan ruang pribadi meliputi Guild Pribadi, obrolan Party, dan Pesan Pribadi. Semua Nama Tampilan dan @namapengguna harus menyesuaikan dengan pedoman ruang publik. Untuk mengganti Nama Tampilanmu dan/atau @namapengguna, pada app mobile pergi ke Menu > Pengaturan > Profil. Pada situs, pergi ke Pengguna > Pengaturan.",
"commGuidePara016": "Ketika menjelajahi ruang publik di Habitica, terdapat beberapa peraturan umum untuk memastikan semua orang tetap bahagia dan nyaman.",
"commGuideList02A": "<strong>Hormati satu sama lain</strong>. Bersikaplah sopan, baik, ramah, dan suka membantu. Ingat: Para Habitican datang dari segala latar belakang dan punya pengalaman yang berbeda satu dengan yang lain. Inilah yang membuat Habitica sangat digemari! Membangun komunitas yang berarti saling menghormati dan merayakan segala perbedaan dan kesamaan kita semua.",
"commGuideList02A": "<strong>Hormati satu sama lain</strong>. Bersikaplah sopan, baik, ramah, dan suka membantu. Ingat: Para Habitican datang dari segala latar belakang dan punya pengalaman yang berbeda satu dengan yang lain. Inilah yang membuat Habitica sangat digemari! Membangun komunitas yang berarti saling menghormati dan merayakan segala perbedaan dan kesamaan kita semua.",
"commGuideList02B": "<strong>Patuhi semua<a href='/static/terms' target='_blank'>Syarat dan Ketentuan</a></strong> baik di ruang publik maupun pribadi.",
"commGuideList02C": "<strong>Do not post images or text that are violent, threatening, or sexually explicit/suggestive, or that promote discrimination, bigotry, racism, sexism, hatred, harassment or harm against any individual or group</strong>. Not even as a joke. This includes slurs as well as statements. Not everyone has the same sense of humor, and so something that you consider a joke may be hurtful to another. Attack your Dailies, not each other.",
"commGuideList02D": "<strong>Keep discussions appropriate for all ages</strong>. We have many young Habiticans who use the site! Let's not tarnish any innocents or hinder any Habiticans in their goals.",
"commGuideList02E": "<strong>Avoid profanity. This includes milder, religious-based oaths that may be acceptable elsewhere</strong>. We have people from all religious and cultural backgrounds, and we want to make sure that all of them feel comfortable in public spaces. <strong>If a moderator or staff member tells you that a term is disallowed on Habitica, even if it is a term that you did not realize was problematic, that decision is final</strong>. Additionally, slurs will be dealt with very severely, as they are also a violation of the Terms of Service.",
"commGuideList02F": "<strong>Avoid extended discussions of divisive topics in the Tavern and where it would be off-topic</strong>. If you feel that someone has said something rude or hurtful, do not engage them. If someone mentions something that is allowed by the guidelines but which is hurtful to you, its okay to politely let someone know that. If it is against the guidelines or the Terms of Service, you should flag it and let a mod respond. When in doubt, flag the post.",
"commGuideList02G": "<strong>Patuhi segera segala permintaan Moderator.</strong> Ini juga termasuk, tetapi tidak terbatas pada, memintamu untuk membatasi jumlah postinganmu di ruang tertentu, menghapus konten yang tidak sesuai dari profil, memindahkan diskusimu ke tempat yang lebih sesuai, dll. Jangan berdebat dengan moderator. Jika kamu mempunyai masalah atau pendapat terkait cara bersikap, kirimkan email pada <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a>untuk ditindaklanjuti oleh manager komunitas kami.",
"commGuideList02G": "<strong>Patuhi segera segala permintaan Moderator.</strong> Ini juga termasuk, tetapi tidak terbatas pada, memintamu untuk membatasi jumlah postinganmu di ruang tertentu, menghapus konten yang tidak sesuai dari profil, memindahkan diskusimu ke tempat yang lebih sesuai, dll. Jangan berdebat dengan moderator. Jika kamu mempunyai masalah atau pendapat terkait cara bersikap, kirimkan email pada <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a>untuk ditindaklanjuti oleh manager komunitas kami.",
"commGuideList02J": "<strong>Do not spam</strong>. Spamming may include, but is not limited to: posting the same comment or query in multiple places, posting links without explanation or context, posting nonsensical messages, posting multiple promotional messages about a Guild, Party or Challenge, or posting many messages in a row. Asking for gems or a subscription in any of the chat spaces or via Private Message is also considered spamming. If people clicking on a link will result in any benefit to you, you need to disclose that in the text of your message or that will also be considered spam.<br/><br/>It is up to the mods to decide if something constitutes spam or might lead to spam, even if you dont feel that you have been spamming. For example, advertising a Guild is acceptable once or twice, but multiple posts in one day would probably constitute spam, no matter how useful the Guild is!",
"commGuideList02K": "<strong>Avoid posting large header text in the public chat spaces, particularly the Tavern</strong>. Much like ALL CAPS, it reads as if you were yelling, and interferes with the comfortable atmosphere.",
"commGuideList02L": "<strong>Kami sangat tidak menyarankan pertukaran informasi pribadi -- khususnya informasi yang dapat digunakan untuk mengidentifikasimu -- di ruang obrolan umum</strong>. Informasi mengidentifikasi dapat termasuk, namun tidak terbatas pada: alamat kamu, alamat email kamu, dan token API/passwordmu. Ini untuk keamananmu! Staf ataupun moderator bisa menghapus postingan sesuai kebijakan mereka. Jika kamu diminta untuk memberi informasi pribadi di dalam sebuah Guild tertutup (?), Party, atau PM, kami sangat menyarankan kamu menolak dengan sopan kemudian menyiagakan staf dan moderator dengan 1) menandakan pesan jika di dalam sebuah Party atau Guild tertutup, atau 2) mengisi <a href='https://contact.habitica.com/' target='_blank'>Kontak Form Moderator</a> dengan tangkapan layar.",
@@ -109,7 +109,7 @@
"commGuidePara013": "In a community as big as Habitica, users come and go, and sometimes a staff member or moderator needs to lay down their noble mantle and relax. The following are Staff and Moderators Emeritus. They no longer act with the power of a Staff member or Moderator, but we would still like to honor their work!",
"commGuidePara014": "Staff and Moderators Emeritus:",
"commGuideHeadingFinal": "Bagian Terakhir",
"commGuidePara067": "Maka terimalah ini, wahai Habitican pemberani -- Pedoman Komunitas! Hapus penat keringat di keningmu dan hadiahkan dirimu XP karna telah membaca ini semua. jika kamu masih memiliki pertanyaan mengenai Pedoman Komunitas ini, mohon beritahu kami melalui <a href='https://contact.habitica.com/' target='_blank'>Formulir Kontak Moderator</a>dan kami akan dengan senang hati membantumu.",
"commGuidePara067": "Maka terimalah ini, wahai Habitican pemberani -- Pedoman Komunitas! Hapus penat keringat di keningmu dan hadiahkan dirimu XP karna telah membaca ini semua. jika kamu masih memiliki pertanyaan mengenai Pedoman Komunitas ini, mohon beritahu kami melalui <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> dan kami akan dengan senang hati membantumu.",
"commGuidePara068": "Sekarang majulah, pengembara yang berani, dan kalahkan tugas-tugas itu!",
"commGuideHeadingLinks": "Link yang Berguna",
"commGuideLink01": "<a href='/groups/guild/5481ccf3-5d2d-48a9-a871-70a7380cee5a' target='_blank'>Habitica Help: Ask a Question</a>: a Guild for users to ask questions!",
+3 -2
View File
@@ -49,9 +49,10 @@
"balance": "Saldo",
"playerTiers": "Tingkatan Pemain",
"tier": "Tingkat",
"conRewardsURL": "http://habitica.fandom.com/wiki/Contributor_Rewards",
"conRewardsURL": "https://habitica.fandom.com/wiki/Contributor_Rewards",
"surveysSingle": "Membantu Habitica berkembang, baik dengan mengisi survey atau membantu dalam pengujian utama. Terima kasih!",
"surveysMultiple": "Membantu Habitica berkembang sebanyak <%= count %> kali, baik dengan mengisi survey atau membantu dalam pengujian utama. Terima kasih!",
"blurbHallPatrons": "Ini adalah Aula Patron, di mana kami memberi penghormatan kepada para petualang pemberani yang telah membantu Kickstarter asli Habitica. Kami berterima kasih kepada mereka yang membantu kami mewujudkan Habitica menjadi kenyataan!",
"blurbHallContributors": "Ini adalah Aula para Kontributor, di mana kontributor open-source Habitica dicantumkan. Baik melalui kode, seni, musik, tulisan, atau bahkan hanya pertolongan kecil, mereka mendapatkan <a href='http://habitica.fandom.com/wiki/Contributor_Rewards' target='_blank'>permata, perlengkapan eksklusif </a>, dan <a href='http://habitica.fandom.com/wiki/Contributor_Titles' target='_blank'>titel kebanggaan </a>. Kamu juga bisa berkontribusi untuk Habitica! <a href='http://habitica.fandom.com/wiki/Contributing_to_Habitica' target='_blank'> Lihat Selengkapnya. </a>"
"blurbHallContributors": "Ini adalah Aula para Kontributor, di mana kontributor open-source Habitica dicantumkan. Baik melalui kode, seni, musik, tulisan, atau bahkan hanya pertolongan kecil, mereka mendapatkan <a href='https://habitica.fandom.com/wiki/Contributor_Rewards' target='_blank'>permata, perlengkapan eksklusif </a>, dan <a href='https://habitica.fandom.com/wiki/Contributor_Titles' target='_blank'>titel kebanggaan </a>. Kamu juga bisa berkontribusi untuk Habitica! <a href='https://habitica.fandom.com/wiki/Contributing_to_Habitica' target='_blank'> Lihat Selengkapnya. </a>",
"noPrivAccess": "Kamu tidak memiliki hak yang diperlukan."
}
+55 -19
View File
@@ -9,7 +9,7 @@
"dailyDueDefaultViewPop": "Dengan opsi ini, Tugas harian akan menampilkan daftar tugas berdasarkan 'tenggat waktu', bukan berdasarkan 'Semua'",
"reverseChatOrder": "Perlihatkan obrolan dalam urutan terbalik",
"startAdvCollapsed": "Suntingan Tambahan pada tugas tersembunyi",
"startAdvCollapsedPop": "With this option set, Advanced Settings will be hidden when you first open a task for editing.",
"startAdvCollapsedPop": "Dengan mengaktifkan pengaturan ini, Pengaturan Lanjutan akan disembunyikan ketika kamu pertama kali membuka tugas untuk diedit.",
"dontShowAgain": "Jangan perlihatkan lagi",
"suppressLevelUpModal": "Jangan perlihatkan notifikasi saat naik level",
"suppressHatchPetModal": "Jangan perlihatkan notifikasi saat menetaskan peliharaan",
@@ -21,12 +21,12 @@
"fixVal": "Menetapkan Nilai Karakter",
"fixValPop": "Mengubah nilai secara manual seperti Kesehatan, Level, dan Koin Emas.",
"invalidLevel": "Jumlah tidak sah: Level harus 1 atau lebih.",
"enableClass": "Mengaktifkan Sistem Pekerjaan.",
"enableClass": "Mengaktifkan Sistem Pekerjaan",
"enableClassPop": "Kamu tidak mengaktifkan sistem pekerjaan di awal. Apakah kamu mau mengaktifkannya sekarang?",
"resetAccPop": "Mulai dari awal, menyingkirkan semua level, emas, perlengkapan, riwayat, dan tugas.",
"deleteAccount": "Hapus Akun",
"deleteAccPop": "Menunda dan menghapus akun Habitica kamu.",
"feedback": "If you'd like to give us feedback, please enter it below - we'd love to know what you liked or didn't like about Habitica! Don't speak English well? No problem! Use the language you prefer.",
"feedback": "Jika kamu ingin memberikan umpan balik, silakan masukkan di bawah ini - kami ingin mengetahui apa yang kamu sukai atau tidak kamu sukai tentang Habitica! Tidak bisa Bahasa Inggris? Tidak masalah! Gunakan bahasa yang kamu bisa.",
"qrCode": "Kode QR",
"dataExport": "Ekspor Data",
"saveData": "Inilah beberapa pilihan untuk menyimpan datamu.",
@@ -42,7 +42,7 @@
"sureChangeCustomDayStartTime": "Kamu yakin ingin mengatur waktu Awal Harimu? Keseharianmu akan diulang setiap kamu masuk Habitica pertama kali setelah jam <%= time %>. Pastikan kamu menyelesaikan Keseharian sebelum waktu tersebut!",
"customDayStartHasChanged": "Awal harimu telah diubah.",
"nextCron": "Tugas harian kamu akan diatur ulang saat pertama kalinya kamu menggunakan Habitica setelah <%= time %>. Pastikan kamu sudah menyelesaikan tugas harian kamu sebelum waktu tersebut!",
"customDayStartInfo1": "Habitica memeriksa dan mengatur ulang tugas harian kamu di tengah malam di zona waktumu setiap hari. Kamu bisa mengganti waktu tersebut disini.",
"customDayStartInfo1": "Habitica memeriksa dan mengatur ulang tugas harian kamu di tengah malam pada zona waktumu setiap hari. Kamu bisa menyesuaikan kalau itu terjadi melewati waktu default sini.",
"misc": "Lain-lain",
"showHeader": "Perlihatkan Header",
"changePass": "Ubah Kata Sandi",
@@ -55,7 +55,7 @@
"newUsername": "Nama Pengguna Baru",
"dangerZone": "Zona Berbahaya",
"resetText1": "PERINGATAN! Ini me-reset banyak hal dari akunmu. Hal ini sangat tidak disarankan, tetapi bagi beberapa orang ini berguna di awal setelah mencoba bermain di situs ini dalam waktu yang singkat.",
"resetText2": "Kamu akan kehilangan semua level, Koin Emasmu, dan poin Pengalamanmu. Semua tugasmu (kecuali tugas dari tantangan) akan dihapus selamanya dan kamu akan kehilangan data riwayat mereka. Kamu akan kehilangan semua perlengkapanmu tapi kamu masih bisa membelinya lagi, termasuk semua perlengkapan edisi terbatas atau item pelanggan Misteri yang sudah kamu miliki (kamu harus mengambil pekerjaan yang sesuai untuk membeli ulang perlengkapan khusus pekerjaan). Kamu akan tetap memiliki pekerjaanmu yang sekarang serta peliharaan dan tungganganmu. Kamu mungkin lebih memilih untuk menggunakan Batu Kelahiran, yang merupakan pilihan lebih aman yang akan mempertahankan tugas-tugas dan perlengkapanmu.",
"resetText2": "Kamu akan kehilangan semua level, Koin Emas, dan poin Pengalamanmu. Semua tugas (kecuali tugas dari tantangan) akan dihapus selamanya dan kamu akan kehilangan data riwayat mereka. Kamu akan kehilangan semua perlengkapanmu, kecuali Item Misteri Berlangganan dan item perayaan yang diberikan gratisan. Kamu masih bisa membeli item-item yang terhapus itu lagi, termasuk semua perlengkapan edisi terbatas atau item pelanggan Misteri yang sudah kamu miliki (kamu harus mengambil pekerjaan yang sesuai untuk membeli ulang perlengkapan khusus pekerjaan). Kamu akan tetap memiliki pekerjaanmu yang sekarang, pencapaianmu, peliharaan, serta tungganganmu. Kamu mungkin lebih memilih untuk menggunakan Batu Kelahiran, yang merupakan pilihan lebih aman yang akan mempertahankan tugas-tugas dan perlengkapanmu.",
"deleteLocalAccountText": "Apakah kamu yakin? Pilihan ini akan menghapus akun selamanya, dan tidak akan dapat dikembalikan! Kamu harus mendaftar menggunakan akun yang baru untuk dapat kembali menggunakan Habitica. Permata yang telah dibeli atau telah disimpan tidak akan dikembalikan. Jika kamu benar-benar yakin, ketikkan kata sandi pada kotak teks di bawah ini.",
"deleteSocialAccountText": "Apakah kamu yakin? Ini akan menghapus akunmu untuk selamanya, dan tidak akan bisa dikembalikan! Kamu perlu mendaftar akun baru untuk menggunakan Habitica lagi. Permata yang disimpan di Bank atau telah digunakan tidak akan dikembalikan. Jika kamu betul-betul yakin, ketik \"<%= magicWord %>\" ke dalam kotak teks di bawah.",
"API": "API",
@@ -67,17 +67,17 @@
"APITokenWarning": "Kalau kamu butuh Token API baru (misal kamu tidak sengaja menyebarkannya), email <%= hrefTechAssistanceEmail %> berisi ID Pengguna dan Token-mu yang sekarang. Setelah direset kamu harus logout dari situs dan aplikasi handphone, dan kamu harus memasukkan Token barumu ke tools Habitica lain yang kamu gunakan.",
"thirdPartyApps": "Aplikasi Pihak Ketiga",
"dataToolDesc": "Laman web yang menunjukkan padamu informasi tertentu dari akun Habitica-mu, seperti statistik mengenai tugas, perlengkapan, dan kemampuan milik kamu.",
"beeminder": "Beeminder",
"beeminder": "<i>Beeminder</i>",
"beeminderDesc": "Mengizinkan Beeminder memonitor To Do Habitica kamu secara otomatis. Kamu dapat memutuskan untuk mengatur jumlah target To Do yang selesai per hari atau per minggu, atau kamu dapat memutuskan untuk mengurangi secara berkala jumlah sisa To-Do yang belum selesai. (Arti \"memutuskan\" dalam Beeminder yakni dorongan untuk membayar sejumlah uang sungguhan! Tetapi mungkin saja kamu juga menyukai grafik Beeminder yang menarik.)",
"chromeChatExtension": "Ekstensi Obrolan Chrome",
"chromeChatExtensionDesc": "Ekstensi Obrolan Chrome untuk Habitica menambah kotak obrolan intuitif ke semua laman habitica.com. Ekstensi membuat pengguna dapat melakukan obrolan di Kedai Minum, party mereka, dan guild yang mereka ikuti.",
"otherExtensions": "<a target='blank' href='http://habitica.fandom.com/wiki/Extensions,_Add-Ons,_and_Customizations'>Ekstensi Lainnya</a>",
"otherExtensions": "<a target='blank' href='https://habitica.fandom.com/wiki/Extensions,_Add-Ons,_and_Customizations'>Ekstensi Lainnya</a>",
"otherDesc": "Temukan aplikasi, ekstensi, dan peralatan lainnya dalam Habitica wiki.",
"resetDo": "Lakukan, reset akun!",
"resetComplete": "Reset selesai!",
"fixValues": "Tetapkan Nilai",
"fixValuesText1": "Jika kamu menemui bug atau terjadi kesalahan yang tidak adil yang mengubah karaktermu (tiba-tiba Kesehatan berkurang, dapat Koin Emas entah dari mana, dll), kamu dapat secara manual memperbaiki semua nilaimu di sini. Ya, ini mempermudah perbuatan curang: jadi gunakanlah fitur ini dengan bijak, atau kamu tidak akan mendapat manfaat apa-apa dari program perbaikan diri ini.",
"fixValuesText2": "Note that you cannot restore Streaks on individual tasks here. To do that, edit the Daily and go to Advanced Settings, where you will find a Restore Streak field.",
"fixValuesText1": "Jika kamu menemui bug atau terjadi kesalahan tidak adil yang mengubah karaktermu (tiba-tiba Kesehatan berkurang, Koin Emas entah dari mana, dll.), kamu dapat memperbaiki semuanya secara manual di sini. Ya, ini mempermudah kecurangan: gunakanlah fitur ini dengan bijak, atau kamu tidak akan mendapat manfaat apa-apa dari program perbaikan diri ini!",
"fixValuesText2": "Harap diperhatikan bahwa kamu tidak bisa mengembalikan Runtunan tugas individu di sini. Untuk melakukannya, ubah Keseharian dan temukan Pengaturan Lanjutan, di sana kamu akan menemukan tempat untuk mengembalikan Runtunan.",
"fix21Streaks": "Runtunan 21 Hari",
"discardChanges": "Batalkan Perubahan",
"deleteDo": "Lakukan, hapus akun!",
@@ -134,8 +134,8 @@
"generateCodes": "Buat Kode",
"generate": "Buat",
"getCodes": "Dapatkan Kode",
"webhooks": "Webhooks",
"webhooksInfo": "Habitica provides webhooks so that when certain actions occur in your account, information can be sent to a script on another website. You can specify those scripts here. Be careful with this feature because specifying an incorrect URL can cause errors or slowness in Habitica. For more information, see the wiki's <a target=\"_blank\" href=\"https://habitica.fandom.com/wiki/Webhooks\">Webhooks</a> page.",
"webhooks": "<i>Webhooks</i>",
"webhooksInfo": "Habitica menyediakan webhooks sehingga ketika suatu tindakan terjadi pada akunmu, informasi tersebut dapat dikirimkan ke sebuah skrip di laman web lain. Kamu dapat menyertakan skrip-skrip itu di sini. Berhati-hatilah dengan fitur ini karena menyertakan URL yang salah dapat menyebabkan eror dan memperlambat Habitica. Informasi lebih lanjut, lihat laman tentang <a target=\"_blank\" href=\"https://habitica.fandom.com/wiki/Webhooks\">Webhooks</a> di wiki.",
"enabled": "Diaktifkan",
"webhookURL": "URL Webhook",
"invalidUrl": "url tidak valid",
@@ -146,7 +146,7 @@
"regIdRequired": "RegId dibutuhkan",
"pushDeviceAdded": "Perangkat notifikasi sukses ditambahkan",
"pushDeviceNotFound": "Pengguna tidak memiliki perangkat dengan id ini.",
"pushDeviceRemoved": "Perangkat berhasil dihapus",
"pushDeviceRemoved": "Perangkat berhasil dihapus.",
"buyGemsGoldCap": "Batas maksimal Permata ditingkatkan menjadi <%= amount %>",
"mysticHourglass": "<%= amount %> Jam Pasir Mistik",
"purchasedPlanExtraMonths": "Kamu memiliki <strong><%= months %> months</strong>bulan kredit berlangganan tambahan.",
@@ -154,13 +154,13 @@
"consecutiveMonths": "Bulan Berurutan:",
"gemCapExtra": "Bonus Batas Maksimal Permata",
"mysticHourglasses": "Jam Pasir Mistik:",
"mysticHourglassesTooltip": "Jam Pasir Mistis",
"mysticHourglassesTooltip": "Jam Pasir Mistik",
"paypal": "PayPal",
"amazonPayments": "Pembayaran Amazon",
"amazonPaymentsRecurring": "Ticking the checkbox below is necessary for your subscription to be created. It allows your Amazon account to be used for ongoing payments for <strong>this</strong> subscription. It will not cause your Amazon account to be automatically used for any future purchases.",
"amazonPaymentsRecurring": "Tanda di kotak ceklis di bawah ini diperlukan supaya berlangganan kamu bisa dibuat. Hal ini untuk membolehkan akun Amazon kamu digunakan untuk pembayaran berlangganan <strong>ini</strong>. Hal ini tidak akan menyebabkan akun Amazon kamu digunakan secara otomatis untuk pembayaran selanjutnya.",
"timezone": "Zona Waktu",
"timezoneUTC": "Habitica menggunakan set zona waktu pada PC kamu, yakni: <strong><%= utc %></strong>",
"timezoneInfo": "Jika zona waktu salah, pertama reload halaman ini menggunakan tombol refresh dari perambanmu untuk memastikan bahwa Habitica memiliki informasi terbaru. Jika masih salah, sesuaikan zona waktu pada PC-mu kemudian muat ulang halaman ini lagi. <br><br><strong>Jika kamu menggunakan Habitica pada PC lain atau perangkat mobile, zona waktu harus sama semua.</strong> Jika Keseharianmu diulang pada waktu yang salah, periksa lagi semua PC dan browser pada perangkat mobile yang kamu gunakan.",
"timezoneUTC": "Zona waktu kamu diatur oleh komputermu, yaitu: <strong><%= utc %></strong>",
"timezoneInfo": "Jika zona waktu salah, muat ulang dulu halaman ini menggunakan tombol refresh dari perambanmu untuk memastikan Habitica memiliki informasi terbaru. Jika masih salah, sesuaikan zona waktu pada PC-mu kemudian muat ulang halaman ini lagi. <br><br><strong>Jika kamu menggunakan Habitica pada PC lain atau perangkat mobile, zona waktu harus sama semua.</strong> Jika Keseharianmu diulang pada waktu yang salah, periksa lagi semua PC dan browser pada perangkat mobile yang kamu gunakan.",
"push": "Tekan",
"about": "Tentang",
"setUsernameNotificationTitle": "Konfirmasi nama pengguna-mu!",
@@ -176,11 +176,11 @@
"usernameVerifiedConfirmation": "Nama penggunamu, <%= username %>, telah dikonfirmasi!",
"usernameNotVerified": "Silahkan konfirmasi nama penggunamu.",
"changeUsernameDisclaimer": "Nama pengguna digunakan untuk undangan, @mentions di obrolan, dan bertukar pesan. Harus berisi 1 sampai 20 karakter, berisi huruf a sampai z, angka 0 sampai 9, tanda hubung, atau garis bawah, dan tidak boleh mengandung bahasa yang tidak sopan.",
"verifyUsernameVeteranPet": "One of these Veteran Pets will be waiting for you after you've finished confirming!",
"verifyUsernameVeteranPet": "Salah satu dari Peliharaan Veteran ini akan menanti kamu setelah kamu selesai melakukan konfirmasi!",
"subscriptionReminders": "Pengingat Berlangganan",
"giftedSubscriptionWinterPromo": "Halo <%= username %>, kamu mendapatkan<%= monthCount %> bulan berlangganan sebagai hadiah dari promosi holiday gift-giving kami!",
"newPMNotificationTitle": "Pesan Baru dari <%= name %>",
"chatExtensionDesc": "Chat Extension for Habitica menambahkan kotak percakapan intuitif di seluruh habitica.com. Dengan ini, pengguna dapat melakukan chat di Kedai Minum, party, dan di guild manapun mereka bergabung.",
"chatExtensionDesc": "<i>Chat Extension for Habitica</i> menambahkan kotak percakapan intuitif di seluruh habitica.com. Dengan ini, pengguna dapat melakukan chat di Kedai Minum, party, dan di guild manapun mereka bergabung.",
"chatExtension": "<a target='blank' href='https://chrome.google.com/webstore/detail/habitrpg-chat-client/hidkdfgonpoaiannijofifhjidbnilbb'>Ekstensi Obrolan Chrome</a> and <a target='blank' href='https://addons.mozilla.org/en-US/firefox/addon/habitica-chat-client-2/'>Ekstensi Obrolan Firefox</a>",
"resetAccount": "Reset Akun",
"bannedSlurUsedInProfile": "Kata pada Nama Penggunamu atau Tentang Diri mengandung bahasa kasar, dan hakmu untuk mengobrol telah dicabut.",
@@ -189,5 +189,41 @@
"suggestMyUsername": "Sarankan nama pengguna saya",
"mentioning": "Me-mention",
"displaynameIssueNewline": "Nama Tampilan tidak boleh mengandung garis miring terbalik yang diikuti huruf N.",
"bannedWordUsedInProfile": "Kata pada Nama Tampilan atau Tentang Diri mengandung bahasa yang kurang sopan."
"bannedWordUsedInProfile": "Kata pada Nama Tampilan atau Tentang Diri mengandung bahasa yang kurang sopan.",
"passwordSuccess": "Sandi berhasil diganti",
"giftSubscriptionRateText": "<strong>$<%= price %> USD</strong> untuk <strong><%= months %> bulan</strong>",
"addPasswordAuth": "Tambahkan Sandi",
"gemCap": "Batas Permata",
"nextHourglass": "Jam Pasir Selanjutnya",
"transaction_admin_update_hourglasses": "<b>Admin</b> diperbarui",
"noGemTransactions": "Kamu belum memiliki transaksi permata.",
"transaction_contribution": "Perubahan <b>tier</b>",
"transaction_spend": "<b>Dihabiskan</b> untuk",
"transaction_gift_send": "<b>Diberikan</b> kepada",
"adjustment": "Penyesuaian",
"dayStartAdjustment": "Penyesuaian Awal Hari",
"amount": "Jumlah",
"action": "Lakukan",
"note": "Catatan",
"remainingBalance": "Saldo tersisa",
"transactions": "Transaksi",
"hourglassTransactions": "Transaksi Jam Pasir",
"noHourglassTransactions": "Kamu belum punya transaksi Jam Pasir.",
"transaction_debug": "Lakukan Debug",
"transaction_buy_money": "<b>Dibeli</b> dengan uang",
"transaction_buy_gold": "<b>Dibeli</b> dengan koin emas",
"transaction_gift_receive": "<b>Diterima</b> dari",
"transaction_admin_update_balance": "<b>Admin</b> diberikan",
"passwordIssueLength": "Sandi harus terdiri dari 8 sampai 64 karakter.",
"timestamp": "Cap waktu",
"nextHourglassDescription": "Pelanggan menerima Jam Pasir Mistik pada\ntiga hari pertama dalam satu bulan.",
"transaction_change_class": "Perubahan <b>Pekerjaan</b>",
"transaction_create_challenge": "<b>Telah membuat</b> tantangan",
"transaction_create_bank_challenge": "Telah membuat bank tantangan",
"transaction_create_guild": "<b>Telah membuat</b> guild",
"transaction_rebirth": "Telah menggunakan Batu Kelahiran",
"transaction_release_pets": "Telah melepaskan peliharaan",
"transaction_release_mounts": "Telah melepaskan tunggangan",
"transaction_reroll": "Telah menggunakan Ramuan Penguat",
"transaction_subscription_perks": "Keuntungan <b>berlangganan</b>"
}
+4 -1
View File
@@ -141,5 +141,8 @@
"achievementWoodlandWizardText": "Ha schiuso le creature della foresta: Tasso, Orso, Cervo, Rana, Riccio, Gufo, Chiocciola, Scoiattolo e Arbusto, in tutte le colorazioni standard!",
"achievementBoneToPickText": "Ha schiuso tutti gli animali scheletro Standard e delle Missioni!",
"achievementBoneToPick": "Ossa da Raccogliere",
"achievementBoneToPickModalText": "Hai collezionato tutti gli animali scheletro Standard e delle Missioni!"
"achievementBoneToPickModalText": "Hai collezionato tutti gli animali scheletro Standard e delle Missioni!",
"achievementPolarProModalText": "Hai collezionato tutti gli Animali Polari!",
"achievementPolarPro": "Professionista Polare",
"achievementPolarProText": "Ha schiuso tutti gli animali domestici Polari: Orso, Volpe, Pinguino, Balena e Lupo!"
}
File diff suppressed because one or more lines are too long
+31 -1
View File
@@ -2754,5 +2754,35 @@
"headAccessoryMystery202212Text": "Tiara Glaciale",
"headAccessoryMystery202212Notes": "Porta il tuo calore e le tue amicizie a nuovi livelli con questa decorata tiara dorata. Non conferisce alcun bonus. Oggetto abbonati dicembre 2022.",
"armorMystery202212Text": "Abito Glaciale",
"armorMystery202212Notes": "L'universo potrà essere freddo, ma quest'incantevole abito ti terrà al caldo mentre voli. Non conferisce alcun bonus. Oggetto abbonati dicembre 2022."
"armorMystery202212Notes": "L'universo potrà essere freddo, ma quest'incantevole abito ti terrà al caldo mentre voli. Non conferisce alcun bonus. Oggetto abbonati dicembre 2022.",
"weaponSpecialWinter2023RogueText": "Fusciacca di Raso Verde",
"weaponSpecialWinter2023RogueNotes": "Le leggende raccontano di Ladri che afferrano le armi dei loro avversari, disarmandoli, e dandole poi indietro solo per essere carini. Aumenta la Forza di <%= str %>. Equipaggiamento in Edizione Limitata, Inverno 2022-2023.",
"weaponSpecialWinter2023WarriorNotes": "I due rebbi di questa lancia hanno la forma di zanne di tricheco ma sono doppiamente potenti. Sferra colpi ai dubbi e alle sciocche poesie finché non battono in ritirata! Aumenta la Forza di <%= str %>. Equipaggiamento in Edizione Limitata, Inverno 2022-2023.",
"weaponSpecialWinter2023HealerNotes": "Guarda questa ghirlanda festiva e pungente roteare nell'aria verso i tuoi nemici o verso i tuoi ostacoli e tornare da te come un boomerang pronto per un altro lancio. Aumenta l'Intelligenza di <%= int %>. Equipaggiamento in Edizione Limitata, Inverno 2022-2023.",
"armorSpecialWinter2023RogueText": "Nastro",
"armorSpecialWinter2023RogueNotes": "Ottieni oggetti. Incartali con della bella carta. E consegnali al tuo Ladro locale! La stagione lo richiede. Aumenta la Percezione di <%= per %>. Equipaggiamento in Edizione Limitata, Inverno 2022-2023.",
"armorSpecialWinter2023WarriorNotes": "Questo robusto costume da tricheco è perfetto per una passeggiata lungo la spiaggia nel cuore della notte. Aumenta la Costituzione di <%= con %>. Equipaggiamento in Edizione Limitata, Inverno 2022-2023.",
"headSpecialWinter2023MageNotes": "Sei stato schiuso con una pozione Notte Stellata? Perché i miei occhi si illuminano di stelle per te. Aumenta la Percezione di <%= per %>. Equipaggiamento in Edizione Limitata, Inverno 2022-2023.",
"shieldSpecialWinter2023WarriorNotes": "È giunto il momento, disse il Tricheco, per parlare di tante cose: di conchiglie d'ostriche - e campanelle invernali - di canzoni cantate da qualcuno - e di dove è finita la perla di questo scudo - o di cosa ci porterà il nuovo anno! Aumenta la Costituzione di <%= con %>. Equipaggiamento in Edizione Limitata, Inverno 2022-2023.",
"headSpecialWinter2023RogueText": "Fiocco Regalo",
"shieldSpecialWinter2023WarriorText": "Scudo dell'Ostrica",
"headSpecialWinter2023RogueNotes": "La tentazione delle persone di \"scartare\" i tuoi capelli ti darà l'opportunità di esercitarti ad abbassarti e a schivare i colpi. Aumenta la Percezione di <%= per %>. Equipaggiamento in Edizione Limitata, Inverno 2022-2023.",
"weaponSpecialWinter2023WarriorText": "Lancia di Zanne",
"weaponSpecialWinter2023MageText": "Fuoco di Volpe",
"weaponSpecialWinter2023MageNotes": "Né volpe né fuoco, ma festivo in abbondanza! Aumenta l'Intelligenza di <%= int %> e la Percezione di <%= per %>. Equipaggiamento in Edizione Limitata, Inverno 2022-2023.",
"weaponSpecialWinter2023HealerText": "Ghirlanda da Lancio",
"armorSpecialWinter2023WarriorText": "Costume da Tricheco",
"armorSpecialWinter2023MageText": "Abito Luminoso Fatato",
"armorSpecialWinter2023MageNotes": "Avere semplicemente le luci accese, non fa di te un albero! ...magari qualche altro anno. Aumenta l'Intelligenza di <%= int %>. Equipaggiamento in Edizione Limitata, Inverno 2022-2023.",
"armorSpecialWinter2023HealerText": "Costume da Cardinale Rosso",
"armorSpecialWinter2023HealerNotes": "Questo vivace costume da cardinale rosso è perfetto per sopravvolare sui tuoi problemi. aumenta la Costituzione di <%= con %>. Equipaggiamento in Edizione Limitata, Inverno 2022-2023.",
"headSpecialWinter2023WarriorText": "Elmo del Tricheco",
"headSpecialWinter2023WarriorNotes": "Questo elmo da tricheco è perfetto per chiacchierare con un amico o partecipare a un pasto strategico. Aumenta la Forza di <%= str %>. Equipaggiamento in Edizione Limitata, Inverno 2022-2023.",
"headSpecialWinter2023MageText": "Tiara con Luci Fatate",
"headSpecialWinter2023HealerText": "Elmo del Cardinale Rosso",
"headSpecialWinter2023HealerNotes": "Questo elmo da cardinale rosso è perfetto per fischiettare e cantare annunciando la stagione invernale. Aumenta l'Intelligenza di <%= int %>. Equipaggiamento in Edizione Limitata, Inverno 2022-2023.",
"shieldSpecialWinter2023HealerText": "Fresche Composizioni Musicali",
"shieldSpecialWinter2023HealerNotes": "Il tuo canto di gelo e neve calmerà gli animi di tutti coloro che lo ascolteranno. Aumenta la Costituzione di <%= con %>. Equipaggiamento in Edizione Limitata, Inverno 2022-2023.",
"headSpecialNye2022Notes": "Hai ricevuto un Cappello da Festa Fantastico! Indossalo con orgoglio mentre inauguri il Nuovo Anno! Non conferisce alcun bonus.",
"headSpecialNye2022Text": "Cappello da Festa Fantastico"
}
+7 -2
View File
@@ -187,7 +187,7 @@
"septemberYYYY": "Settembre <%= year %>",
"royalPurpleJackolantern": "Zucca di Halloween Porpora",
"novemberYYYY": "Novembre <%= year %>",
"g1g1Limitations": "Questo è un evento a tempo limitato che inizia il 16 dicembre alle 14:00 ora italiana (13:00 UTC) e terminerà il 6 gennaio alle 2:00 ora italiana (1:00 UTC). Questa promozione si applica solo quando fai un regalo a un altro Habitante. Se tu o il destinatario del regalo avete già un abbonamento, l'abbonamento in regalo aggiungerà mesi di credito che verranno utilizzati solo dopo l'annullamento o la scadenza dell'abbonamento corrente.",
"g1g1Limitations": "Questo è un evento a tempo limitato che inizia il 15 dicembre alle 14:00 ora italiana (13:00 UTC) e terminerà il 9 gennaio alle 5:59 ora italiana (4:59 UTC). Questa promozione si applica solo quando fai un regalo a un altro Habitante. Se tu o il destinatario del regalo avete già un abbonamento, l'abbonamento in regalo aggiungerà mesi di credito che verranno utilizzati solo dopo l'annullamento o la scadenza dell'abbonamento corrente.",
"limitations": "Limitazioni",
"g1g1HowItWorks": "Digita il nome utente dell'account a cui desideri regalare. Da lì, scegli la durata che desideri regalare. Il tuo account verrà automaticamente ricompensato con la stesso livello di abbonamento che hai appena regalato.",
"howItWorks": "Come funziona",
@@ -234,5 +234,10 @@
"fall2022KappaRogueSet": "Kappa (Ladro)",
"fall2022OrcWarriorSet": "Orco (Guerriero)",
"gemSaleLimitations": "Questa promozione è applicabile solo durante l'evento a tempo limitato. Questo evento inizia il <%= eventStartMonth %> <%= eventStartOrdinal %> alle 8:00 EDT (12:00 UTC) e terminerà <%= eventStartMonth %> <%= eventEndOrdinal %> alle 20:00 EDT ( 00:00 UTC). L'offerta promozionale è disponibile solo quando acquisti Gemme per te stesso/a.",
"gemSaleHow": "Tra <%= eventStartMonth %> <%= eventStartOrdinal %> e <%= eventEndOrdinal %>, acquista semplicemente qualsiasi pacchetto di gemme come al solito e sul tuo account verrà accreditato l'importo promozionale di Gemme. Più Gemme da spendere, condividere o risparmiare per le prossime uscite!"
"gemSaleHow": "Tra <%= eventStartMonth %> <%= eventStartOrdinal %> e <%= eventEndOrdinal %>, acquista semplicemente qualsiasi pacchetto di gemme come al solito e sul tuo account verrà accreditato l'importo promozionale di Gemme. Più Gemme da spendere, condividere o risparmiare per le prossime uscite!",
"winter2023WalrusWarriorSet": "Tricheco (Guerriero)",
"winter2023FairyLightsMageSet": "Luci Fatate (Mago)",
"winter2023CardinalHealerSet": "Cardinale Rosso (Guaritore)",
"spring2023RibbonRogueSet": "Fiocco (Ladro)",
"winter2023RibbonRogueSet": "Fiocco (Ladro)"
}
+1 -1
View File
@@ -186,7 +186,7 @@
"dropCapReached": "Hai trovato tutti gli oggetti per oggi!",
"mysterySet202011": "Set del Mago Foglioso",
"mysterySet202012": "Set Fenice del Fuoco Ghiacciato",
"mysterySet202101": "Set sciccoso Leopardo delle Nevi",
"mysterySet202101": "Set del Leopardo delle Nevi Sciccoso",
"mysterySet202102": "Set del campione ammaliante",
"mysterySet202103": "Set dell'osservatore di fiori",
"mysterySet202104": "Set del Guardiano cardo",
+5 -2
View File
@@ -140,6 +140,9 @@
"achievementWoodlandWizardModalText": "森のペットを全部集めました!",
"achievementWoodlandWizardText": "森の生き物――アナグマ、クマ、鹿、狐、カエル、ハリネズミ、フクロウ、カタツムリ、リス、木人を、すべての基本色で孵化させました!",
"achievementBoneToPick": "骨の髄まで",
"achievementBoneToPickText": "全ての基本のペットとクエストのペットを、骨の薬で孵化させました!",
"achievementBoneToPickModalText": "骨の薬で孵化した全ての基本のペットとクエストのペットを集めました!"
"achievementBoneToPickText": "全ての骨の基本のペットとクエストのペットを孵化させました!",
"achievementBoneToPickModalText": "全ての骨の基本のペットとクエストのペットを集めました!",
"achievementPolarPro": "極地のプロ",
"achievementPolarProText": "全ての極地のペットを孵化させました:くま・狐・ペンギン・クジラ・狼!",
"achievementPolarProModalText": "極地のペットをすべて集めました!"
}
+8 -1
View File
@@ -742,5 +742,12 @@
"backgroundAmongGiantMushroomsNotes": "巨大なマッシュルームに驚きましょう。",
"backgroundMistyAutumnForestText": "霧深い秋の森",
"backgroundAutumnBridgeText": "秋の橋",
"backgroundAutumnBridgeNotes": "秋の橋の美しさに感服しましょう。"
"backgroundAutumnBridgeNotes": "秋の橋の美しさに感服しましょう。",
"backgrounds122022": "セット1032022年12月リリース",
"backgroundBranchesOfAHolidayTreeText": "クリスマスツリーの枝",
"backgroundBranchesOfAHolidayTreeNotes": "クリスマスツリーの枝の上で跳んだり跳ねたりしましょう。",
"backgroundInsideACrystalText": "クリスタルのなか",
"backgroundInsideACrystalNotes": "クリスタルのなかから、外の景色を見てみましょう。",
"backgroundSnowyVillageText": "雪の村",
"backgroundSnowyVillageNotes": "雪の村を眺めましょう。"
}
+45 -1
View File
@@ -2740,5 +2740,49 @@
"weaponArmoireMagicSpatulaNotes": "食べ物が空中で飛んだりひっくり返ったりするのをご覧あれ。魔法で食べ物が3 回ひっくり返ってからあなたのへらに戻ってきたら、その日はラッキー。知覚が<%= per %>上がります。ラッキー宝箱:台所用品セット(2個中1つ目のアイテム)。",
"weaponArmoireMagicSpatulaText": "魔法のへら",
"shieldArmoireBubblingCauldronText": "ぶくぶくの大釜",
"shieldArmoireBubblingCauldronNotes": "生産性の秘薬を煮詰めたり、辛いスープを作ったりするのにピッタリの釜です。じつは両者にはあまり違いがなかったりして!体質が<%= con %>上がります。ラッキー宝箱:台所用品セット(2個中1つ目のアイテム)。"
"shieldArmoireBubblingCauldronNotes": "生産性の秘薬を煮詰めたり、辛いスープを作ったりするのにピッタリの釜です。じつは両者にはあまり違いがなかったりして!体質が<%= con %>上がります。ラッキー宝箱:台所用品セット(2個中1つ目のアイテム)。",
"headSpecialNye2022Text": "すてきでたわけたパーティーハット",
"headSpecialNye2022Notes": "すてきでたわけたパーティハットをもらいました! 新年を告げる鐘を聞きながら、誇りをもってかぶりましょう! 効果なし。",
"weaponSpecialWinter2023RogueText": "緑色のサテンのサッシュ",
"weaponSpecialWinter2023RogueNotes": "盗賊には罠を張って敵の武器を奪い、そのアイテムをかわいくして返す習性があるという伝説があります。力が<%= str %>上がります。2022年-2023年冬の限定装備。",
"weaponSpecialWinter2023WarriorText": "牙の槍",
"weaponSpecialWinter2023WarriorNotes": "この槍についた2つのとんがりは形がセイウチの牙に似ていますが、二倍はパワフルです。疑いやお馬鹿な詩が逃げ出すまで突きつけましょう。力が<%= str %>上がります。2022年-2023年冬の限定装備。",
"weaponMystery202212Text": "氷のワンド",
"weaponMystery202212Notes": "このワンドについているまばゆい雪の結晶は極寒の冬の夜でも心を温める力を秘めています。効果なし。2022年12月の有料会員アイテム。",
"weaponSpecialWinter2023MageText": "狐火",
"weaponSpecialWinter2023MageNotes": "狐でも炎でもありません。でもとってもおめでたい!知能が<%= int %>、知覚が<%= per %>上がります。2022年-2023年冬の限定装備。",
"weaponSpecialWinter2023HealerText": "投げリース",
"weaponSpecialWinter2023HealerNotes": "このおめでたいのとげのあるリースが敵や障害物に向かって空中を回転し、次の一投のためにブーメランのように戻ってくるのを見届けましょう。知能が<%= int %>上がります。2022年-2023年冬の限定装備。",
"weaponArmoireFinelyCutGemText": "繊細なカットがほどこされた宝石",
"weaponArmoireFinelyCutGemNotes": "よく見つけ出しましたね!この見事で精密なカットの宝石は自慢のコレクションとなるでしょう。そして、あなたが待ち望んだ特別な魔法がかかっているかも。体質が<%= con %>上がります。2022年-2023年冬の限定装備。",
"armorSpecialWinter2023RogueNotes": "アイテムを入手。それをきれいな紙に包む。そして地元の盗賊に贈りましょう!知覚が<%= per %>上がります。2022年-2023年冬の限定装備。",
"armorSpecialWinter2023WarriorNotes": "このタフなセイウチのスーツは、真夜中のビーチを散歩するのにぴったりです。体質が<%= con %>上がります。2022年-2023年冬の限定装備。",
"armorSpecialWinter2023RogueText": "リボンラッピング",
"armorSpecialWinter2023WarriorText": "セイウチスーツ",
"armorMystery202212Notes": "宇宙は寒くても、このすてきなドレスがあれば、空を飛ぶときも心地よく過ごせます。効果なし。2022年12月の有料会員アイテム。",
"armorArmoireJewelersApronNotes": "この汚れたエプロンは創作意欲が湧いたときにおあつらえ向きです。なによりも、必要なものはすべて入れておける何ダースもの小さなポケットがついています。知能が<%= int %>上がります。ラッキー宝箱:宝石細工師(4個中1つ目のアイテム)。",
"armorSpecialWinter2023MageText": "フェアリーライトガウン",
"armorSpecialWinter2023MageNotes": "イルミネーションがついているからと言って、ツリーになれるわけではありません!……いつかはなれるかも。知能が<%= int %>上がります。2022年-2023年冬の限定装備。",
"armorSpecialWinter2023HealerText": "ショウジョウコウカンチョウのスーツ",
"armorSpecialWinter2023HealerNotes": "まばゆい深紅のスーツはあなたが抱える問題の上空を飛ぶのにピッタリです。体質が<%= con %>上がります。2022年-2023年冬の限定装備。",
"armorArmoireJewelersApronText": "宝石細工師のエプロン",
"armorMystery202212Text": "氷河のドレス",
"headSpecialWinter2023MageNotes": "私の瞳の星の輝きは、あなたが星降る夜の薬でたまごをかえしたからでしょうか?知覚が<%= per %>上がります。2022年-2023年冬の限定装備。",
"headSpecialWinter2023RogueText": "ギフト用ちょう結び",
"headSpecialWinter2023RogueNotes": "人々のあなたの髪の「包みを解き」たくなる誘惑はあなたの避けたりかわしたりの練習のチャンスになります。知覚が<%= per %>上がります。2022年-2023年冬の限定装備。",
"headSpecialWinter2023WarriorText": "セイウチヘルメット",
"headSpecialWinter2023WarriorNotes": "このセイウチヘルメットは友達とおしゃべりしたりおしゃれな食事を一緒に食べるのに最適です。力が<%= str %>上がります。2022年-2023年冬の限定装備。",
"headSpecialWinter2023MageText": "フェアリーライトティアラ",
"headSpecialWinter2023HealerText": "ショウジョウコウカンチョウヘルメット",
"headSpecialWinter2023HealerNotes": "このショウジョウコウカンチョウのヘルメットは、冬の季節を告げるためにさえずったり歌ったりするのにぴったりです。知能が<%= int %>上がります。2022年-2023年冬の限定装備。",
"shieldSpecialWinter2023WarriorText": "オイスターシールド",
"shieldSpecialWinter2023HealerNotes": "あなたの氷と雪の歌は聴く人の魂を癒やすでしょう。体質が<%= con %>上がります。2022年-2023年冬の限定装備。",
"shieldSpecialWinter2023WarriorNotes": "セイウチいわく『さあいろんなことを話し合うときがついにやってきた。オイスターシールドだの――誰かが歌っていた冬のベルの歌だの――あるいはこの盾の真珠の行方の謎――または新年がもたらすもの!』体質が<%= con %>上がります。2022年-2023年冬の限定装備。",
"shieldSpecialWinter2023HealerText": "魂をゆさぶる歌",
"shieldArmoireJewelersPliersNotes": "切って、ねじって、はさんで、それから…。この道具ならあなたがイメージできるものならどんなものでも作成可能です。力が<%= str %>上がります。ラッキー宝箱:宝石細工師(4個中3つ目のアイテム)。",
"shieldArmoireJewelersPliersText": "宝石細工師のペンチ",
"headAccessoryMystery202212Text": "氷のティアラ",
"eyewearArmoireJewelersEyeLoupeNotes": "このルーペは作業中のものを拡大し、細部まで完全に見ることができます。ラッキー宝箱:宝石細工師(4個中2つ目のアイテム)。",
"eyewearArmoireJewelersEyeLoupeText": "宝石鑑定用ルーペ",
"headAccessoryMystery202212Notes": "この金細工のティアラであなたの優しさと思いやりの心を新記録まで高めましょう。効果なし。2022年12月の有料会員アイテム。"
}
+2 -2
View File
@@ -314,7 +314,7 @@
"groupManagementControls": "グループのマネジメント・コントロール",
"groupManagementControlsDesc": "タスクが本当に完了されたかを確認するためにタスク承認機能を使いましょう。グループメンバーへ任務を共有するためのグループマネージャーを追加し、全てのチームメンバーのためのプライベートなグループチャットを楽しみましょう。",
"inGameBenefits": "ゲーム中のメリット",
"inGameBenefitsDesc": "グループメンバーは、限定のツノウサギの乗騎だけでなく、毎月の特別な装備セットや、ゴールドでジェムを買う機能など、有料プランの特典を全て受けられます。",
"inGameBenefitsDesc": "グループメンバーは、限定のジャッカロープの乗騎だけでなく、毎月の特別な装備セットや、ゴールドでジェムを買う機能など、有料プランの特典を全て受けられます。",
"inspireYourParty": "パーティーで刺激し合い、一緒に人生をゲーム化しましょう。",
"letsMakeAccount": "まずはアカウントを作成しましょう",
"nameYourGroup": "次に、あなたのグループの名前をつけましょう",
@@ -324,7 +324,7 @@
"gettingStarted": "はじめよう",
"congratsOnGroupPlan": "おめでとうございます! あなたの新しいグループが設立されました。こちらにいくつかのよくある質問と答えがあります。",
"whatsIncludedGroup": "有料プランに含まれるもの",
"whatsIncludedGroupDesc": "グループのメンバー全員が有料プランの特典をすべて受けられます。毎月の有料会員アイテム、ゴールドでジェムを買う機能、そしてグループプランメンバーシップのユーザー限定のロイヤルパープルのツノウサギの乗騎などです。",
"whatsIncludedGroupDesc": "グループのメンバー全員が有料プランの特典をすべて受けられます。毎月の有料会員アイテム、ゴールドでジェムを買う機能、そしてグループプランメンバーシップのユーザー限定のロイヤルパープルのジャッカロープの乗騎などです。",
"howDoesBillingWork": "どのように課金しますか?",
"howDoesBillingWorkDesc": "グループリーダーは、月ごとの基準でグループメンバー数に基づいた請求をされます。この料金には、グループリーダーのための $9 (USD) がふくまれ、 さらに各グループメンバーごとに $3 USD が加算されます。 例えば、4人のユーザーのグループは、1人のグループリーダーと3人のグループメンバーで構成されるため、月ごとに $18 USD の費用がかかります。",
"howToAssignTask": "どのようにタスクを割り当てますか?",
+6 -2
View File
@@ -188,7 +188,7 @@
"fall2020WraithWarriorSet": "レイス(戦士)",
"royalPurpleJackolantern": "ロイヤルパープルのジャック・オ・ランタン",
"novemberYYYY": "<%= year %>年11月",
"g1g1Limitations": "このイベントは日本時間で12月16日の22:00から1月6日10:00時までの期間限定です。プロモーションは他のプレイヤーにギフトを贈った際にのみ適用されます。もしギフトを受け取った人がすでに有料会員の場合、有料会員期間が延長されます。この延長は、現在の有料会員期間を満了もしくはキャンセルした後にのみ適用されます。",
"g1g1Limitations": "このイベントは日本時間で12月15日の22:00から1月9日13:59までの期間限定です。プロモーションは他のプレイヤーにギフトを贈った際にのみ適用されます。もしギフトを受け取った人がすでに有料会員の場合、有料会員期間が延長されます。この延長は、現在の有料会員期間を満了もしくはキャンセルした後にのみ適用されます。",
"limitations": "制限事項",
"g1g1HowItWorks": "「有料プランをプレゼントする」をタップして、贈る相手のユーザーネームを入力し、プレゼントする有料プランの期間を選択してください。自動的にあなたのアカウントにもプレゼントした分と同じ期間のプランが無料で適用されます。",
"howItWorks": "機能説明",
@@ -235,5 +235,9 @@
"fall2022KappaRogueSet": "カッパ(盗賊)",
"fall2022OrcWarriorSet": "オーク(戦士)",
"gemSaleHow": "<%= eventStartMonth %> <%= eventStartOrdinal %> から<%= eventEndOrdinal %>の間、通常どおりジェムを購入するだけで、あなたのアカウントはプロモーション分のジェムを受け取れます。買い物したり、分け合ったり、将来のため貯めておけるジェムが増えました!",
"gemSaleLimitations": "このプロモーションは期間限定のイベント中にのみ適用されます。イベントは米国東部標準時 <%= eventStartMonth %> <%= eventStartOrdinal %> の午前 8:00(12:00 UTC) に開始し、米国東部標準時 <%= eventStartMonth %> <%= eventEndOrdinal %> の午後 8:00 ( 00:00 UTC)に終了します。 割引はジェムを自分で購入する場合にのみ利用できます。"
"gemSaleLimitations": "このプロモーションは期間限定のイベント中にのみ適用されます。イベントは米国東部標準時 <%= eventStartMonth %> <%= eventStartOrdinal %> の午前 8:00(12:00 UTC) に開始し、米国東部標準時 <%= eventStartMonth %> <%= eventEndOrdinal %> の午後 8:00 ( 00:00 UTC)に終了します。 割引はジェムを自分で購入する場合にのみ利用できます。",
"winter2023WalrusWarriorSet": "セイウチ(戦士)",
"winter2023FairyLightsMageSet": "フェアリーライト(魔道士)",
"winter2023CardinalHealerSet": "ショウジョウコウカンチョウ(治療師)",
"winter2023RibbonRogueSet": "リボン(盗賊)"
}
+1 -1
View File
@@ -28,7 +28,7 @@
"magicalBee": "不思議なハチ",
"hopefulHippogriffPet": "希望に満ちたヒッポグリフ",
"hopefulHippogriffMount": "希望に満ちたヒッポグリフ",
"royalPurpleJackalope": "ロイヤルパープルのツノウサギ",
"royalPurpleJackalope": "ロイヤルパープルのジャッカロープ",
"invisibleAether": "不可視のエーテル獣",
"potion": "<%= potionType %> 薬",
"egg": "<%= eggType %>のたまご",
+3 -2
View File
@@ -129,7 +129,7 @@
"subscriptionBenefit1": "商人のAlexanderは、市場でジェムを1つにつき20ゴールドですぐ売ってくれます!",
"subscriptionBenefit3": "毎日の落とし物上限を2倍にして、Habiticaでより多くのアイテムを見つけましょう。",
"subscriptionBenefit4": "毎月、あなたのアバターを着飾るためのユニークでおしゃれなアイテムです。",
"subscriptionBenefit5": "初めて有料会員になったときは、ロイヤルパープルのツノウサギのペットを受け取れます。",
"subscriptionBenefit5": "初めて有料会員になったときは、ロイヤルパープルのジャッカロープのペットを受け取れます。",
"subscriptionBenefit6": "タイムトラベラーの店でアイテムを買うために神秘の砂時計を手に入れましょう!",
"purchaseAll": "セットを購入する",
"gemsRemaining": "残りのジェム",
@@ -213,5 +213,6 @@
"mysterySet202208": "はつらつポニーテールセット",
"mysterySet202209": "魔法学者セット",
"mysterySet202210": "くちなわセット",
"mysterySet202211": "エレクトロマンサーセット"
"mysterySet202211": "エレクトロマンサーセット",
"mysterySet202212": "氷のガーディアンセット"
}
+119 -11
View File
@@ -1,10 +1,10 @@
{
"achievement": "Pencapaian",
"onwards": "Onwards!",
"levelup": "By accomplishing your real life goals, you leveled up and are now fully healed!",
"reachedLevel": "Anda Telah Mencapai Tahap <%= level %>",
"achievementLostMasterclasser": "Quest Completionist: Masterclasser Series",
"achievementLostMasterclasserText": "Completed all sixteen quests in the Masterclasser Quest Series and solved the mystery of the Lost Masterclasser!",
"onwards": "Seterusnya!",
"levelup": "Dengan mencapai matlamat hidup sebenar anda, kamu meratakan dan kini sembuh sepenuhnya!",
"reachedLevel": "Anda Telah Mencapai Tahap <%= tahap %>",
"achievementLostMasterclasser": "Pencari Penyelesaian: Siri Masterclasser",
"achievementLostMasterclasserText": "Menyelesaikan kesemua enam belas pencarian dalam Siri Pencarian Masterclasser dan menyelesaikan misteri Masterclasser yang Hilang!",
"achievementBackToBasics": "Kembali kepada Asas",
"viewAchievements": "Lihat Pencapaian",
"letsGetStarted": "Mari kita mulakan!",
@@ -16,23 +16,131 @@
"achievementBackToBasicsModalText": "Anda sudah mengumpul semua Haiwan Peliharaan Asas!",
"hideAchievements": "Menyembui <%= category %>",
"showAllAchievements": "Tunjukkan Semua<%= category %>",
"onboardingCompleteDesc": "Anda telah memperoleh <strong>5 pencapaian</strong>dan<strong class=\"gold-amount\">100</strong>emas sebagai ganjaran untuk melengkapi senarai ini.",
"onboardingCompleteDesc": "Kamu telah mendapat <strong>5 Pencapaian</strong> dan <strong class=\"gold-amount\">100 Mata emas</strong> kerana melengkapkan senarai.",
"earnedAchievement": "Anda telah memperoleh pencapaian!",
"gettingStartedDesc": "Mari kita mencipta tugas, menyelesaikannya, dan kemudian memeriksa ganjaran anda. Anda akan mendapat <strong>5 pencapaian</strong>dan<strong class=\"gold-amount\">100 emas</strong>setelah anda selesai dengan tugas anda!",
"achievementPurchasedEquipmentText": "Sudah membeli peralatan pertama mereka.",
"achievementPurchasedEquipment": "Membeli Peralatan",
"achievementPurchasedEquipment": "Pembelian peralatan",
"achievementFedPetText": "Sudah memberi makanan kepada Haiwan Peliharaan pertama mereka.",
"achievementFedPet": "Memberi makanan kepada satu Haiwan Peliharaan",
"achievementHatchedPetModalText": "Pergi ke inventori anda dan cuba menggabungkan Potion Penetasan dengan satu telur",
"achievementHatchedPetModalText": "Pergi ke inventori anda dan cuba gabungkan Ramuan menetas dan Telur",
"achievementHatchedPetText": "Sudah menetaskan Haiwan Peliharaan pertama mereka.",
"achievementHatchedPet": "Menetaskan satu Haiwan Peliharaan",
"achievementCompletedTaskModalText": "Semakkan mana-mana tugasan anda untuk mendapat ganjaran",
"achievementCompletedTaskText": "Sudah menyelesaikan tugas pertama mereka.",
"achievementCompletedTask": "Selesaikan Satu Tugas",
"achievementCompletedTask": "Selesaikan tugasan",
"achievementCreatedTaskModalText": "Tambahkan tugas untuk sesuatu yang anda ingin mencapai dalam minggu ini",
"achievementCreatedTaskText": "Sudah mencipta tugas pertama mereka.",
"achievementCreatedTask": "Mencipta satu Tugas",
"achievementCreatedTask": "Buat tugas pertama anda",
"achievementMonsterMagusModalText": "Anda sudah mengumpul semua Haiwan Peliharaan Zombie!",
"achievementMonsterMagusText": "Sudah mengumpul semua Haiwan Peliharaan Zombie.",
"achievementPartyOn": "Kumpulan anda berkembang menjadi 4 orang ahli!"
"achievementPartyOn": "Kumpulan anda berkembang menjadi 4 orang ahli!",
"onboardingProgress": "<%= Peratusan %>% Kemajuan",
"yourRewards": "Ganjaran anda",
"achievementJustAddWaterModalText": "Telah selesai pencarian haiwan peliharaan seperti Sotong, Kuda Laut, Sotong Katak, Ikan Paus, Penyu, Siput Laut, Ular Laut dan Ikan Lumba-Lumba!",
"achievementJustAddWater": "Hanya Tambah Air",
"achievementMindOverMatterModalText": "Anda telah menyelesaikan pencarian haiwan peliharaan Batu, Lendir dan Benang!",
"foundNewItems": "Anda menemui item baharu!",
"achievementMindOverMatter": "Fikiran Daripada Perkara",
"yourProgress": "Kemajuan Anda",
"foundNewItemsCTA": "Pergi ke Inventori anda dan cuba gabungkan ramuan penetasan dan telur baharu anda!",
"achievementVioletsAreBlueModalText": "Anda mengumpul semua Haiwan Peliharaan Haiwan peliharaan gula-gula kapas biru!",
"achievementMindOverMatterText": "Telah menyelesaikan pencarian haiwan peliharaan Batu, Lendir dan Benang.",
"achievementLostMasterclasserModalText": "Anda menyelesaikan kesemua enam belas pencarian dalam Siri Pencarian Masterclasser dan menyelesaikan misteri Masterclasser yang Hilang!",
"onboardingComplete": "Anda telah menyelesaikan tugasan anda!",
"achievementJustAddWaterText": "Telah selesai pencarian haiwan peliharaan seperti Sotong, Kuda Laut, Sotong Katak, Ikan Paus, Penyu, Siput Laut, Ular Laut dan Ikan Lumba-Lumba.",
"achievementDomesticatedModalText": "Anda mengumpul semua haiwan peliharaan yang dijinakkan!",
"onboardingCompleteDescSmall": "Jika anda mahukan lebih banyak lagi, lihat Pencapaian dan mula mengumpul!",
"foundNewItemsExplanation": "Menyelesaikan tugas memberi anda peluang untuk mencari barang, seperti Telur, Ramuan Penetasan dan Makanan Haiwan.",
"achievementZodiacZookeeper": "Zodiak Penjaga Zoo",
"achievementShadyCustomer": "Pelanggan Rendang",
"achievementShadyCustomerText": "Telah mengumpul semua Haiwan Peliharaan Terendak.",
"achievementShadyCustomerModalText": "Anda mengumpul semua Haiwan Peliharaan Terendak!",
"achievementShadeOfItAll": "Terendak Semuanya",
"achievementShadeOfItAllText": "Telah menjinakkan semua Gunung Naungan.",
"achievementShadeOfItAllModalText": "Anda menjinakkan semua Gunung Naungan!",
"achievementAllYourBaseText": "Telah menjinakkan semua Lekapan Asas.",
"achievementKickstarter2019": "Pin Penyokong Kickstarter",
"achievementAridAuthority": "Kuasa gersang",
"achievementAridAuthorityModalText": "Anda menjinakkan semua Gunung Gurun!",
"achievementAllYourBaseModalText": "Anda menjinakkan semua Pelekap Pangkalan!",
"achievementUndeadUndertakerText": "Telah menjinakkan semua Zombi Mounts.",
"achievementBackToBasicsText": "Telah mengumpul semua Haiwan Peliharaan Asas.",
"achievementAridAuthorityText": "Telah menjinakkan semua Gunung Gurun.",
"achievementUndeadUndertakerModalText": "Anda menjinakkan semua Zombi Mounts!",
"achievementMonsterMagus": "Raksasa Magus",
"achievementKickstarter2019Text": "Pin Menyokong Projek Kickstarter 2019",
"achievementTickledPinkText": "Telah mengumpulkan seluruh permen kapas peliharaan Merah Jambu.",
"achievementPurchasedEquipmentModalText": "Peralatan adalah cara untuk mempersonalisasikan avatarmu dan meningkatkan sats",
"achievementPearlyProText": "Telah menjinakkan jumlah semua putih.",
"achievementRosyOutlookText": "Telah menjinakkan semua permen kapas jumlah Merah Jambu.",
"achievementBugBonanzaModalText": "Anda selesai pencarian dan bela kumbang, kupu-kupu, siput, dan laba-laba!",
"achievementRosyOutlook": "Pandangan Kemerahan",
"achievementTickledPink": "Kegelian Merah Jambu",
"achievementPearlyProModalText": "Anda menjinakkan semua jumlah putih!",
"achievementPrimedForPainting": "Siap untuk lukisan",
"achievementBugBonanza": "Tambang Serangga",
"achievementPearlyPro": "Mutiara pro",
"achievementBugBonanzaText": "Telah selesai pencarian dan bela kumbang, kupu, siput, dan laba-laba.",
"achievementPrimedForPaintingModalText": "Anda mengoleksi semua Peliharaan Putih!",
"achievementRosyOutlookModalText": "anda menjinakkan semua permen kapas jumlah Merah Jambu!",
"achievementFedPetModalText": "Ada berbagai jenis makanan, tapi peliharaan bisa memilih",
"achievementPrimedForPaintingText": "telah mengumpulkan seluruh Peliharaan Putih.",
"achievementTickledPinkModalText": "Anda mengoleksi semua permen kapas peliharaan Merah Jambu!",
"achievementUndeadUndertaker": "Makam Mayat Hidup",
"achievementGoodAsGoldText": "telah mengumpulkan seluruh Peliharaan Emas.",
"achievementGoodAsGoldModalText": "Anda mengoleksi semua peliharaan emas!",
"achievementFreshwaterFriendsModalText": "Anda menyelesaikan bela dan pencarian axolotl, katak, dan badak sungai!",
"achievementGoodAsGold": "Baik Sebagai Emas",
"achievementAllThatGlitters": "Semua Itu Bergemerlapan",
"achievementBareNecessitiesModalText": "Anda selesai bela dan pencarian monyet, kungkang, dan pokok pet quests!",
"achievementFreshwaterFriends": "Teman Air Tawar",
"achievementBareNecessities": "Kebutuhan yang Kosong",
"achievementBoneCollectorModalText": "Anda mengoleksi semua kerangka peliharaan!",
"achievementSkeletonCrewModalText": "Anda menjinakkan semua jumlah kerangka!",
"achievementSeeingRedModalText": "Anda mengoleksi semua peliharaan merah!",
"achievementRedLetterDayText": "Telah menjinakkan jumlah semua merah.",
"achievementRedLetterDayModalText": "Anda menjinakkan semua jumlah merah!",
"achievementSeeingRed": "Melihat merah",
"achievementSkeletonCrewText": "Jumlah kerangka semua telah dijinakkan.",
"achievementSkeletonCrew": "Kakitangan Kerangka",
"achievementSeeingRedText": "Telah mengumpulkan semua peliharaan merah.",
"achievementBoneCollectorText": "Telah mengumpulkan seluruh kerangka peliharaan.",
"achievementRedLetterDay": "Hari Huruf Merah",
"achievementAllThatGlittersModalText": "Anda menjinakkan semua jumlah emas!",
"achievementAllThatGlittersText": "Semua jumlah emas telah dijinakkan.",
"achievementSeasonalSpecialistText": "Telah menyelesaikan pencarian sepanjang musim semi dan musim dingin: Perburuan Telur, Trapper Santa dan Menemukan Anak Beruang Kutub!",
"achievementWildBlueYonderModalText": "Anda menjinakkan semua jumlah permen kapas biru!",
"achievementVioletsAreBlueText": "Telah mengumpulkan seluruh permen kapas peliharaan biru.",
"achievementDomesticated": "E-I-E-I-O",
"achievementWildBlueYonderText": "Telah menjinakkan semua jumlah permen kapas biru.",
"achievementVioletsAreBlue": "Bunga violet berwarna biru",
"achievementWildBlueYonder": "Liar biru gelap",
"achievementSeasonalSpecialistModalText": "Anda telah menyelesaikan semua pencarian musiman!",
"achievementSeasonalSpecialist": "Spesialis Musiman",
"achievementLegendaryBestiary": "Legendaris Bestiary",
"achievementZodiacZookeeperText": "Menetas semua warna standar haiwan zodiak: Tikus, lembu, arnab, ular, kuda, biri-biri, monyet, ayam jantan, serigala, harimau, babi terbang dan naga!",
"achievementZodiacZookeeperModalText": "Telah mengumpul semua Haiwan Zodiak!",
"achievementBirdsOfAFeather": "Burung Sejenis",
"achievementBirdsOfAFeatherText": "Menetas semua warna standar haiwan peliharaan terbang: Babi terbang, burung hantu, burung kakak tua, pterodactyl, elang, helang, burung merak dan ayam jantan!",
"achievementReptacularRumble": "Reptilia Berkeroncong",
"achievementBirdsOfAFeatherModalText": "Mengumpul semua haiwan peliharaan terbang!",
"achievementReptacularRumbleText": "Menetas semua warna reptilia standard: Buaya, Pterodactyl, Ular, Triceratops, Kura-kura, Tyrannosaurus Rex dan Velociraptor!",
"achievementReptacularRumbleModalText": "Mengumpul semua haiwan peliharaan reptilia!",
"achievementGroupsBeta2022": "Penguji beta interaktif",
"achievementGroupsBeta2022Text": "Anda dan pasukan anda memberikan maklum balas yang tidak ternilai untuk membantu menguji Habitica.",
"achievementGroupsBeta2022ModalText": "Anda dan pasukan anda membantu Habitica dengan menguji dan memberi maklum balas!",
"achievementWoodlandWizard": "Hutan Sihir",
"achievementWoodlandWizardText": "Anda telah menetas semua warna makhluk hutan standard: Badger, beruang, rusa, musang, katak, landak, burung hantu, siput, tupai dan kerdil!",
"achievementWoodlandWizardModalText": "Mengumpul semua haiwan peliharaan hutan!",
"achievementBoneToPick": "Tulang untuk memilih",
"achievementBoneToPickText": "Anda telah menetas semua Haiwan Kesayangan Klasik dan Haiwan Kerangka Quest!",
"achievementBoneToPickModalText": "Anda Mengumpul semua Haiwan Kesayangan Klasik dan Haiwan Kerangka!",
"achievementPolarPro": "kutub profesional",
"achievementPolarProText": "Menetas semua haiwan peliharaan Artik: Beruang, musang, penguin, ikan paus dan serigala!",
"achievementPolarProModalText": "Anda telah mengumpul semua haiwan peliharaan kutub!",
"achievementBareNecessitiesText": "Selesai pencarian haiwan peliharaan monyet, kemalasan dan kerdil.",
"achievementFreshwaterFriendsText": "Selesai pencarian haiwan peliharaan untuk Axolotl, Katak dan Badak Sungai.",
"achievementLegendaryBestiaryText": "Menetas semua warna haiwan peliharaan Mythic lalai: Naga, babi terbang, griffin, ular laut dan unicorn!",
"achievementBoneCollector": "Pengumpul Tulang"
}
+3 -1
View File
@@ -5,5 +5,7 @@
"communityInstagram": "Instagram",
"clearBrowserData": "Hapuskan Data Pelayar Web",
"termsAndAgreement": "Dengan klik butang di bawah, anda diandaikan telah membaca serta setuju dengan <a href='/static/terms'>Syarat Perkhidmatan</a> dan <a href='/static/privacy'>Dasar Privasi</a>.",
"communityExtensions": "<a href='http://habitica.fandom.com/wiki/Extensions,_Add-Ons,_and_Customizations' target='_blank'>Alat & Sambungan Tambahan</a>"
"communityExtensions": "Alat tambah dan sambungan",
"companyAbout": "bagaimana ia berfungsi",
"companyBlog": "Blog"
}
+4 -4
View File
@@ -1,13 +1,13 @@
{
"subscription": "Langganan",
"subscriptions": "Langganan-langganan",
"sendGems": "Send Gems",
"buyGemsGold": "Beli permata dengan syiling emas",
"sendGems": "Hantar Permata",
"buyGemsGold": "Beli Permata dengan Mata Emas",
"mustSubscribeToPurchaseGems": "Mesti melanggan untuk membeli permata dengan GP",
"reachedGoldToGemCap": "You've reached the Gold=>Gem conversion cap <%= convCap %> for this month. We have this to prevent abuse / farming. The cap resets within the first three days of each month.",
"reachedGoldToGemCapQuantity": "Your requested amount <%= quantity %> exceeds the Gold=>Gem conversion cap <%= convCap %> for this month. We have this to prevent abuse / farming. The cap resets within the first three days of each month.",
"mysteryItem": "Barang bulanan eksklusif",
"mysteryItemText": "Each month you will receive a unique cosmetic item for your avatar! Plus, for every three months of consecutive subscription, the Mysterious Time Travelers will grant you access to historic (and futuristic!) cosmetic items.",
"mysteryItemText": "Setiap bulan anda akan menerima item kosmetik yang unik untuk avatar anda! Selain itu, untuk setiap tiga bulan langganan berturut-turut, Pengembara Masa Misterius akan memberikan anda akses kepada barangan kosmetik bersejarah (dan futuristik!).",
"exclusiveJackalopePet": "Exclusive pet",
"giftSubscription": "Want to gift a subscription to someone?",
"giftSubscriptionText4": "Thanks for supporting Habitica!",
@@ -120,7 +120,7 @@
"choosePaymentMethod": "Choose your payment method",
"buyGemsSupportsDevs": "Purchasing Gems supports the developers and helps keep Habitica running",
"support": "SUPPORT",
"gemBenefitLeadin": "Gems allow you to buy fun extras for your account, including:",
"gemBenefitLeadin": "Apa yang anda boleh beli dengan Permata?",
"gemBenefit1": "Unique and fashionable costumes for your avatar.",
"gemBenefit2": "Backgrounds to immerse your avatar in the world of Habitica!",
"gemBenefit3": "Exciting Quest chains that drop pet eggs.",
+1 -1
View File
@@ -125,7 +125,7 @@
"birthdayCardNotes": "Envie um cartão de aniversário para um membro da equipa.",
"birthday0": "Parabéns pra você!",
"birthdayCardAchievementTitle": "Aniversário Próspero",
"birthdayCardAchievementText": "Muitas respostas felizes! Enviou ou recebeu <%= cards %> cartões de aniversário.",
"birthdayCardAchievementText": "Muitas respostas felizes! Enviou ou recebeu <%= count %> cartões de aniversário.",
"congratsCard": "Cartão de Parabéns",
"congratsCardExplanation": "Ambos recebem a conquista de Companheiro Congrulatório!",
"congratsCardNotes": "Envia um cartão de Parabéns a um membro da equipa.",

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