Merge branch 'release' into sabrecat/timetrav-bgs
2
package-lock.json
generated
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "habitica",
|
||||
"version": "4.128.2",
|
||||
"version": "4.129.1",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "habitica",
|
||||
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
|
||||
"version": "4.128.2",
|
||||
"version": "4.129.1",
|
||||
"main": "./website/server/index.js",
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.7.5",
|
||||
|
|
|
|||
|
|
@ -211,7 +211,7 @@ describe('payments/index', () => {
|
|||
await api.createSubscription(data);
|
||||
const msg = '`Hello recipient, sender has sent you 3 months of subscription!`';
|
||||
|
||||
expect(user.sendMessage).to.be.calledTwice;
|
||||
expect(user.sendMessage).to.be.calledOnce;
|
||||
expect(user.sendMessage).to.be.calledWith(
|
||||
recipient,
|
||||
{ receiverMsg: msg, senderMsg: msg, save: false },
|
||||
|
|
@ -252,77 +252,6 @@ describe('payments/index', () => {
|
|||
},
|
||||
});
|
||||
});
|
||||
|
||||
context('Winter 2019-20 Gift-1-Get-1 Promotion', async () => {
|
||||
it('creates a gift subscription for purchaser and recipient if none exist', async () => {
|
||||
await api.createSubscription(data);
|
||||
|
||||
expect(user.items.pets['Jackalope-RoyalPurple']).to.eql(5);
|
||||
expect(user.purchased.plan.customerId).to.eql('Gift');
|
||||
expect(user.purchased.plan.dateTerminated).to.exist;
|
||||
expect(user.purchased.plan.dateUpdated).to.exist;
|
||||
expect(user.purchased.plan.dateCreated).to.exist;
|
||||
|
||||
expect(recipient.items.pets['Jackalope-RoyalPurple']).to.eql(5);
|
||||
expect(recipient.purchased.plan.customerId).to.eql('Gift');
|
||||
expect(recipient.purchased.plan.dateTerminated).to.exist;
|
||||
expect(recipient.purchased.plan.dateUpdated).to.exist;
|
||||
expect(recipient.purchased.plan.dateCreated).to.exist;
|
||||
});
|
||||
|
||||
it('adds extraMonths to existing subscription for purchaser and creates a gift subscription for recipient without sub', async () => {
|
||||
user.purchased.plan = plan;
|
||||
|
||||
expect(user.purchased.plan.extraMonths).to.eql(0);
|
||||
|
||||
await api.createSubscription(data);
|
||||
|
||||
expect(user.purchased.plan.extraMonths).to.eql(3);
|
||||
|
||||
expect(recipient.items.pets['Jackalope-RoyalPurple']).to.eql(5);
|
||||
expect(recipient.purchased.plan.customerId).to.eql('Gift');
|
||||
expect(recipient.purchased.plan.dateTerminated).to.exist;
|
||||
expect(recipient.purchased.plan.dateUpdated).to.exist;
|
||||
expect(recipient.purchased.plan.dateCreated).to.exist;
|
||||
});
|
||||
|
||||
it('adds extraMonths to existing subscription for recipient and creates a gift subscription for purchaser without sub', async () => {
|
||||
recipient.purchased.plan = plan;
|
||||
|
||||
expect(recipient.purchased.plan.extraMonths).to.eql(0);
|
||||
|
||||
await api.createSubscription(data);
|
||||
|
||||
expect(recipient.purchased.plan.extraMonths).to.eql(3);
|
||||
|
||||
expect(user.items.pets['Jackalope-RoyalPurple']).to.eql(5);
|
||||
expect(user.purchased.plan.customerId).to.eql('Gift');
|
||||
expect(user.purchased.plan.dateTerminated).to.exist;
|
||||
expect(user.purchased.plan.dateUpdated).to.exist;
|
||||
expect(user.purchased.plan.dateCreated).to.exist;
|
||||
});
|
||||
|
||||
it('adds extraMonths to existing subscriptions for purchaser and recipient', async () => {
|
||||
user.purchased.plan = plan;
|
||||
recipient.purchased.plan = plan;
|
||||
|
||||
expect(user.purchased.plan.extraMonths).to.eql(0);
|
||||
expect(recipient.purchased.plan.extraMonths).to.eql(0);
|
||||
|
||||
await api.createSubscription(data);
|
||||
|
||||
expect(user.purchased.plan.extraMonths).to.eql(3);
|
||||
expect(recipient.purchased.plan.extraMonths).to.eql(3);
|
||||
});
|
||||
|
||||
it('sends a private message about the promotion', async () => {
|
||||
await api.createSubscription(data);
|
||||
const msg = '`Hello sender, you received 3 months of subscription as part of our holiday gift-giving promotion!`';
|
||||
|
||||
expect(user.sendMessage).to.be.calledTwice;
|
||||
expect(user.sendMessage).to.be.calledWith(user, { senderMsg: msg });
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
context('Purchasing a subscription for self', () => {
|
||||
|
|
|
|||
|
|
@ -64,30 +64,6 @@
|
|||
></span>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="g1g1-banner d-flex justify-content-center align-items-center"
|
||||
v-if="!giftingHidden">
|
||||
<div
|
||||
class="svg-icon svg-gifts left-gift"
|
||||
v-html="icons.gifts">
|
||||
</div>
|
||||
<router-link class="g1g1-link" to="/user/settings/subscription">
|
||||
{{ $t('g1g1Announcement') }}
|
||||
</router-link>
|
||||
<div
|
||||
class="svg-icon svg-gifts right-gift"
|
||||
v-html="icons.gifts">
|
||||
</div>
|
||||
<div
|
||||
class="closepadding"
|
||||
@click="hideGiftingBanner()">
|
||||
<span
|
||||
class="svg-icon inline-icon icon-10"
|
||||
aria-hidden="true"
|
||||
v-html="icons.close">
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<notifications-display />
|
||||
<app-menu />
|
||||
<div class="container-fluid">
|
||||
|
|
@ -172,30 +148,6 @@
|
|||
flex: 1 0 auto;
|
||||
}
|
||||
|
||||
.g1g1-banner {
|
||||
width: 100%;
|
||||
min-height: 2.5rem;
|
||||
background-color: $teal-50;
|
||||
}
|
||||
|
||||
.g1g1-link {
|
||||
color: $white;
|
||||
}
|
||||
|
||||
.left-gift {
|
||||
margin: auto 1rem auto auto;
|
||||
}
|
||||
|
||||
.right-gift {
|
||||
margin: auto auto auto 1rem;
|
||||
filter: flipH;
|
||||
transform: scaleX(-1);
|
||||
}
|
||||
|
||||
.svg-gifts {
|
||||
width: 4.6rem;
|
||||
}
|
||||
|
||||
.notification {
|
||||
border-radius: 1000px;
|
||||
background-color: $green-10;
|
||||
|
|
@ -291,10 +243,8 @@ import {
|
|||
CONSTANTS,
|
||||
getLocalSetting,
|
||||
removeLocalSetting,
|
||||
setLocalSetting,
|
||||
} from '@/libs/userlocalManager';
|
||||
|
||||
import gifts from '@/assets/svg/gifts.svg';
|
||||
import svgClose from '@/assets/svg/close.svg';
|
||||
import bannedAccountModal from '@/components/bannedAccountModal';
|
||||
|
||||
|
|
@ -321,7 +271,6 @@ export default {
|
|||
return {
|
||||
icons: Object.freeze({
|
||||
close: svgClose,
|
||||
gifts,
|
||||
}),
|
||||
selectedItemToBuy: null,
|
||||
selectedSpellToBuy: null,
|
||||
|
|
@ -332,7 +281,6 @@ export default {
|
|||
loading: true,
|
||||
currentTipNumber: 0,
|
||||
bannerHidden: false,
|
||||
giftingHidden: getLocalSetting(CONSTANTS.keyConstants.GIFTING_BANNER_DISPLAY) === 'dismissed2019',
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
|
|
@ -726,10 +674,6 @@ export default {
|
|||
hideBanner () {
|
||||
this.bannerHidden = true;
|
||||
},
|
||||
hideGiftingBanner () {
|
||||
setLocalSetting(CONSTANTS.keyConstants.GIFTING_BANNER_DISPLAY, 'dismissed2019');
|
||||
this.giftingHidden = true;
|
||||
},
|
||||
resumeDamage () {
|
||||
this.$store.dispatch('user:sleep');
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
.promo_armoire_backgrounds_201912 {
|
||||
.promo_armoire_backgrounds_202001 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: 0px -175px;
|
||||
width: 423px;
|
||||
|
|
|
|||
|
|
@ -562,631 +562,631 @@
|
|||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_blacksmithy {
|
||||
.background_birthday_party {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1420px -444px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_blizzard {
|
||||
.background_blacksmithy {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1420px -592px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_blossoming_desert {
|
||||
.background_blizzard {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1420px -740px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_blue {
|
||||
.background_blossoming_desert {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1420px -888px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_bridge {
|
||||
.background_blue {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1420px -1036px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_bug_covered_log {
|
||||
.background_bridge {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: 0px 0px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_buried_treasure {
|
||||
.background_bug_covered_log {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: 0px -1332px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_champions_colosseum {
|
||||
.background_buried_treasure {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -142px -1332px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_cherry_trees {
|
||||
.background_champions_colosseum {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -284px -1332px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_chessboard_land {
|
||||
.background_cherry_trees {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -426px -1332px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_clouds {
|
||||
.background_chessboard_land {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -568px -1332px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_coral_reef {
|
||||
.background_clouds {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -710px -1332px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_cornfields {
|
||||
.background_coral_reef {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -852px -1332px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_cozy_barn {
|
||||
.background_cornfields {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -994px -1332px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_cozy_bedroom {
|
||||
.background_cozy_barn {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1136px -1332px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_cozy_library {
|
||||
.background_cozy_bedroom {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1278px -1332px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_creepy_castle {
|
||||
.background_cozy_library {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1420px -1332px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_crosscountry_ski_trail {
|
||||
.background_creepy_castle {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1562px 0px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_crystal_cave {
|
||||
.background_crosscountry_ski_trail {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1562px -148px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_dark_deep {
|
||||
.background_crystal_cave {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1562px -296px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_deep_mine {
|
||||
.background_dark_deep {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1562px -444px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_deep_sea {
|
||||
.background_deep_mine {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1562px -592px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_desert_dunes {
|
||||
.background_deep_sea {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1562px -740px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_dilatory_castle {
|
||||
.background_desert_dunes {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1562px -888px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_dilatory_city {
|
||||
.background_desert_with_snow {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1562px -1036px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_dilatory_ruins {
|
||||
.background_dilatory_castle {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1562px -1184px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_distant_castle {
|
||||
.background_dilatory_city {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1562px -1332px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_dojo {
|
||||
.background_dilatory_ruins {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: 0px -1480px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_drifting_raft {
|
||||
.background_distant_castle {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -142px -1480px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_driving_a_coach {
|
||||
.background_dojo {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -284px -1480px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_driving_a_sleigh {
|
||||
.background_drifting_raft {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -426px -1480px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_duck_pond {
|
||||
.background_driving_a_coach {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1420px -1184px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_dungeon {
|
||||
.background_driving_a_sleigh {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1136px -1036px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_dusty_canyons {
|
||||
.background_duck_pond {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -994px -1036px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_elegant_balcony {
|
||||
.background_dungeon {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -852px -1036px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_fairy_ring {
|
||||
.background_dusty_canyons {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -710px -1036px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_fantastical_shoe_store {
|
||||
.background_elegant_balcony {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -568px -1036px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_farmers_market {
|
||||
.background_fairy_ring {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -426px -1036px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_farmhouse {
|
||||
.background_fantastical_shoe_store {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -284px -1036px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_fiber_arts_room {
|
||||
.background_farmers_market {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -142px -1036px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_field_with_colored_eggs {
|
||||
.background_farmhouse {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: 0px -1036px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_floating_islands {
|
||||
.background_fiber_arts_room {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1136px -888px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_floral_meadow {
|
||||
.background_field_with_colored_eggs {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1136px -740px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_flower_market {
|
||||
.background_floating_islands {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1136px -592px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.customize-option.background_flower_market {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1161px -607px;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
}
|
||||
.background_flying_in_a_thunderstorm {
|
||||
.background_floral_meadow {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1136px -444px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_flying_over_a_field_of_wildflowers {
|
||||
.background_flower_market {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1136px -296px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.customize-option.background_flying_over_a_field_of_wildflowers {
|
||||
.customize-option.background_flower_market {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1161px -311px;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
}
|
||||
.background_flying_over_an_ancient_forest {
|
||||
.background_flying_in_a_thunderstorm {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1136px -148px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_flying_over_icy_steppes {
|
||||
.background_flying_over_a_field_of_wildflowers {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1136px 0px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_flying_over_rocky_canyon {
|
||||
.customize-option.background_flying_over_a_field_of_wildflowers {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1161px -15px;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
}
|
||||
.background_flying_over_an_ancient_forest {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -994px -888px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_flying_over_snowy_mountains {
|
||||
.background_flying_over_icy_steppes {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -852px -888px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_flying_over_tropical_islands {
|
||||
.background_flying_over_rocky_canyon {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -710px -888px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_foggy_moor {
|
||||
.background_flying_over_snowy_mountains {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -568px -888px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_forest {
|
||||
.background_flying_over_tropical_islands {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -426px -888px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_frigid_peak {
|
||||
.background_foggy_moor {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -284px -888px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_frosty_forest {
|
||||
.background_forest {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -142px -888px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_frozen_lake {
|
||||
.background_frigid_peak {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: 0px -888px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_garden_shed {
|
||||
.background_frosty_forest {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -994px -740px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_gazebo {
|
||||
.background_frozen_lake {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -994px -592px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_giant_birdhouse {
|
||||
.background_garden_shed {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -994px -444px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_giant_book {
|
||||
.background_gazebo {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -994px -296px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_giant_dandelions {
|
||||
.background_giant_birdhouse {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -994px -148px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_giant_florals {
|
||||
.background_giant_book {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -994px 0px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_giant_seashell {
|
||||
.background_giant_dandelions {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -852px -740px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_giant_wave {
|
||||
.background_giant_florals {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -710px -740px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_glowing_mushroom_cave {
|
||||
.background_giant_seashell {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -568px -740px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_gorgeous_greenhouse {
|
||||
.background_giant_wave {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -426px -740px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_grand_staircase {
|
||||
.background_glowing_mushroom_cave {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -284px -740px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_graveyard {
|
||||
.background_gorgeous_greenhouse {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -142px -740px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_green {
|
||||
.background_grand_staircase {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: 0px -740px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_guardian_statues {
|
||||
.background_graveyard {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -852px -592px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_gumdrop_land {
|
||||
.background_green {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -852px -444px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_habit_city_streets {
|
||||
.background_guardian_statues {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -852px -296px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_halflings_house {
|
||||
.background_gumdrop_land {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -852px -148px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_harvest_feast {
|
||||
.background_habit_city_streets {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -852px 0px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_harvest_fields {
|
||||
.background_halflings_house {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -710px -592px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_harvest_moon {
|
||||
.background_harvest_feast {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -568px -592px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_haunted_house {
|
||||
.background_harvest_fields {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -426px -592px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_holiday_market {
|
||||
.background_harvest_moon {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -284px -592px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_holiday_wreath {
|
||||
.background_haunted_house {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -142px -592px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_ice_cave {
|
||||
.background_holiday_market {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: 0px -592px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_iceberg {
|
||||
.background_holiday_wreath {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -710px -444px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_idyllic_cabin {
|
||||
.background_ice_cave {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -710px -296px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_in_a_classroom {
|
||||
.background_iceberg {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -710px -148px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_in_an_ancient_tomb {
|
||||
.background_idyllic_cabin {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -710px 0px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_island_waterfalls {
|
||||
.background_in_a_classroom {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -568px -444px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_kelp_forest {
|
||||
.background_in_an_ancient_tomb {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -426px -444px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_lake_with_floating_lanterns {
|
||||
.background_island_waterfalls {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -284px -444px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_lighthouse_shore {
|
||||
.background_kelp_forest {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -142px -444px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_lilypad {
|
||||
.background_lake_with_floating_lanterns {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: 0px -444px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_magic_beanstalk {
|
||||
.background_lighthouse_shore {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -568px -296px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_magical_candles {
|
||||
.background_lilypad {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -568px -148px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_magical_museum {
|
||||
.background_magic_beanstalk {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -568px 0px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_marble_temple {
|
||||
.background_magical_candles {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -426px -296px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_market {
|
||||
.background_magical_museum {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -284px -296px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_meandering_cave {
|
||||
.background_marble_temple {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -142px -296px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_medieval_kitchen {
|
||||
.background_market {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: 0px -296px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_midnight_castle {
|
||||
.background_meandering_cave {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -426px -148px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_midnight_clouds {
|
||||
.background_medieval_kitchen {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -426px 0px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_midnight_lake {
|
||||
.background_midnight_castle {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -284px -148px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_mist_shrouded_mountain {
|
||||
.background_midnight_clouds {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -142px -148px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_mistiflying_circus {
|
||||
.background_midnight_lake {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: 0px -148px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_monster_makers_workshop {
|
||||
.background_mist_shrouded_mountain {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -284px 0px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_mountain_lake {
|
||||
.background_mistiflying_circus {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -142px 0px;
|
||||
width: 141px;
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 80 KiB |
|
Before Width: | Height: | Size: 477 KiB After Width: | Height: | Size: 476 KiB |
|
Before Width: | Height: | Size: 688 KiB After Width: | Height: | Size: 687 KiB |
|
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 115 KiB |
|
Before Width: | Height: | Size: 113 KiB After Width: | Height: | Size: 110 KiB |
|
Before Width: | Height: | Size: 340 KiB After Width: | Height: | Size: 313 KiB |
|
Before Width: | Height: | Size: 342 KiB After Width: | Height: | Size: 353 KiB |
|
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 153 KiB |
|
Before Width: | Height: | Size: 155 KiB After Width: | Height: | Size: 154 KiB |
|
Before Width: | Height: | Size: 135 KiB After Width: | Height: | Size: 136 KiB |
|
Before Width: | Height: | Size: 138 KiB After Width: | Height: | Size: 137 KiB |
|
Before Width: | Height: | Size: 173 KiB After Width: | Height: | Size: 171 KiB |
|
Before Width: | Height: | Size: 133 KiB After Width: | Height: | Size: 132 KiB |
|
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 81 KiB |
|
Before Width: | Height: | Size: 152 KiB After Width: | Height: | Size: 152 KiB |
|
Before Width: | Height: | Size: 146 KiB After Width: | Height: | Size: 144 KiB |
|
Before Width: | Height: | Size: 153 KiB After Width: | Height: | Size: 154 KiB |
|
Before Width: | Height: | Size: 162 KiB After Width: | Height: | Size: 160 KiB |
|
Before Width: | Height: | Size: 178 KiB After Width: | Height: | Size: 178 KiB |
|
Before Width: | Height: | Size: 160 KiB After Width: | Height: | Size: 162 KiB |
|
Before Width: | Height: | Size: 150 KiB After Width: | Height: | Size: 159 KiB |
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 59 KiB |
|
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 83 KiB |
|
Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 126 KiB |
|
Before Width: | Height: | Size: 119 KiB After Width: | Height: | Size: 117 KiB |
|
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 142 KiB |
|
Before Width: | Height: | Size: 129 KiB After Width: | Height: | Size: 134 KiB |
|
|
@ -121,7 +121,7 @@
|
|||
v-if="editing"
|
||||
class="menu-container col-2"
|
||||
:class="{active: activeTopPage === 'backgrounds'}"
|
||||
@click="changeTopPage('backgrounds', '2019')"
|
||||
@click="changeTopPage('backgrounds', '2020')"
|
||||
>
|
||||
<div class="menu-item">
|
||||
<div
|
||||
|
|
@ -1160,7 +1160,7 @@ export default {
|
|||
},
|
||||
],
|
||||
|
||||
bgSubMenuItems: ['2019', '2018', '2017', '2016', '2015', '2014'].map(y => ({
|
||||
bgSubMenuItems: ['2020', '2019', '2018', '2017', '2016', '2015', '2014'].map(y => ({
|
||||
id: y,
|
||||
label: y,
|
||||
})),
|
||||
|
|
@ -1183,6 +1183,7 @@ export default {
|
|||
2017: [],
|
||||
2018: [],
|
||||
2019: [],
|
||||
2020: [],
|
||||
};
|
||||
|
||||
// Hack to force update for now until we restructure the data
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@
|
|||
</h3>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<!-- eslint-disable vue/no-use-v-if-with-v-for -->
|
||||
<div
|
||||
|
|
@ -98,11 +98,6 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<h4 v-once> {{ $t('winterPromoGiftHeader') }} </h4>
|
||||
<p v-once> {{ $t('winterPromoGiftDetails1') }} </p>
|
||||
<p v-once> {{ $t('winterPromoGiftDetails2') }} </p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,19 +1,5 @@
|
|||
<template>
|
||||
<div class="standard-page pt-0 px-0">
|
||||
<div class="banner-g1g1 mx-n3 d-flex justify-content-center">
|
||||
<div
|
||||
class="svg-icon svg-gifts my-auto mr-5 ml-auto"
|
||||
v-html="icons.giftsVertical">
|
||||
</div>
|
||||
<div class="my-auto text-center">
|
||||
<strong> {{ $t('g1g1Announcement') }} </strong>
|
||||
<div class="mt-1"> {{ $t('g1g1Details') }} </div>
|
||||
</div>
|
||||
<div
|
||||
class="svg-icon svg-gifts gifts-right my-auto ml-5 mr-auto"
|
||||
v-html="icons.giftsVertical">
|
||||
</div>
|
||||
</div>
|
||||
<h1>{{ $t('subscription') }}</h1>
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
|
|
@ -251,11 +237,6 @@
|
|||
{{ $t('giftSubscriptionText4') }}
|
||||
</h4>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<h2 v-once> {{ $t('winterPromoGiftHeader') }} </h2>
|
||||
<p v-once> {{ $t('winterPromoGiftDetails1') }} </p>
|
||||
<p v-once> {{ $t('winterPromoGiftDetails2') }} </p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
|
@ -267,25 +248,9 @@
|
|||
color: $white;
|
||||
}
|
||||
|
||||
.banner-g1g1 {
|
||||
height: 5.75rem;
|
||||
background-color: $teal-50;
|
||||
color: $white;
|
||||
}
|
||||
|
||||
.gifts-right {
|
||||
filter: flipH;
|
||||
transform: scaleX(-1);
|
||||
}
|
||||
|
||||
.subscribe-pay {
|
||||
margin-top: 1em;
|
||||
}
|
||||
|
||||
.svg-gifts {
|
||||
width: 55px;
|
||||
height: 65px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
|
|
@ -302,7 +267,6 @@ import notificationsMixin from '../../mixins/notifications';
|
|||
|
||||
import amazonButton from '@/components/payments/amazonButton';
|
||||
import creditCardIcon from '@/assets/svg/credit-card-icon.svg';
|
||||
import giftsVertical from '@/assets/svg/gifts-vertical.svg';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
|
@ -331,7 +295,6 @@ export default {
|
|||
},
|
||||
icons: Object.freeze({
|
||||
creditCardIcon,
|
||||
giftsVertical,
|
||||
}),
|
||||
};
|
||||
},
|
||||
|
|
|
|||
|
|
@ -20,10 +20,6 @@
|
|||
z-index: 1400; // 1400 is above modal backgrounds
|
||||
|
||||
&-top-pos {
|
||||
&-double {
|
||||
top: 145px;
|
||||
}
|
||||
|
||||
&-normal {
|
||||
top: 65px;
|
||||
}
|
||||
|
|
@ -38,7 +34,6 @@
|
|||
<script>
|
||||
import { mapState } from '@/libs/store';
|
||||
import notification from './notification';
|
||||
import { CONSTANTS, getLocalSetting } from '@/libs/userlocalManager';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
|
@ -52,9 +47,7 @@ export default {
|
|||
notificationsTopPos () {
|
||||
const base = 'notifications-top-pos-';
|
||||
let modifier = '';
|
||||
if (this.userSleeping && this.giftingShown) {
|
||||
modifier = 'double';
|
||||
} else if (this.userSleeping || this.giftingShown) {
|
||||
if (this.userSleeping) {
|
||||
modifier = 'sleeping';
|
||||
} else {
|
||||
modifier = 'normal';
|
||||
|
|
@ -62,10 +55,5 @@ export default {
|
|||
return `${base}${modifier}`;
|
||||
},
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
giftingShown: getLocalSetting(CONSTANTS.keyConstants.GIFTING_BANNER_DISPLAY) !== 'dismissed',
|
||||
};
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ const CONSTANTS = {
|
|||
CURRENT_EQUIPMENT_DRAWER_TAB: 'current-equipment-drawer-tab',
|
||||
STABLE_SORT_STATE: 'stable-sort-state',
|
||||
ONBOARDING_PANEL_STATE: 'onboarding-panel-state',
|
||||
GIFTING_BANNER_DISPLAY: 'gifting-banner-display',
|
||||
},
|
||||
drawerStateValues: {
|
||||
DRAWER_CLOSED: 'drawer-closed',
|
||||
|
|
|
|||
|
|
@ -555,6 +555,14 @@
|
|||
"backgroundWinterNocturneText": "Winter Nocturne",
|
||||
"backgroundWinterNocturneNotes": "Bask in the starlight of a Winter Nocturne.",
|
||||
|
||||
"backgrounds012020": "SET 68: Released January 2020",
|
||||
"backgroundBirthdayPartyText": "Birthday Party",
|
||||
"backgroundBirthdayPartyNotes": "Celebrate the Birthday Party of your favorite Habitican.",
|
||||
"backgroundDesertWithSnowText": "Snowy Desert",
|
||||
"backgroundDesertWithSnowNotes": "Witness the rare and quiet beauty of a Snowy Desert.",
|
||||
"backgroundSnowglobeText": "Snowglobe",
|
||||
"backgroundSnowglobeNotes": "Shake up a Snowglobe and take your place in a microcosm of a winter landscape.",
|
||||
|
||||
"timeTravelBackgrounds": "Steampunk Backgrounds",
|
||||
"backgroundAirshipText": "Airship",
|
||||
"backgroundAirshipNotes": "Become a sky sailor on board your very own Airship.",
|
||||
|
|
|
|||
|
|
@ -469,6 +469,8 @@
|
|||
"weaponArmoireShadowMastersMaceNotes": "Creatures of darkness will obey your every command when you wave this glowing mace. Increases Perception by <%= per %>. Enchanted Armoire: Shadow Master Set (Item 3 of 4).",
|
||||
"weaponArmoireAlchemistsDistillerText": "Alchemist's Distiller",
|
||||
"weaponArmoireAlchemistsDistillerNotes": "Purify metals and other magical compounds with this shiny brass instrument. Increases Strength by <%= str %> and Intelligence by <%= int %>. Enchanted Armoire: Alchemist Set (Item 3 of 4).",
|
||||
"weaponArmoireHappyBannerText": "Happy Banner",
|
||||
"weaponArmoireHappyBannerNotes": "Is the “H” for Happy, or Habitica? Your choice! Increases Perception by <%= per %>. Enchanted Armoire: Happy Birthday Set (Item 3 of 4).",
|
||||
|
||||
"armor": "armor",
|
||||
"armorCapitalized": "Armor",
|
||||
|
|
@ -1012,6 +1014,8 @@
|
|||
"armorArmoireAlchemistsRobeNotes": "Any number of dangerous elixirs are involved in creating arcane metals and gems, and these heavy robes will protect you from harm and unintended side effects! Increases Constitution by <%= con %> and Perception by <%= per %>. Enchanted Armoire: Alchemist Set (Item 1 of 4).",
|
||||
"armorArmoireDuffleCoatText": "Duffle Coat",
|
||||
"armorArmoireDuffleCoatNotes": "Travel frosty realms in style with this cozy wool coat. Increases Constitution and Perception by <%= attrs %> each. Enchanted Armoire: Duffle Coat Set (Item 1 of 2).",
|
||||
"armorArmoireLayerCakeArmorText": "Layer Cake Armor",
|
||||
"armorArmoireLayerCakeArmorNotes": "It's protective and tasty! Increases Constitution by <%= con %>. Enchanted Armoire: Happy Birthday Set (Item 2 of 4).",
|
||||
|
||||
"headgear": "helm",
|
||||
"headgearCapitalized": "Headgear",
|
||||
|
|
@ -1573,6 +1577,8 @@
|
|||
"headArmoireAlchemistsHatNotes": "While hats are not strictly necessary for alchemical practice, looking cool certainly doesn't hurt anything! Increases Perception by <%= per %>. Enchanted Armoire: Alchemist Set (Item 2 of 4).",
|
||||
"headArmoireEarflapHatText": "Earflap Hat",
|
||||
"headArmoireEarflapHatNotes": "If you're looking to keep your head toasty warm, this hat has you covered! Increases Intelligence and Strength by <%= attrs %> each. Enchanted Armoire: Duffle Coat Set (Item 2 of 2).",
|
||||
"headArmoireFrostedHelmText": "Frosted Helm",
|
||||
"headArmoireFrostedHelmNotes": "The perfect headgear for any celebration! Increases Intelligence by <%= int %>. Enchanted Armoire: Happy Birthday Set (Item 1 of 4).",
|
||||
|
||||
"offhand": "off-hand item",
|
||||
"offhandCapitalized": "Off-Hand Item",
|
||||
|
|
@ -1875,6 +1881,8 @@
|
|||
"shieldArmoireMasteredShadowNotes": "Your powers have brought these swirling shadows to your side to do your bidding. Increases Perception and Constitution by <%= attrs %> each. Enchanted Armoire: Shadow Master Set (Item 4 of 4).",
|
||||
"shieldArmoireAlchemistsScaleText": "Alchemist's Scale",
|
||||
"shieldArmoireAlchemistsScaleNotes": "Ensure that your mystical ingredients are properly measured using this fine piece of equipment. Increases Intelligence by <%= int %>. Enchanted Armoire: Alchemist Set (Item 4 of 4).",
|
||||
"shieldArmoireBirthdayBannerText": "Birthday Banner",
|
||||
"shieldArmoireBirthdayBannerNotes": "Celebrate your special day, the special day of someone you love, or break this out for Habitica's Birthday on January 31! Increases Strength by <%= str %>. Enchanted Armoire: Happy Birthday Set (Item 4 of 4).",
|
||||
|
||||
"back": "Back Accessory",
|
||||
"backCapitalized": "Back Accessory",
|
||||
|
|
|
|||
|
|
@ -941,6 +941,20 @@ const backgrounds = {
|
|||
notes: t('backgroundWinterNocturneNotes'),
|
||||
},
|
||||
},
|
||||
backgrounds012020: {
|
||||
birthday_party: {
|
||||
text: t('backgroundBirthdayPartyText'),
|
||||
notes: t('backgroundBirthdayPartyNotes'),
|
||||
},
|
||||
desert_with_snow: {
|
||||
text: t('backgroundDesertWithSnowText'),
|
||||
notes: t('backgroundDesertWithSnowNotes'),
|
||||
},
|
||||
snowglobe: {
|
||||
text: t('backgroundSnowglobeText'),
|
||||
notes: t('backgroundSnowglobeNotes'),
|
||||
},
|
||||
},
|
||||
incentiveBackgrounds: {
|
||||
violet: {
|
||||
text: t('backgroundVioletText'),
|
||||
|
|
|
|||
|
|
@ -516,6 +516,14 @@ const armor = {
|
|||
set: 'duffle',
|
||||
canOwn: ownsItem('armor_armoire_duffleCoat'),
|
||||
},
|
||||
layerCakeArmor: {
|
||||
text: t('armorArmoireLayerCakeArmorText'),
|
||||
notes: t('armorArmoireLayerCakeArmorNotes', { con: 13 }),
|
||||
value: 100,
|
||||
con: 13,
|
||||
set: 'birthday',
|
||||
canOwn: ownsItem('armor_armoire_layerCakeArmor'),
|
||||
},
|
||||
};
|
||||
|
||||
const body = {
|
||||
|
|
@ -1055,6 +1063,14 @@ const head = {
|
|||
set: 'duffle',
|
||||
canOwn: ownsItem('head_armoire_earflapHat'),
|
||||
},
|
||||
frostedHelm: {
|
||||
text: t('headArmoireFrostedHelmText'),
|
||||
notes: t('headArmoireFrostedHelmNotes', { int: 13 }),
|
||||
value: 100,
|
||||
int: 13,
|
||||
set: 'birthday',
|
||||
canOwn: ownsItem('head_armoire_frostedHelm'),
|
||||
},
|
||||
};
|
||||
|
||||
const shield = {
|
||||
|
|
@ -1342,6 +1358,14 @@ const shield = {
|
|||
set: 'alchemist',
|
||||
canOwn: ownsItem('shield_armoire_alchemistsScale'),
|
||||
},
|
||||
birthdayBanner: {
|
||||
text: t('shieldArmoireBirthdayBannerText'),
|
||||
notes: t('shieldArmoireBirthdayBannerNotes', { str: 7 }),
|
||||
value: 100,
|
||||
str: 7,
|
||||
set: 'birthday',
|
||||
canOwn: ownsItem('shield_armoire_birthdayBanner'),
|
||||
},
|
||||
};
|
||||
|
||||
const headAccessory = {
|
||||
|
|
@ -1797,6 +1821,14 @@ const weapon = {
|
|||
set: 'alchemist',
|
||||
canOwn: ownsItem('weapon_armoire_alchemistsDistiller'),
|
||||
},
|
||||
happyBanner: {
|
||||
text: t('weaponArmoireHappyBannerText'),
|
||||
notes: t('weaponArmoireHappyBannerNotes', { per: 7 }),
|
||||
value: 100,
|
||||
per: 7,
|
||||
set: 'birthday',
|
||||
canOwn: ownsItem('weapon_armoire_happyBanner'),
|
||||
},
|
||||
};
|
||||
|
||||
export {
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 5.4 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 1,017 B |
|
After Width: | Height: | Size: 1 KiB |
|
After Width: | Height: | Size: 605 B |
|
After Width: | Height: | Size: 867 B |
|
After Width: | Height: | Size: 905 B |
|
After Width: | Height: | Size: 502 B |
|
After Width: | Height: | Size: 467 B |
|
After Width: | Height: | Size: 1,017 B |
|
After Width: | Height: | Size: 579 B |
|
Before Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
|
@ -4,7 +4,7 @@ const api = {};
|
|||
|
||||
// @TODO export this const, cannot export it from here because only routes are exported from
|
||||
// controllers
|
||||
const LAST_ANNOUNCEMENT_TITLE = 'JANUARY SUBSCRIBER ITEMS AND OFFICIAL HABITICA CHALLENGES!';
|
||||
const LAST_ANNOUNCEMENT_TITLE = 'JANUARY BACKGROUNDS AND ARMOIRE ITEMS!';
|
||||
const worldDmg = { // @TODO
|
||||
bailey: false,
|
||||
};
|
||||
|
|
@ -31,68 +31,23 @@ api.getNews = {
|
|||
<div class="mr-3 ${baileyClass}"></div>
|
||||
<div class="media-body">
|
||||
<h1 class="align-self-center">${res.t('newStuff')}</h1>
|
||||
<h2>1/1/2020 - ${LAST_ANNOUNCEMENT_TITLE}</h2>
|
||||
<h2>1/6/2020 - ${LAST_ANNOUNCEMENT_TITLE}</h2>
|
||||
</div>
|
||||
</div>
|
||||
<hr/>
|
||||
<div class="promo_mystery_202001 center-block"></div>
|
||||
<h3>January Subscriber Items Revealed!</h3>
|
||||
<div class="promo_armoire_backgrounds_202001 center-block"></div>
|
||||
<p>
|
||||
The January Subscriber Items have been revealed: the Fabled Fox Item Set! You'll receive
|
||||
this set if you <a href='/user/settings/subscription'>subscribe to Habitica</a> by
|
||||
January 31. If you're already an active subscriber, reload the site and then head to
|
||||
Inventory > Items to claim your gear!
|
||||
We’ve added three new backgrounds to the Background Shop! Now your avatar can celebrate
|
||||
at a Birthday Party, gaze at the quiet beauty of a Snowy Desert, and strike a festive
|
||||
pose In A Snowglobe. Check them out under User Icon > Backgrounds!
|
||||
</p>
|
||||
<p>
|
||||
Subscribers also receive the ability to buy Gems with Gold and other awesome perks! Plus,
|
||||
our Gift-One-Get-One promotion is running now, so it's the perfect time to check it out.
|
||||
Gift-One-Get-One runs until January 6.
|
||||
</p>
|
||||
<p>Thank you very much for your support -- it means a lot to us.</p>
|
||||
<div class="small mb-3">by Beffymaroo</div>
|
||||
<div class="scene_list center-block"></div>
|
||||
<h3>January 2020 Resolution Success Challenge and Take This Challenge</h3>
|
||||
<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 2020 progresses.
|
||||
</p>
|
||||
<p>
|
||||
Check out the first New Year's Resolution Challenge of the year to start your path to
|
||||
resolution success! In <a href='/challenges/463efbbf-8d98-413d-9bdc-708ab336414e'>Begin
|
||||
Your Quest</a>, we're focusing on choosing realistic and achievable resolutions! One
|
||||
grand-prize winner will receive their choice of a one-month gift subscription to Habitica
|
||||
or 25 Gems when it closes on February 3rd. Four lucky runners-up will get a 15 Gem prize.
|
||||
</p>
|
||||
<p>
|
||||
Congratulations to the winners of December's Challenge, @AndoJun, @SilverSquirrel,
|
||||
@CathB, @IntegrationAsh, and @DerRue!
|
||||
</p>
|
||||
<div class="promo_take_this center-block"></div>
|
||||
<p>
|
||||
The next Take This Challenge has also launched, <a
|
||||
href='/challenges/8a4beff7-ce41-48de-b963-7194f85b656e'>Hero's Triumph</a>, with a focus
|
||||
on volunteering. 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, "Test Thy Courage!":
|
||||
grand prize winner @r-flan2020, and runners-up @SPLOOean, @Bobette37, @WizardGnome,
|
||||
@pearlygeek, and @drilcipher! 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!
|
||||
Plus, there’s new Gold-purchasable equipment in the Enchanted Armoire, including the
|
||||
Birthday Cake set. Better work hard on your real-life tasks to earn all the pieces!
|
||||
Enjoy :)
|
||||
</p>
|
||||
<div class="small mb-3">
|
||||
by Doctor B, the Take This team, Lemoness, Beffymaroo, and SabreCat
|
||||
by FolleMente, Shine Caramia, Aspiring Advocate, gawrone, katieslug, and SabreCat
|
||||
</div>
|
||||
</div>
|
||||
`,
|
||||
|
|
|
|||
|
|
@ -234,20 +234,6 @@ async function createSubscription (data) {
|
|||
|
||||
// Only send push notifications if sending to a user other than yourself
|
||||
if (data.gift.member._id !== data.user._id) {
|
||||
const promoData = {
|
||||
user: data.user,
|
||||
gift: {
|
||||
member: data.user,
|
||||
subscription: {
|
||||
key: data.gift.subscription.key,
|
||||
},
|
||||
},
|
||||
paymentMethod: data.paymentMethod,
|
||||
promo: 'Winter',
|
||||
promoUsername: data.gift.member.auth.local.username,
|
||||
};
|
||||
await this.createSubscription(promoData);
|
||||
|
||||
if (data.gift.member.preferences.pushNotifications.giftedSubscription !== false) {
|
||||
sendPushNotification(data.gift.member,
|
||||
{
|
||||
|
|
|
|||
|
|
@ -182,7 +182,7 @@ function sendSubscriptionNotification ({
|
|||
let text;
|
||||
const timestamp = new Date();
|
||||
if (recipient.id) {
|
||||
text = `${buyer.name} ${buyer.id} ${buyer.email} bought a ${months}-month gift subscription for ${recipient.name} ${recipient.id} ${recipient.email} and got a promo using ${paymentMethod} on ${timestamp}`;
|
||||
text = `${buyer.name} ${buyer.id} ${buyer.email} bought a ${months}-month gift subscription for ${recipient.name} ${recipient.id} ${recipient.email} using ${paymentMethod} on ${timestamp}`;
|
||||
} else if (groupId) {
|
||||
text = `${buyer.name} ${buyer.id} ${buyer.email} bought a 1-month recurring group-plan for ${groupId} using ${paymentMethod} on ${timestamp}`;
|
||||
} else {
|
||||
|
|
|
|||