Merge branch 'develop' into sabrecat/usernames-master

This commit is contained in:
Sabe Jones
2018-11-01 21:51:33 -05:00
38 changed files with 509 additions and 491 deletions

2
package-lock.json generated
View File

@@ -1,6 +1,6 @@
{
"name": "habitica",
"version": "4.68.0",
"version": "4.68.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View File

@@ -1,7 +1,7 @@
{
"name": "habitica",
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
"version": "4.68.0",
"version": "4.68.1",
"main": "./website/server/index.js",
"dependencies": {
"@slack/client": "^3.8.1",
@@ -68,7 +68,7 @@
"node-gcm": "^1.0.2",
"node-sass": "^4.9.0",
"nodemailer": "^4.6.4",
"ora": "^2.1.0",
"ora": "^3.0.0",
"pageres": "^4.1.1",
"passport": "^0.4.0",
"passport-facebook": "^2.0.0",

View File

@@ -203,7 +203,7 @@ describe('GET /groups', () => {
let page2 = await expect(user.get('/groups?type=publicGuilds&paginate=true&page=2'))
.to.eventually.have.a.lengthOf(1 + 4); // 1 created now, 4 by other tests
expect(page2[4].name).to.equal('guild with less members');
});
}).timeout(10000);
});
it('returns all the user\'s guilds when guilds passed in as query', async () => {

View File

@@ -4,7 +4,7 @@ require('babel-polyfill');
// Automatically setup SinonJS' sandbox for each test
beforeEach(() => {
global.sandbox = sinon.sandbox.create();
global.sandbox = sinon.createSandbox();
});
afterEach(() => {

View File

@@ -1,114 +1,120 @@
.achievement-costumeContest6x {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -1013px -819px;
background-position: -958px -455px;
width: 144px;
height: 156px;
}
.promo_alligator {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: 0px 0px;
background-position: -477px 0px;
width: 480px;
height: 360px;
}
.promo_animal_tails {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -1013px -208px;
background-position: -1325px -422px;
width: 141px;
height: 441px;
}
.promo_armoire_backgrounds_201810 {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: 0px -1157px;
background-position: 0px -1147px;
width: 423px;
height: 147px;
}
.promo_fall_avatar_customizations {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -1013px 0px;
background-position: -1325px -214px;
width: 336px;
height: 207px;
}
.promo_fall_festival_2017 {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -481px -453px;
background-position: 0px -936px;
width: 414px;
height: 210px;
}
.promo_fall_festival_2018 {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -367px -723px;
background-position: -1325px 0px;
width: 393px;
height: 213px;
}
.promo_forest_friends_bundle {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -424px -1009px;
background-position: -415px -936px;
width: 423px;
height: 147px;
}
.promo_ghost_potions {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -848px -1009px;
background-position: -839px -936px;
width: 423px;
height: 147px;
}
.promo_ios {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: 0px -361px;
background-position: 0px -365px;
width: 375px;
height: 361px;
}
.promo_jackolanterns {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: 0px -1009px;
background-position: -513px -727px;
width: 423px;
height: 147px;
}
.promo_mystery_201810 {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -1013px -650px;
background-position: -958px -286px;
width: 294px;
height: 168px;
}
.promo_seaserpent {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: 0px 0px;
width: 476px;
height: 364px;
}
.promo_seasonal_shop {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -1155px -503px;
background-position: -1467px -717px;
width: 162px;
height: 138px;
}
.promo_spooky_sparkles {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -1155px -208px;
background-position: -1467px -422px;
width: 140px;
height: 294px;
}
.promo_take_this {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -1158px -819px;
background-position: -1608px -422px;
width: 96px;
height: 69px;
}
.promo_veteran_pets {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -424px -1157px;
background-position: -1325px -864px;
width: 363px;
height: 141px;
}
.scene_nametag {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -481px -244px;
background-position: 0px -727px;
width: 512px;
height: 208px;
}
.scene_positivity {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -481px 0px;
background-position: -376px -365px;
width: 531px;
height: 243px;
}
.scene_tools {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: 0px -723px;
background-position: -958px 0px;
width: 366px;
height: 285px;
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 KiB

After

Width:  |  Height:  |  Size: 287 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 184 KiB

After

Width:  |  Height:  |  Size: 181 KiB

View File

@@ -2,8 +2,8 @@
// possible values are: normal, fall, habitoween, thanksgiving, winter, nye, birthday, valentines, spring, summer
// more to be added on future seasons
$npc_market_flavor: 'habitoween';
$npc_quests_flavor: 'habitoween';
$npc_seasonal_flavor: 'habitoween';
$npc_timetravelers_flavor: 'fall';
$npc_tavern_flavor: 'habitoween';
$npc_market_flavor: 'normal';
$npc_quests_flavor: 'normal';
$npc_seasonal_flavor: 'normal';
$npc_timetravelers_flavor: 'normal';
$npc_tavern_flavor: 'normal';

View File

@@ -207,7 +207,7 @@ import startQuestModal from '../../groups/startQuestModal';
import QuestInfo from '../../shops/quests/questInfo.vue';
import { mapState } from 'client/libs/store';
import createAnimal from 'client/libs/createAnimal';
import { createAnimal } from 'client/libs/createAnimal';
import notifications from 'client/mixins/notifications';
import DragDropDirective from 'client/directives/dragdrop.directive';

View File

@@ -1,5 +1,5 @@
<template lang="pug">
b-modal#hatching-modal(@change="resetHatchablePet($event)")
b-modal#hatching-modal()
div.content(v-if="hatchablePet")
div.potionEggGroup
div.potionEggBackground
@@ -73,12 +73,5 @@ export default {
}),
};
},
methods: {
resetHatchablePet ($event) {
if (!$event) {
this.hatchablePet = null;
}
},
},
};
</script>

View File

@@ -86,27 +86,13 @@
)
petItem(
:item="item",
:itemContentClass="getPetItemClass(item)",
:popoverPosition="'top'",
:progress="item.progress",
:emptyItem="!item.isOwned()",
:showPopover="currentDraggingFood == null",
:highlightBorder="highlightPet == item.key",
@click="petClicked(item)"
)
span(slot="popoverContent")
div.hatchablePopover(v-if="item.isHatchable()")
h4.popover-content-title {{ item.name }}
div.popover-content-text(v-html="$t('haveHatchablePet', { potion: item.potionName, egg: item.eggName })")
div.potionEggGroup
div.potionEggBackground
div(:class="'Pet_HatchingPotion_'+item.potionKey")
div.potionEggBackground
div(:class="'Pet_Egg_'+item.eggKey")
div(v-else)
h4.popover-content-title {{ item.name }}
template(slot="itemBadge", slot-scope="context")
starBadge(:selected="item.key === currentPet", :show="item.isOwned()", @click="selectPet(item)")
starBadge(:selected="item.key === currentPet", :show="isOwned('pet', item)", @click="selectPet(item)")
.btn.btn-flat.btn-show-more(@click="setShowMore(petGroup.key)", v-if='petGroup.key !== "specialPets"')
| {{ $_openedItemRows_isToggled(petGroup.key) ? $t('showLess') : $t('showMore') }}
@@ -126,10 +112,10 @@
.pet-group(v-for='item in group')
mountItem(
:item="item",
:itemContentClass="item.isOwned() ? ('Mount_Icon_' + item.key) : 'PixelPaw GreyedOut'",
:itemContentClass="isOwned('mount', item) ? ('Mount_Icon_' + item.key) : 'PixelPaw GreyedOut'",
:key="item.key",
:popoverPosition="'top'",
:emptyItem="!item.isOwned()",
:emptyItem="!isOwned('mount', item)",
:showPopover="true",
@click="selectMount(item)"
)
@@ -138,7 +124,7 @@
template(slot="itemBadge", slot-scope="context")
starBadge(
:selected="item.key === currentMount",
:show="item.isOwned()",
:show="isOwned('mount', item)",
@click="selectMount(item)",
)
@@ -335,7 +321,6 @@
import _each from 'lodash/each';
import _sortBy from 'lodash/sortBy';
import _filter from 'lodash/filter';
import _flatMap from 'lodash/flatMap';
import _throttle from 'lodash/throttle';
import groupBy from 'lodash/groupBy';
@@ -359,7 +344,7 @@
import DragDropDirective from 'client/directives/dragdrop.directive';
import MouseMoveDirective from 'client/directives/mouseposition.directive';
import createAnimal from 'client/libs/createAnimal';
import { createAnimal } from 'client/libs/createAnimal';
import svgInformation from 'assets/svg/information.svg';
@@ -368,6 +353,7 @@
import petMixin from 'client/mixins/petMixin';
import { CONSTANTS, setLocalSetting, getLocalSetting } from 'client/libs/userlocalManager';
import {isOwned} from '../../../libs/createAnimal';
// TODO Normalize special pets and mounts
// import Store from 'client/store';
@@ -583,10 +569,10 @@
potionKey,
name: this.content[`${type}Info`][specialKey].text(),
isOwned () {
return userItems[`${type}s`][this.key] > 0;
return isOwned(type, this, userItems);
},
mountOwned () {
return userItems.mounts[this.key] > 0;
return isOwned('mount', this, userItems);
},
isAllowedToFeed () {
return type === 'pet' && this.isOwned() && !this.mountOwned();
@@ -615,7 +601,6 @@
listAnimals (animalGroup, type, hideMissing, sort, searchText) {
let animals = this.getAnimalList(animalGroup, type);
let isPetList = type === 'pet';
let withProgress = isPetList && animalGroup.key !== 'specialPets';
// 1. Filter
if (hideMissing) {
@@ -652,18 +637,9 @@
}
}
let animalRows = withProgress ? _flatMap(animals, (a) => {
let progress = this.userItems[`${type}s`][a.key];
return {
...a,
progress,
};
}) : animals;
this.viewOptions[animalGroup.key].animalCount = animals.length;
return animalRows;
return animals;
},
countOwnedAnimals (animalGroup, type) {
let animals = this.getAnimalList(animalGroup, type);
@@ -710,21 +686,6 @@
return groupBy(mounts, groupKey);
},
getPetItemClass (pet) {
if (pet.isOwned()) {
return `Pet Pet-${pet.key} ${pet.eggKey}`;
}
if (pet.isHatchable()) {
return 'PixelPaw';
}
if (pet.mountOwned()) {
return `GreyedOut Pet Pet-${pet.key} ${pet.eggKey}`;
}
return 'GreyedOut PixelPaw';
},
hasDrawerTabItems (index) {
return this.drawerTabs && this.drawerTabs[index].items.length !== 0;
},
@@ -767,6 +728,9 @@
onDragLeave () {
this.highlightPet = '';
},
isOwned (type, pet) {
return isOwned(type, pet, this.userItems);
},
petClicked (pet) {
if (this.currentDraggingFood !== null) {
if (pet.isAllowedToFeed()) {

View File

@@ -2,11 +2,14 @@
div
.item-wrapper(@click="click()", :id="itemId")
.item.pet-slot(
:class="{'item-empty': emptyItem, 'highlight': highlightBorder}",
:class="{'item-empty': !isOwned(), 'highlight': highlightBorder}",
)
slot(name="itemBadge", :item="item")
span.item-content(:class="itemContentClass")
span.pet-progress-background(v-if="item.isAllowedToFeed() && progress > 0")
span.item-content.hatchAgain(v-if="mountOwned && isHatchable")
span.egg(:class="eggClass")
span.potion(:class="potionClass")
span.item-content(v-else, :class="getPetItemClass()")
span.pet-progress-background(v-if="isAllowedToFeed() && progress > 0")
div.pet-progress-bar(v-bind:style="{width: 100 * progress/50 + '%' }")
span.item-label(v-if="label") {{ label }}
@@ -15,7 +18,17 @@ div
:triggers="showPopover ? 'hover' : ''",
:placement="popoverPosition",
)
slot(name="popoverContent", :item="item")
div.hatchablePopover(v-if="item.isHatchable()")
h4.popover-content-title {{ item.name }}
div.popover-content-text(v-html="$t('haveHatchablePet', { potion: item.potionName, egg: item.eggName })")
div.potionEggGroup
div.potionEggBackground
div(:class="potionClass")
div.potionEggBackground
div(:class="eggClass")
div(v-else)
h4.popover-content-title {{ item.name }}
</template>
<style lang="scss">
@@ -32,30 +45,44 @@ div
height: 4px;
background-color: #24cc8f;
}
.hatchAgain {
display: inline-flex;
align-items: center;
width: 94px;
height: 94px;
.egg {
position: absolute;
left: 4px;
top: 14px;
z-index: 1;
transform: scale(1.2);
}
.potion {
position: absolute;
right: 4px;
top: 14px;
transform: scale(1.2);
}
}
</style>
<script>
import uuid from 'uuid';
import { mapState } from 'client/libs/store';
import {isAllowedToFeed, isHatchable, isOwned} from '../../../libs/createAnimal';
export default {
props: {
item: {
type: Object,
},
itemContentClass: {
type: String,
},
label: {
type: String,
},
progress: {
type: Number,
default: -1,
},
emptyItem: {
type: Boolean,
default: false,
},
highlightBorder: {
type: Boolean,
default: false,
@@ -78,6 +105,48 @@ div
click () {
this.$emit('click', {});
},
isOwned () {
return isOwned('pet', this.item, this.userItems);
},
isAllowedToFeed () {
return isAllowedToFeed(this.item, this.userItems);
},
getPetItemClass () {
if (this.isOwned() || this.mountOwned && this.isHatchable) {
return `Pet Pet-${this.item.key} ${this.item.eggKey}`;
}
if (this.isHatchable) {
return 'PixelPaw';
}
if (this.mountOwned) {
return `GreyedOut Pet Pet-${this.item.key} ${this.item.eggKey}`;
}
// Can't hatch
return 'GreyedOut PixelPaw';
},
},
computed: {
...mapState({
userItems: 'user.data.items',
}),
potionClass () {
return `Pet_HatchingPotion_${this.item.potionKey}`;
},
eggClass () {
return `Pet_Egg_${this.item.eggKey}`;
},
isHatchable () {
return isHatchable(this.item, this.userItems);
},
mountOwned () {
return isOwned('mount', this.item, this.userItems);
},
progress () {
return this.userItems.pets[this.item.key];
},
},
};
</script>

View File

@@ -62,6 +62,7 @@ export default {
]),
// list of email-only notifications
onlyEmailsIds: Object.freeze([
'kickedGroup',
'importantAnnouncements',
'weeklyRecaps',
'onboarding',

View File

@@ -7,13 +7,13 @@
.form
h2(v-once) {{ $t('filter') }}
.form-group
.form-check(
checkbox(
v-for="category in filterCategories",
:key="category.key",
:id="`category-${category.key}`",
:checked.sync="viewOptions[category.key].selected",
:text="category.value"
)
.custom-control.custom-checkbox
input.custom-control-input(type="checkbox", v-model="viewOptions[category.key].selected", :id="`category-${category.identifier}`")
label.custom-control-label(v-once, :for="`category-${category.identifier}`") {{ category.value }}
div.form-group.clearfix
h3.float-left(v-once) {{ $t('hidePinned') }}
@@ -290,6 +290,7 @@
import Item from 'client/components/inventory/item';
import CountBadge from 'client/components/ui/countBadge';
import ItemRows from 'client/components/ui/itemRows';
import Checkbox from 'client/components/ui/checkbox';
import toggleSwitch from 'client/components/ui/toggleSwitch';
import Avatar from 'client/components/avatar';
import buyMixin from 'client/mixins/buy';
@@ -326,6 +327,7 @@
CountBadge,
ItemRows,
toggleSwitch,
Checkbox,
Avatar,
},

View File

@@ -7,8 +7,21 @@ function getText (textOrFunction) {
}
}
export function isOwned (type, animal, userItems) {
return userItems[`${type}s`][animal.key] > 0;
}
export default function createAnimal (egg, potion, type, content, userItems) {
export function isHatchable (animal, userItems) {
return !isOwned('pet', animal, userItems) &&
userItems.eggs[animal.eggKey] &&
userItems.hatchingPotions[animal.potionKey];
}
export function isAllowedToFeed (animal, userItems) {
return isOwned('pet', animal, userItems) && !isOwned('mount', animal, userItems);
}
export function createAnimal (egg, potion, type, content, userItems) {
let animalKey = `${egg.key}-${potion.key}`;
return {
@@ -20,16 +33,16 @@ export default function createAnimal (egg, potion, type, content, userItems) {
potionName: getText(potion.text),
name: content[`${type}Info`][animalKey].text(),
isOwned () {
return userItems[`${type}s`][animalKey] > 0;
return isOwned(type, this, userItems);
},
mountOwned () {
return userItems.mounts[this.key] > 0;
return isOwned('mount', this, userItems);
},
isAllowedToFeed () {
return type === 'pet' && this.isOwned() && !this.mountOwned();
return isAllowedToFeed(this, userItems);
},
isHatchable () {
return !this.isOwned() & userItems.eggs[egg.key] > 0 && userItems.hatchingPotions[potion.key] > 0;
return isHatchable(this, userItems);
},
};
}

View File

@@ -1,4 +1,7 @@
import notifications from './notifications';
export default {
mixins: [notifications],
methods: {
closeHatchPetDialog () {
this.$root.$emit('bv::hide::modal', 'hatching-modal');

View File

@@ -25,7 +25,7 @@
"polarBearPup": "Полярно мече",
"jackolantern": "Тиквен фенер",
"ghostJackolantern": "Призрачен тиквен фенер",
"glowJackolantern": "Glow-in-the-Dark Jack-O-Lantern",
"glowJackolantern": "Светещ в тъмното тиквен фенер",
"seasonalShop": "Сезонен магазин",
"seasonalShopClosedTitle": "<%= linkStart %>Лесли<%= linkEnd %>",
"seasonalShopTitle": "<%= linkStart %>Сезонна Магьосница<%= linkEnd %>",

View File

@@ -13,32 +13,32 @@
"commGuideList02A": "<strong>Respektiert einander</strong>. Sei höflich, freundlich und hilfsbereit. Vergiss nicht: Habiticaner kommen aus den verschiedensten Hintergründen und haben sehr unterschiedliche Erfahrungen gemacht. Das macht Habitica so eigenartig! Es ist wichtig, das man beim Aufbauen einer Community seine Unterschiede und Ähnlichkeiten respektieren, aber natürlich auch feiern kann. Dies sind einfache Möglichkeiten einander zu respektieren:",
"commGuideList02B": "<strong>Halte Dich an die <a href='/static/terms' target='_blank'>allgemeinen Geschäftsbedingungen</a></strong>.",
"commGuideList02C": "<strong>Poste bitte keine Bilder oder Texte, die Gewalt darstellen, andere einschüchtern, oder eindeutig/indirekt sexuell sind, die Diskriminierung, Fanatismus, Rassismus, Sexismus, Hass, Belästigungen oder Hetze gegen jedwede Individuen oder Gruppen beinhalten.</strong> Auch nicht als Scherz. Das bezieht sowohl Sprüche als auch Stellungnahmen mit ein. Nicht jeder hat den gleichen Humor, etwas, was Du als Witz wahrnimmst, kann für jemand anderen verletzend sein. Greift eure täglichen Aufgaben an, nicht einander.",
"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.",
"commGuideList02D": "<strong>Halte die Diskussionen für alle Altersgruppen angemessen</strong>. Wir haben viele junge Habiticaner, die die Seite nutzen! Lasst uns keine Unschuldigen beflecken oder Habiticaner in ihren Zielen behindern.",
"commGuideList02E": "<strong>Vermeide vulgäre Ausdrücke. Dazu gehören auch mildere, religiöse Verwünschungen, die woanders akzeptiert werden</strong>. Unter uns sind Menschen aus allen religiösen und kulturellen Hintergründen und wir wünschen uns, dass sich Alle im öffentlichen Raum wohl fühlen. <strong>Wenn Dir ein Moderator oder Mitarbeiter mitteilt, dass ein bestimmter Ausdruck, der Dir selbst vielleicht nicht problematisch vorkommt, in Habitica nicht erlaubt ist, ist diese Entscheidung endgültig</strong>. Zusätzlich werden verbale Angriffe jeder Art strenge Konsequenzen haben, insbesondere auch, da sie unsere Nutzungsbedingungen verletzen.",
"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>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.",
"commGuideList02H": "<strong>Take time to reflect instead of responding in anger</strong> if someone tells you that something you said or did made them uncomfortable. There is great strength in being able to sincerely apologize to someone. If you feel that the way they responded to you was inappropriate, contact a mod rather than calling them out on it publicly.",
"commGuideList02H": "<strong>Denk zuerst gründlich nach bevor Du wütend reagierst</strong> wenn Dir jemand sagt, dass etwas was Du getan oder gesagt hast ihm/ihr nicht gefallen hat. Es zeigt große Stärke, sich ehrlich bei jemandem zu entschuldigen. Wenn Du findest, dass die Art, wie er/sie Dir geantwortet hat unangemessen war, kontaktiere einen Mod statt ihn/sie öffentlich damit zu konfrontieren.",
"commGuideList02I": "<strong>Divisive/contentious conversations should be reported to mods</strong> by flagging the messages involved or using the <a href='http://contact.habitica.com/' target='_blank'>Moderator Contact Form</a>. If you feel that a conversation is getting heated, overly emotional, or hurtful, cease to engage. Instead, report the posts to let us know about it. Moderators will respond as quickly as possible. It's our job to keep you safe. If you feel that more context is required, you can report the problem using the <a href='http://contact.habitica.com/' target='_blank'>Moderator Contact Form</a>.",
"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>Bitte vermeide große Überschriften in öffentlichen Chats, vor allem im Gasthaus.</strong> Ähnlich wie bei GROSSBUCHSTABEN liest sich der Text, als ob Du schreien würdest, und beeinträchtigt die gemütliche Atmosphäre.",
"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 if it is in a Party or private Guild, or 2) filling out the <a href='http://contact.habitica.com/' target='_blank'>Moderator Contact Form</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.",
"commGuideList02L": "<strong>Wir raten Dir dringend davon ab, persönliche Informationen - besonders solche, mit denen Du identifiziert werden könntest - in öffentlichen Chats zu teilen.</strong> Zu den identifizierenden Informationen gehören unter anderem: Deine Adresse, Deine E-Mail-Adresse und Dein API-Token/Passwort. Dies dient nur Deiner Sicherheit! Mitarbeiter oder Moderatoren werden solche Beiträge nach eigenem Ermessen entfernen. Wenn Du nach persönlichen Informationen in einer privaten Gilde, Gruppe oder per PN gefragt wirst, empfehlen wir dringend, dass Du höflich ablehnst und Mitarbeiter und Moderatoren informierst, indem Du entweder 1) den Beitrag über das Fähnchen meldest, wenn er in einer Gruppe oder privaten Gilde ist, oder 2) das <a href='http://contact.habitica.com/' target='_blank'>Moderator-Kontaktformular</a> ausfüllst und einen Screenshot anhängst.",
"commGuidePara019": "<strong>An privaten Orten</strong> haben Benutzer die Freiheit, alle möglichen Themen zu besprechen, solange diese nicht den AGB widersprechen. Dies umfasst das Posten von diskriminierenden, gewalttätigen oder einschüchternden Inhalten. Beachte, dass Wettbewerbsnamen im öffentlichen Profil des Gewinners angezeigt werden, daher müssen ALLE Wettbewerbsnamen den Community-Richtlinien für öffentliche Orte entsprechen, auch wenn sie an privaten Orten genutzt werden.",
"commGuidePara020": "<strong>Für private Nachrichten (PNs)</strong> gibt es einige zusätzliche Richtlinien. Falls Dich jemand geblockt hat, kontaktiere ihn nicht über andere Wege, um ihn oder sie zu bitten Dich nicht mehr zu blocken. Außerdem solltest Du keine PNs schicken, wenn Du Hilfe mit der Seite, also \"Support\" brauchst (allgemein zugängliche Antworten auf diese Fragen im Gasthaus oder Forum kommen der Gemeinschaft zugute). Schließlich schicke bitte keine PNs, in denen Du um Edelsteine oder ein Abonnement bettelst, da dies als Spam gewertet werden kann.",
"commGuidePara020A": "<strong>If you see a post that you believe is in violation of the public space guidelines outlined above, or if you see a post 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”). PMs cannot be flagged at this time, so if you need to report a PM, please contact the Mods via the form on the “Contact Us” page, which you can also access via the help menu by clicking “<a href='http://contact.habitica.com/' target='_blank'>Contact the Moderation Team</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": "Manche öffentliche Orte in Habitica haben außerdem noch weitere Regeln.",
"commGuideHeadingTavern": "Das Gasthaus",
"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…",
"commGuidePara022": "Das Gasthaus ist der Haupttreffpunkt der Habiticaner. Daniel der Gastwirt hält das Haus blitzblank und Lemoness zaubert Dir gerne eine Limonade herbei, während Du Dich setzt und mit den anderen unterhältst. Und denk dran...",
"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.",
"commGuidePara024": "<strong>Sprecht nicht über etwas suchterregendes im Gasthaus</strong>. Viele Menschen verwenden Habitica, um Ihre schlechten Gewohnheiten loszuwerden. Wenn sie andere Leute über suchterregende/illegale Substanzen reden hören, würde das dies deutlich erschweren! Respektiert eure Gasthauskameraden und berücksichtigt diesen Umstand. Dies gilt auch, aber nicht abschließend, für: Rauchen, Alkohol, Pornografie, Glückspiel und Drogen.",
"commGuidePara027": "<strong>When a moderator directs you to take a conversation elsewhere, if there is no relevant Guild, they may suggest you use the Back Corner</strong>. The Back Corner Guild is a free public space to discuss potentially sensitive subjects that should only be used when directed there by a moderator. It is carefully monitored by the moderation team. It is not a place for general discussions or conversations, and you will be directed there by a mod only when it is appropriate.",
"commGuideHeadingPublicGuilds": "Öffentliche Gilden",
"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.",
"commGuidePara029": "<strong>Öffentliche Gilden sind dem Gasthaus ziemlich ähnlich, außer dass die Gespräche dort nicht so allgemein sind, sondern sich um ein bestimmtes Thema drehen.</strong> Der öffentliche Gildenchat sollte sich auf dieses Thema konzentrieren. Zum Beispiel könnte es sein, dass Mitglieder der Wordsmith-Gilde genervt sind, wenn sich das Gespräch plötzlich um Gärtnern statt um Schreiben dreht, und eine Drachenliebhaber-Gilde interessiert sich wahrscheinlich nicht dafür, antike Runen zu entziffern. Manche Gilden sind dabei lockerer als andere, aber <strong>versuche generell beim Thema zu bleiben!</strong>",
"commGuidePara031": "Einige öffentliche Gilden werden sensible Themen wie Depressionen, Religion, Politik usw. enthalten. Dies ist in Ordnung, solange die Gespräche darin nicht gegen die Allgemeinen Geschäftsbedingungen oder die Regeln des öffentlichen Raums verstoßen und solange sie beim Thema bleiben.",
"commGuidePara033": "<strong>Öffentliche Gilden dürfen KEINE Inhalte \"ab 18\" enthalten. Wenn geplant ist, regelmäßig über sensible Inhalte zu diskutieren, sollte dies in der Gildenbeschreibung angegeben werden</strong>. Auf diese Weise soll Habitica sicher und angenehm für alle sein.",
"commGuidePara035": "<strong>If the Guild in question has different kinds of sensitive issues, it is respectful to your fellow Habiticans to place your comment behind a warning (ex. \"Warning: references self-harm\")</strong>. These may be characterized as trigger warnings and/or content notes, and Guilds may have their own rules in addition to those given here. If possible, please use <a href='http://habitica.wikia.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.",
"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 flag the posts and notify the moderators via the <a href='http://contact.habitica.com/' target='_blank'>Moderator Contact Form</a>.",
"commGuidePara037": "<strong>No Guilds, Public or Private, should be created for the purpose of attacking any group or individual</strong>. Creating such a Guild is grounds for an instant ban. Fight bad habits, not your fellow adventurers!",
"commGuidePara038": "<strong>All Tavern Challenges and Public Guild Challenges must comply with these rules as well</strong>.",
"commGuidePara037": "<strong>Es sollte niemals eine Gilde, egal ob öffentlich oder privat, gegründet werden, die als Ziel hat, ein Individuum oder eine Gruppe anzugreifen</strong>. So eine Gilde zu erstellen führt zu einer sofortigen Accountsperre. Bekämpfe schlechte Angewohnheiten, nicht Deine Mitabenteurer!",
"commGuidePara038": "<strong>Alle Gasthaus-Wettbewerbe und Wettbewerbe öffentlicher Gilden müssen sich ebenfalls an diese Regeln halten</strong>.",
"commGuideHeadingInfractionsEtc": "Regelverletzungen, Konsequenzen und Wiederherstellung",
"commGuideHeadingInfractions": "Regelverletzungen",
"commGuidePara050": "Zum größten Teil unterstützen sich Habiticaner gegenseitig, zeigen Respekt und geben ihr Bestes um die Community unterhaltsam und freundlich zu halten. Jedoch kann es immer wieder vorkommen, dass ein Habiticaner die obigen Richtlinien missachtet. Sollte das passieren, werden die Moderatoren Maßnahmen ergreifen, die sie für notwenig erachten, um Habitica sicher und komfortabel für alle zu halten.",
@@ -56,8 +56,8 @@
"commGuideHeadingModerateInfractions": "Mittlere Regelverletzungen",
"commGuidePara054": "Mäßige Verstöße machen unsere Community nicht unsicher, aber sie machen sie unangenehm. Diese Verstöße haben mäßige Konsequenzen. Mehrere mäßige Verstöße können jedoch zu ernsteren Konsequenzen führen.",
"commGuidePara055": "Die folgende Liste sind Beispiele für mittlere Regelverletzungen. Die Liste ist nicht vollständig.",
"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>).",
"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.\"",
"commGuideList06A": "Ignorieren, Nichtrespektieren oder Hinterfragen eines Moderators. Dies umfasst öffentliches Beklagen über Moderatoren oder andere Nutzer, öffentliche Glorifizierung oder Verteidigung gesperrter Nutzer, oder Debattieren ob eine Massnahme eines Moderators angemessen war oder nicht. Falls Bedenken bei einer oder mehrerer Regeln oder Moderatoren bestehen, sende bitte eine E-Mail an unsere Mitarbeiter (<a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a>).",
"commGuideList06B": "\"Besserwisser-Moderieren\" durch Nicht-Moderatoren. Um vorher etwas klarzustellen: ein freundliches Erwähnen der Regeln ist völlig in Ordnung. \"Besserwisser-Moderieren\" ist es, wenn man sagt, verlangt oder deutlich andeutet dass jemand eine bestimmte Handlung durchführen muss, um einen Fehler zu korrigieren. Du kannst jemandem Bescheid sagen, dass er/sie eine Regel verletzt hat, aber bitte verlange keine bestimmte Konsequenz - z. B. wäre es besser zu sagen \"Nur dass Du es weißt, Fluchen ist im Gasthaus nicht erlaubt, deshalb solltest Du das vielleicht besser löschen\" als \"Lösch jetzt diesen Kommentar\".",
"commGuideList06C": "Absichtliches Markieren harmloser Beiträge.",
"commGuideList06D": "Wiederholte Verletzung der Richtlinien für öffentliche Orte",
"commGuideList06E": "Wiederholte kleinere Vergehen ",
@@ -65,7 +65,7 @@
"commGuidePara056": "Leichte Regelverletzungen sollten zwar nicht passieren, haben aber nur leichte Konsequenzen. Wenn sie wiederholt auftreten, können sie mit der Zeit zu schwereren Konsequenzen führen.",
"commGuidePara057": "In folgender Liste sind Beispiele für leichte Regelverletzungen. Die Liste ist nicht vollständig.",
"commGuideList07A": "Erstmalige Verletzung von Richtlinien für öffentliche Orte",
"commGuideList07B": "Any statements or actions that trigger a \"Please Don't\". When a Mod has to say \"Please don't do this\" to a user, it can count as a very minor infraction for that user. An example might be \"Please don't keep arguing in favor of this feature idea after we've told you several times that it isn't feasible.\" In many cases, the Please Don't will be the minor consequence as well, but if Mods have to say \"Please Don't\" to the same user enough times, the triggering Minor Infractions will start to count as Moderate Infractions.",
"commGuideList07B": "Jegliche Aussagen oder Handlungen die ein \"Bitte nicht\" auslösen. Wenn ein Mod zu einem Nutzer \"Bitte mach' das nicht\" sagen muss, kann das für diesen Nutzer als eine sehr leichte Regelverletzung zählen. Ein Beispiel dafür wäre \"Mod Talk: Bitte argumentiere nicht weiter für ein Feature, wenn bereits festgestellt wurde, dass es nicht umsetzbar ist.\" In vielen Fällen wird das \"Bitte nicht\" auch gleichzeitig die leichte Konsequenz sein, aber wenn es die Mods zum gleichen Nutzer sehr häufig sagen müssen werden die leichten Regelverletzungen irgendwann als mittlere Regelverletzungen zählen.",
"commGuidePara057A": "Manche Beiträge werden eventuell versteckt, da sie persönliche Informationen enthalten oder einen falschen Eindruck erwecken. Normalerweise wird dies nicht als Verstoß gewertet, vor allem nicht beim ersten Mal.",
"commGuideHeadingConsequences": "Konsequenzen",
"commGuidePara058": "In Habitica hat - wie im echten Leben - jede Handlung eine Konsequenz: man wird fit weil man rennt, bekommt Löcher in den Zähnen weil man zu viel Zucker isst oder besteht eine Prüfung, weil man gelernt hat.",
@@ -75,14 +75,14 @@
"commGuideList08B": "was die Konsequenz ist",
"commGuideList08C": "was Du tun kannst, um es wiedergutzumachen und Deinen Status wiederherzustellen, falls möglich.",
"commGuidePara060A": "Wenn die Situation es erfordert, erhältst Du möglicherweise eine PN oder eine E-Mail sowie einen Beitrag in dem Forum, in dem die Verletzung stattgefunden hat. In manchen Fällen wirst Du möglicherweise überhaupt nicht öffentlich getadelt.",
"commGuidePara060B": "If your account is banned (a severe consequence), you will not be able to log into Habitica and will receive an error message upon attempting to log in. <strong>If you wish to apologize or make a plea for reinstatement, please email the staff at <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> with your UUID</strong> (which will be given in the error message). It is <strong>your</strong> responsibility to reach out if you desire reconsideration or reinstatement.",
"commGuidePara060B": "Wird Dein Konto gesperrt (eine schwere Strafe), kannst Du Dich nicht mehr in Habitica einloggen und erhältst eine Fehlermeldung bei dem Versuch. <strong>Möchtest Du Dich entschuldigen oder um eine Wiederaufnahme bitten, benachrichtige bitte unsere Mitarbeiter unter <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> mit deiner UUID</strong> (steht in der Fehlermeldung). Es liegt in <strong>Deiner</strong> Verantwortung Dich zu melden, wenn Du um eine nochmalige Prüfung oder eine Wiederaufnahme bitten möchtest.",
"commGuideHeadingSevereConsequences": "Beispiele für schwere Konsequenzen",
"commGuideList09A": "Kontosperren (siehe oben)",
"commGuideList09C": "Der Aufstieg in höhere Mitwirkendenstufen kann dauerhaft verwehrt (\"eingefroren\") werden",
"commGuideHeadingModerateConsequences": "Beispiele für mittlere Konsequenzen",
"commGuideList10A": "Beschränkte öffentliche und/oder private Chat-Berechtigungen",
"commGuideList10A1": "Führen deine Handlungen zur Aufhebung deiner Chatrechte, wird Dich ein Moderator oder Mitarbeiter per PM und/oder in dem Forum, in dem Du stummgeschaltet wurdest, über die Dauer und Gründe für das Stummschalten informieren. Nach Abauf dieser Zeit erhältst Du Deine Chatrechte zurück, vorausgesetzt Du stimmst zu, Dein Verhalten zu ändern und Dich fortan an die Community-Richtlinien zu halten.",
"commGuideList10C": "Restricted Guild/Challenge creation privileges",
"commGuideList10C": "Beschränkte Berechtigung, Gilden/Wettbewerbe zu gründen",
"commGuideList10D": "Der Aufstieg in höhere Mitwirkendenstufen kann temporär verwehrt (\"eingefroren\") werden",
"commGuideList10E": "Herabstufung von Mitwirkenden",
"commGuideList10F": "Nutzer auf \"Bewährung\" setzen",
@@ -93,9 +93,9 @@
"commGuideList11D": "Löschungen (Mods/Mitarbeiter können problematische Inhalte löschen)",
"commGuideList11E": "Bearbeitungen (Mods/Mitarbeiter können problematische Inhalte bearbeiten)",
"commGuideHeadingRestoration": "Wiederherstellung",
"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>.",
"commGuidePara061": "Habitica ist ein Land, das sich dem persönlichen Fortschritt verschrieben hat, und wir glauben hier an zweite Chancen. <strong>Wenn Du eine Regelverletzung begehst und eine Konsequenz erhältst, sieh es als eine Chance, Deine Handlungen zu überdenken und danach zu streben, ein besseres Mitglied der Gemeinschaft zu werden</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": "Wenn Du Deine Konsequenzen oder die Art Deiner Regelverletzung nicht verstehst, frage die Mitarbeiter/Moderatoren um Hilfe, sodass Du in Zukunft vermeiden kannst, Regelverletzungen zu begehen. Wenn Du einen bestimmten Entscheid als unfair empfindest, kannst Du dies mit unseren Mitarbeitern unter <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> diskutieren.",
"commGuideHeadingMeet": "Treffe die Mitarbeiter und die Moderatoren!",
"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": "Mitarbeiter haben violette Namensschilder, die mit einer Krone markiert sind. Ihr Titel ist \"Heroisch\".",
@@ -110,19 +110,19 @@
"commGuidePara011b": "auf GitHub/im Wiki",
"commGuidePara011c": "im Wiki",
"commGuidePara011d": "auf 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>).",
"commGuidePara012": "Falls es bei Deinem Kontakt mit einem Moderator zu Problemen gekommen oder Du Bedenken bei einem bestimmten Moderator hegst, sende bitte eine E-Mail an unsere Mitarbeiter (<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:",
"commGuidePara014": "Emeritierte Mitarbeiter und Moderatoren:",
"commGuideHeadingFinal": "Der letzte Absatz",
"commGuidePara067": "So there you have it, brave Habitican -- the Community Guidelines! Wipe that sweat off of your brow and give yourself some XP for reading it all. If you have any questions or concerns about these Community Guidelines, please reach out to us via the <a href='http://contact.habitica.com/' target='_blank'>Moderator Contact Form</a> and we will be happy to help clarify things.",
"commGuidePara068": "Nun voran, mutiger Abenteurer und besiege einige tägliche Aufgaben!",
"commGuideHeadingLinks": "Nützliche Links",
"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!",
"commGuideLink01": "<a href='/groups/guild/5481ccf3-5d2d-48a9-a871-70a7380cee5a' target='_blank'>Habitica Help: Stell eine Frage</a>: eine Gilde für Benutzer, die Fragen haben!",
"commGuideLink02": "<a href='http://habitica.wikia.com/wiki/Habitica_Wiki' target='_blank'>Das Wiki</a>: Die größte Informationssammlung über Habitica.",
"commGuideLink03": "<a href='https://github.com/HabitRPG/habitica' target='_blank'>GitHub</a>: für Fehlermeldungen oder für das Mithelfen beim Programmieren.",
"commGuideLink04": "<a href='https://trello.com/b/EpoYEYod/' target='_blank'>The Main Trello</a>: for site feature requests.",
"commGuideLink05": "<a href='https://trello.com/b/mXK3Eavg/' target='_blank'>The Mobile Trello</a>: for mobile feature requests.",
"commGuideLink06": "<a href='https://trello.com/b/vwuE9fbO/' target='_blank'>The Art Trello</a>: for submitting pixel art.",
"commGuideLink07": "<a href='https://trello.com/b/nnv4QIRX/' target='_blank'>The Quest Trello</a>: for submitting quest writing.",
"commGuideLink04": "<a href='https://trello.com/b/EpoYEYod/' target='_blank'>Der Haupt-Trello</a>: für Vorschläge neuer Funktionen der Webseite.",
"commGuideLink05": "<a href='https://trello.com/b/mXK3Eavg/' target='_blank'>Der Mobile-Trello</a>: für Vorschläge neuer Funktionen der Apps.",
"commGuideLink06": "<a href='https://trello.com/b/vwuE9fbO/' target='_blank'>Der Kunst-Trello</a>: um Pixel-Kunst einzureichen.",
"commGuideLink07": "<a href='https://trello.com/b/nnv4QIRX/' target='_blank'>Der Quest-Trello</a>: reiche Deine Quest-Entwürfe ein.",
"commGuidePara069": "Die folgenden talentierten Künstler haben bei diesen Illustrationen mitgewirkt:"
}

View File

@@ -192,7 +192,7 @@
"backgroundMountainPyramidText": "Mountain Pyramid",
"backgroundMountainPyramidNotes": "Climb th' many steps of a Mountain Pyramid.",
"backgroundStormyShipText": "Stormy Ship",
"backgroundStormyShipNotes": "Hold steady 'gainst wind and wave aboard a Stormy Ship.",
"backgroundStormyShipNotes": "Hold steady 'gainst wind 'n wave aboard a Stormy Ship.",
"backgrounds092016": "SET 28: Released September 2016",
"backgroundCornfieldsText": "Cornfields",
"backgroundCornfieldsNotes": "Enjoy a beautiful day out in th' Cornfields.",
@@ -284,108 +284,108 @@
"backgroundMidnightLakeText": "Midnight Lake",
"backgroundMidnightLakeNotes": "Rest by a Midnight Lake.",
"backgrounds082017": "SET 39: Released August 2017",
"backgroundBackOfGiantBeastText": "Back of a Giant Beast",
"backgroundBackOfGiantBeastNotes": "Ride on the Back of a Giant Beast.",
"backgroundBackOfGiantBeastText": "Back o' a Giant Beast",
"backgroundBackOfGiantBeastNotes": "Sail on th' Back o' a Giant Beast.",
"backgroundDesertDunesText": "Desert Dunes",
"backgroundDesertDunesNotes": "Boldly explore the Desert Dunes.",
"backgroundSummerFireworksText": "Summer Fireworks",
"backgroundSummerFireworksNotes": "Celebrate Habitica's Naming Day with Summer Fireworks!",
"backgroundDesertDunesNotes": "Boldly explore th' Desert Dunes.",
"backgroundSummerFireworksText": "Summ'r Fireworks",
"backgroundSummerFireworksNotes": "Celebrate Habitica's Namin' Day wit' Summ'r Fireworks!",
"backgrounds092017": "SET 40: Released September 2017",
"backgroundBesideWellText": "Beside a Well",
"backgroundBesideWellNotes": "Stroll Beside a Well.",
"backgroundGardenShedText": "Garden Shed",
"backgroundGardenShedNotes": "Work in a Garden Shed.",
"backgroundBesideWellText": "B'side a Well",
"backgroundBesideWellNotes": "Stroll B'side a Well.",
"backgroundGardenShedText": "Garden Storeroom",
"backgroundGardenShedNotes": "Work 'n a Garden Storeroom.",
"backgroundPixelistsWorkshopText": "Pixelist's Workshop",
"backgroundPixelistsWorkshopNotes": "Create masterpieces in the Pixelist's Workshop.",
"backgroundPixelistsWorkshopNotes": "Create mas'rpieces 'n the Pixelist's Workshop.",
"backgrounds102017": "SET 41: Released October 2017",
"backgroundMagicalCandlesText": "Magical Candles",
"backgroundMagicalCandlesNotes": "Bask in the glow of Magical Candles.",
"backgroundMagicalCandlesNotes": "Bask 'n th' glow o' Magical Candles.",
"backgroundSpookyHotelText": "Spooky Hotel",
"backgroundSpookyHotelNotes": "Sneak down the hall of a Spooky Hotel.",
"backgroundSpookyHotelNotes": "Sneak down th' hall o' a Spooky Hotel.",
"backgroundTarPitsText": "Tar Pits",
"backgroundTarPitsNotes": "Tiptoe through the Tar Pits.",
"backgroundTarPitsNotes": "Tiptoe through th' Tar Pits.",
"backgrounds112017": "SET 42: Released November 2017",
"backgroundFiberArtsRoomText": "Fiber Arts Room",
"backgroundFiberArtsRoomNotes": "Spin thread in a Fiber Arts Room.",
"backgroundFiberArtsRoomText": "Fiber Arts Cabin",
"backgroundFiberArtsRoomNotes": "Spin thread 'n a Fibert Arts Cabin.",
"backgroundMidnightCastleText": "Midnight Castle",
"backgroundMidnightCastleNotes": "Stroll by the Midnight Castle.",
"backgroundTornadoText": "Tornado",
"backgroundTornadoNotes": "Fly through a Tornado.",
"backgroundMidnightCastleNotes": "Stroll by th' Midnight Castle.",
"backgroundTornadoText": "Waterspout",
"backgroundTornadoNotes": "Fly through a Waterspout.",
"backgrounds122017": "SET 43: Released December 2017",
"backgroundCrosscountrySkiTrailText": "Cross-Country Ski Trail",
"backgroundCrosscountrySkiTrailNotes": "Glide along a Cross-Country Ski Trail.",
"backgroundStarryWinterNightText": "Starry Winter Night",
"backgroundStarryWinterNightNotes": "Admire a Starry Winter Night.",
"backgroundStarryWinterNightText": "Starry Wint'r Night",
"backgroundStarryWinterNightNotes": "Admire a Starry Wint'r Night.",
"backgroundToymakersWorkshopText": "Toymaker's Workshop",
"backgroundToymakersWorkshopNotes": "Bask in the wonder of a Toymaker's Workshop.",
"backgroundToymakersWorkshopNotes": "Bask in the wond'r o' a Toymaker's Workshop.",
"backgrounds012018": "SET 44: Released January 2018",
"backgroundAuroraText": "Aurora",
"backgroundAuroraNotes": "Bask in the wintry glow of an Aurora.",
"backgroundAuroraNotes": "Bask 'n th' wintry glow o' an Aurora.",
"backgroundDrivingASleighText": "Sleigh",
"backgroundDrivingASleighNotes": "Drive a Sleigh over snow-covered fields.",
"backgroundDrivingASleighNotes": "Sail a Sleigh o'er snow-covered fields.",
"backgroundFlyingOverIcySteppesText": "Icy Steppes",
"backgroundFlyingOverIcySteppesNotes": "Fly over Icy Steppes.",
"backgroundFlyingOverIcySteppesNotes": "Fly o'er Icy Steppes.",
"backgrounds022018": "SET 45: Released February 2018",
"backgroundChessboardLandText": "Chessboard Land",
"backgroundChessboardLandNotes": "Play a game in Chessboard Land.",
"backgroundChessboardLandNotes": "Play a game 'n Chessboard Land.",
"backgroundMagicalMuseumText": "Magical Museum",
"backgroundMagicalMuseumNotes": "Tour a Magical Museum.",
"backgroundMagicalMuseumNotes": "Explore a Magical Museum.",
"backgroundRoseGardenText": "Rose Garden",
"backgroundRoseGardenNotes": "Dally in a fragrant Rose Garden.",
"backgroundRoseGardenNotes": "Dally 'n a smelly Rose Garden",
"backgrounds032018": "SET 46: Released March 2018",
"backgroundGorgeousGreenhouseText": "Gorgeous Greenhouse",
"backgroundGorgeousGreenhouseNotes": "Walk among the flora kept in a Gorgeous Greenhouse.",
"backgroundElegantBalconyText": "Elegant Balcony",
"backgroundElegantBalconyNotes": "Look out over the landscape from an Elegant Balcony.",
"backgroundDrivingACoachText": "Driving a Coach",
"backgroundDrivingACoachNotes": "Enjoy Driving a Coach past fields of flowers.",
"backgroundGorgeousGreenhouseNotes": "Walk among th' flora stored 'n a Gorgeous Greenhouse.",
"backgroundElegantBalconyText": "Fancy Balcony",
"backgroundElegantBalconyNotes": "Look out o'er the landscape from a Fancy Balcony.",
"backgroundDrivingACoachText": "Sailing a Coach",
"backgroundDrivingACoachNotes": "Enjoy Sailing a Coach past fields o' flow'rs.",
"backgrounds042018": "SET 47: Released April 2018",
"backgroundTulipGardenText": "Tulip Garden",
"backgroundTulipGardenNotes": "Tiptoe through a Tulip Garden.",
"backgroundFlyingOverWildflowerFieldText": "Field of Wildflowers",
"backgroundFlyingOverWildflowerFieldNotes": "Soar above a Field of Wildflowers.",
"backgroundFlyingOverWildflowerFieldText": "Field o' Wildflowers",
"backgroundFlyingOverWildflowerFieldNotes": "Soar above a Field o' Wildflowers",
"backgroundFlyingOverAncientForestText": "Ancient Forest",
"backgroundFlyingOverAncientForestNotes": "Fly over the canopy of an Ancient Forest.",
"backgroundFlyingOverAncientForestNotes": "Fly o'er the canopy o' an Ancient Forest.",
"backgrounds052018": "SET 48: Released May 2018",
"backgroundTerracedRiceFieldText": "Terraced Rice Field",
"backgroundTerracedRiceFieldNotes": "Enjoy a Terraced Rice Field in the growing season.",
"backgroundFantasticalShoeStoreText": "Fantastical Shoe Store",
"backgroundFantasticalShoeStoreNotes": "Look for fun new footwear in the Fantastical Shoe Store.",
"backgroundTerracedRiceFieldNotes": "Enjoy a Terraced Rice Field 'n the growin' season.",
"backgroundFantasticalShoeStoreText": "Fantastical Boot Store",
"backgroundFantasticalShoeStoreNotes": "Look fer fun new footwear 'n th' Fantastical Boot Store.",
"backgroundChampionsColosseumText": "Champions' Colosseum",
"backgroundChampionsColosseumNotes": "Bask in the glory of the Champions' Colosseum.",
"backgroundChampionsColosseumNotes": "Bask 'n th' glory o' th' Champions' Colosseum.",
"backgrounds062018": "SET 49: Released June 2018",
"backgroundDocksText": "Docks",
"backgroundDocksNotes": "Fish from atop the Docks.",
"backgroundDocksNotes": "Fish from atop th' Docks.",
"backgroundRowboatText": "Rowboat",
"backgroundRowboatNotes": "Sing rounds in a Rowboat.",
"backgroundRowboatNotes": "Sing rounds 'n a Rowboat.",
"backgroundPirateFlagText": "Pirate Flag",
"backgroundPirateFlagNotes": "Fly a fearsome Pirate Flag.",
"backgrounds072018": "SET 50: Released July 2018",
"backgroundDarkDeepText": "Dark Deep",
"backgroundDarkDeepNotes": "Swim in the Dark Deep among bioluminescent critters.",
"backgroundDilatoryCityText": "City of Dilatory",
"backgroundDilatoryCityNotes": "Meander through the undersea City of Dilatory.",
"backgroundDarkDeepNotes": "Swim 'n th' Dark Deep among glowy critters.",
"backgroundDilatoryCityText": "City o' Dilatory",
"backgroundDilatoryCityNotes": "Meander through th' undersea City o' Dilatory.",
"backgroundTidePoolText": "Tide Pool",
"backgroundTidePoolNotes": "Observe the ocean life near a Tide Pool.",
"backgroundTidePoolNotes": "Spy on th' ocean life near a Tide Pool.",
"backgrounds082018": "SET 51: Released August 2018",
"backgroundTrainingGroundsText": "Training Grounds",
"backgroundTrainingGroundsNotes": "Spar on the Training Grounds.",
"backgroundTrainingGroundsText": "Trainin' Grounds",
"backgroundTrainingGroundsNotes": "Spar on th' Trainin' Grounds.",
"backgroundFlyingOverRockyCanyonText": "Rocky Canyon",
"backgroundFlyingOverRockyCanyonNotes": "Look down into a breathtaking scene as you fly over a Rocky Canyon.",
"backgroundFlyingOverRockyCanyonNotes": "Look below into a breathtakin' scene as ye fly o'er a Rocky Canyon.",
"backgroundBridgeText": "Bridge",
"backgroundBridgeNotes": "Cross a charming Bridge.",
"backgroundBridgeNotes": "Cross a charmin' Bridge.",
"backgrounds092018": "SET 52: Released September 2018",
"backgroundApplePickingText": "Apple Picking",
"backgroundApplePickingNotes": "Go Apple Picking and bring home a bushel.",
"backgroundApplePickingText": "Apple Pickin'",
"backgroundApplePickingNotes": "Go Apple Pickin' and plunder a bushel.",
"backgroundGiantBookText": "Giant Book",
"backgroundGiantBookNotes": "Read as you walk through the pages of a Giant Book.",
"backgroundGiantBookNotes": "Read as ye walk through th' pages o' a Giant Book.",
"backgroundCozyBarnText": "Cozy Barn",
"backgroundCozyBarnNotes": "Relax with your pets and mounts in their Cozy Barn.",
"backgroundCozyBarnNotes": "Relax with yer pets and mounts in their Cozy Barn.",
"backgrounds102018": "SET 53: Released October 2018",
"backgroundBayouText": "Bayou",
"backgroundBayouNotes": "Bask in the fireflies' glow on the misty Bayou.",
"backgroundBayouNotes": "Bask 'n th' fireflies' glow on th' misty Bayou.",
"backgroundCreepyCastleText": "Creepy Castle",
"backgroundCreepyCastleNotes": "Dare to approach a Creepy Castle.",
"backgroundDungeonText": "Dungeon",
"backgroundDungeonNotes": "Rescue the prisoners of a spooky Dungeon."
"backgroundCreepyCastleNotes": "Dare t' approach a Creepy Castle.",
"backgroundDungeonText": "Brig",
"backgroundDungeonNotes": "Rescue th' prison'rs o' a spooky Brig."
}

View File

@@ -25,7 +25,7 @@
"polarBearPup": "シロクマの子",
"jackolantern": "ジャック・オ・ランタン",
"ghostJackolantern": "ジャック・オ・ランタンのお化け",
"glowJackolantern": "Glow-in-the-Dark Jack-O-Lantern",
"glowJackolantern": "暗闇で輝くジャック・オ・ランタン",
"seasonalShop": "季節の店",
"seasonalShopClosedTitle": "<%= linkStart %>Leslie<%= linkEnd %>",
"seasonalShopTitle": "<%= linkStart %>季節の魔女<%= linkEnd %>",

View File

@@ -25,7 +25,7 @@
"polarBearPup": "Urso Polar Filhote",
"jackolantern": "Jack da Lanterna",
"ghostJackolantern": "Fantasma Jack da Lanterna",
"glowJackolantern": "Glow-in-the-Dark Jack-O-Lantern",
"glowJackolantern": "Brilha-no-Escuro Jack da Lanterna",
"seasonalShop": "Loja Sazonal",
"seasonalShopClosedTitle": "<%= linkStart %>Leslie<%= linkEnd %>",
"seasonalShopTitle": "<%= linkStart %>Feiticeira Sazonal<%= linkEnd %>",

View File

@@ -558,7 +558,7 @@
"armorSpecialWinter2017HealerNotes": "Хотя и мягкая, эта броня лепестков имеет фантастические защитные силы. Увеличивает телосложение на <%= con %>. Ограниченный выпуск зимы 2016-2017.",
"armorSpecialSpring2017RogueText": "Костюм Крадущегося Кролика",
"armorSpecialSpring2017RogueNotes": "Мягкий, но сильный, этот костюм поможет вам перемещаться по огородам с особой неуловимостью. Увеличивает восприятие на <%= per %>. Ограниченный выпуск весны 2017.",
"armorSpecialSpring2017WarriorText": "Трогательная броня",
"armorSpecialSpring2017WarriorText": "Лапатрясный доспех",
"armorSpecialSpring2017WarriorNotes": "Этот причудливый доспех столь же блестящ, сколь и изысканен, но обладает дополнительным сопротивлением атакам. Увеличивает Телосложение на <%= con %>. Ограниченный выпуск весны 2017.",
"armorSpecialSpring2017MageText": "Мантия заклинателя собак",
"armorSpecialSpring2017MageNotes": "Волшебная по дизайну, пушистая по выбору. Увеличивает Интеллект на <%= int %>. Ограниченный выпуск весны 2017.",

View File

@@ -25,7 +25,7 @@
"polarBearPup": "Детеныш белого медведя",
"jackolantern": "Светильник Джека",
"ghostJackolantern": "Призрачный Cветильник Джека",
"glowJackolantern": "Glow-in-the-Dark Jack-O-Lantern",
"glowJackolantern": "Светящийся-ночью Cветильник Джека",
"seasonalShop": "Сезонная лавка",
"seasonalShopClosedTitle": "<%= linkStart %>Лесли<%= linkEnd %>",
"seasonalShopTitle": "<%= linkStart %>Сезонная Чародейка<%= linkEnd %>",

View File

@@ -5,7 +5,7 @@
"sureDeleteCompletedTodos": "Вы уверены, что вы хотите удалить завершённые задачи?",
"lotOfToDos": "Здесь показывается 30 ваших последних завершенных задач. Вы можете посмотреть более старые выполненные задачи, выбрав в меню Данные > Анализ данных или Данные > Экспорт данных > Пользовательские данные.",
"deleteToDosExplanation": "Если вы нажмёте эту кнопку, все ваши завершённые задачи и находящиеся в архиве задачи будут удалены навсегда; за исключением задач из активных испытаний и групп с подпиской. Экспортируйте их прежде, чем нажимать на кнопку, если хотите их сохранить.",
"addMultipleTip": "<strong>Подсказка:</strong> Чтобы добавить сразу некоторое количество<%= taskType %>, отделите их между собой отступом, использовав комбинацию клавиш (Shift + Enter) и сохраните результат вводом \"Enter.\"",
"addMultipleTip": "<strong>Подсказка:</strong> Чтобы добавить сразу несколько <%= taskType %>, отделите их между собой отступом, используя комбинацию клавиш (Shift + Enter) и сохраните результат нажав \"Enter\".",
"addsingle": "Добавить одно",
"addATask": "Добавить: <%= type %>",
"editATask": "Изменить <%= type %>",
@@ -49,7 +49,7 @@
"attributeAllocation": "Распределение характеристик",
"attributeAllocationHelp": "Распределение характеристик - это опция, предоставляющая методы стране Habitica автоматически назначать заработанные очки характеристикам сразу после повышения уровня.<br/><br/>Вы можете настроить метод автоматического распределения на основе заданий в разделе \"Характеристики\" в вашем профиле.",
"progress": "Прогресс",
"daily": "Ежедневно",
"daily": "Ежедневное дело",
"dailies": "Ежедневные дела",
"newDaily": "Новое ежедневное задание",
"newDailyBulk": "Новые ежедневные задания (по одному на строку)",

View File

@@ -208,6 +208,6 @@
"yesterDailiesDescription": "應用這項設定Habitica將會在對你的人物造成傷害前向你確認是否真的沒有完成這個每日任務。這個設定可以保護你免於因不小心而造成的傷害。",
"repeatDayError": "請確定你每週至少有選擇一天",
"searchTasks": "搜尋標題和說明…",
"sessionOutdated": "Your session is outdated. Please refresh or sync.",
"errorTemporaryItem": "This item is temporary and cannot be pinned."
"sessionOutdated": "你的 session 已過期。請重整或同步。",
"errorTemporaryItem": "這個項目是暫存的不能被釘選。"
}

View File

@@ -3,7 +3,7 @@ import defaults from 'lodash/defaults';
import each from 'lodash/each';
import t from './translation';
const CURRENT_SEASON = 'October';
const CURRENT_SEASON = '_NONE_';
let drops = {
Base: {

View File

@@ -8,12 +8,12 @@ const featuredItems = {
path: 'armoire',
},
{
type: 'premiumHatchingPotion',
path: 'premiumHatchingPotions.Ghost',
type: 'hatchingPotions',
path: 'hatchingPotions.Shade',
},
{
type: 'premiumHatchingPotion',
path: 'premiumHatchingPotions.Glow',
type: 'eggs',
path: 'eggs.Wolf',
},
{
type: 'card',

View File

@@ -1,25 +1,19 @@
import { SEASONAL_SETS } from '../content/constants';
// import { SEASONAL_SETS } from '../content/constants';
module.exports = {
opened: true,
opened: false,
currentSeason: 'Fall',
currentSeason: 'Closed',
dateRange: { start: '2018-09-20', end: '2018-10-31' },
availableSets: [
...SEASONAL_SETS.fall,
],
pinnedSets: {
wizard: 'fall2018CandymancerMageSet',
warrior: 'fall2018MinotaurWarriorSet',
rogue: 'fall2018AlterEgoSet',
healer: 'fall2018CarnivorousPlantSet',
},
availableSpells: [
'spookySparkles',
],
availableQuests: [

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 794 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

View File

@@ -3,7 +3,7 @@ import { authWithHeaders } from '../../middlewares/auth';
let api = {};
// @TODO export this const, cannot export it from here because only routes are exported from controllers
const LAST_ANNOUNCEMENT_TITLE = 'HABITOWEEN! PLUS LAST CHANCE FOR FALL FESTIVAL AND OCTOBER SUBSCRIBER ITEMS';
const LAST_ANNOUNCEMENT_TITLE = 'NOVEMBER 2018 RESOLUTION SUCCESS CHALLENGE AND NEW TAKE THIS CHALLENGE';
const worldDmg = { // @TODO
bailey: false,
};
@@ -30,26 +30,17 @@ api.getNews = {
<div class="mr-3 ${baileyClass}"></div>
<div class="media-body">
<h1 class="align-self-center">${res.t('newStuff')}</h1>
<h2>10/30/2018 - ${LAST_ANNOUNCEMENT_TITLE}</h2>
<h2>11/2/2018 - ${LAST_ANNOUNCEMENT_TITLE}</h2>
</div>
</div>
<hr/>
<h3>Happy Habitoween!</h3>
<p>It's the last day of the Fall Festival, and all the NPCs are looking monstrous. Plus, we have lots of fun things in store...</p>
<h3>Jack O' Lantern Pets and Mounts</h3>
<p>The Flourishing Fields are full of cute carved pumpkins - and it looks like one has <a href='/inventory/stable' target='_blank'>followed you home</a>! What kind of pumpkin? It all depends on how many Habitoweens you've celebrated with us. Each Habitoween, you'll get a new and exciting pumpkin variety!</p>
<div class="small mb-3">by Lemoness and Beffymaroo</div>
<div class="promo_jackolanterns center-block"></div>
<h3>Candy for Everyone!</h3>
<p>It's a feast for your pets and mounts! In honor of the end of the Fall Festival, we've given everyone an assortment of candy. You can feed it to your pets in the <a href='/inventory/stable' target='_blank'>Stable</a>! Enjoy.</p>
<div class="small mb-3">by SabreCat and Lemoness</div>
<div class="promo_mystery_201810 center-block"></div>
<h3>Last Chance for Fall Festival Items and Dark Forest Set</h3>
<p>This is your last chance to get all Fall Festival items before they vanish at the end of October 31st! This includes Limited-Edition Outfits, Seasonal Shop purchases, Seasonal Edition Skins and Hair Colors, and yes, even Ghost and Glow Hatching Potions. Grab them all while you still can!</p>
<p>Plus, today is the final day to <a href='/user/settings/subscription' target='_blank'>subscribe</a> and receive the Dark Forest set! Subscribing also lets you buy Gems for Gold and nets you a special Jackalope pet.</p>
<p>Thanks so much for your supporting the site -- you're helping us keep Habitica alive. Happy Habitoween!</p>
<div class="small mb-3">by Hermi, AaronTheTwin, tricksy.fox, Lemoness, Beffymaroo and SabreCat</div>
<div class="promo_ghost_potions center-block"></div>
<p>The Habitica team has launched a special official Challenge series hosted in the <a href='/groups/guild/6e6a8bd3-9f5f-4351-9188-9f11fcd80a99' target='_blank'>Official New Year's Resolution Guild</a>. These Challenges are designed to help you build and maintain goals that are destined for success and then stick with them as the year progresses. For this month's Challenge, <a href='/challenges/21d9aacb-a8c1-4663-babf-e653de3a5475' target='_blank'>Here be Dragons!</a>, we're focusing on obstacles that arise as you reach the end of the year! It has a 15 Gem prize, which will be awarded to five lucky winners on December 3rd.</p>
<p>Congratulations to the winners of October's Challenge, REN, drcaptainmaria, Helengoesrogue, Mistress Cerny- Cerny Pie, and Taichi1!</p>
<p>The next Take This Challenge has also launched, "<a href='/challenges/00708425-d477-41a5-bf27-6270466e7976' target='_blank'>This One Goes to 11!</a>", with a focus on pausing for calm and focus amid feelings of pressure or overwhelm. Be sure to check it out to earn additional pieces of the Take This armor set!</p>
<p><a href='http://www.takethis.org/' target='_blank'>Take This</a> is a nonprofit that seeks to inform the gamer community about mental health issues, to provide education about mental disorders and mental illness prevention, and to reduce the stigma of mental illness.</p>
<p>Congratulations to the winners of the last Take This Challenge, "+2 Intelligence Bonus!": grand prize winner PrimordialDream, and runners-up Marieke Bresseleers, Supertest, Keri-Ann Moore, Jobber, and Xaina the ???. Plus, all participants in that Challenge have received a piece of the <a href='http://habitica.wikia.com/wiki/Event_Item_Sequences#Take_This_Armor_Set' target='_blank'>Take This item set</a> if they hadn't completed it already. It is located in your Rewards column. Enjoy!</p>
<div class="small mb-3">by Doctor B, the Take This team, Lemoness, Beffymaroo, and SabreCat</div>
<div class="promo_seaserpent center-block"></div>
</div>
`,
});