Merge branch 'develop' of https://github.com/HabitRPG/habitrpg into merchant-button-fix
This commit is contained in:
@@ -4,6 +4,13 @@
|
||||
h3.equipment-title.hint(popover-trigger='mouseenter',
|
||||
popover-placement='right', popover-append-to-body='true',
|
||||
popover=env.t('battleGearText'))=env.t('battleGear')
|
||||
|
||||
.checkbox.equipment-title
|
||||
label
|
||||
input(type="checkbox", ng-model="user.preferences.autoEquip",
|
||||
ng-change='set({"preferences.autoEquip":user.preferences.autoEquip ? true : false})')
|
||||
|
|
||||
=env.t('autoEquipBattleGear')
|
||||
|
||||
div
|
||||
button.btn.btn-default(type="button", ng-click='dequip("battleGear");') {{env.t("unequipBattleGear")}}
|
||||
|
||||
@@ -4,12 +4,13 @@ include ../../shared/mixins
|
||||
.row
|
||||
.col-md-6
|
||||
.clearfix
|
||||
.npc_ian.pull-left-sm.col-centered
|
||||
div(class="#{env.worldDmg.quests ? 'npc_ian_broken' : 'npc_ian'}").pull-left-sm.col-centered
|
||||
.popover.static-popover.fade.right.in.pull-left-sm.col-centered
|
||||
.arrow.hidden-xs
|
||||
h3.popover-title=env.t('ian')
|
||||
.popover-content
|
||||
p=env.t('ianText')
|
||||
p(ng-if='env.worldDmg.quests')=env.t('ianBrokenText')
|
||||
p(ng-if='!env.worldDmg.quests')=env.t('ianText')
|
||||
|
||||
h3.equipment-title=env.t('yourQuests')
|
||||
+ownedQuests(true,'right')
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
.container-fluid
|
||||
.stable.row: .col-xs-12
|
||||
.seasonalshop_open.pull-left-sm.col-centered
|
||||
div(class="#{env.worldDmg.seasonalShop ? 'seasonalshop_broken' : 'seasonalshop_open'}").pull-left-sm.col-centered
|
||||
.popover.static-popover.fade.right.in.pull-left-sm.col-centered
|
||||
.arrow.hidden-xs
|
||||
h3.popover-title!=env.t('seasonalShopTitle', {linkStart:"<a href='http://blog.habitrpg.com/who' target='_blank'>", linkEnd: "</a>"})
|
||||
.popover-content
|
||||
p!=env.t('seasonalShopFallText')
|
||||
p(ng-if='!env.worldDmg.seasonalShop')!=env.t('seasonalShopFallText')
|
||||
p(ng-if='env.worldDmg.seasonalShop')!=env.t('seasonalShopFallTextBroken')
|
||||
|
||||
.well(ng-if='User.user.achievements.rebirths > 0')=env.t('seasonalShopRebirth')
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
.pull-right
|
||||
span.inventory_special_trinket.inline-gems
|
||||
b x{{user.purchased.plan.consecutive.trinkets}}
|
||||
p!=env.t('timeTravelersPopover', {linkStart: "<a href='http://habitica.wikia.com/wiki/Mystery_Item' target='_blank'>", linkEnd: "</a>"})
|
||||
p!=env.t('timeTravelersPopover')
|
||||
|
||||
.row: .col-md-7
|
||||
.alert.alert-info(ng-if='hasAllTimeTravelerItems()')=env.t('timeTravelersAlreadyOwned')
|
||||
|
||||
@@ -103,19 +103,19 @@ script(type='text/ng-template', id='partials/options.settings.settings.html')
|
||||
br.visible-xs
|
||||
button.btn.btn-block.btn-primary(ng-click='openDayStartModal(dayStart)',
|
||||
ng-disabled='dayStart == user.preferences.dayStart')
|
||||
| Save Custom Day Start
|
||||
=env.t('saveCustomDayStart')
|
||||
|
||||
.personal-options.col-md-6
|
||||
.panel.panel-default
|
||||
.panel-heading
|
||||
span Registration
|
||||
span=env.t('registration')
|
||||
.panel-body
|
||||
div(ng-if='user.auth.facebook.id')
|
||||
button.btn.btn-primary(disabled='disabled', ng-if='!user.auth.local.username')=env.t('registeredWithFb')
|
||||
button.btn.btn-danger(ng-click='http("delete","/api/v2/user/auth/social",null,"detachedFacebook")', ng-if='user.auth.local.username')=env.t('detachFacebook')
|
||||
hr
|
||||
div(ng-if='!user.auth.local.username')
|
||||
p Add local authentication:
|
||||
p=env.t('addLocalAuth')
|
||||
form(ng-submit='http("post","/api/v2/register",localAuth,"addedLocalAuth")', ng-init='localAuth={}', name='localAuth', novalidate)
|
||||
//-.alert.alert-danger(ng-messages='changeUsername.$error && changeUsername.submitted')=env.t('fillAll')
|
||||
.form-group
|
||||
@@ -189,15 +189,15 @@ script(type='text/ng-template', id='partials/options.settings.promo.html')
|
||||
small= env.t('couponText')
|
||||
div(ng-if='user.contributor.sudo')
|
||||
hr
|
||||
h4 Generate Codes
|
||||
h4=env.t('generateCodes')
|
||||
form.form(role='form',ng-submit='generateCodes(_codes)',ng-init='_codes={}')
|
||||
.form-group
|
||||
input.form-control(type='text',ng-model='_codes.event',placeholder="Event code (eg, 'wondercon')")
|
||||
.form-group
|
||||
input.form-control(type='number',ng-model='_codes.count',placeholder="Number of codes to generate (eg, 250)")
|
||||
.form-group
|
||||
button.btn.btn-primary(type='submit') Generate
|
||||
a.btn.btn-default(href='/api/v2/coupons?_id={{user._id}}&apiToken={{user.apiToken}}') Get Codes
|
||||
button.btn.btn-primary(type='submit')=env.t('generate')
|
||||
a.btn.btn-default(href='/api/v2/coupons?_id={{user._id}}&apiToken={{user.apiToken}}')=env.t('getCodes')
|
||||
|
||||
script(type='text/ng-template', id='partials/options.settings.api.html')
|
||||
.container-fluid
|
||||
@@ -214,12 +214,12 @@ script(type='text/ng-template', id='partials/options.settings.api.html')
|
||||
|
||||
hr
|
||||
|
||||
h2 Webhooks
|
||||
h2=env.t('webhooks')
|
||||
table.table.table-striped
|
||||
thead(ng-if='hasWebhooks')
|
||||
tr
|
||||
th Enabled
|
||||
th Webhook URL
|
||||
th=env.t('enabled')
|
||||
th=env.t('webhookURL')
|
||||
th
|
||||
tbody
|
||||
tr(ng-repeat="webhook in user.preferences.webhooks | toArray:true | orderBy:'sort'")
|
||||
@@ -235,9 +235,9 @@ script(type='text/ng-template', id='partials/options.settings.api.html')
|
||||
td(colspan=2)
|
||||
form.form-horizontal(ng-submit='addWebhook(_newWebhook.url)')
|
||||
.form-group.col-sm-10
|
||||
input.form-control(type='url', ng-model='_newWebhook.url', placeholder='Webhook URL')
|
||||
input.form-control(type='url', ng-model='_newWebhook.url', placeholder=env.t('webhookURL'))
|
||||
.col-sm-2
|
||||
button.btn.btn-sm.btn-primary(type='submit') Add
|
||||
button.btn.btn-sm.btn-primary(type='submit')=env.t('add')
|
||||
|
||||
script(id='partials/options.settings.export.html', type="text/ng-template")
|
||||
.container-fluid
|
||||
@@ -258,7 +258,7 @@ mixin subPerks()
|
||||
tr
|
||||
td
|
||||
span.hint(popover=env.t('buyGemsGoldText', {gemCost: "{{Shared.planGemLimits.convRate}}", gemLimit: "{{Shared.planGemLimits.convCap}}"}),popover-trigger='mouseenter',popover-placement='right') #{env.t('buyGemsGold')}
|
||||
span.badge.badge-success(ng-show='_subscription.key!="basic_earned"') Cap raised to {{ [25 + user.purchased.plan.consecutive.gemCapExtra + Math.floor(Content.subscriptionBlocks[_subscription.key].months/3*5), 50] | min }}
|
||||
span.badge.badge-success(ng-show='_subscription.key!="basic_earned"')=env.t('buyGemsGoldCap', {amount: '{{:: gemGoldCap(_subscription) | min }}'})
|
||||
tr
|
||||
td
|
||||
span.hint(popover=env.t('retainHistoryText'),popover-trigger='mouseenter',popover-placement='right')=env.t('retainHistory')
|
||||
@@ -269,8 +269,8 @@ mixin subPerks()
|
||||
td
|
||||
span.hint(popover=env.t('mysteryItemText'),popover-trigger='mouseenter',popover-placement='right') #{env.t('mysteryItem')}
|
||||
div(ng-show='_subscription.key!="basic_earned"')
|
||||
.badge.badge-success +{{Math.floor(Content.subscriptionBlocks[_subscription.key].months/3)}} Mystic Hourglass
|
||||
.small.muted Mystic Hourglasses allow purchasing a previous month's Mystery Item set.
|
||||
.badge.badge-success=env.t('mysticHourglass', {amount: '+{{:: numberOfMysticHourglasses(_subscription)}}'})
|
||||
.small.muted=env.t('mysticHourglassText')
|
||||
tr
|
||||
td
|
||||
span.hint(popover=env.t('supportDevsText'),popover-trigger='mouseenter',popover-placement='right')=env.t('supportDevs')
|
||||
@@ -324,17 +324,17 @@ script(id='partials/options.settings.subscription.html',type='text/ng-template')
|
||||
| #{env.t('subCanceled')} <strong>{{moment(user.purchased.plan.dateTerminated).format('MM/DD/YYYY')}}</strong>
|
||||
tr(ng-if='!user.purchased.plan.dateTerminated'): td
|
||||
h4=env.t('subscribed')
|
||||
p(ng-if='user.purchased.plan.planId') Recurring ${{Content.subscriptionBlocks[user.purchased.plan.planId].price}} each {{Content.subscriptionBlocks[user.purchased.plan.planId].months}} Month(s) ({{user.purchased.plan.paymentMethod}})
|
||||
p(ng-if='user.purchased.plan.planId')=env.t('purchasedPlanId', {price: '{{Content.subscriptionBlocks[user.purchased.plan.planId].price}}', months: '{{Content.subscriptionBlocks[user.purchased.plan.planId].months}}', plan: '{{user.purchased.plan.paymentMethod}}'})
|
||||
tr(ng-if='user.purchased.plan.extraMonths'): td
|
||||
span.glyphicon.glyphicon-credit-card
|
||||
| You have {{user.purchased.plan.extraMonths | number:2}} months of subscription credit.
|
||||
| #{env.t('purchasedPlanExtraMonths', {months: '{{user.purchased.plan.extraMonths | number:2}}'})}
|
||||
tr(ng-if='user.purchased.plan.consecutive.count || user.purchased.plan.consecutive.offset'): td
|
||||
span.glyphicon.glyphicon-forward
|
||||
| Consecutive Subscription
|
||||
| #{env.t('consecutiveSubscription')}
|
||||
ul.list-unstyled
|
||||
li Consecutive Months: {{user.purchased.plan.consecutive.count + user.purchased.plan.consecutive.offset}}
|
||||
li Gem Cap Extra: {{user.purchased.plan.consecutive.gemCapExtra}}
|
||||
li Mystic Hourglasses: {{user.purchased.plan.consecutive.trinkets}}
|
||||
li #{env.t('consecutiveMonths')} {{user.purchased.plan.consecutive.count + user.purchased.plan.consecutive.offset}}
|
||||
li #{env.t('gemCapExtra')} {{user.purchased.plan.consecutive.gemCapExtra}}
|
||||
li #{env.t('mysticHourglasses')} {{user.purchased.plan.consecutive.trinkets}}
|
||||
div(ng-if='!user.purchased.plan.customerId || (user.purchased.plan.customerId && user.purchased.plan.dateTerminated)')
|
||||
.form-group
|
||||
.radio(ng-repeat='block in Content.subscriptionBlocks | toArray | omit: "discount==true" | orderBy:"months"')
|
||||
@@ -355,8 +355,8 @@ script(id='partials/options.settings.subscription.html',type='text/ng-template')
|
||||
|
||||
h3(ng-if='(user.purchased.plan.customerId && user.purchased.plan.dateTerminated)')= env.t("resubscribe")
|
||||
a.btn.btn-primary(ng-click='Payments.showStripe({subscription:_subscription.key, coupon:_subscription.coupon})', ng-disabled='!_subscription.key')= env.t('card')
|
||||
a.btn.btn-success(href='/paypal/subscribe?_id={{user._id}}&apiToken={{user.apiToken}}&sub={{_subscription.key}}{{_subscription.coupon ? "&coupon="+_subscription.coupon : ""}}', ng-disabled='!_subscription.key') PayPal
|
||||
a.btn.btn-warning(ng-click="Payments.amazonPayments.init({type: 'subscription', subscription:_subscription.key, coupon:_subscription.coupon})") Amazon Payments
|
||||
a.btn.btn-success(href='/paypal/subscribe?_id={{user._id}}&apiToken={{user.apiToken}}&sub={{_subscription.key}}{{_subscription.coupon ? "&coupon="+_subscription.coupon : ""}}', ng-disabled='!_subscription.key')=env.t('paypal')
|
||||
a.btn.btn-warning(ng-click="Payments.amazonPayments.init({type: 'subscription', subscription:_subscription.key, coupon:_subscription.coupon})")=env.t('amazonPayments')
|
||||
div(ng-if='user.purchased.plan.customerId')
|
||||
.btn.btn-primary(ng-if='!user.purchased.plan.dateTerminated && user.purchased.plan.paymentMethod=="Stripe"', ng-click='Payments.showStripeEdit()')=env.t('subUpdateCard')
|
||||
.btn.btn-sm.btn-danger(ng-if='!user.purchased.plan.dateTerminated', ng-click='Payments.cancelSubscription()')=env.t('cancelSub')
|
||||
|
||||
@@ -186,11 +186,13 @@ script(type='text/ng-template', id='partials/options.social.challenges.html')
|
||||
| {{challenge.group.name}}
|
||||
a(ui-sref="options.social.party" ng-if="challenge.group.type=='party'")
|
||||
| {{challenge.group.name}}
|
||||
li
|
||||
li(ng-if='challenge.leader.profile.name')
|
||||
=env.t('by') + ' '
|
||||
a(ng-click='clickMember(challenge.leader._id, true)') {{challenge.leader.profile.name}}
|
||||
li
|
||||
=env.t('participants', {membercount: "{{challenge.memberCount}}"})
|
||||
a(ng-click='clickMember(challenge.leader._id, true)') {{::challenge.leader.profile.name}}
|
||||
li(ng-if='!challenge.leader.profile.name',
|
||||
popover=env.t('noChallengeOwnerPopover'),
|
||||
popover-trigger='mouseenter')=env.t('noChallengeOwner')
|
||||
li=env.t('participants', {membercount: "{{challenge.memberCount}}"})
|
||||
li(ng-show='challenge.prize')
|
||||
p!=env.t('prizeValue', {gemcount: "{{challenge.prize}}", gemicon: "<span class='inline-block Pet_Currency_Gem1x'></span>"})
|
||||
li.bg-transparent
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
div.chat-form.guidelines-not-accepted(ng-if='!user.flags.communityGuidelinesAccepted')
|
||||
p If you would like to post messages in the Tavern or any party or guild chat, please first read our
|
||||
|
|
||||
a(target='_blank', href='/static/community-guidelines')=env.t('communityGuidelines')
|
||||
| and then click the button below to indicate that you accept them.
|
||||
p!=env.t('requestAcceptGuidelines', {linkStart: '<a target="_blank", href="/static/community-guidelines">', linkEnd: '</a>'})
|
||||
.chat-controls
|
||||
div
|
||||
button.btn.btn-warning(ng-click='acceptCommunityGuidelines()')=env.t('iAcceptCommunityGuidelines')
|
||||
|
||||
@@ -8,17 +8,17 @@ else
|
||||
.meter-label(tooltip=env.t('bossHP'))
|
||||
span.glyphicon.glyphicon-heart
|
||||
.meter.health
|
||||
.bar(ng-style='{width: Shared.percent(progress.hp, boss.hp) + "%"}')
|
||||
.bar(ng-style='{width: Shared.percent(group.quest.progress.hp, Content.quests[group.quest.key].boss.hp) + "%"}')
|
||||
span.meter-text.value
|
||||
| {{Math.ceil(progress.hp) | roundLargeNumbers}}
|
||||
| / {{::boss.hp | roundLargeNumbers}}
|
||||
div(ng-if='boss.rage')
|
||||
.meter-label(tooltip='Rage')
|
||||
| {{Math.ceil(group.quest.progress.hp) | roundLargeNumbers}}
|
||||
| / {{::Content.quests[group.quest.key].boss.hp | roundLargeNumbers}}
|
||||
div(ng-if='Content.quests[group.quest.key].boss.rage')
|
||||
.meter-label(tooltip=env.t('rage'))
|
||||
span.glyphicon.glyphicon-fire
|
||||
.meter.mana(popover="{{::boss.rage.description()}}",
|
||||
popover-title="{{::boss.rage.title()}}",
|
||||
.meter.mana(popover="{{::Content.quests[group.quest.key].boss.rage.description()}}",
|
||||
popover-title="{{::Content.quests[group.quest.key].boss.rage.title()}}",
|
||||
popover-trigger='mouseenter', popover-placement='bottom')
|
||||
.bar(ng-style='{width: Shared.percent(progress.rage, boss.rage.value) + "%"}')
|
||||
.bar(ng-style='{width: Shared.percent(group.quest.progress.rage, Content.quests[group.quest.key].boss.rage.value) + "%"}')
|
||||
span.meter-text.value
|
||||
| {{Math.ceil(progress.rage) | roundLargeNumbers}}
|
||||
| / {{::boss.rage.value | roundLargeNumbers}}
|
||||
| {{Math.ceil(group.quest.progress.rage) | roundLargeNumbers}}
|
||||
| / {{::Content.quests[group.quest.key].boss.rage.value | roundLargeNumbers}}
|
||||
|
||||
@@ -1,14 +1,19 @@
|
||||
.npc_ian.pull-left
|
||||
div(class="#{env.worldDmg.quests ? 'npc_ian_broken' : 'npc_ian'}").pull-left
|
||||
|
||||
div(ng-if='::Content.quests[group.quest.key].boss')
|
||||
if tavern
|
||||
p!=env.t('tavernBossInfo')
|
||||
p(ng-if='!env.worldDmg.quests')!=env.t('tavernBossInfo')
|
||||
p(ng-if='env.worldDmg.quests')!=env.t('tavernBossInfoBroken')
|
||||
else
|
||||
p!=env.t('bossDmg1')
|
||||
p(ng-if='!env.worldDmg.quests')!=env.t('bossDmg1')
|
||||
p(ng-if='env.worldDmg.quests')!=env.t('bossDmg1Broken')
|
||||
br
|
||||
p=env.t('bossDmg2')
|
||||
p(ng-if='!env.worldDmg.quests')=env.t('bossDmg2')
|
||||
p(ng-if='env.worldDmg.quests')=env.t('bossDmg2Broken')
|
||||
|
||||
div(ng-if='::Content.quests[group.quest.key].collect')
|
||||
p=env.t('bossColl1')
|
||||
p(ng-if='!env.worldDmg.quests')=env.t('bossColl1')
|
||||
p(ng-if='env.worldDmg.quests')=env.t('bossColl1Broken')
|
||||
br
|
||||
p=env.t('bossColl2')
|
||||
p(ng-if='!env.worldDmg.quests')=env.t('bossColl2')
|
||||
p(ng-if='env.worldDmg.quests')=env.t('bossColl2Broken')
|
||||
|
||||
@@ -9,12 +9,15 @@ div(ng-if='group.quest.active===true')
|
||||
include ./collectionStats
|
||||
|
||||
div(ng-bind-html='::Content.quests[group.quest.key].notes()')
|
||||
unless tavern
|
||||
quest-rewards(key='{{::group.quest.key}}')
|
||||
|
||||
tab(heading=env.t('questParticipants'))
|
||||
+participants(true)
|
||||
|
||||
if tavern
|
||||
include ./bossStats
|
||||
div(ng-bind-html='::Content.quests[group.quest.key].notes()')
|
||||
|
||||
hr
|
||||
|
||||
include ./ianQuestInfo
|
||||
|
||||
@@ -18,8 +18,9 @@ div(ng-if='group.quest.active===false')
|
||||
|
||||
hr
|
||||
|
||||
.npc_ian.pull-left
|
||||
p=env.t('questStart')
|
||||
div(class="#{env.worldDmg.quests ? 'npc_ian_broken' : 'npc_ian'}").pull-left
|
||||
p(ng-if='!env.worldDmg.quests')=env.t('questStart')
|
||||
p(ng-if='env.worldDmg.quests')=env.t('questStartBroken')
|
||||
|
||||
span(ng-if='user.party.quest.RSVPNeeded')
|
||||
button.btn.btn-sm.btn-success(ng-click='questAccept()')=env.t('accept')
|
||||
|
||||
@@ -14,10 +14,12 @@
|
||||
h3.popover-title
|
||||
a(target='_blank', href='http://www.kickstarter.com/profile/2014640723')=env.t('daniel')
|
||||
.popover-content
|
||||
| {{user.preferences.sleep ? env.t('innText',{name: user.profile.name}) : env.t('danielText')}}
|
||||
span(ng-if='!env.worldDmg.tavern') {{user.preferences.sleep ? env.t('innText',{name: user.profile.name}) : env.t('danielText')}}
|
||||
span(ng-if='env.worldDmg.tavern') {{user.preferences.sleep ? env.t('innTextBroken',{name: user.profile.name}) : env.t('danielTextBroken')}}
|
||||
button.btn-block.btn.btn-lg.btn-success(ng-click='User.user.ops.sleep({})')
|
||||
| {{user.preferences.sleep ? env.t('innCheckOut') : env.t('innCheckIn')}}
|
||||
span(ng-if='!user.preferences.sleep')=env.t('danielText2')
|
||||
span(ng-if='!user.preferences.sleep && !env.worldDmg.tavern')=env.t('danielText2')
|
||||
span(ng-if='!user.preferences.sleep && env.worldDmg.tavern')=env.t('danielText2Broken')
|
||||
|
||||
|
||||
// Resources
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
footer.footer(ng-controller='FooterCtrl')
|
||||
div(id='fb-root')
|
||||
.container
|
||||
.row
|
||||
.col-sm-3
|
||||
@@ -63,16 +64,19 @@ footer.footer(ng-controller='FooterCtrl')
|
||||
table
|
||||
tr
|
||||
td
|
||||
a.addthis_button_facebook_like(fb:like:layout='button_count')
|
||||
.fb-like(data-href='https://habitica.com/static/front', data-layout='button', data-action='like', data-share='true')
|
||||
tr
|
||||
td
|
||||
a.twitter-share-button(href='https://twitter.com/intent/tweet?text=Improve+yourself+in+the+land+of+Habitica!&via=habitica&url=https://habitica.com/&count=none')=env.t('tweet')
|
||||
tr
|
||||
td
|
||||
iframe(src='/bower_components/github-buttons/github-btn.html?user=habitrpg&repo=habitrpg&type=watch&count=true', allowtransparency='true', frameborder='0', scrolling='0', width='85px', height='20px')
|
||||
a.tumblr-share-button(data-href='https://habitica.com/static/front', data-notes='none')
|
||||
tr
|
||||
td
|
||||
a.addthis_button_google_plusone(g:plusone:size='medium')
|
||||
tr
|
||||
td
|
||||
iframe(src='/bower_components/github-buttons/github-btn.html?user=habitrpg&repo=habitrpg&type=watch&count=true', allowtransparency='true', frameborder='0', scrolling='0', width='85px', height='20px')
|
||||
else if (env.NODE_ENV==='development' || env.NODE_ENV==='test') && !env.isStaticPage
|
||||
h4 Debug
|
||||
.btn-group-vertical
|
||||
|
||||
@@ -38,9 +38,11 @@ script(type='text/ng-template', id='modals/showQuest.html')
|
||||
.modal-body
|
||||
+questInfo
|
||||
hr
|
||||
.npc_ian.pull-left
|
||||
p=env.t('questSend')
|
||||
p=env.t('questWarning')
|
||||
div(class="#{env.worldDmg.quests ? 'npc_ian_broken' : 'npc_ian'}").pull-left
|
||||
p(ng-if='!env.worldDmg.quests')=env.t('questSend')
|
||||
p(ng-if='!env.worldDmg.quests')=env.t('questWarning')
|
||||
p(ng-if='env.worldDmg.quests')=env.t('questSendBroken')
|
||||
p(ng-if='env.worldDmg.quests')=env.t('questWarningBroken')
|
||||
.modal-footer
|
||||
button.btn.btn-default(ng-click='closeQuest(); $close()')=env.t('cancel')
|
||||
button.btn.btn-primary(ng-click='questInit()')
|
||||
|
||||
@@ -9,7 +9,7 @@ script(type='text/ng-template', id='modals/reroll.html')
|
||||
.modal-footer
|
||||
button.btn.btn-default(ng-click='$close()')=env.t('neverMind')
|
||||
span(ng-if='user.balance < 1')
|
||||
a.btn.btn-success(ng-click='openModal("buyGems",{track:{"Gems > Reroll"}})')=env.t('buyMoreGems')
|
||||
a.btn.btn-success(ng-click='openModal("buyGems",{track:"Gems > Reroll"})')=env.t('buyMoreGems')
|
||||
span.gem-cost=env.t('notEnoughGems')
|
||||
span(ng-if='user.balance >= 1', ng-controller='SettingsCtrl')
|
||||
a.btn.btn-danger(ng-click='$close(); reroll()')=env.t('fortify')
|
||||
|
||||
@@ -1,32 +1,126 @@
|
||||
h2 10/5/2015 - OCTOBER BACKGROUNDS REVEALED, COSTUME CHALLENGE BEGINS, AND FALL PLOT-LINE CONTINUES
|
||||
h2 10/27/2015 - BURNOUT STRIKES AGAIN! PLUS, SPOOKY POTIONS VANISHING SOON
|
||||
hr
|
||||
tr
|
||||
td
|
||||
.background_harvest_moon.pull-right
|
||||
h3 October Backgrounds Revealed
|
||||
p There are three new avatar backgrounds in the <a href='/#/options/profile/backgrounds'>Background Shop!</a> Now your avatar can slog through a Slimy Swamp, cackle under the Harvest Moon, or shiver in the Swarming Darkness!
|
||||
p.small.muted by Leephon, midori88, and Draayder
|
||||
.npc_daniel_broken.pull-right
|
||||
h3 World Boss: Burnout Uses Exhaust Strike!
|
||||
p Many Habiticans have been hiding from Burnout in the Tavern, but no longer! With a screeching howl, Burnout rakes the Tavern with its white-hot hands. As the Tavern patrons flee, Daniel is caught in Burnout's grip, and transforms into an Exhaust Spirit right in front of you!
|
||||
br
|
||||
p This hot-headed horror has gone on for too long. Don't give up... we're so close to vanquishing Burnout for once and for all!
|
||||
br
|
||||
p Late to the fight? Learn about Burnout and how to defeat World Bosses <a href='http://habitica.wikia.com/wiki/Boss#World_Bosses' target='_blank'>here</a>.
|
||||
tr
|
||||
td
|
||||
h3 Costume Challenge Begins
|
||||
p The Community Costume Challenge has begun! Between now and October 31st, dress up as your avatar in real life and post a photo on social media to get the coveted Costume Challenge badge! Read the full rules on the Challenge page <a href='/#/options/groups/challenges/0b3d1116-89d3-4025-8a9e-593bc28e9cff'>here</a>.
|
||||
p.small.muted by Lemoness
|
||||
tr
|
||||
td
|
||||
h3 Fall Plot-Line Continues
|
||||
p Although we are now well into autumn, the Flourishing Fields are locked in a sweltering heat wave. The candies grow sticky in the sun, and the Spooky Pets lie panting in the shade. But this is minor news compared to the calamity that has just occurred.
|
||||
.Pet-Wolf-Spooky.pull-right
|
||||
h3 Spooky Potions Vanishing Soon
|
||||
p If you're hoping to collect all the Spooky Pets, be sure to do it soon. The Spooky Hatching Potions will disappear from the Market on November 1st!
|
||||
br
|
||||
p The Joyful Reaper is gone.
|
||||
br
|
||||
p The citizens of the Flourishing Fields are working frantically to find their lost ruler, but many of their search parties have not returned. Those few that do make it back are empty-handed. Worse yet, they report frightening hordes of spirits drifting at the edges of the Fields.
|
||||
br
|
||||
p Redphoenix grimly gathers her scouts. "If these spirits are a threat, we need to face them directly," she says. "There's no point in procrastination." Without fuss or fanfare, they set off into the night.
|
||||
p If you purchase Spooky Hatching Potions before November 1st but don't have a chance to use them, they will remain in your inventory. Be sure to stock up now, or you'll have to wait a whole year for them to return!
|
||||
|
||||
if menuItem !== 'oldNews'
|
||||
hr
|
||||
a(href='/static/old-news', target='_blank') Read older news
|
||||
|
||||
mixin oldNews
|
||||
h2 10/26/2015 - OCTOBER SUBSCRIBER ITEM REVEALED
|
||||
tr
|
||||
td
|
||||
.promo_mystery_201510.pull-right
|
||||
h3 October Subscriber Item: Horned Goblin!
|
||||
p The October Subscriber Item has been revealed: the Horned Goblin Set! All October subscribers will receive the Goblin Horns and the Goblin Tail. You still have four days to <a href='/#/options/settings/subscription'>subscribe</a> and receive the item set! Thank you so much for your support - we really do rely on you to keep Habitica free to use and running smoothly.
|
||||
p.small.muted by Lemoness
|
||||
|
||||
h2 10/21/2015 - FROG PET QUEST, TO-DO SORTING FIX, AND SECOND WORLD BOSS EXHAUST STRIKE
|
||||
tr
|
||||
td
|
||||
span.Mount_Body_Frog-Base.pull-right
|
||||
span.Mount_Head_Frog-Base.pull-right(style='margin:0')
|
||||
h3 Frog Pet Quest
|
||||
p Deep in the Swamps of Stagnation, you find your path obstructed by debris... and an angry amphibian. Yuck! If you complete the <a href='/#/options/inventory/quests'>Clutter Frog quest</a>, you'll be rewarded with some princely Frog pets!
|
||||
p.small.muted Art by starsystemic, RosemonkeyCT, Jon Arjinborn, and Breadstrings
|
||||
p.small.muted Writing by Fluitare
|
||||
tr
|
||||
td
|
||||
h3 To-Do Sorting Fix
|
||||
p To-dos will now stay sorted when you drag and drop them! Often, To-Dos used to change their order unless you cleared your completed To-Dos on a regular basis. That should no longer be a problem.
|
||||
p.small.muted by ikadzuchi and Alys
|
||||
tr
|
||||
td
|
||||
.seasonalshop_broken.pull-right
|
||||
h3 World Boss: Burnout Uses Exhaust Strike!
|
||||
p Ahh!!! Our incomplete Dailies have fed the flames of Burnout, and now it has enough energy to strike again! It lets loose a gout of spectral flame that sears the Seasonal Shop. You're horrified to see that the cheery Seasonal Sorceress has been transformed into a sorrowful Exhaust Spirit!
|
||||
br
|
||||
p We have to rescue our NPCs! Hurry, Habiticans, complete your tasks and defeat Burnout before it strikes for a third time!
|
||||
br
|
||||
p Late to the fight? Learn about Burnout and how to defeat World Bosses <a href='http://habitica.wikia.com/wiki/Boss#World_Bosses' target='_blank'>here</a>.
|
||||
h2 10/14/2015 - JACK O'LANTERN PETS AND MOUNTS! WORLD BOSS EXHAUST STRIKE!
|
||||
hr
|
||||
tr
|
||||
td
|
||||
.Pet-JackOLantern-Base.pull-right
|
||||
h3 Jack O'Lantern Pets and Mounts
|
||||
p The Flourishing Fields are full of cute carved pumpkins - and it looks like one has followed you home! It must be frightened of Burnout and looking for an adventurer to protect it.
|
||||
br
|
||||
p Those of you who weren't around last Fall Festival have received a pet Jack-O-Lantern, and those of you who got one last year have received a Jack-O-Lantern Mount! Happy Fall Festival.
|
||||
p.small.muted by Lemoness
|
||||
tr
|
||||
td
|
||||
.npc_ian_broken.pull-right
|
||||
h3 World Boss: Burnout Uses Exhaust Strike!
|
||||
p Oh no! Despite our best efforts, we've let some Dailies get away from us, and now Burnout is inflamed with energy! With a crackling snarl, it engulfs Ian the Quest Master in a surge of spectral fire. As fallen quest scrolls smolder, the smoke clears, and you see that Ian has been drained of energy and turned into a drifting Exhaust Spirit!
|
||||
br
|
||||
p Only defeating Burnout can break the spell and save our beloved Quest Master. Let's keep our Dailies in check and defeat this monster before it attacks again!
|
||||
br
|
||||
p Late to the fight? Learn about Burnout and how to defeat World Bosses <a href='http://habitica.wikia.com/wiki/Boss#World_Bosses' target='_blank'>here</a>.
|
||||
|
||||
h2 10/8/2015 - WORLD BOSS REVEALED: BURNOUT!
|
||||
tr
|
||||
td
|
||||
.promo_burnout.pull-right
|
||||
h3 Burnout, Scourge of the Flourishing Fields
|
||||
p It is well past midnight, still and stiflingly hot, when Redphoenix and scout captain Kiwibot abruptly burst through the city gates. "We need to evacuate all the wooden buildings!" Redphoenix shouts. "Hurry!"
|
||||
br
|
||||
p Kiwibot grips the wall as she catches her breath."It's draining people and turning them into Exhaust Spirits! That's why everything was delayed. That's where the missing people have gone. It's been stealing their energy!"
|
||||
br
|
||||
p "'It'?'" asks Lemoness.
|
||||
br
|
||||
p And then the heat takes form.
|
||||
br
|
||||
p It rises from the earth in a billowing, twisting mass, and the air chokes with the scent of smoke and sulphur. Flames lick across the molten ground and contort into limbs, writhing to horrific heights. Smoldering eyes snap open, and the creature lets out a deep and crackling cackle.
|
||||
br
|
||||
p Kiwibot whispers a single word.
|
||||
br
|
||||
p "Burnout."
|
||||
hr
|
||||
p Quickly, Habiticans, we have to save the Flourishing Fields from incineration! All of us will battle this World Boss together by completing tasks, but it won't attack us individually. However, the more Dailies we skip, the closer we get to triggering its fearsome Exhaust Strike, which will target our NPCs!
|
||||
br
|
||||
p Knowing your enemy is the first step to defeating it. <a href='http://habitica.wikia.com/wiki/Boss#World_Bosses' target='_blank'>Read more about World Bosses here</a>.
|
||||
br
|
||||
p.small.muted by Lemoness, SabreCat, and Kiwibot
|
||||
|
||||
h2 10/5/2015 - OCTOBER BACKGROUNDS REVEALED, COSTUME CHALLENGE BEGINS, AND FALL PLOT-LINE CONTINUES
|
||||
tr
|
||||
td
|
||||
.background_harvest_moon.pull-right
|
||||
h3 October Backgrounds Revealed
|
||||
p There are three new avatar backgrounds in the <a href='/#/options/profile/backgrounds'>Background Shop!</a> Now your avatar can slog through a Slimy Swamp, cackle under the Harvest Moon, or shiver in the Swarming Darkness!
|
||||
p.small.muted by Leephon, midori88, and Draayder
|
||||
tr
|
||||
td
|
||||
h3 Costume Challenge Begins
|
||||
p The Community Costume Challenge has begun! Between now and October 31st, dress up as your avatar in real life and post a photo on social media to get the coveted Costume Challenge badge! Read the full rules on the Challenge page <a href='/#/options/groups/challenges/0b3d1116-89d3-4025-8a9e-593bc28e9cff'>here</a>.
|
||||
p.small.muted by Lemoness
|
||||
tr
|
||||
td
|
||||
h3 Fall Plot-Line Continues
|
||||
p Although we are now well into autumn, the Flourishing Fields are locked in a sweltering heat wave. The candies grow sticky in the sun, and the Spooky Pets lie panting in the shade. But this is minor news compared to the calamity that has just occurred.
|
||||
br
|
||||
p The Joyful Reaper is gone.
|
||||
br
|
||||
p The citizens of the Flourishing Fields are working frantically to find their lost ruler, but many of their search parties have not returned. Those few that do make it back are empty-handed. Worse yet, they report frightening hordes of spirits drifting at the edges of the Fields.
|
||||
br
|
||||
p Redphoenix grimly gathers her scouts. "If these spirits are a threat, we need to face them directly," she says. "There's no point in procrastination." Without fuss or fanfare, they set off into the night.
|
||||
|
||||
h2 10/1/2015 - SPOOKY HATCHING POTION; NEW ITEMS IN THE ENCHANTED ARMOIRE
|
||||
tr
|
||||
td
|
||||
|
||||
@@ -21,7 +21,7 @@ div(ng-if='::profile.backer.npc')
|
||||
hr
|
||||
|
||||
div(ng-if='::profile.contributor.level || user._id == profile._id')
|
||||
.achievement.achievement-firefox(ng-if='::profile.contributor.level')
|
||||
.achievement.achievement-boot(ng-if='::profile.contributor.level')
|
||||
div(ng-class='::{muted: !profile.contributor.level}')
|
||||
h5
|
||||
span.label.label-default(ng-if='::profile.contributor.level', class='label-contributor-{{::profile.contributor.level}}') {{::contribText(profile.contributor, profile.backer)}}
|
||||
@@ -219,6 +219,13 @@ div(ng-if='::profile.achievements.quests.stressbeast')
|
||||
=env.t('achievementStressbeastText')
|
||||
hr
|
||||
|
||||
div(ng-if='::profile.achievements.quests.burnout')
|
||||
.achievement.achievement-burnout
|
||||
h5=env.t('achievementBurnout')
|
||||
small
|
||||
=env.t('achievementBurnoutText')
|
||||
hr
|
||||
|
||||
div(ng-if='::profile.achievements.costumeContest')
|
||||
.achievement.achievement-costumeContest
|
||||
h5=env.t('costumeContest')
|
||||
|
||||
@@ -19,7 +19,7 @@ block content
|
||||
br
|
||||
=env.t('reportBug')
|
||||
| :
|
||||
a(target='_blank', href='https://github.com/HabitRPG/habitrpg/issues?q=is%3Aopen') Github
|
||||
a(target='_blank', href='https://github.com/HabitRPG/habitrpg/issues?q=is%3Aopen') GitHub
|
||||
br
|
||||
=env.t('reportCommunityIssues')
|
||||
| :
|
||||
|
||||
@@ -18,7 +18,7 @@ block content
|
||||
=env.t('September')
|
||||
| 4, 2015
|
||||
|
||||
- var headings = ['overview', 'set-up-tasks', 'sample-tasks', 'task-color', 'health', 'party-with-friends', 'pets-mounts', 'character-classes', 'blue-mana-bar', 'monsters-quests', 'gems', 'bugs-features']
|
||||
- var headings = ['overview', 'set-up-tasks', 'sample-tasks', 'task-color', 'health', 'party-with-friends', 'pets-mounts', 'character-classes', 'blue-mana-bar', 'monsters-quests', 'gems', 'bugs-features', 'world-boss']
|
||||
- for heading, index in headings
|
||||
a.h2.accordion.collapsed(ng-href='#' + heading, data-toggle='collapse')=env.t('faqQuestion' + index)
|
||||
.clearfix.collapse(id=heading)
|
||||
|
||||
@@ -2,9 +2,6 @@ doctype html
|
||||
html(ng-app='habitrpg', ng-controller='RootCtrl')
|
||||
head
|
||||
meta(charset='utf-8')
|
||||
script(type='text/javascript').
|
||||
window.env = !{JSON.stringify(env._.pick(env, env.clientVars))};
|
||||
!= env.getManifestFiles("tmp_static_front")
|
||||
link(href='//fonts.googleapis.com/css?family=Lato:400,700', rel='stylesheet', type='text/css')
|
||||
title Habitica | Your Life the Role Playing Game
|
||||
meta(name='description', content='')
|
||||
@@ -12,16 +9,19 @@ html(ng-app='habitrpg', ng-controller='RootCtrl')
|
||||
meta(name='author', content='')
|
||||
meta(name='geo.placename', content='')
|
||||
meta(name='viewport', content='width=device-width, maximum-scale=1')
|
||||
meta(property='og:title', content='')
|
||||
meta(property='og:description', content='')
|
||||
meta(property='og:url', content='')
|
||||
meta(property='og:image', content='')
|
||||
meta(property='og:site_name', content='')
|
||||
meta(property='og:url', content='https://habitica.com/static/front')
|
||||
meta(property='og:type', content='website')
|
||||
meta(property='og:title', content='Habitica: Your Life the Role Playing Game')
|
||||
meta(property='og:description', content='Habitica is a free habit building and productivity app that treats your real life like a game. With in-game rewards and punishments to motivate you and a strong social network to inspire you, Habitica can help you achieve your goals to become healthy, hard-working, and happy.')
|
||||
meta(property='og:site_name', content='Habitica')
|
||||
meta(property='og:image', content='https://s3.amazonaws.com/habitica-assets/assets/gryphon_logo_300x300.png')
|
||||
meta(property='fb:app_id', content='128307497299777')
|
||||
meta(name='twitter:card' content='summary')
|
||||
meta(name='twitter:site' content='@habitica')
|
||||
meta(name='twitter:title' content='Habitica: Your Life the Role Playing Game')
|
||||
meta(name='twitter:description' content='Habitica is a free habit-building and productivity app that treats your real life like a game! Motivate yourself with in-game rewards and social encouragement.')
|
||||
meta(name='twitter:image' content='https://s3.amazonaws.com/habitica-assets/assets/gryphon_logo.png')
|
||||
meta(name='apple-itunes-app' content='app-id=994882113')
|
||||
link(rel='canonical', href='', type='text/html')
|
||||
link(rel='shortcut icon', href='/favicon.ico')
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ block content
|
||||
p= env.t('presskitDownload')
|
||||
|
|
||||
a.btn.btn-success(href='/presskit/presskit.zip') presskit.zip
|
||||
- var imgs = ['habitrpg_pixel', 'HabitRPGdevices', 'Market Sample Screen', 'Challenges Sample Screen', 'Equipment Sample Screen', 'Guilds Sample Screen', 'HabitRPGPromoPostCard6', 'HabitRPGPromoThin', 'Laundromancer_by_Arcosine', 'promo mobile inventorySTILL1', 'promo mobile inventorySTILL2', 'PROMOdevices2', 'SnackLessMonster_by_Arcosine', 'stag_battle_by_leephon', 'stagnant_dishes_by_kiwibot', 'vice_reborn_by_baconsaur']
|
||||
- var imgs = ['Habitica Text Logo', 'Habitica Logo Promo', 'Habitica Gryphon', 'Dread Drag\'on of Dilatory', 'Market Sample Screen', 'Challenges Sample Screen', 'Equipment Sample Screen', 'Guilds Sample Screen', 'HabiticaPromoThin', 'Laundromancer', 'Tasks Page', 'SnackLess Monster', 'Battling the Ghost Stag', 'Stagnant Dishes Boss', 'Necro-Vice']
|
||||
|
||||
//-#carousel.carousel.slide(data-ride='carousel')
|
||||
ol.carousel-indicators
|
||||
|
||||
Reference in New Issue
Block a user