diff --git a/migrations/20131204_classes.js b/migrations/20131204_classes.js
index 87c53f7b3a..50250e18da 100644
--- a/migrations/20131204_classes.js
+++ b/migrations/20131204_classes.js
@@ -20,11 +20,30 @@ db.users.find().forEach(function(user){
// gender => size
user.preferences.size = (user.preferences.gender == 'f') ? 'slim' : 'broad';
+ user.preferences.shirt = (user.preferences.gender == 'f') ? 'pink' : 'white';
delete user.preferences.gender;
// Delete armorSet
delete user.preferences.armorSet;
+ user.items.gear = {
+ owned: {}, // TODO
+ equipped: {
+ weapon: 'weapon_warrior_' + user.items.weapon,
+ shield: 'shield_warrior_' + user.items.shield,
+ head: 'head_warrior_' + user.items.head,
+ armor: 'armor_warrior_' + user.items.armor
+ },
+ costume: {}
+ };
+ _.each({head:'showHelm',weapon:'showWeapon',shield:'showShield',armor:'showArmor'}, function(show,k){
+ if (user.preferences[show] === false) {
+ user.items.gear.costume[k] = user.items.gear.equipped[k];
+ user.preferences.costume = true
+ }
+ delete user.preferences[v];
+ });
+
user.preferences.sleep = user.flags.rest;
delete user.flags.rest;
diff --git a/src/models/user.js b/src/models/user.js
index d37a449226..5cb059507a 100644
--- a/src/models/user.js
+++ b/src/models/user.js
@@ -81,7 +81,8 @@ var UserSchema = new Schema({
purchased: {
ads: {type: Boolean, 'default': false},
skin: {type: Schema.Types.Mixed, 'default': {}}, // eg, {skeleton: true, pumpkin: true, eb052b: true}
- hair: {type: Schema.Types.Mixed, 'default': {}}
+ hair: {type: Schema.Types.Mixed, 'default': {}},
+ shirt: {type: Schema.Types.Mixed, 'default': {}}
},
flags: {
@@ -210,10 +211,11 @@ var UserSchema = new Schema({
},
hideHeader: {type:Boolean, 'default':false},
skin: {type:String, 'default':'white'},
+ shirt: {type: String, 'default': 'white'},
timezoneOffset: Number,
language: String,
automaticAllocation: Boolean,
- useCostume: Boolean,
+ costume: Boolean,
sleep: {type: Boolean, 'default': false}
},
profile: {
diff --git a/views/options/inventory/inventory.jade b/views/options/inventory/inventory.jade
index 01ddc4e4e6..d0b6578505 100644
--- a/views/options/inventory/inventory.jade
+++ b/views/options/inventory/inventory.jade
@@ -11,7 +11,7 @@ script(type='text/ng-template', id='partials/options.inventory.inventory.html')
div(ng-repeat='item in gear[klass]')
button.customize-option(popover='{{item.notes}}', popover-title='{{item.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='user.ops.equip({query:{key:item.key}})', class='shop_{{item.key}}', ng-class='{selectableInventory: user.items.gear.equipped[item.type] == item.key}')
label.checkbox.inline
- input(type="checkbox", ng-model="user.preferences.costume")
+ input(type="checkbox", ng-model="user.preferences.costume", ng-click='set({"preferences.costume":!user.preferences.costume})')
| Use Costume
i.icon-question-sign(popover="Show something different on your avatar than the gear you have equipped for battle", popover-trigger='mouseenter', popover-placement='right')
li.customize-menu(ng-if='user.preferences.costume')
diff --git a/views/options/profile.jade b/views/options/profile.jade
index ca92fdfb09..672803517b 100644
--- a/views/options/profile.jade
+++ b/views/options/profile.jade
@@ -1,13 +1,27 @@
script(id='partials/options.profile.avatar.html', type='text/ng-template')
.row-fluid
.span4
+ h3 Body
+ small.
+ 2 / locked
+
+ h5 Size
+ .btn-group
+ button.btn.btn-small(ng-class='{active: user.preferences.size=="slim"}', ng-click='set({"preferences.size":"slim"})') Slim
+ button.btn.btn-small(ng-class='{active: user.preferences.size=="broad"}', ng-click='set({"preferences.size":"broad"})') Broad
+
menu(type='list')
- // body-type
li.customize-menu
- menu(label='Head')
+ menu(label='Shirts')
+ each shirt in ['black', 'blue', 'green', 'pink', 'white', 'yellow']
+ button.customize-option(class='{{user.preferences.size}}_shirt_'+shirt, type='button', ng-click='set({"preferences.shirt":"'+shirt+'"})')
+
+ menu(label='Special Shirts')
+ each shirt in ['convict', 'cross', 'fire', 'horizon', 'ocean', 'purple', 'rainbow', 'redblue', 'thunder', 'tropical', 'zombie']
+ button.customize-option(type='button', class='{{user.preferences.size}}_shirt_'+shirt, ng-class='{locked: !user.purchased.shirt.'+shirt+'}', ng-click='unlock("shirt.'+shirt+'")')
menu
- button.broad_armor_base_0.customize-option(type='button', ng-click='set({"preferences.size":"broad"})')
- button.slim_armor_base_0.customize-option(type='button', ng-click='set({"preferences.size":"slim"})')
+ button.btn.btn-small.btn-primary(ng-hide="user.purchased.shirt.convict && user.purchased.shirt.cross && user.purchased.shirt.fire && user.purchased.shirt.horizon && user.purchased.shirt.ocean && user.purchased.shirt.purple && user.purchased.shirt.rainbow && user.purchased.shirt.redblue && user.purchased.shirt.thunder && user.purchased.shirt.tropical && user.purchased.shirt.zombie", ng-click='unlock("shirt.convict,shirt.cross,shirt.fire,shirt.horizon,shirt.ocean,shirt.purple,shirt.rainbow,shirt.redblue,shirt.thunder,shirt.tropical,shirt.zombie")') Unlock Set - 5
+
.span4
h3 Hair
diff --git a/views/shared/header/avatar.jade b/views/shared/header/avatar.jade
index dce75fa564..b804b1138e 100644
--- a/views/shared/header/avatar.jade
+++ b/views/shared/header/avatar.jade
@@ -11,6 +11,7 @@ figure.herobox(ng-click='spell ? castEnd(profile, "user", $event) : clickMember(
// Avatar
span(class='skin_{{profile.preferences.skin}}')
+ span(class='{{profile.preferences.size}}_shirt_{{profile.preferences.shirt}}')
span(class='{{profile.preferences.size}}_{{profile.items.gear.equipped.armor}}', ng-if='!profile.preferences.costume')
span(class='{{profile.preferences.size}}_{{profile.items.gear.costume.armor}}', ng-if='profile.preferences.costume')