customizations: migrate skins for more PCs, start building out migration

This commit is contained in:
Tyler Renelle 2013-12-14 15:29:56 -07:00
parent 26697546e8
commit d1a34f570d
3 changed files with 94 additions and 70 deletions

View file

@ -1,62 +0,0 @@
/**
* Probably the biggest migration of all! This adds the following features:
* - Customization Redo: https://trello.com/c/YKXmHNjY/306-customization-redo
* - Armory: https://trello.com/c/83M5RqQB/299-armory
* - Classes
*/
db.users.find().forEach(function(user){
user.stats.class = 'warrior';
// set default stats (inc mp?)
user.stats.points = user.stats.lvl;
// grant backer/contrib gear, 300, rather than using js logic
// customizations redo: https://trello.com/c/YKXmHNjY/306-customization-redo
// migrate current owned items
// 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;
_.each(user.tasks, function(task){
// migrate task.priority from !, !!, !!! => 1, 1.5, 2
var p = task.priority;
task.priority = p == '!!!' ? 2 : p == '!!' ? 1.5 : 1;
// Add task attributes
task.attribute = 'str';
})
db.users.update({_id:user._id}, user);
});

View file

@ -0,0 +1,86 @@
/**
* Huge migration:
* - Customization Redo: https://trello.com/c/YKXmHNjY/306-customization-redo
* - Armory: https://trello.com/c/83M5RqQB/299-armory
* - Classes
*/
db.users.find().forEach(function(user){
// --------- Misc ---------
_.defaults(user.purchased, {hair:{},skin:{}});
user.balance = user.balance || 0;
user.preferences.sleep = user.flags.rest;
delete user.flags.rest;
delete user.preferences.armorSet;
// --------- Class System ---------
_.defaults(user.stats, {'class':'warrior', str:0, con:0, int:0, per:0, buffs:{}});
user.stats.points = user.stats.lvl;
user.stats.mp = (user.stats.lvl-1)/2 + 10;
user.flags.classSelected = false;
// --------- Gender ---------
user.preferences.size = (user.preferences.gender == 'f') ? 'slim' : 'broad';
user.preferences.shirt = (user.preferences.gender == 'f') ? 'pink' : 'white';
user.preferences.hair = {
color: user.preferences.hair,
base: user.preferences.gender == 'f' ? 1 : 0,
bangs: user.preferences.gender == 'f' ? 1 : 3,
beard: 0,
mustache: 0
};
delete user.preferences.gender;
// --------- Skin (see https://trello.com/c/YKXmHNjY/306-customization-redo) ---------
var s = user.preferences.skin;
user.preferences.skin =
s == 'asian' ? 'ddc994' :
s == 'white' ? 'f5a76e' :
s == 'black' ? '915533' :
s == 'dead' ? 'c3e1dc' :
s == 'orc' ? '6bd049' : s;
// --------- Gear ---------
var gear = {
owned: {},
equipped: {},
costume: {}
};
_.each({head:'showHelm',weapon:'showWeapon',shield:'showShield',armor:'showArmor'}, function(show, type){
user.items[type] = ~~user.items[type];
_.times(user.items[type], function(i){
var item =
(i == 7 && type == 'weapon') ? 'weapon_special_0' :
(i == 8 && type == 'weapon') ? 'weapon_special_1' :
(i == 6) ? type + '_special_0' :
(i == 7) ? type + '_special_1' :
type + '_warrior_' + i;
gear.owned[item] = true;
gear.equipped[type] = item;
/*if (user.preferences[show] === false) {
// TODO how to handle combo of wearing / hiding?
gear.costume[type] = type + '_base_0';
user.preferences.costume = true;
}*/
});
delete user.preferences[show];
delete user.items[type];
})
user.items.gear = gear;
// --------- Tasks ---------
_.each(user.habits.concat(user.dailys).concat(user.todos).concat(user.rewards), function(task){
// migrate task.priority from !, !!, !!! => 1, 1.5, 2
var p = task.priority;
task.priority = (p == '!!!') ? 2 : (p == '!!') ? 1.5 : 1;
// Add task attributes
task.attribute = 'str';
return true;
});
db.users.update({_id:user._id}, user);
});

View file

@ -80,14 +80,14 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template')
// skin
li.customize-menu
menu(label='Basic Skins')
button.customize-option(type='button', class='skin_asian', ng-click='set({"preferences.skin":"asian" })')
button.customize-option(type='button', class='skin_white', ng-click='set({"preferences.skin":"white" })')
button.customize-option(type='button', class='skin_ea8349', ng-click='set({"preferences.skin":"ea8349"})')
button.customize-option(type='button', class='skin_c06534', ng-click='set({"preferences.skin":"c06534"})')
button.customize-option(type='button', class='skin_98461a', ng-click='set({"preferences.skin":"98461a"})')
button.customize-option(type='button', class='skin_black', ng-click='set({"preferences.skin":"black" })')
button.customize-option(type='button', class='skin_dead', ng-click='set({"preferences.skin":"dead" })')
button.customize-option(type='button', class='skin_orc', ng-click='set({"preferences.skin":"orc" })')
button.customize-option(type='button', class='skin_ddc994', ng-click='set({"preferences.skin":"ddc994" })')
button.customize-option(type='button', class='skin_f5a76e', ng-click='set({"preferences.skin":"f5a76e" })')
button.customize-option(type='button', class='skin_ea8349', ng-click='set({"preferences.skin":"ea8349" })')
button.customize-option(type='button', class='skin_c06534', ng-click='set({"preferences.skin":"c06534" })')
button.customize-option(type='button', class='skin_98461a', ng-click='set({"preferences.skin":"98461a" })')
button.customize-option(type='button', class='skin_915533', ng-click='set({"preferences.skin":"915533" })')
button.customize-option(type='button', class='skin_c3e1dc', ng-click='set({"preferences.skin":"c3e1dc" })')
button.customize-option(type='button', class='skin_6bd049', ng-click='set({"preferences.skin":"6bd049" })')
// Rainbow Skin
h5.