Merge branch 'develop' into api-v3
@@ -130,12 +130,6 @@
|
||||
width: 100px;
|
||||
height: 137px;
|
||||
}
|
||||
.customize-option.promo_haunted_hair {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1372px -209px;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
}
|
||||
.promo_item_notif {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1190px -91px;
|
||||
@@ -334,12 +328,6 @@
|
||||
width: 330px;
|
||||
height: 83px;
|
||||
}
|
||||
.customize-option.promo_shimmer_hair {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -356px -998px;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
}
|
||||
.promo_splashyskins {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1190px -823px;
|
||||
@@ -412,12 +400,6 @@
|
||||
width: 152px;
|
||||
height: 75px;
|
||||
}
|
||||
.customize-option.promo_winteryhair {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1215px -1021px;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
}
|
||||
.avatar_variety {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: 0px -525px;
|
||||
|
||||
5948
common/dist/sprites/spritesmith-main-1.css
vendored
BIN
common/dist/sprites/spritesmith-main-1.png
vendored
|
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 60 KiB |
6596
common/dist/sprites/spritesmith-main-2.css
vendored
BIN
common/dist/sprites/spritesmith-main-2.png
vendored
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
3452
common/dist/sprites/spritesmith-main-3.css
vendored
BIN
common/dist/sprites/spritesmith-main-3.png
vendored
|
Before Width: | Height: | Size: 136 KiB After Width: | Height: | Size: 137 KiB |
622
common/dist/sprites/spritesmith-main-4.css
vendored
BIN
common/dist/sprites/spritesmith-main-4.png
vendored
|
Before Width: | Height: | Size: 129 KiB After Width: | Height: | Size: 130 KiB |
752
common/dist/sprites/spritesmith-main-5.css
vendored
BIN
common/dist/sprites/spritesmith-main-5.png
vendored
|
Before Width: | Height: | Size: 320 KiB After Width: | Height: | Size: 321 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
BIN
common/img/sprites/spritesmith/customize/chairs/chair_black.png
Normal file
|
After Width: | Height: | Size: 891 B |
@@ -34,6 +34,7 @@
|
||||
"beard": "Beard",
|
||||
"mustache": "Mustache",
|
||||
"flower": "Flower",
|
||||
"wheelchair": "Wheelchair",
|
||||
"basicSkins": "Basic Skins",
|
||||
"rainbowSkins": "Rainbow Skins",
|
||||
"pastelSkins": "Pastel Skins",
|
||||
|
||||
6
common/script/content/appearance/chair.js
Normal file
@@ -0,0 +1,6 @@
|
||||
import prefill from './prefill.js';
|
||||
|
||||
export default prefill({
|
||||
none: {},
|
||||
black: {},
|
||||
});
|
||||
@@ -3,6 +3,7 @@ import shirts from './shirt.js';
|
||||
import skins from './skin.js';
|
||||
import sizes from './size.js';
|
||||
import backgrounds from './backgrounds.js';
|
||||
import chairs from './chair.js';
|
||||
import {forOwn, clone} from 'lodash';
|
||||
|
||||
let reorderedBgs = {};
|
||||
@@ -25,6 +26,7 @@ let appearances = {
|
||||
shirt: shirts,
|
||||
size: sizes,
|
||||
skin: skins,
|
||||
chair: chairs,
|
||||
background: reorderedBgs,
|
||||
};
|
||||
|
||||
|
||||
@@ -36,6 +36,9 @@ module.exports = function(user, options) {
|
||||
}
|
||||
user.auth.timestamps.loggedin = new Date();
|
||||
user.lastCron = now;
|
||||
if (_.isFinite(+user.preferences.timezoneOffset)) {
|
||||
user.preferences.timezoneOffsetAtLastCron = user.preferences.timezoneOffset;
|
||||
}
|
||||
if (user.items.lastDrop.count > 0) {
|
||||
user.items.lastDrop.count = 0;
|
||||
}
|
||||
|
||||
@@ -127,7 +127,7 @@ function calculateImgDimensions(img, addPadding) {
|
||||
}
|
||||
|
||||
function checkForSpecialTreatment(name) {
|
||||
let regex = /hair|skin|beard|mustach|shirt|flower|^headAccessory_special_\w+Ears/;
|
||||
let regex = /^hair|skin|beard|mustach|shirt|flower|^headAccessory_special_\w+Ears/;
|
||||
return name.match(regex) || name === 'head_0';
|
||||
}
|
||||
|
||||
|
||||
@@ -73,7 +73,6 @@ describe('shared.ops.buy', () => {
|
||||
|
||||
done();
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -54,6 +54,7 @@ let beforeAfter = (options = {}) => {
|
||||
before.preferences.dayStart = after.preferences.dayStart = options.dayStart;
|
||||
}
|
||||
before.preferences.timezoneOffset = after.preferences.timezoneOffset = options.timezoneOffset || moment().zone();
|
||||
before.preferences.timezoneOffsetAtLastCron = after.preferences.timezoneOffsetAtLastCron = before.preferences.timezoneOffset;
|
||||
if (options.limitOne) {
|
||||
before[`${options.limitOne}s`] = [before[`${options.limitOne}s`][0]];
|
||||
after[`${options.limitOne}s`] = [after[`${options.limitOne}s`][0]];
|
||||
|
||||
@@ -149,7 +149,7 @@ describe('Challenges Controller', function() {
|
||||
expect(scope.filterChallenges(notOwnNotMem)).to.eql(true);
|
||||
});
|
||||
|
||||
it('it filters challenges to a single group when group id filter is set', inject(function($controller) {
|
||||
it('filters challenges to a single group when group id filter is set', inject(function($controller) {
|
||||
scope.search = { };
|
||||
scope.groups = {
|
||||
0: specHelper.newGroup({_id: 'group-one'}),
|
||||
|
||||
@@ -308,6 +308,7 @@ let requiresPurchase = {
|
||||
'preferences.shirt': 'shirt',
|
||||
'preferences.size': 'size',
|
||||
'preferences.skin': 'skin',
|
||||
'preferences.chair': 'chair',
|
||||
'preferences.hair.bangs': 'hair.bangs',
|
||||
'preferences.hair.base': 'hair.base',
|
||||
'preferences.hair.beard': 'hair.beard',
|
||||
|
||||
@@ -400,6 +400,8 @@ export let schema = new Schema({
|
||||
shirt: {type: String, default: 'blue'},
|
||||
timezoneOffset: Number,
|
||||
sound: {type: String, default: 'off', enum: ['off', 'danielTheBard', 'gokulTheme', 'luneFoxTheme', 'wattsTheme']},
|
||||
chair: {type: String, default: 'none'},
|
||||
timezoneOffsetAtLastCron: Number,
|
||||
language: String,
|
||||
automaticAllocation: Boolean,
|
||||
allocationMode: {type: String, enum: ['flat', 'classbased', 'taskbased'], default: 'flat'},
|
||||
|
||||
@@ -68,6 +68,13 @@ mixin customizeProfile(mobile)
|
||||
popover-placement='right', popover-append-to-body='true',
|
||||
ng-click='user.items.gear.owned[item.key] ? equip(item.key) : purchase(item.type,item)')
|
||||
|
||||
// Wheelchair
|
||||
li.customize-menu
|
||||
menu(label=env.t('wheelchair'))
|
||||
button.customize-option(ng-repeat='item in ::["black"]', class='button_chair_{{::item}}',
|
||||
ng-class="{selectableInventory: user.preferences.chair == item}",
|
||||
ng-click='user.preferences.chair != item ? set({"preferences.chair":item}) : set({"preferences.chair":"none"})')
|
||||
|
||||
.col-md-4
|
||||
h3(class=mobile?'item item-divider':'')=env.t('bodyHead')
|
||||
menu(type='list')
|
||||
|
||||
@@ -6,6 +6,7 @@ mixin costumeSetting(type, options)
|
||||
|
||||
mixin generatedAvatar(options)
|
||||
- options = options || {}
|
||||
span(class='chair_{{profile.preferences.chair}}')
|
||||
+costumeSetting('back')
|
||||
if options.sleep
|
||||
span(ng-class="'skin_' + profile.preferences.skin + '_sleep'")
|
||||
|
||||
@@ -1,5 +1,29 @@
|
||||
h2 3/24/2016 - MARCH SUBSCRIBER ITEMS, SPRING AVATAR CUSTOMIZATIONS, ANDROID UPDATE, AND SPRING PLOT-LINE CONTINUES!
|
||||
h2 3/30/2016 - LAST CHANCE FOR MARCH SUBSCRIBER ITEMS! ALSO, EQUIPMENT SORTING AND WHEELCHAIRS FOR AVATARS
|
||||
hr
|
||||
tr
|
||||
td
|
||||
.promo_mystery_201603.pull-right
|
||||
h3 Last Chance for March Subscriber Items
|
||||
p Reminder: this is the final day to <a href='/#/options/settings/subscription'>subscribe</a> and receive the Lucky Set! If you want the Lucky Suit or the Lucky Hat, now's the time! Thanks so much for your support -- we really do appreciate it.
|
||||
p.small.muted by Lemoness
|
||||
tr
|
||||
td
|
||||
h3 Equipment Sorting
|
||||
p Now you can sort your <a href='/#/options/inventory/equipment'>equipment</a> on the website by set or by stat, so that you can choose the best pieces to wear. Enjoy the added organization!
|
||||
p.small.muted by qrry and Blade
|
||||
tr
|
||||
td
|
||||
.chair_black.pull-right
|
||||
h3 Wheelchairs for Avatars
|
||||
p There is a new free <a href='/#/options/profile/avatar'>avatar customization</a> option on the website: a wheelchair! We hope that our wheelchair-using Habiticans will appreciate this avatar option.
|
||||
p.small.muted by Balduranne, Sinble, and Blade
|
||||
|
||||
if menuItem !== 'oldNews'
|
||||
hr
|
||||
a(href='/static/old-news', target='_blank') Read older news
|
||||
|
||||
mixin oldNews
|
||||
h2 3/24/2016 - MARCH SUBSCRIBER ITEMS, SPRING AVATAR CUSTOMIZATIONS, ANDROID UPDATE, AND SPRING PLOT-LINE CONTINUES!
|
||||
tr
|
||||
td
|
||||
.promo_mystery_201603.pull-right
|
||||
@@ -27,12 +51,6 @@ h2 3/24/2016 - MARCH SUBSCRIBER ITEMS, SPRING AVATAR CUSTOMIZATIONS, ANDROID UPD
|
||||
br
|
||||
p Well, it probably won’t hurt to keep celebrating until April First. It’s only one day, after all...
|
||||
p.small.muted by Lemoness
|
||||
|
||||
if menuItem !== 'oldNews'
|
||||
hr
|
||||
a(href='/static/old-news', target='_blank') Read older news
|
||||
|
||||
mixin oldNews
|
||||
h2 3/18/2016 - SPRING FLING BEGINS! LIMITED EDITION EQUIPMENT, SEASONAL SHOP OPENS, AND SPRING MYSTERY PLOT CONTINUES
|
||||
tr
|
||||
td
|
||||
|
||||