mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-14 21:27:23 +01:00
Compare commits
24 Commits
v5.42.0
...
fiz/stats-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
867a5caa17 | ||
|
|
c1faac5385 | ||
|
|
451da628a0 | ||
|
|
13cea0fad4 | ||
|
|
fa44b7e915 | ||
|
|
c3c04dc109 | ||
|
|
2553cc3435 | ||
|
|
eebb78a766 | ||
|
|
4648b8e60a | ||
|
|
d37faef5f8 | ||
|
|
6a8a9f7842 | ||
|
|
726c2c18b8 | ||
|
|
3a4f6363fe | ||
|
|
9093dc4e20 | ||
|
|
21fd83695a | ||
|
|
2c44c37a96 | ||
|
|
f0adb85660 | ||
|
|
c80b94178b | ||
|
|
c85018a721 | ||
|
|
26a65d778b | ||
|
|
5bc4d7e99d | ||
|
|
20437c4188 | ||
|
|
e8c04e1109 | ||
|
|
65d5908898 |
@@ -218,13 +218,19 @@
|
|||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
gap: 0.5rem;
|
gap: 0.5rem;
|
||||||
|
max-width: 400px;
|
||||||
// somehow the browser felt like setting this 398px instead
|
width: 100%;
|
||||||
// now its fixed to 400 :)
|
|
||||||
width: 400px;
|
|
||||||
|
|
||||||
margin-bottom: 1.5rem;
|
margin-bottom: 1.5rem;
|
||||||
|
|
||||||
|
@media (max-width: 589px) {
|
||||||
|
max-width: 100%;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 353px) {
|
||||||
|
gap: 0.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
.quest-col {
|
.quest-col {
|
||||||
::v-deep {
|
::v-deep {
|
||||||
.item-wrapper {
|
.item-wrapper {
|
||||||
@@ -251,6 +257,28 @@
|
|||||||
::v-deep & {
|
::v-deep & {
|
||||||
.modal-dialog {
|
.modal-dialog {
|
||||||
width: 448px !important;
|
width: 448px !important;
|
||||||
|
max-width: calc(100vw - 20px);
|
||||||
|
margin: 0.5rem auto;
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
@media (max-width: 468px) {
|
||||||
|
width: 100% !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 353px) {
|
||||||
|
width: 100% !important;
|
||||||
|
margin: 0.25rem auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-content {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
@media (max-width: 300px) {
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,12 @@
|
|||||||
box-shadow: 0 1px 2px 0 rgba($black, 0.2);
|
box-shadow: 0 1px 2px 0 rgba($black, 0.2);
|
||||||
z-index: 9;
|
z-index: 9;
|
||||||
height: 3rem;
|
height: 3rem;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
|
||||||
|
@media (max-width: 683px) {
|
||||||
|
height: auto;
|
||||||
|
min-height: 3rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-link {
|
.nav-link {
|
||||||
@@ -23,6 +29,19 @@
|
|||||||
padding: 0.75rem;
|
padding: 0.75rem;
|
||||||
|
|
||||||
color: $gray-50;
|
color: $gray-50;
|
||||||
|
white-space: nowrap;
|
||||||
|
|
||||||
|
@media (max-width: 683px) {
|
||||||
|
padding: 0.5rem;
|
||||||
|
font-size: 13px;
|
||||||
|
flex: 1 1 auto;
|
||||||
|
min-width: fit-content;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 576px) {
|
||||||
|
padding: 0.5rem 0.4rem;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
&.active {
|
&.active {
|
||||||
color: $purple-300;
|
color: $purple-300;
|
||||||
|
|||||||
@@ -269,7 +269,13 @@
|
|||||||
|
|
||||||
.modal-dialog {
|
.modal-dialog {
|
||||||
width: 448px;
|
width: 448px;
|
||||||
|
max-width: calc(100vw - 20px);
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
@media (max-width: 468px) {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.badge-dialog {
|
.badge-dialog {
|
||||||
@@ -346,7 +352,23 @@
|
|||||||
|
|
||||||
.content {
|
.content {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
width: 448px;
|
width: 100%;
|
||||||
|
max-width: 448px;
|
||||||
|
margin: 0 auto;
|
||||||
|
|
||||||
|
@media (max-width: 468px) {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-content {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
@media (max-width: 300px) {
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-wrapper {
|
.item-wrapper {
|
||||||
@@ -564,7 +586,7 @@
|
|||||||
|
|
||||||
.limitedTime {
|
.limitedTime {
|
||||||
height: 32px;
|
height: 32px;
|
||||||
width: 446px;
|
width: 100%;
|
||||||
font-size: 0.75rem;
|
font-size: 0.75rem;
|
||||||
margin: 24px 0 0 0;
|
margin: 24px 0 0 0;
|
||||||
background-color: $purple-300;
|
background-color: $purple-300;
|
||||||
|
|||||||
@@ -111,6 +111,22 @@
|
|||||||
|
|
||||||
.modal-dialog {
|
.modal-dialog {
|
||||||
width: 448px;
|
width: 448px;
|
||||||
|
max-width: calc(100vw - 20px);
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
@media (max-width: 468px) {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-content {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
@media (max-width: 300px) {
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-body {
|
.modal-body {
|
||||||
|
|||||||
@@ -163,8 +163,33 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.modal-dialog {
|
.modal-dialog {
|
||||||
margin-top: 8%;
|
|
||||||
width: 448px !important;
|
width: 448px !important;
|
||||||
|
max-width: calc(100vw - 20px);
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
@media (max-width: 468px) {
|
||||||
|
width: 100% !important;
|
||||||
|
margin: 3rem auto 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 353px) {
|
||||||
|
margin: 2.5rem auto 0.25rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.badge-dialog {
|
||||||
|
left: -8px;
|
||||||
|
top: -8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-content {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
@media (max-width: 300px) {
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.content {
|
.content {
|
||||||
|
|||||||
@@ -382,6 +382,45 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div
|
||||||
|
v-if="showStatAssignment"
|
||||||
|
class="stat-assignment option mt-3"
|
||||||
|
>
|
||||||
|
<div class="form-group row">
|
||||||
|
<label
|
||||||
|
v-once
|
||||||
|
class="col-12 mb-1"
|
||||||
|
>{{ $t('assignedStat') }}</label>
|
||||||
|
<div class="col-12">
|
||||||
|
<div class="stat-dropdown-container">
|
||||||
|
<select-list
|
||||||
|
:items="statOptions"
|
||||||
|
:value="task.attribute"
|
||||||
|
key-prop="key"
|
||||||
|
active-key-prop="key"
|
||||||
|
@select="task.attribute = $event.key"
|
||||||
|
>
|
||||||
|
<template #item="{ item, button }">
|
||||||
|
<div class="stat-option-content">
|
||||||
|
<span
|
||||||
|
class="stat-option-title"
|
||||||
|
:class="item.key"
|
||||||
|
>
|
||||||
|
{{ $t(item.label) }}
|
||||||
|
</span>
|
||||||
|
<span
|
||||||
|
v-if="!button"
|
||||||
|
class="stat-option-description"
|
||||||
|
>
|
||||||
|
{{ $t(item.description) }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</select-list>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div
|
<div
|
||||||
v-if="task.type === 'habit' && !groupId"
|
v-if="task.type === 'habit' && !groupId"
|
||||||
class="option mt-3"
|
class="option mt-3"
|
||||||
@@ -911,6 +950,87 @@
|
|||||||
.streak-addon path {
|
.streak-addon path {
|
||||||
fill: $gray-200;
|
fill: $gray-200;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.stat-dropdown-container {
|
||||||
|
.select-list {
|
||||||
|
.selectListItem {
|
||||||
|
margin-bottom: 0;
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.selectListItem .dropdown-item {
|
||||||
|
padding: 8px 16px !important;
|
||||||
|
height: auto !important;
|
||||||
|
white-space: normal;
|
||||||
|
word-wrap: break-word;
|
||||||
|
|
||||||
|
&:hover,
|
||||||
|
&:focus {
|
||||||
|
background-color: rgba($purple-600, 0.25) !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.dropdown-toggle {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.stat-option-content {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.stat-option-title {
|
||||||
|
font-weight: normal;
|
||||||
|
color: $gray-50;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.stat-option-content {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
.stat-option-title {
|
||||||
|
display: block;
|
||||||
|
font-family: Roboto;
|
||||||
|
font-weight: 700;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 1.71;
|
||||||
|
text-transform: capitalize;
|
||||||
|
margin-bottom: 4px;
|
||||||
|
|
||||||
|
&.str {
|
||||||
|
color: $maroon-100;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.int {
|
||||||
|
color: $blue-50;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.con {
|
||||||
|
color: $yellow-5;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.per {
|
||||||
|
color: $purple-300;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.stat-option-description {
|
||||||
|
display: block;
|
||||||
|
font-family: Roboto;
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 16px;
|
||||||
|
color: $gray-100;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@@ -1023,7 +1143,6 @@
|
|||||||
.input-group-outer.disabled .input-group-text {
|
.input-group-outer.disabled .input-group-text {
|
||||||
color: $gray-200;
|
color: $gray-200;
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@@ -1038,6 +1157,7 @@ import SelectMulti from './modal-controls/selectMulti';
|
|||||||
import selectDifficulty from '@/components/tasks/modal-controls/selectDifficulty';
|
import selectDifficulty from '@/components/tasks/modal-controls/selectDifficulty';
|
||||||
import selectTranslatedArray from '@/components/tasks/modal-controls/selectTranslatedArray';
|
import selectTranslatedArray from '@/components/tasks/modal-controls/selectTranslatedArray';
|
||||||
import lockableLabel from '@/components/tasks/modal-controls/lockableLabel';
|
import lockableLabel from '@/components/tasks/modal-controls/lockableLabel';
|
||||||
|
import selectList from '@/components/ui/selectList';
|
||||||
|
|
||||||
import syncTask from '../../mixins/syncTask';
|
import syncTask from '../../mixins/syncTask';
|
||||||
|
|
||||||
@@ -1061,6 +1181,7 @@ export default {
|
|||||||
selectTranslatedArray,
|
selectTranslatedArray,
|
||||||
toggleCheckbox,
|
toggleCheckbox,
|
||||||
lockableLabel,
|
lockableLabel,
|
||||||
|
selectList,
|
||||||
},
|
},
|
||||||
directives: {
|
directives: {
|
||||||
markdown: markdownDirective,
|
markdown: markdownDirective,
|
||||||
@@ -1094,6 +1215,12 @@ export default {
|
|||||||
con: 'constitution',
|
con: 'constitution',
|
||||||
per: 'perception',
|
per: 'perception',
|
||||||
},
|
},
|
||||||
|
statOptions: [
|
||||||
|
{ key: 'str', label: 'strength', description: 'strTaskText' },
|
||||||
|
{ key: 'int', label: 'intelligence', description: 'intTaskText' },
|
||||||
|
{ key: 'con', label: 'constitution', description: 'conTaskText' },
|
||||||
|
{ key: 'per', label: 'perception', description: 'perTaskText' },
|
||||||
|
],
|
||||||
calendarHighlights: { dates: [new Date()] },
|
calendarHighlights: { dates: [new Date()] },
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
@@ -1187,6 +1314,12 @@ export default {
|
|||||||
selectedTags () {
|
selectedTags () {
|
||||||
return this.getTagsFor(this.task);
|
return this.getTagsFor(this.task);
|
||||||
},
|
},
|
||||||
|
showStatAssignment () {
|
||||||
|
return this.task.type !== 'reward'
|
||||||
|
&& !this.groupId
|
||||||
|
&& this.user.preferences.automaticAllocation === true
|
||||||
|
&& this.user.preferences.allocationMode === 'taskbased';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
task () {
|
task () {
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
<template #button-content>
|
<template #button-content>
|
||||||
<slot
|
<slot
|
||||||
name="item"
|
name="item"
|
||||||
:item="selected || placeholder"
|
:item="selectedItem || placeholder"
|
||||||
:button="true"
|
:button="true"
|
||||||
>
|
>
|
||||||
<!-- Fallback content -->
|
<!-- Fallback content -->
|
||||||
@@ -134,6 +134,14 @@ export default {
|
|||||||
}),
|
}),
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
computed: {
|
||||||
|
selectedItem () {
|
||||||
|
if (this.activeKeyProp) {
|
||||||
|
return this.items.find(item => item[this.activeKeyProp] === this.selected);
|
||||||
|
}
|
||||||
|
return this.items.find(item => item === this.selected);
|
||||||
|
},
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
getKeyProp (item) {
|
getKeyProp (item) {
|
||||||
return this.keyProp ? item[this.keyProp] : item.key || item.identifier;
|
return this.keyProp ? item[this.keyProp] : item.key || item.identifier;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,195 +1,204 @@
|
|||||||
{
|
{
|
||||||
"communityGuidelinesWarning": "Please keep in mind that your Display Name, profile photo, and blurb must comply with the <a href='https://habitica.com/static/community-guidelines' target='_blank'>Community Guidelines</a> (e.g. no profanity, no adult topics, no insults, etc). If you have any questions about whether or not something is appropriate, feel free to email <%= hrefBlankCommunityManagerEmail %>!",
|
"communityGuidelinesWarning": "Please keep in mind that your Display Name, profile photo, and blurb must comply with the <a href='https://habitica.com/static/community-guidelines' target='_blank'>Community Guidelines</a> (e.g. no profanity, no adult topics, no insults, etc). If you have any questions about whether or not something is appropriate, feel free to email <%= hrefBlankCommunityManagerEmail %>!",
|
||||||
"profile": "Profile",
|
"profile": "Profile",
|
||||||
"avatar": "Customize Avatar",
|
"avatar": "Customize Avatar",
|
||||||
"editAvatar": "Customize Avatar",
|
"editAvatar": "Customize Avatar",
|
||||||
"noDescription": "This Habitican hasn't added a description.",
|
"noDescription": "This Habitican hasn't added a description.",
|
||||||
"noPhoto": "This Habitican hasn't added a photo.",
|
"noPhoto": "This Habitican hasn't added a photo.",
|
||||||
"other": "Other",
|
"other": "Other",
|
||||||
"fullName": "Full Name",
|
"fullName": "Full Name",
|
||||||
"displayName": "Display name",
|
"displayName": "Display name",
|
||||||
"changeDisplayName": "Change Display Name",
|
"changeDisplayName": "Change Display Name",
|
||||||
"newDisplayName": "New Display Name",
|
"newDisplayName": "New Display Name",
|
||||||
"displayBlurbPlaceholder": "Please introduce yourself",
|
"displayBlurbPlaceholder": "Please introduce yourself",
|
||||||
"photoUrl": "Photo Url",
|
"photoUrl": "Photo Url",
|
||||||
"imageUrl": "Image Url",
|
"imageUrl": "Image Url",
|
||||||
"inventory": "Inventory",
|
"inventory": "Inventory",
|
||||||
"social": "Social",
|
"social": "Social",
|
||||||
"lvl": "Lvl",
|
"lvl": "Lvl",
|
||||||
"buffed": "Buffed",
|
"buffed": "Buffed",
|
||||||
"bodyBody": "Body",
|
"bodyBody": "Body",
|
||||||
"size": "Size",
|
"size": "Size",
|
||||||
"locked": "locked",
|
"locked": "locked",
|
||||||
"shirts": "Shirts",
|
"shirts": "Shirts",
|
||||||
"shirt": "Shirt",
|
"shirt": "Shirt",
|
||||||
"specialShirts": "Special Shirts",
|
"specialShirts": "Special Shirts",
|
||||||
"skin": "Skin",
|
"skin": "Skin",
|
||||||
"skins": "Skins",
|
"skins": "Skins",
|
||||||
"color": "Color",
|
"color": "Color",
|
||||||
"hair": "Hair",
|
"hair": "Hair",
|
||||||
"bangs": "Bangs",
|
"bangs": "Bangs",
|
||||||
"glasses": "Glasses",
|
"glasses": "Glasses",
|
||||||
"hairSet1": "Hairstyle Set 1",
|
"hairSet1": "Hairstyle Set 1",
|
||||||
"hairSet2": "Hairstyle Set 2",
|
"hairSet2": "Hairstyle Set 2",
|
||||||
"hairSet3": "Hairstyle Set 3",
|
"hairSet3": "Hairstyle Set 3",
|
||||||
"beard": "Beard",
|
"beard": "Beard",
|
||||||
"mustache": "Mustache",
|
"mustache": "Mustache",
|
||||||
"titleFacialHair": "Facial Hair",
|
"titleFacialHair": "Facial Hair",
|
||||||
"titleHaircolor": "Hair Colors",
|
"titleHaircolor": "Hair Colors",
|
||||||
"titleHairbase": "Hair Styles",
|
"titleHairbase": "Hair Styles",
|
||||||
"flower": "Flower",
|
"flower": "Flower",
|
||||||
"accent": "Accent",
|
"accent": "Accent",
|
||||||
"headband": "Headband",
|
"headband": "Headband",
|
||||||
"wheelchair": "Wheelchair",
|
"wheelchair": "Wheelchair",
|
||||||
"extra": "Extra",
|
"extra": "Extra",
|
||||||
"rainbowSkins": "Rainbow Skins",
|
"rainbowSkins": "Rainbow Skins",
|
||||||
"pastelSkins": "Pastel Skins",
|
"pastelSkins": "Pastel Skins",
|
||||||
"spookySkins": "Spooky Skins",
|
"spookySkins": "Spooky Skins",
|
||||||
"supernaturalSkins": "Supernatural Skins",
|
"supernaturalSkins": "Supernatural Skins",
|
||||||
"splashySkins": "Splashy Skins",
|
"splashySkins": "Splashy Skins",
|
||||||
"winterySkins": "Wintery Skins",
|
"winterySkins": "Wintery Skins",
|
||||||
"rainbowColors": "Rainbow Colors",
|
"rainbowColors": "Rainbow Colors",
|
||||||
"shimmerColors": "Shimmer Colors",
|
"shimmerColors": "Shimmer Colors",
|
||||||
"hauntedColors": "Haunted Colors",
|
"hauntedColors": "Haunted Colors",
|
||||||
"winteryColors": "Wintery Colors",
|
"winteryColors": "Wintery Colors",
|
||||||
"equipment": "Equipment",
|
"equipment": "Equipment",
|
||||||
"equipmentBonus": "Equipment",
|
"equipmentBonus": "Equipment",
|
||||||
"classEquipBonus": "Class Bonus",
|
"classEquipBonus": "Class Bonus",
|
||||||
"battleGear": "Battle Gear",
|
"battleGear": "Battle Gear",
|
||||||
"gear": "Gear",
|
"gear": "Gear",
|
||||||
"autoEquipBattleGear": "Auto-equip new gear",
|
"autoEquipBattleGear": "Auto-equip new gear",
|
||||||
"costume": "Costume",
|
"costume": "Costume",
|
||||||
"useCostume": "Use Costume",
|
"useCostume": "Use Costume",
|
||||||
"costumePopoverText": "Select \"Use Costume\" to equip items to your avatar without affecting the Stats from your Battle Gear! This means that you can dress up your avatar in whatever outfit you like while still having your best Battle Gear equipped.",
|
"costumePopoverText": "Select \"Use Costume\" to equip items to your avatar without affecting the Stats from your Battle Gear! This means that you can dress up your avatar in whatever outfit you like while still having your best Battle Gear equipped.",
|
||||||
"autoEquipPopoverText": "Select this option to automatically equip gear as soon as you purchase it.",
|
"autoEquipPopoverText": "Select this option to automatically equip gear as soon as you purchase it.",
|
||||||
"costumeDisabled": "You have disabled your costume.",
|
"costumeDisabled": "You have disabled your costume.",
|
||||||
"gearAchievement": "You have earned the \"Ultimate Gear\" Achievement for upgrading to the maximum gear set for a class! You have attained the following complete sets:",
|
"gearAchievement": "You have earned the \"Ultimate Gear\" Achievement for upgrading to the maximum gear set for a class! You have attained the following complete sets:",
|
||||||
"gearAchievementNotification": "You have earned the \"Ultimate Gear\" Achievement for upgrading to the maximum gear set for a class!",
|
"gearAchievementNotification": "You have earned the \"Ultimate Gear\" Achievement for upgrading to the maximum gear set for a class!",
|
||||||
"moreGearAchievements": "To attain more Ultimate Gear badges, change classes on <a href='/user/settings/site' target='_blank'>the Settings > Site page</a> and buy your new class's gear!",
|
"moreGearAchievements": "To attain more Ultimate Gear badges, change classes on <a href='/user/settings/site' target='_blank'>the Settings > Site page</a> and buy your new class's gear!",
|
||||||
"armoireUnlocked": "For more equipment, check out the <strong>Enchanted Armoire!</strong> Click on the Enchanted Armoire Reward for a random chance at special Equipment! It may also give you random XP or food items.",
|
"armoireUnlocked": "For more equipment, check out the <strong>Enchanted Armoire!</strong> Click on the Enchanted Armoire Reward for a random chance at special Equipment! It may also give you random XP or food items.",
|
||||||
"ultimGearName": "Ultimate Gear - <%= ultClass %>",
|
"ultimGearName": "Ultimate Gear - <%= ultClass %>",
|
||||||
"ultimGearText": "Has upgraded to the maximum weapon and armor set for the <%= ultClass %> class.",
|
"ultimGearText": "Has upgraded to the maximum weapon and armor set for the <%= ultClass %> class.",
|
||||||
"level": "Level",
|
"level": "Level",
|
||||||
"levelUp": "Level Up!",
|
"levelUp": "Level Up!",
|
||||||
"gainedLevel": "You gained a level!",
|
"gainedLevel": "You gained a level!",
|
||||||
"leveledUp": "By accomplishing your real-life goals, you've grown to <strong>Level <%= level %>!</strong>",
|
"leveledUp": "By accomplishing your real-life goals, you've grown to <strong>Level <%= level %>!</strong>",
|
||||||
"huzzah": "Huzzah!",
|
"huzzah": "Huzzah!",
|
||||||
"mana": "Mana",
|
"mana": "Mana",
|
||||||
"hp": "HP",
|
"hp": "HP",
|
||||||
"mp": "MP",
|
"mp": "MP",
|
||||||
"xp": "XP",
|
"xp": "XP",
|
||||||
"health": "Health",
|
"health": "Health",
|
||||||
"allocateStr": "Points allocated to Strength:",
|
"allocateStr": "Points allocated to Strength:",
|
||||||
"allocateStrPop": "Add a Point to Strength",
|
"allocateStrPop": "Add a Point to Strength",
|
||||||
"allocateCon": "Points allocated to Constitution:",
|
"allocateCon": "Points allocated to Constitution:",
|
||||||
"allocateConPop": "Add a Point to Constitution",
|
"allocateConPop": "Add a Point to Constitution",
|
||||||
"allocatePer": "Points allocated to Perception:",
|
"allocatePer": "Points allocated to Perception:",
|
||||||
"allocatePerPop": "Add a Point to Perception",
|
"allocatePerPop": "Add a Point to Perception",
|
||||||
"allocateInt": "Points allocated to Intelligence:",
|
"allocateInt": "Points allocated to Intelligence:",
|
||||||
"allocateIntPop": "Add a Point to Intelligence",
|
"allocateIntPop": "Add a Point to Intelligence",
|
||||||
"noMoreAllocate": "Now that you've hit level 100, you won't gain any more Stat Points. You can continue leveling up, or start a new adventure at level 1 by using the <a href='/shops/market'>Orb of Rebirth</a>!",
|
"noMoreAllocate": "Now that you've hit level 100, you won't gain any more Stat Points. You can continue leveling up, or start a new adventure at level 1 by using the <a href='/shops/market'>Orb of Rebirth</a>.",
|
||||||
"stats": "Stats",
|
"stats": "Stats",
|
||||||
"strength": "Strength",
|
"strength": "Strength",
|
||||||
"strText": "Strength increases the chance of random \"critical hits\" and the Gold, Experience, and drop chance boost from them. It also helps deal damage to boss monsters.",
|
"strText": "Strength increases the chance of random \"critical hits\" and the Gold, Experience, and drop chance boost from them. It also helps deal damage to boss monsters.",
|
||||||
"constitution": "Constitution",
|
"strTaskText": "Increases critical hit chance and damage when scoring tasks. Also increases damage dealt to bosses.",
|
||||||
"conText": "Constitution reduces the damage you take from negative Habits and missed Dailies.",
|
"constitution": "Constitution",
|
||||||
"perception": "Perception",
|
"conText": "Constitution reduces the damage you take from negative Habits and missed Dailies.",
|
||||||
"perText": "Perception increases how much Gold you earn, and once you've unlocked the Market, increases the chance of finding items when scoring tasks.",
|
"conTaskText": "Reduces damage taken from missed Dailies and negative Habits. Does not reduce damage from bosses.",
|
||||||
"intelligence": "Intelligence",
|
"perception": "Perception",
|
||||||
"intText": "Intelligence increases how much Experience you earn, and once you've unlocked Classes, determines your maximum Mana available for class abilities.",
|
"perText": "Perception increases how much Gold you earn, and once you've unlocked the Market, increases the chance of finding items when scoring tasks.",
|
||||||
"levelBonus": "Level Bonus",
|
"perTaskText": "Increases item drop chance, daily item drop cap, task streak bonuses, and Gold earned when completing tasks.",
|
||||||
"allocatedPoints": "Allocated Points",
|
"intelligence": "Intelligence",
|
||||||
"allocated": "Allocated",
|
"intText": "Intelligence increases how much Experience you earn, and once you've unlocked Classes, determines your maximum Mana available for class abilities.",
|
||||||
"buffs": "Buffs",
|
"intTaskText": "Increases Exp earned from tasks. Also increases your mana cap and mana regeneration rate.",
|
||||||
"characterBuild": "Character Build",
|
"levelBonus": "Level Bonus",
|
||||||
"class": "Class",
|
"allocatedPoints": "Allocated Points",
|
||||||
"experience": "Experience",
|
"allocated": "Allocated",
|
||||||
"warrior": "Warrior",
|
"buffs": "Buffs",
|
||||||
"healer": "Healer",
|
"characterBuild": "Character Build",
|
||||||
"rogue": "Rogue",
|
"class": "Class",
|
||||||
"mage": "Mage",
|
"experience": "Experience",
|
||||||
"wizard": "Mage",
|
"warrior": "Warrior",
|
||||||
"mystery": "Mystery",
|
"healer": "Healer",
|
||||||
"changeClass": "Change Class, Refund Stat Points",
|
"rogue": "Rogue",
|
||||||
"lvl10ChangeClass": "To change class you must be at least level 10.",
|
"mage": "Mage",
|
||||||
"changeClassConfirmCost": "Are you sure you want to change your class for 3 Gems?",
|
"wizard": "Mage",
|
||||||
"invalidClass": "Invalid class. Please specify 'warrior', 'rogue', 'wizard', or 'healer'.",
|
"mystery": "Mystery",
|
||||||
"levelPopover": "Each level earns you one Point to assign to a Stat of your choice. You can do so manually, or let the game decide for you using one of the Automatic Allocation options.",
|
"changeClass": "Change Class, Refund Stat Points",
|
||||||
"unallocated": "Unallocated Stat Points",
|
"lvl10ChangeClass": "To change class you must be at least level 10.",
|
||||||
"autoAllocation": "Automatic Allocation",
|
"changeClassConfirmCost": "Are you sure you want to change your class for 3 Gems?",
|
||||||
"autoAllocationPop": "Places Points into Stats according to your preferences, when you level up.",
|
"invalidClass": "Invalid class. Please specify 'warrior', 'rogue', 'wizard', or 'healer'.",
|
||||||
"evenAllocation": "Distribute Stat Points evenly",
|
"levelPopover": "Each level earns you one Point to assign to a Stat of your choice. You can do so manually, or let the game decide for you using one of the Automatic Allocation options.",
|
||||||
"evenAllocationPop": "Assigns the same number of Points to each Stat.",
|
"unallocated": "Unallocated Stat Points",
|
||||||
"classAllocation": "Distribute Points based on Class",
|
"autoAllocation": "Automatic Allocation",
|
||||||
"classAllocationPop": "Assigns more Points to the Stats important to your Class.",
|
"autoAllocate": "Auto Allocate",
|
||||||
"taskAllocation": "Distribute Points based on task activity",
|
"autoAllocationPop": "Places Points into Stats according to your preferences, when you level up.",
|
||||||
"taskAllocationPop": "Assigns Points based on the Strength, Intelligence, Constitution, and Perception categories associated with the tasks you complete.",
|
"evenAllocation": "Distribute Evenly",
|
||||||
"distributePoints": "Distribute Unallocated Points",
|
"evenAllocationPop": "Assigns the same number of points to each attribute.",
|
||||||
"distributePointsPop": "Assigns all unallocated Stat Points according to the selected allocation scheme.",
|
"classAllocation": "Distribute based on Class",
|
||||||
"warriorText": "Warriors score more and better \"critical hits\", which randomly give bonus Gold, Experience, and drop chance for scoring a task. They also deal heavy damage to boss monsters. Play a Warrior if you find motivation from unpredictable jackpot-style rewards, or want to dish out the hurt in boss Quests!",
|
"classAllocationPop": "Assigns more points to the attributes important to your Class.",
|
||||||
"wizardText": "Mages learn swiftly, gaining Experience and Levels faster than other classes. They also get a great deal of Mana for using special abilities. Play a Mage if you enjoy the tactical game aspects of Habitica, or if you are strongly motivated by leveling up and unlocking advanced features!",
|
"taskAllocation": "Distribute Points based on task activity",
|
||||||
"mageText": "Mages learn swiftly, gaining Experience and Levels faster than other classes. They also get a great deal of Mana for using special abilities. Play a Mage if you enjoy the tactical game aspects of Habitica, or if you are strongly motivated by leveling up and unlocking advanced features!",
|
"taskAllocationPop": "Assigns Points based on the Strength, Intelligence, Constitution, and Perception categories associated with the tasks you complete.",
|
||||||
"rogueText": "Rogues love to accumulate wealth, gaining more Gold than anyone else, and are adept at finding random items. Their iconic Stealth ability lets them duck the consequences of missed Dailies. Play a Rogue if you find strong motivation from Rewards and Achievements, striving for loot and badges!",
|
"distributePoints": "Distribute Unallocated Points",
|
||||||
"healerText": "Healers stand impervious against harm, and extend that protection to others. Missed Dailies and bad Habits don't faze them much, and they have ways to recover Health from failure. Play a Healer if you enjoy assisting others in your Party, or if the idea of cheating Death through hard work inspires you!",
|
"distributePointsPop": "Assigns all unallocated Stat Points according to the selected allocation scheme.",
|
||||||
"optOutOfClasses": "Opt Out",
|
"warriorText": "Warriors score more and better \"critical hits\", which randomly give bonus Gold, Experience, and drop chance for scoring a task. They also deal heavy damage to boss monsters. Play a Warrior if you find motivation from unpredictable jackpot-style rewards, or want to dish out the hurt in boss Quests!",
|
||||||
"chooseClass": "Choose your Class",
|
"wizardText": "Mages learn swiftly, gaining Experience and Levels faster than other classes. They also get a great deal of Mana for using special abilities. Play a Mage if you enjoy the tactical game aspects of Habitica, or if you are strongly motivated by leveling up and unlocking advanced features!",
|
||||||
"chooseClassLearnMarkdown": "[Learn more about Habitica's class system](/static/faq#what-classes)",
|
"mageText": "Mages learn swiftly, gaining Experience and Levels faster than other classes. They also get a great deal of Mana for using special abilities. Play a Mage if you enjoy the tactical game aspects of Habitica, or if you are strongly motivated by leveling up and unlocking advanced features!",
|
||||||
"optOutOfClassesText": "Not ready to choose? There's no rush! If you opt out, you can read about each Class in <a href='/static/faq#what-classes' target='_blank'>our FAQ</a> and visit Settings to enable the Class System when you're ready.",
|
"rogueText": "Rogues love to accumulate wealth, gaining more Gold than anyone else, and are adept at finding random items. Their iconic Stealth ability lets them duck the consequences of missed Dailies. Play a Rogue if you find strong motivation from Rewards and Achievements, striving for loot and badges!",
|
||||||
"selectClass": "Select <%= heroClass %>",
|
"healerText": "Healers stand impervious against harm, and extend that protection to others. Missed Dailies and bad Habits don't faze them much, and they have ways to recover Health from failure. Play a Healer if you enjoy assisting others in your Party, or if the idea of cheating Death through hard work inspires you!",
|
||||||
"select": "Select",
|
"optOutOfClasses": "Opt Out",
|
||||||
"stealth": "Stealth",
|
"chooseClass": "Choose your Class",
|
||||||
"stealthNewDay": "When a new day begins, you will avoid damage from this many missed Dailies.",
|
"chooseClassLearnMarkdown": "[Learn more about Habitica's class system](/static/faq#what-classes)",
|
||||||
"streaksFrozen": "Streaks Frozen",
|
"optOutOfClassesText": "Not ready to choose? There's no rush! If you opt out, you can read about each Class in <a href='/static/faq#what-classes' target='_blank'>our FAQ</a> and visit Settings to enable the Class System when you're ready.",
|
||||||
"streaksFrozenText": "Streaks on missed Dailies will not reset at the end of the day.",
|
"selectClass": "Select <%= heroClass %>",
|
||||||
"purchaseFor": "Purchase for <%= cost %> Gems?",
|
"select": "Select",
|
||||||
"purchaseForGold": "Purchase for <%= cost %> Gold?",
|
"stealth": "Stealth",
|
||||||
"purchaseForHourglasses": "Purchase for <%= cost %> Hourglasses?",
|
"stealthNewDay": "When a new day begins, you will avoid damage from this many missed Dailies.",
|
||||||
"purchasePetItemConfirm": "This purchase would exceed the number of items you need to hatch all possible <%= itemText %> pets. Are you sure?",
|
"streaksFrozen": "Streaks Frozen",
|
||||||
"notEnoughMana": "Not enough mana.",
|
"streaksFrozenText": "Streaks on missed Dailies will not reset at the end of the day.",
|
||||||
"notEnoughGold": "Not enough gold.",
|
"purchaseFor": "Purchase for <%= cost %> Gems?",
|
||||||
"invalidTarget": "You can't cast a skill on that.",
|
"purchaseForGold": "Purchase for <%= cost %> Gold?",
|
||||||
"youCast": "You cast <%= spell %>.",
|
"purchaseForHourglasses": "Purchase for <%= cost %> Hourglasses?",
|
||||||
"youCastTarget": "You cast <%= spell %> on <%= target %>.",
|
"purchasePetItemConfirm": "This purchase would exceed the number of items you need to hatch all possible <%= itemText %> pets. Are you sure?",
|
||||||
"youCastParty": "You cast <%= spell %> for the party.",
|
"notEnoughMana": "Not enough mana.",
|
||||||
"chatCastSpellParty": "<%= username %> casts <%= spell %> for the party.",
|
"notEnoughGold": "Not enough gold.",
|
||||||
"chatCastSpellUser": "<%= username %> casts <%= spell %> on <%= target %>.",
|
"invalidTarget": "You can't cast a skill on that.",
|
||||||
"chatCastSpellPartyTimes": "<%= username %> casts <%= spell %> for the party <%= times %> times.",
|
"youCast": "You cast <%= spell %>.",
|
||||||
"chatCastSpellUserTimes": "<%= username %> casts <%= spell %> on <%= target %> <%= times %> times.",
|
"youCastTarget": "You cast <%= spell %> on <%= target %>.",
|
||||||
"critBonus": "Critical Hit! Bonus: ",
|
"youCastParty": "You cast <%= spell %> for the party.",
|
||||||
"gainedGold": "You gained some Gold",
|
"chatCastSpellParty": "<%= username %> casts <%= spell %> for the party.",
|
||||||
"gainedMana": "You gained some Mana",
|
"chatCastSpellUser": "<%= username %> casts <%= spell %> on <%= target %>.",
|
||||||
"gainedHealth": "You gained some Health",
|
"chatCastSpellPartyTimes": "<%= username %> casts <%= spell %> for the party <%= times %> times.",
|
||||||
"gainedExperience": "You gained some Experience",
|
"chatCastSpellUserTimes": "<%= username %> casts <%= spell %> on <%= target %> <%= times %> times.",
|
||||||
"lostGold": "You spent some Gold",
|
"critBonus": "Critical Hit! Bonus: ",
|
||||||
"lostMana": "You used some Mana",
|
"gainedGold": "You gained some Gold",
|
||||||
"lostHealth": "You lost some Health",
|
"gainedMana": "You gained some Mana",
|
||||||
"lostExperience": "You lost some Experience",
|
"gainedHealth": "You gained some Health",
|
||||||
"equip": "Equip",
|
"gainedExperience": "You gained some Experience",
|
||||||
"unequip": "Unequip",
|
"lostGold": "You spent some Gold",
|
||||||
"animalSkins": "Animal Skins",
|
"lostMana": "You used some Mana",
|
||||||
"str": "STR",
|
"lostHealth": "You lost some Health",
|
||||||
"con": "CON",
|
"lostExperience": "You lost some Experience",
|
||||||
"per": "PER",
|
"equip": "Equip",
|
||||||
"int": "INT",
|
"unequip": "Unequip",
|
||||||
"notEnoughAttrPoints": "You don't have enough Stat Points.",
|
"animalSkins": "Animal Skins",
|
||||||
"classNotSelected": "You must select Class before you can assign Stat Points.",
|
"str": "STR",
|
||||||
"style": "Style",
|
"con": "CON",
|
||||||
"facialhair": "Facial",
|
"per": "PER",
|
||||||
"photo": "Photo",
|
"int": "INT",
|
||||||
"info": "Info",
|
"notEnoughAttrPoints": "You don't have enough Stat Points.",
|
||||||
"joined": "Joined",
|
"classNotSelected": "You must select Class before you can assign Stat Points.",
|
||||||
"totalLogins": "Total Log Ins",
|
"style": "Style",
|
||||||
"latestCheckin": "Latest Log In",
|
"facialhair": "Facial",
|
||||||
"nextReward": "Next Log In Reward",
|
"photo": "Photo",
|
||||||
"editProfile": "Edit Profile",
|
"info": "Info",
|
||||||
"challengesWon": "Challenges Won",
|
"joined": "Joined",
|
||||||
"questsCompleted": "Quests Completed",
|
"totalLogins": "Total Log Ins",
|
||||||
"headAccess": "Head Access.",
|
"latestCheckin": "Latest Log In",
|
||||||
"backAccess": "Back Access.",
|
"nextReward": "Next Log In Reward",
|
||||||
"bodyAccess": "Body Access.",
|
"editProfile": "Edit Profile",
|
||||||
"mainHand": "Main-Hand",
|
"challengesWon": "Challenges Won",
|
||||||
"offHand": "Off-Hand",
|
"questsCompleted": "Quests Completed",
|
||||||
"statPoints": "Stat Points",
|
"headAccess": "Head Access.",
|
||||||
"pts": "pts",
|
"backAccess": "Back Access.",
|
||||||
"customizations": "Customizations"
|
"bodyAccess": "Body Access.",
|
||||||
}
|
"mainHand": "Main-Hand",
|
||||||
|
"offHand": "Off-Hand",
|
||||||
|
"statPoints": "Stat Points",
|
||||||
|
"pointsAvailable": "Points Available",
|
||||||
|
"allocationMethod": "Allocation Method",
|
||||||
|
"statAllocationInfo": "Each level earns you one point to assign to a Stat of your choice. You can do so manually, or let the game decide for you using one of the Automatic Allocation options.",
|
||||||
|
"pts": "PTS",
|
||||||
|
"customizations": "Customizations",
|
||||||
|
"assignedStat": "Assigned Stat"
|
||||||
|
}
|
||||||
|
|||||||
@@ -104,7 +104,6 @@
|
|||||||
"success": "Success!",
|
"success": "Success!",
|
||||||
"classGear": "Class Gear",
|
"classGear": "Class Gear",
|
||||||
"classGearText": "Congratulations on choosing a class! I've added your new basic weapon to your inventory. Take a look below to equip it!",
|
"classGearText": "Congratulations on choosing a class! I've added your new basic weapon to your inventory. Take a look below to equip it!",
|
||||||
"autoAllocate": "Auto Allocate",
|
|
||||||
"spells": "Skills",
|
"spells": "Skills",
|
||||||
"skillsTitle": "<%= classStr %> Skills",
|
"skillsTitle": "<%= classStr %> Skills",
|
||||||
"toDo": "To Do",
|
"toDo": "To Do",
|
||||||
|
|||||||
Reference in New Issue
Block a user