mirror of
https://github.com/sudoxnym/habitica.git
synced 2026-07-22 03:34:14 +00:00
customizations: migrate skins for more PCs, start building out migration
This commit is contained in:
parent
26697546e8
commit
d1a34f570d
3 changed files with 94 additions and 70 deletions
|
|
@ -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);
|
||||
});
|
||||
86
migrations/20131214_classes.js
Normal file
86
migrations/20131214_classes.js
Normal 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);
|
||||
});
|
||||
|
|
@ -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.
|
||||
|
|
|
|||
Loading…
Reference in a new issue