From d1a34f570d7b6893aaa1b41b1f6b7221517dbe5a Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Sat, 14 Dec 2013 15:29:56 -0700 Subject: [PATCH] customizations: migrate skins for more PCs, start building out migration --- migrations/20131204_classes.js | 62 ------------------------ migrations/20131214_classes.js | 86 ++++++++++++++++++++++++++++++++++ views/options/profile.jade | 16 +++---- 3 files changed, 94 insertions(+), 70 deletions(-) delete mode 100644 migrations/20131204_classes.js create mode 100644 migrations/20131214_classes.js diff --git a/migrations/20131204_classes.js b/migrations/20131204_classes.js deleted file mode 100644 index 50250e18da..0000000000 --- a/migrations/20131204_classes.js +++ /dev/null @@ -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); -}); \ No newline at end of file diff --git a/migrations/20131214_classes.js b/migrations/20131214_classes.js new file mode 100644 index 0000000000..82def71c5c --- /dev/null +++ b/migrations/20131214_classes.js @@ -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); +}); \ No newline at end of file diff --git a/views/options/profile.jade b/views/options/profile.jade index 672803517b..73a69a583f 100644 --- a/views/options/profile.jade +++ b/views/options/profile.jade @@ -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.