mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 14:47:53 +01:00
commit39427a75dbAuthor: Matteo Pagliazzi <matteopagliazzi@gmail.com> Date: Wed Jun 17 17:33:30 2020 +0200 To-Dos -> To Do's (#12290) * To-Dos -> To Do's * To-Do -> To Do commitd7854f3809Author: jacobguinther <jacobgguinther@gmail.com> Date: Tue Jun 16 13:31:32 2020 -0600 Remove party banner when below tablet size (fixes 10827) (#12289) * Remove party banner when below tablet size - Use Bootstrap breakpoints to remove party banner @ 768px - Remove old media query that removed party button on small screens * Make progress bars smaller @ 992px - Makes room for party piece commit0d8df9f1a2Author: Sabe Jones <sabrecat@gmail.com> Date: Tue Jun 16 13:42:28 2020 -0500 More Armoire content refactoring (#12288) * refactor(armoire): still more defaultification * fix(refactor): look at array for index, not object * refactor(armoire): skip stat processing if item already has notes commit679c8f725bMerge:274a5f310eed0cffce76Author: Melior <admin@habitica.com> Date: Tue Jun 16 20:39:36 2020 +0200 Merge branch 'origin/develop' into Weblate. commited0cffce76Author: Melior <admin@habitica.com> Date: Tue Jun 16 20:39:25 2020 +0200 Translated using Weblate (Dutch) Currently translated at 94.6% (2000 of 2113 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/nl/ Translated using Weblate (Japanese) Currently translated at 96.4% (677 of 702 strings) Translation: Habitica/Questscontent Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/ja/ Translated using Weblate (Dutch) Currently translated at 94.6% (2000 of 2113 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/nl/ Translated using Weblate (Japanese) Currently translated at 97.5% (81 of 83 strings) Translation: Habitica/Achievements Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ja/ Translated using Weblate (Vietnamese) Currently translated at 100.0% (536 of 536 strings) Translation: Habitica/Backgrounds Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/vi/ Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (213 of 213 strings) Translation: Habitica/Tasks Translate-URL: https://translate.habitica.com/projects/habitica/tasks/pt_BR/ Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (2113 of 2113 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt_BR/ Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (702 of 702 strings) Translation: Habitica/Questscontent Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/pt_BR/ Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (359 of 359 strings) Translation: Habitica/Content Translate-URL: https://translate.habitica.com/projects/habitica/content/pt_BR/ Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (536 of 536 strings) Translation: Habitica/Backgrounds Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pt_BR/ Translated using Weblate (Vietnamese) Currently translated at 97.0% (520 of 536 strings) Translation: Habitica/Backgrounds Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/vi/ Translated using Weblate (Vietnamese) Currently translated at 94.0% (504 of 536 strings) Translation: Habitica/Backgrounds Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/vi/ Translated using Weblate (Japanese) Currently translated at 100.0% (140 of 140 strings) Translation: Habitica/Quests Translate-URL: https://translate.habitica.com/projects/habitica/quests/ja/ Translated using Weblate (Japanese) Currently translated at 100.0% (173 of 173 strings) Translation: Habitica/Npc Translate-URL: https://translate.habitica.com/projects/habitica/npc/ja/ Translated using Weblate (Japanese) Currently translated at 100.0% (56 of 56 strings) Translation: Habitica/Faq Translate-URL: https://translate.habitica.com/projects/habitica/faq/ja/ Translated using Weblate (Russian) Currently translated at 98.2% (690 of 702 strings) Translation: Habitica/Questscontent Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/ru/ Translated using Weblate (Japanese) Currently translated at 95.4% (670 of 702 strings) Translation: Habitica/Questscontent Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/ja/ Translated using Weblate (Japanese) Currently translated at 100.0% (359 of 359 strings) Translation: Habitica/Content Translate-URL: https://translate.habitica.com/projects/habitica/content/ja/ Translated using Weblate (Japanese) Currently translated at 100.0% (213 of 213 strings) Translation: Habitica/Tasks Translate-URL: https://translate.habitica.com/projects/habitica/tasks/ja/ Translated using Weblate (Japanese) Currently translated at 100.0% (173 of 173 strings) Translation: Habitica/Npc Translate-URL: https://translate.habitica.com/projects/habitica/npc/ja/ Translated using Weblate (Japanese) Currently translated at 100.0% (536 of 536 strings) Translation: Habitica/Backgrounds Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ja/ Translated using Weblate (Japanese) Currently translated at 95.1% (79 of 83 strings) Translation: Habitica/Achievements Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ja/ Translated using Weblate (Vietnamese) Currently translated at 92.3% (495 of 536 strings) Translation: Habitica/Backgrounds Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/vi/ Translated using Weblate (Romanian) Currently translated at 100.0% (213 of 213 strings) Translation: Habitica/Tasks Translate-URL: https://translate.habitica.com/projects/habitica/tasks/ro/ Translated using Weblate (Romanian) Currently translated at 100.0% (57 of 57 strings) Translation: Habitica/Spells Translate-URL: https://translate.habitica.com/projects/habitica/spells/ro/ Translated using Weblate (Romanian) Currently translated at 100.0% (56 of 56 strings) Translation: Habitica/Faq Translate-URL: https://translate.habitica.com/projects/habitica/faq/ro/ Translated using Weblate (Romanian) Currently translated at 100.0% (63 of 63 strings) Translation: Habitica/Defaulttasks Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/ro/ Translated using Weblate (Romanian) Currently translated at 100.0% (211 of 211 strings) Translation: Habitica/Settings Translate-URL: https://translate.habitica.com/projects/habitica/settings/ro/ Translated using Weblate (Russian) Currently translated at 100.0% (143 of 143 strings) Translation: Habitica/Pets Translate-URL: https://translate.habitica.com/projects/habitica/pets/ru/ Translated using Weblate (Russian) Currently translated at 100.0% (359 of 359 strings) Translation: Habitica/Content Translate-URL: https://translate.habitica.com/projects/habitica/content/ru/ Translated using Weblate (Japanese) Currently translated at 99.6% (534 of 536 strings) Translation: Habitica/Backgrounds Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ja/ Translated using Weblate (Russian) Currently translated at 99.5% (210 of 211 strings) Translation: Habitica/Settings Translate-URL: https://translate.habitica.com/projects/habitica/settings/ru/ Translated using Weblate (Vietnamese) Currently translated at 90.8% (487 of 536 strings) Translation: Habitica/Backgrounds Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/vi/ Translated using Weblate (Japanese) Currently translated at 98.8% (530 of 536 strings) Translation: Habitica/Backgrounds Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ja/ Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (536 of 536 strings) Translation: Habitica/Backgrounds Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hans/ Translated using Weblate (Vietnamese) Currently translated at 83.2% (446 of 536 strings) Translation: Habitica/Backgrounds Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/vi/ Translated using Weblate (Vietnamese) Currently translated at 100.0% (213 of 213 strings) Translation: Habitica/Tasks Translate-URL: https://translate.habitica.com/projects/habitica/tasks/vi/ Translated using Weblate (Dutch) Currently translated at 94.4% (1996 of 2113 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/nl/ Translated using Weblate (Japanese) Currently translated at 95.4% (670 of 702 strings) Translation: Habitica/Questscontent Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/ja/ Translated using Weblate (Japanese) Currently translated at 100.0% (359 of 359 strings) Translation: Habitica/Content Translate-URL: https://translate.habitica.com/projects/habitica/content/ja/ Translated using Weblate (Japanese) Currently translated at 98.3% (527 of 536 strings) Translation: Habitica/Backgrounds Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ja/ commit274a5f310eMerge:d961b8aaafbceccd55bfAuthor: Sabe Jones <sabrecat@gmail.com> Date: Tue Jun 16 13:36:42 2020 -0500 Merge branch 'release' into develop commitd961b8aaafAuthor: Frank Maximus <frank@healingjourneyman.com> Date: Tue Jun 16 19:06:14 2020 +0200 #9498: Hide Wolf-Veteran and LionCub-Ethereal (#12292) commit430ff64875Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue Jun 16 15:12:39 2020 +0200 build(deps): bump @vue/cli-plugin-eslint in /website/client (#12301) Bumps [@vue/cli-plugin-eslint](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-eslint) from 4.4.1 to 4.4.4. - [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/v4.4.4/packages/@vue/cli-plugin-eslint) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> commitac99c6c3c5Merge:1be03d741aa43f410031Author: Matteo Pagliazzi <matteopagliazzi@gmail.com> Date: Tue Jun 16 15:04:30 2020 +0200 build(deps): bump @vue/cli-service in /website/client (#12305) Bumps [@vue/cli-service](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-service) from 4.4.1 to 4.4.4. - [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/v4.4.4/packages/@vue/cli-service) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> commit1be03d741aAuthor: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue Jun 16 15:04:13 2020 +0200 build(deps): bump @vue/cli-plugin-router in /website/client (#12304) Bumps [@vue/cli-plugin-router](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-router) from 4.4.1 to 4.4.4. - [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/v4.4.4/packages/@vue/cli-plugin-router) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> commita43f410031Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue Jun 16 13:00:43 2020 +0000 build(deps): bump @vue/cli-service in /website/client Bumps [@vue/cli-service](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-service) from 4.4.1 to 4.4.4. - [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/v4.4.4/packages/@vue/cli-service) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> commitb84395b17dAuthor: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue Jun 16 14:58:02 2020 +0200 build(deps): bump vue-router from 3.3.2 to 3.3.4 in /website/client (#12306) Bumps [vue-router](https://github.com/vuejs/vue-router) from 3.3.2 to 3.3.4. - [Release notes](https://github.com/vuejs/vue-router/releases) - [Changelog](https://github.com/vuejs/vue-router/blob/dev/CHANGELOG.md) - [Commits](https://github.com/vuejs/vue-router/compare/v3.3.2...v3.3.4) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> commitd5d4afe613Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue Jun 16 14:57:43 2020 +0200 build(deps): bump @vue/cli-plugin-unit-mocha in /website/client (#12303) Bumps [@vue/cli-plugin-unit-mocha](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-unit-mocha) from 4.4.1 to 4.4.4. - [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/v4.4.4/packages/@vue/cli-plugin-unit-mocha) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> commitdef62d5716Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue Jun 16 14:57:37 2020 +0200 build(deps): bump habitica-markdown in /website/client (#12302) Bumps [habitica-markdown](https://github.com/HabitRPG/habitica-markdown) from 2.0.0 to 2.0.2. - [Release notes](https://github.com/HabitRPG/habitica-markdown/releases) - [Commits](https://github.com/HabitRPG/habitica-markdown/commits/v2.0.2) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> commit5846898592Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue Jun 16 14:57:25 2020 +0200 build(deps): bump @vue/cli-plugin-babel in /website/client (#12299) Bumps [@vue/cli-plugin-babel](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-babel) from 4.4.1 to 4.4.4. - [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/v4.4.4/packages/@vue/cli-plugin-babel) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> commit524aac4d95Author: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue Jun 16 14:57:11 2020 +0200 build(deps): bump helmet from 3.22.0 to 3.23.0 (#12297) Bumps [helmet](https://github.com/helmetjs/helmet) from 3.22.0 to 3.23.0. - [Release notes](https://github.com/helmetjs/helmet/releases) - [Changelog](https://github.com/helmetjs/helmet/blob/master/CHANGELOG.md) - [Commits](https://github.com/helmetjs/helmet/compare/v3.22.0...v3.23.0) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> commit92dc332ab9Merge:7902db2edcbcd3e2851cAuthor: Melior <admin@habitica.com> Date: Fri Jun 12 00:02:52 2020 +0200 Merge branch 'origin/develop' into Weblate. commit7902db2edcMerge:f3ea5f0b62e6b65871e7Author: Sabe Jones <sabrecat@gmail.com> Date: Thu Jun 11 16:38:48 2020 -0500 Merge branch 'release' into develop commitf3ea5f0b62Author: negue <negue@users.noreply.github.com> Date: Thu Jun 11 21:14:33 2020 +0200 Tasks Redesign: Colors, Title, Notes, Habit Controls, Button Style (#12274) * extract color changes + habit-controls out of #12142 * extract title / notes changes from #12142 * extracted delete btn + style fixes of #12142 * fix taskModal footer + advancedSettings * extracted the button style changes from #12142 * remove un-used method commitbcd3e2851cAuthor: Melior <admin@habitica.com> Date: Thu Jun 11 20:46:57 2020 +0200 Translated using Weblate (Vietnamese) Currently translated at 100.0% (83 of 83 strings) Translation: Habitica/Achievements Translate-URL: https://translate.habitica.com/projects/habitica/achievements/vi/ Translated using Weblate (Latin) Currently translated at 85.5% (71 of 83 strings) Translation: Habitica/Achievements Translate-URL: https://translate.habitica.com/projects/habitica/achievements/la/ Translated using Weblate (Russian) Currently translated at 97.3% (2056 of 2113 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/ Translated using Weblate (German) Currently translated at 99.8% (2110 of 2113 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/ Translated using Weblate (Russian) Currently translated at 99.4% (533 of 536 strings) Translation: Habitica/Backgrounds Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ru/ Translated using Weblate (Japanese) Currently translated at 97.9% (525 of 536 strings) Translation: Habitica/Backgrounds Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ja/ Translated using Weblate (German) Currently translated at 99.6% (534 of 536 strings) Translation: Habitica/Backgrounds Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/de/ Translated using Weblate (Catalan) Currently translated at 100.0% (4 of 4 strings) Translation: Habitica/Noscript Translate-URL: https://translate.habitica.com/projects/habitica/noscript/ca/ Translated using Weblate (Catalan) Currently translated at 100.0% (12 of 12 strings) Translation: Habitica/Merch Translate-URL: https://translate.habitica.com/projects/habitica/merch/ca/ Translated using Weblate (Catalan) Currently translated at 100.0% (230 of 230 strings) Translation: Habitica/Character Translate-URL: https://translate.habitica.com/projects/habitica/character/ca/ Translated using Weblate (Vietnamese) Currently translated at 80.9% (434 of 536 strings) Translation: Habitica/Backgrounds Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/vi/ Translated using Weblate (Catalan) Currently translated at 100.0% (28 of 28 strings) Translation: Habitica/Rebirth Translate-URL: https://translate.habitica.com/projects/habitica/rebirth/ca/ Translated using Weblate (Catalan) Currently translated at 100.0% (31 of 31 strings) Translation: Habitica/Maintenance Translate-URL: https://translate.habitica.com/projects/habitica/maintenance/ca/ Translated using Weblate (Catalan) Currently translated at 100.0% (27 of 27 strings) Translation: Habitica/Loginincentives Translate-URL: https://translate.habitica.com/projects/habitica/loginincentives/ca/ Translated using Weblate (Catalan) Currently translated at 100.0% (6 of 6 strings) Translation: Habitica/Inventory Translate-URL: https://translate.habitica.com/projects/habitica/inventory/ca/ Translated using Weblate (Catalan) Currently translated at 82.3% (1740 of 2113 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/ca/ Translated using Weblate (Catalan) Currently translated at 100.0% (63 of 63 strings) Translation: Habitica/Defaulttasks Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/ca/ Translated using Weblate (Catalan) Currently translated at 100.0% (15 of 15 strings) Translation: Habitica/Death Translate-URL: https://translate.habitica.com/projects/habitica/death/ca/ Translated using Weblate (Catalan) Currently translated at 99.1% (123 of 124 strings) Translation: Habitica/Communityguidelines Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/ca/ Translated using Weblate (Portuguese) Currently translated at 83.0% (1754 of 2113 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt/ Translated using Weblate (Portuguese) Currently translated at 83.0% (1754 of 2113 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt/ Translated using Weblate (French) Currently translated at 100.0% (2113 of 2113 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/ Translated using Weblate (Russian) Currently translated at 98.8% (530 of 536 strings) Translation: Habitica/Backgrounds Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ru/ Translated using Weblate (Japanese) Currently translated at 97.5% (523 of 536 strings) Translation: Habitica/Backgrounds Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ja/ Translated using Weblate (French) Currently translated at 100.0% (536 of 536 strings) Translation: Habitica/Backgrounds Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/fr/ Translated using Weblate (Spanish) Currently translated at 94.6% (53 of 56 strings) Translation: Habitica/Faq Translate-URL: https://translate.habitica.com/projects/habitica/faq/es/ Translated using Weblate (Spanish) Currently translated at 99.1% (123 of 124 strings) Translation: Habitica/Communityguidelines Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/es/ Translated using Weblate (Spanish) Currently translated at 97.1% (205 of 211 strings) Translation: Habitica/Settings Translate-URL: https://translate.habitica.com/projects/habitica/settings/es/ commit5957930709Author: Frank Maximus <frank@healingjourneyman.com> Date: Wed Jun 10 15:01:07 2020 +0200 Display descriptive error when mongod isn't running (#12196) Add test:prepare:mongo task to check is mongod is running. Fixes: #12101 commit1df4e687f1Author: Matteo Pagliazzi <matteopagliazzi@gmail.com> Date: Wed Jun 10 14:57:57 2020 +0200 fix(mentions): do not fill empty mentions with following username, fixes #12272 commit3063a38d60Merge:4b489fe4ca51d20ef7e8Author: Sabe Jones <sabrecat@gmail.com> Date: Tue Jun 9 15:28:16 2020 -0500 Merge branch 'release' into develop commit4b489fe4caMerge:afd50ddc2d074004ec75Author: Melior <admin@habitica.com> Date: Tue Jun 9 21:21:14 2020 +0200 Merge branch 'origin/develop' into Weblate. commit074004ec75Author: Melior <admin@habitica.com> Date: Tue Jun 9 21:21:04 2020 +0200 Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (249 of 249 strings) Translation: Habitica/Subscriber Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/pt_BR/ Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (140 of 140 strings) Translation: Habitica/Quests Translate-URL: https://translate.habitica.com/projects/habitica/quests/pt_BR/ Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (173 of 173 strings) Translation: Habitica/Npc Translate-URL: https://translate.habitica.com/projects/habitica/npc/pt_BR/ Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (493 of 493 strings) Translation: Habitica/Groups Translate-URL: https://translate.habitica.com/projects/habitica/groups/pt_BR/ Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (2107 of 2107 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt_BR/ Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (56 of 56 strings) Translation: Habitica/Faq Translate-URL: https://translate.habitica.com/projects/habitica/faq/pt_BR/ Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (124 of 124 strings) Translation: Habitica/Communityguidelines Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/pt_BR/ Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (211 of 211 strings) Translation: Habitica/Settings Translate-URL: https://translate.habitica.com/projects/habitica/settings/pt_BR/ Translated using Weblate (Japanese) Currently translated at 100.0% (140 of 140 strings) Translation: Habitica/Quests Translate-URL: https://translate.habitica.com/projects/habitica/quests/ja/ Translated using Weblate (Japanese) Currently translated at 100.0% (493 of 493 strings) Translation: Habitica/Groups Translate-URL: https://translate.habitica.com/projects/habitica/groups/ja/ Translated using Weblate (Dutch) Currently translated at 94.6% (1994 of 2107 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/nl/ Translated using Weblate (Japanese) Currently translated at 98.2% (520 of 529 strings) Translation: Habitica/Backgrounds Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ja/ Translated using Weblate (Catalan) Currently translated at 92.0% (487 of 529 strings) Translation: Habitica/Backgrounds Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ca/ Translated using Weblate (Russian) Currently translated at 93.9% (234 of 249 strings) Translation: Habitica/Subscriber Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ru/ Translated using Weblate (Russian) Currently translated at 97.4% (2053 of 2107 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/ Translated using Weblate (Russian) Currently translated at 100.0% (522 of 522 strings) Translation: Habitica/Backgrounds Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ru/ Translated using Weblate (French) Currently translated at 100.0% (140 of 140 strings) Translation: Habitica/Quests Translate-URL: https://translate.habitica.com/projects/habitica/quests/fr/ Translated using Weblate (French) Currently translated at 100.0% (173 of 173 strings) Translation: Habitica/Npc Translate-URL: https://translate.habitica.com/projects/habitica/npc/fr/ Translated using Weblate (French) Currently translated at 100.0% (493 of 493 strings) Translation: Habitica/Groups Translate-URL: https://translate.habitica.com/projects/habitica/groups/fr/ Translated using Weblate (Russian) Currently translated at 99.2% (518 of 522 strings) Translation: Habitica/Backgrounds Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ru/ Translated using Weblate (Vietnamese) Currently translated at 80.7% (427 of 529 strings) Translation: Habitica/Backgrounds Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/vi/ Translated using Weblate (German) Currently translated at 100.0% (140 of 140 strings) Translation: Habitica/Quests Translate-URL: https://translate.habitica.com/projects/habitica/quests/de/ Translated using Weblate (German) Currently translated at 100.0% (173 of 173 strings) Translation: Habitica/Npc Translate-URL: https://translate.habitica.com/projects/habitica/npc/de/ Translated using Weblate (German) Currently translated at 100.0% (493 of 493 strings) Translation: Habitica/Groups Translate-URL: https://translate.habitica.com/projects/habitica/groups/de/ commitafd50ddc2dMerge:61ca500013e31ce11052Author: Sabe Jones <sabrecat@gmail.com> Date: Tue Jun 9 14:17:53 2020 -0500 Merge branch 'release' into develop commit61ca500013Merge:9ab79ef225630c848ff5Author: Melior <admin@habitica.com> Date: Mon Jun 8 21:50:11 2020 +0200 Merge branch 'origin/develop' into Weblate. commit630c848ff5Author: Melior <admin@habitica.com> Date: Mon Jun 8 16:37:50 2020 +0200 Translated using Weblate (Vietnamese) Currently translated at 100.0% (211 of 211 strings) Translation: Habitica/Tasks Translate-URL: https://translate.habitica.com/projects/habitica/tasks/vi/ Translated using Weblate (Vietnamese) Currently translated at 100.0% (124 of 124 strings) Translation: Habitica/Communityguidelines Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/vi/ Translated using Weblate (Russian) Currently translated at 93.5% (233 of 249 strings) Translation: Habitica/Subscriber Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ru/ Translated using Weblate (Russian) Currently translated at 97.2% (2049 of 2107 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/ Translated using Weblate (Dutch) Currently translated at 94.6% (1994 of 2107 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/nl/ Translated using Weblate (Japanese) Currently translated at 97.9% (518 of 529 strings) Translation: Habitica/Backgrounds Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ja/ Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (696 of 696 strings) Translation: Habitica/Questscontent Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/ Translated using Weblate (Japanese) Currently translated at 97.5% (516 of 529 strings) Translation: Habitica/Backgrounds Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ja/ Translated using Weblate (German) Currently translated at 100.0% (56 of 56 strings) Translation: Habitica/Faq Translate-URL: https://translate.habitica.com/projects/habitica/faq/de/ Translated using Weblate (Japanese) Currently translated at 97.1% (514 of 529 strings) Translation: Habitica/Backgrounds Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ja/ Translated using Weblate (Dutch) Currently translated at 94.5% (1992 of 2107 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/nl/ Translated using Weblate (German) Currently translated at 100.0% (249 of 249 strings) Translation: Habitica/Subscriber Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/de/ Translated using Weblate (German) Currently translated at 100.0% (2107 of 2107 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/ Translated using Weblate (Japanese) Currently translated at 96.7% (512 of 529 strings) Translation: Habitica/Backgrounds Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ja/ Translated using Weblate (German) Currently translated at 99.9% (2105 of 2107 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/ Translated using Weblate (Japanese) Currently translated at 96.4% (510 of 529 strings) Translation: Habitica/Backgrounds Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ja/ Translated using Weblate (Dutch) Currently translated at 94.4% (1990 of 2107 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/nl/ Translated using Weblate (Dutch) Currently translated at 94.4% (1990 of 2107 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/nl/ Translated using Weblate (Japanese) Currently translated at 100.0% (492 of 492 strings) Translation: Habitica/Groups Translate-URL: https://translate.habitica.com/projects/habitica/groups/ja/ Translated using Weblate (Russian) Currently translated at 100.0% (211 of 211 strings) Translation: Habitica/Tasks Translate-URL: https://translate.habitica.com/projects/habitica/tasks/ru/ Translated using Weblate (Russian) Currently translated at 100.0% (57 of 57 strings) Translation: Habitica/Spells Translate-URL: https://translate.habitica.com/projects/habitica/spells/ru/ Translated using Weblate (Russian) Currently translated at 97.6% (168 of 172 strings) Translation: Habitica/Npc Translate-URL: https://translate.habitica.com/projects/habitica/npc/ru/ Translated using Weblate (Russian) Currently translated at 98.3% (178 of 181 strings) Translation: Habitica/Limited Translate-URL: https://translate.habitica.com/projects/habitica/limited/ru/ Translated using Weblate (Russian) Currently translated at 100.0% (492 of 492 strings) Translation: Habitica/Groups Translate-URL: https://translate.habitica.com/projects/habitica/groups/ru/ Translated using Weblate (Russian) Currently translated at 96.6% (2037 of 2107 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/ Translated using Weblate (Russian) Currently translated at 99.6% (297 of 298 strings) Translation: Habitica/Generic Translate-URL: https://translate.habitica.com/projects/habitica/generic/ru/ Translated using Weblate (Russian) Currently translated at 100.0% (328 of 328 strings) Translation: Habitica/Front Translate-URL: https://translate.habitica.com/projects/habitica/front/ru/ Translated using Weblate (Russian) Currently translated at 98.2% (55 of 56 strings) Translation: Habitica/Faq Translate-URL: https://translate.habitica.com/projects/habitica/faq/ru/ Translated using Weblate (Russian) Currently translated at 100.0% (15 of 15 strings) Translation: Habitica/Death Translate-URL: https://translate.habitica.com/projects/habitica/death/ru/ Translated using Weblate (Russian) Currently translated at 99.1% (690 of 696 strings) Translation: Habitica/Questscontent Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/ru/ Translated using Weblate (German) Currently translated at 100.0% (696 of 696 strings) Translation: Habitica/Questscontent Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/de/ Translated using Weblate (Russian) Currently translated at 100.0% (126 of 126 strings) Translation: Habitica/Communityguidelines Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/ru/ Translated using Weblate (Russian) Currently translated at 100.0% (70 of 70 strings) Translation: Habitica/Contrib Translate-URL: https://translate.habitica.com/projects/habitica/contrib/ru/ Translated using Weblate (Russian) Currently translated at 100.0% (230 of 230 strings) Translation: Habitica/Character Translate-URL: https://translate.habitica.com/projects/habitica/character/ru/ Translated using Weblate (Russian) Currently translated at 100.0% (134 of 134 strings) Translation: Habitica/Challenge Translate-URL: https://translate.habitica.com/projects/habitica/challenge/ru/ Translated using Weblate (Russian) Currently translated at 99.0% (209 of 211 strings) Translation: Habitica/Settings Translate-URL: https://translate.habitica.com/projects/habitica/settings/ru/ Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (2107 of 2107 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hant/ Translated using Weblate (Polish) Currently translated at 83.6% (1763 of 2107 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/pl/ Translated using Weblate (Dutch) Currently translated at 94.3% (1989 of 2107 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/nl/ Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (696 of 696 strings) Translation: Habitica/Questscontent Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/ Translated using Weblate (Vietnamese) Currently translated at 96.4% (54 of 56 strings) Translation: Habitica/Faq Translate-URL: https://translate.habitica.com/projects/habitica/faq/vi/ Translated using Weblate (Vietnamese) Currently translated at 90.3% (75 of 83 strings) Translation: Habitica/Achievements Translate-URL: https://translate.habitica.com/projects/habitica/achievements/vi/ Translated using Weblate (Russian) Currently translated at 100.0% (211 of 211 strings) Translation: Habitica/Tasks Translate-URL: https://translate.habitica.com/projects/habitica/tasks/ru/ Translated using Weblate (Russian) Currently translated at 99.2% (691 of 696 strings) Translation: Habitica/Questscontent Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/ru/ Translated using Weblate (Russian) Currently translated at 100.0% (134 of 134 strings) Translation: Habitica/Challenge Translate-URL: https://translate.habitica.com/projects/habitica/challenge/ru/ Translated using Weblate (Japanese) Currently translated at 100.0% (492 of 492 strings) Translation: Habitica/Groups Translate-URL: https://translate.habitica.com/projects/habitica/groups/ja/ Translated using Weblate (Dutch) Currently translated at 94.3% (1987 of 2107 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/nl/ Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (249 of 249 strings) Translation: Habitica/Subscriber Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hant/ Translated using Weblate (Dutch) Currently translated at 100.0% (249 of 249 strings) Translation: Habitica/Subscriber Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/nl/ Translated using Weblate (English (United Kingdom)) Currently translated at 100.0% (249 of 249 strings) Translation: Habitica/Subscriber Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/en_GB/ Translated using Weblate (Dutch) Currently translated at 100.0% (181 of 181 strings) Translation: Habitica/Limited Translate-URL: https://translate.habitica.com/projects/habitica/limited/nl/ Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (2107 of 2107 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hant/ Translated using Weblate (Dutch) Currently translated at 94.2% (1985 of 2107 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/nl/ Translated using Weblate (Spanish) Currently translated at 91.4% (1927 of 2107 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/es/ Translated using Weblate (English (United Kingdom)) Currently translated at 100.0% (2107 of 2107 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/en_GB/ Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (56 of 56 strings) Translation: Habitica/Faq Translate-URL: https://translate.habitica.com/projects/habitica/faq/zh_Hant/ Translated using Weblate (Dutch) Currently translated at 100.0% (56 of 56 strings) Translation: Habitica/Faq Translate-URL: https://translate.habitica.com/projects/habitica/faq/nl/ Translated using Weblate (English (United Kingdom)) Currently translated at 100.0% (56 of 56 strings) Translation: Habitica/Faq Translate-URL: https://translate.habitica.com/projects/habitica/faq/en_GB/ Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (696 of 696 strings) Translation: Habitica/Questscontent Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/ Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (124 of 124 strings) Translation: Habitica/Communityguidelines Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/zh_Hant/ Translated using Weblate (English (United Kingdom)) Currently translated at 100.0% (124 of 124 strings) Translation: Habitica/Communityguidelines Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/en_GB/ Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (211 of 211 strings) Translation: Habitica/Settings Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hant/ Translated using Weblate (English (United Kingdom)) Currently translated at 100.0% (211 of 211 strings) Translation: Habitica/Settings Translate-URL: https://translate.habitica.com/projects/habitica/settings/en_GB/ Translated using Weblate (Vietnamese) Currently translated at 85.5% (71 of 83 strings) Translation: Habitica/Achievements Translate-URL: https://translate.habitica.com/projects/habitica/achievements/vi/ Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (83 of 83 strings) Translation: Habitica/Achievements Translate-URL: https://translate.habitica.com/projects/habitica/achievements/zh_Hans/ Translated using Weblate (Japanese) Currently translated at 100.0% (172 of 172 strings) Translation: Habitica/Npc Translate-URL: https://translate.habitica.com/projects/habitica/npc/ja/ Translated using Weblate (Japanese) Currently translated at 100.0% (328 of 328 strings) Translation: Habitica/Front Translate-URL: https://translate.habitica.com/projects/habitica/front/ja/ Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (249 of 249 strings) Translation: Habitica/Subscriber Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hans/ Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (2107 of 2107 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/ Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (211 of 211 strings) Translation: Habitica/Settings Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hans/ Translated using Weblate (Chinese (Simplified)) Currently translated at 99.3% (2094 of 2107 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/ Translated using Weblate (French) Currently translated at 100.0% (249 of 249 strings) Translation: Habitica/Subscriber Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/fr/ Translated using Weblate (French) Currently translated at 100.0% (2107 of 2107 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/ Translated using Weblate (French) Currently translated at 100.0% (56 of 56 strings) Translation: Habitica/Faq Translate-URL: https://translate.habitica.com/projects/habitica/faq/fr/ Translated using Weblate (French) Currently translated at 100.0% (124 of 124 strings) Translation: Habitica/Communityguidelines Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/fr/ Translated using Weblate (Spanish) Currently translated at 99.7% (357 of 358 strings) Translation: Habitica/Content Translate-URL: https://translate.habitica.com/projects/habitica/content/es/ Translated using Weblate (French) Currently translated at 100.0% (211 of 211 strings) Translation: Habitica/Settings Translate-URL: https://translate.habitica.com/projects/habitica/settings/fr/ Translated using Weblate (Japanese) Currently translated at 100.0% (249 of 249 strings) Translation: Habitica/Subscriber Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ja/ Translated using Weblate (Japanese) Currently translated at 100.0% (28 of 28 strings) Translation: Habitica/Rebirth Translate-URL: https://translate.habitica.com/projects/habitica/rebirth/ja/ Translated using Weblate (Dutch) Currently translated at 94.1% (1983 of 2107 strings) Translation: Habitica/Gear Translate-URL: https://translate.habitica.com/projects/habitica/gear/nl/ Translated using Weblate (Dutch) Currently translated at 100.0% (56 of 56 strings) Translation: Habitica/Faq Translate-URL: https://translate.habitica.com/projects/habitica/faq/nl/ Translated using Weblate (Dutch) Currently translated at 100.0% (124 of 124 strings) Translation: Habitica/Communityguidelines Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/nl/ Translated using Weblate (Japanese) Currently translated at 100.0% (124 of 124 strings) Translation: Habitica/Communityguidelines Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/ja/ Translated using Weblate (Japanese) Currently translated at 100.0% (78 of 78 strings) Translation: Habitica/Contrib Translate-URL: https://translate.habitica.com/projects/habitica/contrib/ja/ Translated using Weblate (Dutch) Currently translated at 100.0% (83 of 83 strings) Translation: Habitica/Achievements Translate-URL: https://translate.habitica.com/projects/habitica/achievements/nl/ Translated using Weblate (Dutch) Currently translated at 100.0% (211 of 211 strings) Translation: Habitica/Settings Translate-URL: https://translate.habitica.com/projects/habitica/settings/nl/ Translated using Weblate (Japanese) Currently translated at 100.0% (492 of 492 strings) Translation: Habitica/Groups Translate-URL: https://translate.habitica.com/projects/habitica/groups/ja/ Translated using Weblate (Japanese) Currently translated at 100.0% (56 of 56 strings) Translation: Habitica/Faq Translate-URL: https://translate.habitica.com/projects/habitica/faq/ja/ Translated using Weblate (Japanese) Currently translated at 100.0% (124 of 124 strings) Translation: Habitica/Communityguidelines Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/ja/ Translated using Weblate (Japanese) Currently translated at 96.0% (508 of 529 strings) Translation: Habitica/Backgrounds Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ja/ Translated using Weblate (German) Currently translated at 100.0% (56 of 56 strings) Translation: Habitica/Faq Translate-URL: https://translate.habitica.com/projects/habitica/faq/de/ Translated using Weblate (German) Currently translated at 100.0% (124 of 124 strings) Translation: Habitica/Communityguidelines Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/de/ Translated using Weblate (German) Currently translated at 100.0% (211 of 211 strings) Translation: Habitica/Settings Translate-URL: https://translate.habitica.com/projects/habitica/settings/de/
357 lines
13 KiB
JavaScript
357 lines
13 KiB
JavaScript
import timesLodash from 'lodash/times';
|
|
import reduce from 'lodash/reduce';
|
|
import moment from 'moment';
|
|
import max from 'lodash/max';
|
|
import {
|
|
NotAuthorized,
|
|
} from '../libs/errors';
|
|
import i18n from '../i18n';
|
|
import updateStats from '../fns/updateStats';
|
|
import crit from '../fns/crit';
|
|
import statsComputed from '../libs/statsComputed';
|
|
import { checkOnboardingStatus } from '../libs/onboarding';
|
|
|
|
const MAX_TASK_VALUE = 21.27;
|
|
const MIN_TASK_VALUE = -47.27;
|
|
const CLOSE_ENOUGH = 0.00001;
|
|
|
|
function _getTaskValue (taskValue) {
|
|
if (taskValue < MIN_TASK_VALUE) {
|
|
return MIN_TASK_VALUE;
|
|
} if (taskValue > MAX_TASK_VALUE) {
|
|
return MAX_TASK_VALUE;
|
|
}
|
|
return taskValue;
|
|
}
|
|
|
|
// Calculates the next task.value based on direction
|
|
// Uses a capped inverse log y=.95^x, y>= -5
|
|
function _calculateDelta (task, direction, cron) {
|
|
// Min/max on task redness
|
|
const currVal = _getTaskValue(task.value);
|
|
let nextDelta = (0.9747 ** currVal) * (direction === 'down' ? -1 : 1);
|
|
|
|
// Checklists
|
|
if (task.checklist && task.checklist.length > 0) {
|
|
// If the Daily, only dock them a portion based on their checklist completion
|
|
if (direction === 'down' && task.type === 'daily' && cron) {
|
|
nextDelta *= 1 - reduce(
|
|
task.checklist,
|
|
(m, i) => m + (i.completed ? 1 : 0),
|
|
0,
|
|
) / task.checklist.length;
|
|
}
|
|
|
|
// If To Do, point-match the TD per checklist item completed
|
|
if (task.type === 'todo' && !cron) {
|
|
nextDelta *= 1 + reduce(task.checklist, (m, i) => m + (i.completed ? 1 : 0), 0);
|
|
}
|
|
}
|
|
|
|
return nextDelta;
|
|
}
|
|
|
|
// Approximates the reverse delta for the task value
|
|
// This is meant to return the task value to its original value when unchecking a task.
|
|
// First, calculate the value using the normal way for our first guess although
|
|
// it will be a bit off
|
|
function _calculateReverseDelta (task, direction) {
|
|
const currVal = _getTaskValue(task.value);
|
|
let testVal = currVal + (0.9747 ** currVal) * (direction === 'down' ? -1 : 1);
|
|
|
|
// Now keep moving closer to the original value until we get "close enough"
|
|
// Check how close we are to the original value by computing the delta off our guess
|
|
// and looking at the difference between that and our current value.
|
|
while (true) { // eslint-disable-line no-constant-condition
|
|
const calc = testVal + (0.9747 ** testVal);
|
|
const diff = currVal - calc;
|
|
|
|
if (Math.abs(diff) < CLOSE_ENOUGH) break;
|
|
|
|
if (diff > 0) {
|
|
testVal -= diff;
|
|
} else {
|
|
testVal += diff;
|
|
}
|
|
}
|
|
|
|
// When we get close enough, return the difference between our approximated value
|
|
// and the current value. This will be the delta calculated from the original value
|
|
// before the task was checked.
|
|
let nextDelta = testVal - currVal;
|
|
|
|
// Checklists - If To Do, point-match the TD per checklist item completed
|
|
if (task.checklist && task.checklist.length > 0 && task.type === 'todo') {
|
|
nextDelta *= 1 + reduce(task.checklist, (m, i) => m + (i.completed ? 1 : 0), 0);
|
|
}
|
|
|
|
return nextDelta;
|
|
}
|
|
|
|
function _gainMP (user, val) {
|
|
val *= user._tmp.crit || 1; // eslint-disable-line no-param-reassign
|
|
user.stats.mp += val;
|
|
|
|
if (user.stats.mp >= statsComputed(user).maxMP) user.stats.mp = statsComputed(user).maxMP;
|
|
if (user.stats.mp < 0) {
|
|
user.stats.mp = 0;
|
|
}
|
|
}
|
|
|
|
// HP modifier
|
|
// ===== CONSTITUTION =====
|
|
// TODO Decreases HP loss from bad habits / missed dailies by 0.5% per point.
|
|
function _subtractPoints (user, task, stats, delta) {
|
|
let conBonus = 1 - statsComputed(user).con / 250;
|
|
if (conBonus < 0.1) conBonus = 0.1;
|
|
|
|
const hpMod = delta * conBonus * task.priority * 2; // constant 2 multiplier for better results
|
|
stats.hp += Math.round(hpMod * 10) / 10; // round to 1dp
|
|
return stats.hp;
|
|
}
|
|
|
|
function _addPoints (user, task, stats, direction, delta) {
|
|
const _crit = user._tmp.crit || 1;
|
|
|
|
// Exp Modifier
|
|
// ===== Intelligence =====
|
|
// TODO Increases Experience gain by .2% per point.
|
|
const intBonus = 1 + statsComputed(user).int * 0.025;
|
|
stats.exp += Math.round(delta * intBonus * task.priority * _crit * 6);
|
|
|
|
// GP modifier
|
|
// ===== PERCEPTION =====
|
|
// TODO Increases Gold gained from tasks by .3% per point.
|
|
const perBonus = 1 + statsComputed(user).per * 0.02;
|
|
const gpMod = delta * task.priority * _crit * perBonus;
|
|
|
|
if (task.streak) {
|
|
const currStreak = direction === 'down' ? task.streak - 1 : task.streak;
|
|
const streakBonus = currStreak / 100 + 1; // eg, 1-day streak is 1.01, 2-day is 1.02, etc
|
|
const afterStreak = gpMod * streakBonus;
|
|
if (currStreak > 0 && gpMod > 0) {
|
|
// keep this on-hand for later, so we can notify streak-bonus
|
|
user._tmp.streakBonus = afterStreak - gpMod;
|
|
}
|
|
|
|
stats.gp += afterStreak;
|
|
} else {
|
|
stats.gp += gpMod;
|
|
}
|
|
}
|
|
|
|
function _changeTaskValue (user, task, direction, times, cron) {
|
|
let addToDelta = 0;
|
|
|
|
// ===== CRITICAL HITS =====
|
|
// allow critical hit only when checking off a task, not when unchecking it:
|
|
const _crit = direction === 'up' ? crit.crit(user) : 1;
|
|
// if there was a crit, alert the user via notification
|
|
if (_crit > 1) user._tmp.crit = _crit;
|
|
|
|
// If multiple days have passed, multiply times days missed
|
|
timesLodash(times, () => {
|
|
// Each iteration calculate the nextDelta, which is then accumulated in the total delta.
|
|
const nextDelta = !cron && direction === 'down' ? _calculateReverseDelta(task, direction) : _calculateDelta(task, direction, cron);
|
|
|
|
if (task.type !== 'reward') {
|
|
if (user.preferences.automaticAllocation === true && user.preferences.allocationMode === 'taskbased' && !(task.type === 'todo' && direction === 'down')) {
|
|
user.stats.training[task.attribute] += nextDelta;
|
|
}
|
|
|
|
if (direction === 'up') { // Make progress on quest based on STR
|
|
user.party.quest.progress.up = user.party.quest.progress.up || 0;
|
|
const prevProgress = user.party.quest.progress.up;
|
|
|
|
if (task.type === 'todo' || task.type === 'daily') {
|
|
user.party.quest.progress.up += nextDelta * _crit * (1 + statsComputed(user).str / 200);
|
|
} else if (task.type === 'habit') {
|
|
user.party.quest.progress.up += nextDelta * _crit * (0.5 + statsComputed(user).str / 400);
|
|
}
|
|
|
|
if (!user._tmp.quest) user._tmp.quest = {};
|
|
user._tmp.quest.progressDelta = user.party.quest.progress.up - prevProgress;
|
|
}
|
|
task.value += nextDelta;
|
|
}
|
|
|
|
addToDelta += nextDelta;
|
|
});
|
|
|
|
return addToDelta;
|
|
}
|
|
|
|
function _updateCounter (task, direction, times) {
|
|
if (direction === 'up') {
|
|
task.counterUp += times;
|
|
} else {
|
|
task.counterDown += times;
|
|
}
|
|
}
|
|
|
|
function _lastHistoryEntryWasToday (lastHistoryEntry, user) {
|
|
if (!lastHistoryEntry || !lastHistoryEntry.date) {
|
|
return false;
|
|
}
|
|
|
|
const { timezoneOffset } = user.preferences;
|
|
const { dayStart } = user.preferences;
|
|
|
|
// Adjust the last entry date according to the user's timezone and CDS
|
|
const dateWithTimeZone = moment(lastHistoryEntry.date).zone(timezoneOffset);
|
|
if (dateWithTimeZone.hour() < dayStart) dateWithTimeZone.subtract(1, 'day');
|
|
|
|
return moment().zone(timezoneOffset).isSame(dateWithTimeZone, 'day');
|
|
}
|
|
|
|
function _updateLastHistoryEntry (lastHistoryEntry, task, direction, times) {
|
|
lastHistoryEntry.value = task.value;
|
|
lastHistoryEntry.date = Number(new Date());
|
|
|
|
// @TODO remove this extra check after migration
|
|
// has run to set scoredUp and scoredDown in every task
|
|
lastHistoryEntry.scoredUp = lastHistoryEntry.scoredUp || 0;
|
|
lastHistoryEntry.scoredDown = lastHistoryEntry.scoredDown || 0;
|
|
|
|
if (direction === 'up') {
|
|
lastHistoryEntry.scoredUp += times;
|
|
} else {
|
|
lastHistoryEntry.scoredDown += times;
|
|
}
|
|
}
|
|
|
|
export default function scoreTask (options = {}, req = {}, analytics) {
|
|
const {
|
|
user, task, direction, times = 1, cron = false,
|
|
} = options;
|
|
let delta = 0;
|
|
const stats = {
|
|
gp: user.stats.gp,
|
|
hp: user.stats.hp,
|
|
exp: user.stats.exp,
|
|
};
|
|
|
|
if (
|
|
task.group && task.group.approval && task.group.approval.required
|
|
&& !task.group.approval.approved
|
|
) return 0;
|
|
|
|
// This is for setting one-time temporary flags,
|
|
// such as streakBonus or itemDropped. Useful for notifying
|
|
// the API consumer, then cleared afterwards
|
|
user._tmp = {};
|
|
|
|
// If they're trying to purchase a too-expensive reward, don't allow them to do that.
|
|
if (task.value > user.stats.gp && task.type === 'reward') throw new NotAuthorized(i18n.t('messageNotEnoughGold', req.language));
|
|
|
|
if (task.type === 'habit') {
|
|
delta += _changeTaskValue(user, task, direction, times, cron);
|
|
|
|
// Add habit value to habit-history (if different)
|
|
if (delta > 0) {
|
|
_addPoints(user, task, stats, direction, delta);
|
|
} else {
|
|
_subtractPoints(user, task, stats, delta);
|
|
}
|
|
_gainMP(user, max([0.25, 0.0025 * statsComputed(user).maxMP]) * (direction === 'down' ? -1 : 1));
|
|
|
|
// Save history entry for habit
|
|
task.history = task.history || [];
|
|
const historyLength = task.history.length;
|
|
const lastHistoryEntry = task.history[historyLength - 1];
|
|
|
|
if (_lastHistoryEntryWasToday(lastHistoryEntry, user)) {
|
|
_updateLastHistoryEntry(lastHistoryEntry, task, direction, times);
|
|
if (task.markModified) {
|
|
task.markModified(`history.${historyLength - 1}`);
|
|
}
|
|
} else {
|
|
task.history.push({
|
|
date: Number(new Date()),
|
|
value: task.value,
|
|
scoredUp: direction === 'up' ? 1 : 0,
|
|
scoredDown: direction === 'down' ? 1 : 0,
|
|
});
|
|
}
|
|
|
|
_updateCounter(task, direction, times);
|
|
} else if (task.type === 'daily') {
|
|
if (cron) {
|
|
delta += _changeTaskValue(user, task, direction, times, cron);
|
|
_subtractPoints(user, task, stats, delta);
|
|
if (!user.stats.buffs.streaks) task.streak = 0;
|
|
} else {
|
|
delta += _changeTaskValue(user, task, direction, times, cron);
|
|
if (direction === 'down') delta = _calculateDelta(task, direction, cron); // recalculate delta for unchecking so the gp and exp come out correctly
|
|
// obviously for delta>0, but also a trick to undo accidental checkboxes
|
|
_addPoints(user, task, stats, direction, delta);
|
|
_gainMP(user, max([1, 0.01 * statsComputed(user).maxMP]) * (direction === 'down' ? -1 : 1));
|
|
|
|
if (direction === 'up') {
|
|
task.streak += 1;
|
|
// Give a streak achievement when the streak is a multiple of 21
|
|
if (task.streak !== 0 && task.streak % 21 === 0) {
|
|
user.achievements.streak = user.achievements.streak ? user.achievements.streak + 1 : 1;
|
|
if (user.addNotification) user.addNotification('STREAK_ACHIEVEMENT');
|
|
}
|
|
task.completed = true;
|
|
|
|
// Save history entry for daily
|
|
task.history = task.history || [];
|
|
const historyEntry = {
|
|
date: Number(new Date()),
|
|
value: task.value,
|
|
};
|
|
task.history.push(historyEntry);
|
|
} else if (direction === 'down') {
|
|
// Remove a streak achievement if streak was a multiple of 21 and the daily was undone
|
|
if (task.streak !== 0 && task.streak % 21 === 0) {
|
|
user.achievements.streak = user.achievements.streak ? user.achievements.streak - 1 : 0;
|
|
}
|
|
task.streak -= 1;
|
|
task.completed = false;
|
|
|
|
// Delete history entry when daily unchecked
|
|
if (task.history || task.history.length > 0) {
|
|
task.history.splice(-1, 1);
|
|
}
|
|
}
|
|
}
|
|
} else if (task.type === 'todo') {
|
|
if (cron) { // don't touch stats on cron
|
|
delta += _changeTaskValue(user, task, direction, times, cron);
|
|
} else {
|
|
if (direction === 'up') {
|
|
task.dateCompleted = new Date();
|
|
task.completed = true;
|
|
} else if (direction === 'down') {
|
|
task.completed = false;
|
|
task.dateCompleted = undefined;
|
|
}
|
|
|
|
delta += _changeTaskValue(user, task, direction, times, cron);
|
|
if (direction === 'down') delta = _calculateDelta(task, direction, cron); // recalculate delta for unchecking so the gp and exp come out correctly
|
|
_addPoints(user, task, stats, direction, delta);
|
|
|
|
// MP++ per checklist item in ToDo, bonus per CLI
|
|
const multiplier = max([reduce(task.checklist, (m, i) => m + (i.completed ? 1 : 0), 1), 1]);
|
|
_gainMP(user, max([multiplier, 0.01 * statsComputed(user).maxMP * multiplier]) * (direction === 'down' ? -1 : 1));
|
|
}
|
|
} else if (task.type === 'reward') {
|
|
// Don't adjust values for rewards
|
|
delta += _changeTaskValue(user, task, direction, times, cron);
|
|
// purchase item
|
|
stats.gp -= task.value;
|
|
}
|
|
|
|
req.yesterDailyScored = task.yesterDailyScored;
|
|
updateStats(user, stats, req);
|
|
|
|
if (!user.achievements.completedTask && cron === false && direction === 'up' && user.addAchievement) {
|
|
user.addAchievement('completedTask');
|
|
checkOnboardingStatus(user, req, analytics);
|
|
}
|
|
|
|
return [delta];
|
|
}
|