diff --git a/common/img/sprites/spritesmith/customize/skin/skin_bear.png b/common/img/sprites/spritesmith/customize/skin/skin_bear.png new file mode 100644 index 0000000000..8b30c76fc4 Binary files /dev/null and b/common/img/sprites/spritesmith/customize/skin/skin_bear.png differ diff --git a/common/img/sprites/spritesmith/customize/skin/skin_bear_sleep.png b/common/img/sprites/spritesmith/customize/skin/skin_bear_sleep.png new file mode 100644 index 0000000000..f9edaa7618 Binary files /dev/null and b/common/img/sprites/spritesmith/customize/skin/skin_bear_sleep.png differ diff --git a/common/img/sprites/spritesmith/customize/skin/skin_cactus.png b/common/img/sprites/spritesmith/customize/skin/skin_cactus.png new file mode 100644 index 0000000000..8e4f3f9b8b Binary files /dev/null and b/common/img/sprites/spritesmith/customize/skin/skin_cactus.png differ diff --git a/common/img/sprites/spritesmith/customize/skin/skin_cactus_sleep.png b/common/img/sprites/spritesmith/customize/skin/skin_cactus_sleep.png new file mode 100644 index 0000000000..46e4286677 Binary files /dev/null and b/common/img/sprites/spritesmith/customize/skin/skin_cactus_sleep.png differ diff --git a/common/img/sprites/spritesmith/customize/skin/skin_fox.png b/common/img/sprites/spritesmith/customize/skin/skin_fox.png new file mode 100644 index 0000000000..cc1d9df47c Binary files /dev/null and b/common/img/sprites/spritesmith/customize/skin/skin_fox.png differ diff --git a/common/img/sprites/spritesmith/customize/skin/skin_fox_sleep.png b/common/img/sprites/spritesmith/customize/skin/skin_fox_sleep.png new file mode 100644 index 0000000000..130a0721dc Binary files /dev/null and b/common/img/sprites/spritesmith/customize/skin/skin_fox_sleep.png differ diff --git a/common/img/sprites/spritesmith/customize/skin/skin_lion.png b/common/img/sprites/spritesmith/customize/skin/skin_lion.png new file mode 100644 index 0000000000..a4087c9908 Binary files /dev/null and b/common/img/sprites/spritesmith/customize/skin/skin_lion.png differ diff --git a/common/img/sprites/spritesmith/customize/skin/skin_lion_sleep.png b/common/img/sprites/spritesmith/customize/skin/skin_lion_sleep.png new file mode 100644 index 0000000000..489a0efea6 Binary files /dev/null and b/common/img/sprites/spritesmith/customize/skin/skin_lion_sleep.png differ diff --git a/common/img/sprites/spritesmith/customize/skin/skin_panda.png b/common/img/sprites/spritesmith/customize/skin/skin_panda.png new file mode 100644 index 0000000000..dd031c284f Binary files /dev/null and b/common/img/sprites/spritesmith/customize/skin/skin_panda.png differ diff --git a/common/img/sprites/spritesmith/customize/skin/skin_panda_sleep.png b/common/img/sprites/spritesmith/customize/skin/skin_panda_sleep.png new file mode 100644 index 0000000000..ccd3b45827 Binary files /dev/null and b/common/img/sprites/spritesmith/customize/skin/skin_panda_sleep.png differ diff --git a/common/img/sprites/spritesmith/customize/skin/skin_pig.png b/common/img/sprites/spritesmith/customize/skin/skin_pig.png new file mode 100644 index 0000000000..219cc793a4 Binary files /dev/null and b/common/img/sprites/spritesmith/customize/skin/skin_pig.png differ diff --git a/common/img/sprites/spritesmith/customize/skin/skin_pig_sleep.png b/common/img/sprites/spritesmith/customize/skin/skin_pig_sleep.png new file mode 100644 index 0000000000..e5a778d58e Binary files /dev/null and b/common/img/sprites/spritesmith/customize/skin/skin_pig_sleep.png differ diff --git a/common/img/sprites/spritesmith/customize/skin/skin_tiger.png b/common/img/sprites/spritesmith/customize/skin/skin_tiger.png new file mode 100644 index 0000000000..e1fa4b2df3 Binary files /dev/null and b/common/img/sprites/spritesmith/customize/skin/skin_tiger.png differ diff --git a/common/img/sprites/spritesmith/customize/skin/skin_tiger_sleep.png b/common/img/sprites/spritesmith/customize/skin/skin_tiger_sleep.png new file mode 100644 index 0000000000..c348ad79cd Binary files /dev/null and b/common/img/sprites/spritesmith/customize/skin/skin_tiger_sleep.png differ diff --git a/common/img/sprites/spritesmith/customize/skin/skin_wolf.png b/common/img/sprites/spritesmith/customize/skin/skin_wolf.png new file mode 100644 index 0000000000..fb4ec4e16e Binary files /dev/null and b/common/img/sprites/spritesmith/customize/skin/skin_wolf.png differ diff --git a/common/img/sprites/spritesmith/customize/skin/skin_wolf_sleep.png b/common/img/sprites/spritesmith/customize/skin/skin_wolf_sleep.png new file mode 100644 index 0000000000..8c72dd606f Binary files /dev/null and b/common/img/sprites/spritesmith/customize/skin/skin_wolf_sleep.png differ diff --git a/common/img/sprites/spritesmith/gear/headAccessory/headAccessory_special_bearEars.png b/common/img/sprites/spritesmith/gear/headAccessory/headAccessory_special_bearEars.png new file mode 100644 index 0000000000..0b9fde423e Binary files /dev/null and b/common/img/sprites/spritesmith/gear/headAccessory/headAccessory_special_bearEars.png differ diff --git a/common/img/sprites/spritesmith/gear/headAccessory/headAccessory_special_cactusEars.png b/common/img/sprites/spritesmith/gear/headAccessory/headAccessory_special_cactusEars.png new file mode 100644 index 0000000000..6b7e372095 Binary files /dev/null and b/common/img/sprites/spritesmith/gear/headAccessory/headAccessory_special_cactusEars.png differ diff --git a/common/img/sprites/spritesmith/gear/headAccessory/headAccessory_special_foxEars.png b/common/img/sprites/spritesmith/gear/headAccessory/headAccessory_special_foxEars.png new file mode 100644 index 0000000000..dde3c6d84e Binary files /dev/null and b/common/img/sprites/spritesmith/gear/headAccessory/headAccessory_special_foxEars.png differ diff --git a/common/img/sprites/spritesmith/gear/headAccessory/headAccessory_special_lionEars.png b/common/img/sprites/spritesmith/gear/headAccessory/headAccessory_special_lionEars.png new file mode 100644 index 0000000000..9d32267d67 Binary files /dev/null and b/common/img/sprites/spritesmith/gear/headAccessory/headAccessory_special_lionEars.png differ diff --git a/common/img/sprites/spritesmith/gear/headAccessory/headAccessory_special_pandaEars.png b/common/img/sprites/spritesmith/gear/headAccessory/headAccessory_special_pandaEars.png new file mode 100644 index 0000000000..c512b09397 Binary files /dev/null and b/common/img/sprites/spritesmith/gear/headAccessory/headAccessory_special_pandaEars.png differ diff --git a/common/img/sprites/spritesmith/gear/headAccessory/headAccessory_special_pigEars.png b/common/img/sprites/spritesmith/gear/headAccessory/headAccessory_special_pigEars.png new file mode 100644 index 0000000000..59a27fab5e Binary files /dev/null and b/common/img/sprites/spritesmith/gear/headAccessory/headAccessory_special_pigEars.png differ diff --git a/common/img/sprites/spritesmith/gear/headAccessory/headAccessory_special_tigerEars.png b/common/img/sprites/spritesmith/gear/headAccessory/headAccessory_special_tigerEars.png new file mode 100644 index 0000000000..0f056d6f2b Binary files /dev/null and b/common/img/sprites/spritesmith/gear/headAccessory/headAccessory_special_tigerEars.png differ diff --git a/common/img/sprites/spritesmith/gear/headAccessory/headAccessory_special_wolfEars.png b/common/img/sprites/spritesmith/gear/headAccessory/headAccessory_special_wolfEars.png new file mode 100644 index 0000000000..da543a95c4 Binary files /dev/null and b/common/img/sprites/spritesmith/gear/headAccessory/headAccessory_special_wolfEars.png differ diff --git a/common/img/sprites/spritesmith/gear/headAccessory/shop/shop_headAccessory_special_bearEars.png b/common/img/sprites/spritesmith/gear/headAccessory/shop/shop_headAccessory_special_bearEars.png new file mode 100644 index 0000000000..cc028477bf Binary files /dev/null and b/common/img/sprites/spritesmith/gear/headAccessory/shop/shop_headAccessory_special_bearEars.png differ diff --git a/common/img/sprites/spritesmith/gear/headAccessory/shop/shop_headAccessory_special_cactusEars.png b/common/img/sprites/spritesmith/gear/headAccessory/shop/shop_headAccessory_special_cactusEars.png new file mode 100644 index 0000000000..98eb4efba2 Binary files /dev/null and b/common/img/sprites/spritesmith/gear/headAccessory/shop/shop_headAccessory_special_cactusEars.png differ diff --git a/common/img/sprites/spritesmith/gear/headAccessory/shop/shop_headAccessory_special_foxEars.png b/common/img/sprites/spritesmith/gear/headAccessory/shop/shop_headAccessory_special_foxEars.png new file mode 100644 index 0000000000..8294e3d388 Binary files /dev/null and b/common/img/sprites/spritesmith/gear/headAccessory/shop/shop_headAccessory_special_foxEars.png differ diff --git a/common/img/sprites/spritesmith/gear/headAccessory/shop/shop_headAccessory_special_lionEars.png b/common/img/sprites/spritesmith/gear/headAccessory/shop/shop_headAccessory_special_lionEars.png new file mode 100644 index 0000000000..6f937acee5 Binary files /dev/null and b/common/img/sprites/spritesmith/gear/headAccessory/shop/shop_headAccessory_special_lionEars.png differ diff --git a/common/img/sprites/spritesmith/gear/headAccessory/shop/shop_headAccessory_special_pandaEars.png b/common/img/sprites/spritesmith/gear/headAccessory/shop/shop_headAccessory_special_pandaEars.png new file mode 100644 index 0000000000..afe7d238bf Binary files /dev/null and b/common/img/sprites/spritesmith/gear/headAccessory/shop/shop_headAccessory_special_pandaEars.png differ diff --git a/common/img/sprites/spritesmith/gear/headAccessory/shop/shop_headAccessory_special_pigEars.png b/common/img/sprites/spritesmith/gear/headAccessory/shop/shop_headAccessory_special_pigEars.png new file mode 100644 index 0000000000..334223ec76 Binary files /dev/null and b/common/img/sprites/spritesmith/gear/headAccessory/shop/shop_headAccessory_special_pigEars.png differ diff --git a/common/img/sprites/spritesmith/gear/headAccessory/shop/shop_headAccessory_special_tigerEars.png b/common/img/sprites/spritesmith/gear/headAccessory/shop/shop_headAccessory_special_tigerEars.png new file mode 100644 index 0000000000..f3b6ed3e6f Binary files /dev/null and b/common/img/sprites/spritesmith/gear/headAccessory/shop/shop_headAccessory_special_tigerEars.png differ diff --git a/common/img/sprites/spritesmith/gear/headAccessory/shop/shop_headAccessory_special_wolfEars.png b/common/img/sprites/spritesmith/gear/headAccessory/shop/shop_headAccessory_special_wolfEars.png new file mode 100644 index 0000000000..28c8b2a9ee Binary files /dev/null and b/common/img/sprites/spritesmith/gear/headAccessory/shop/shop_headAccessory_special_wolfEars.png differ diff --git a/common/img/sprites/spritesmith/promo/promo_pet_skins.png b/common/img/sprites/spritesmith/promo/promo_pet_skins.png new file mode 100644 index 0000000000..075d631a75 Binary files /dev/null and b/common/img/sprites/spritesmith/promo/promo_pet_skins.png differ diff --git a/common/locales/en/character.json b/common/locales/en/character.json index 0586cebff2..6603f60c70 100644 --- a/common/locales/en/character.json +++ b/common/locales/en/character.json @@ -138,5 +138,6 @@ "displayNameDescription3": "and scroll down to the Registration section to change your login name.", "unequipBattleGear": "Unequip Battle Gear", "unequipCostume": "Unequip Costume", - "unequipPetMountBackground": "Unequip Pet, Mount, Background" + "unequipPetMountBackground": "Unequip Pet, Mount, Background", + "animalSkins": "Animal Skins" } diff --git a/common/locales/en/gear.json b/common/locales/en/gear.json index 2e3d89d781..36aca251eb 100644 --- a/common/locales/en/gear.json +++ b/common/locales/en/gear.json @@ -529,6 +529,8 @@ "bodySpecialSummerHealerNotes": "A stylish collar of live coral! Confers no benefit. Limited Edition 2014 Summer Gear.", "headAccessory": "head accessory", + "accessories": "Accessories", + "animalEars": "Animal Ears", "headAccessoryBase0Text": "No Head Accessory", "headAccessoryBase0Notes": "No Head Accessory.", @@ -550,7 +552,24 @@ "headAccessorySpecialSpring2015MageNotes": "These ears listen keenly, in case somewhere a magician is revealing secrets. Confers no benefit. Limited Edition 2015 Spring Gear.", "headAccessorySpecialSpring2015HealerText": "Green Kitty Ears", "headAccessorySpecialSpring2015HealerNotes": "These cute kitty ears will make others green with envy. Confers no benefit. Limited Edition 2015 Spring Gear.", - + + "headAccessoryBearEarsText": "Bear Ears", + "headAccessoryBearEarsNotes": "These ears make you look like a cuddly bear! Confers no benefit.", + "headAccessoryCactusEarsText": "Cactus Ears", + "headAccessoryCactusEarsNotes": "These ears make you look like a prickly cactus! Confers no benefit.", + "headAccessoryFoxEarsText": "Fox Ears", + "headAccessoryFoxEarsNotes": "These ears make you look like a wily fox! Confers no benefit.", + "headAccessoryLionEarsText": "Lion Ears", + "headAccessoryLionEarsNotes": "These ears make you look like a regal lion! Confers no benefit.", + "headAccessoryPandaEarsText": "Panda Ears", + "headAccessoryPandaEarsNotes": "These ears make you look like a gentle panda! Confers no benefit.", + "headAccessoryPigEarsText": "Pig Ears", + "headAccessoryPigEarsNotes": "These ears make you look like a whimsical pig! Confers no benefit.", + "headAccessoryTigerEarsText": "Tiger Ears", + "headAccessoryTigerEarsNotes": "These ears make you look like a fierce tiger! Confers no benefit.", + "headAccessoryWolfEarsText": "Wolf Ears", + "headAccessoryWolfEarsNotes": "These ears make you look like a loyal wolf! Confers no benefit.", + "headAccessoryMystery201403Text": "Forest Walker Antlers", "headAccessoryMystery201403Notes": "These antlers shimmer with moss and lichen. Confers no benefit. March 2014 Subscriber Item.", "headAccessoryMystery201404Text": "Twilight Butterfly Antennae", diff --git a/common/script/content.coffee b/common/script/content.coffee index 2d32ff39af..ec6d74bd81 100644 --- a/common/script/content.coffee +++ b/common/script/content.coffee @@ -400,7 +400,15 @@ gear = spring2015Warrior: event: events.spring2015, specialClass: 'warrior', text: t('headAccessorySpecialSpring2015WarriorText'), notes: t('headAccessorySpecialSpring2015WarriorNotes'), value: 20 spring2015Mage: event: events.spring2015, specialClass: 'wizard', text: t('headAccessorySpecialSpring2015MageText'), notes: t('headAccessorySpecialSpring2015MageNotes'), value: 20 spring2015Healer: event: events.spring2015, specialClass: 'healer', text: t('headAccessorySpecialSpring2015HealerText'), notes: t('headAccessorySpecialSpring2015HealerNotes'), value: 20 - + # Animal ears + bearEars: gearSet: 'animal', text: t('headAccessoryBearEarsText'), notes: t('headAccessoryBearEarsNotes'), value: 20, canOwn: ((u)-> u.items.gear.owned.headAccessory_animalEars_bearEars?) + cactusEars: gearSet: 'animal', text: t('headAccessoryCactusEarsText'), notes: t('headAccessoryCactusEarsNotes'), value: 20, canOwn: ((u)-> u.items.gear.owned.headAccessory_animalEars_cactusEars?) + foxEars: gearSet: 'animal', text: t('headAccessoryFoxEarsText'), notes: t('headAccessoryFoxEarsNotes'), value: 20, canOwn: ((u)-> u.items.gear.owned.headAccessory_animalEars_foxEars?) + lionEars: gearSet: 'animal', text: t('headAccessoryLionEarsText'), notes: t('headAccessoryLionEarsNotes'), value: 20, canOwn: ((u)-> u.items.gear.owned.headAccessory_animalEars_lionEars?) + pandaEars: gearSet: 'animal', text: t('headAccessoryPandaEarsText'), notes: t('headAccessoryPandaEarsNotes'), value: 20, canOwn: ((u)-> u.items.gear.owned.headAccessory_animalEars_pandaEars?) + pigEars: gearSet: 'animal', text: t('headAccessoryPigEarsText'), notes: t('headAccessoryPigEarsNotes'), value: 20, canOwn: ((u)-> u.items.gear.owned.headAccessory_animalEars_pigEars?) + tigerEars: gearSet: 'animal', text: t('headAccessoryTigerEarsText'), notes: t('headAccessoryTigerEarsNotes'), value: 20, canOwn: ((u)-> u.items.gear.owned.headAccessory_animalEars_tigerEars?) + wolfEars: gearSet: 'animal', text: t('headAccessoryWolfEarsText'), notes: t('headAccessoryWolfEarsNotes'), value: 20, canOwn: ((u)-> u.items.gear.owned.headAccessory_animalEars_wolfEars?) mystery: 201403: text: t('headAccessoryMystery201403Text'), notes: t('headAccessoryMystery201403Notes'), mystery:'201403', value: 0 201404: text: t('headAccessoryMystery201404Text'), notes: t('headAccessoryMystery201404Notes'), mystery:'201404', value: 0 diff --git a/common/script/index.coffee b/common/script/index.coffee index 9018a4d29f..4afe5cd572 100644 --- a/common/script/index.coffee +++ b/common/script/index.coffee @@ -745,7 +745,7 @@ api.wrap = (user, main=true) -> if type is 'gear' item = content.gear.flat[key] return cb?({code:401, message: i18n.t('alreadyHave', req.language)}) if user.items.gear.owned[key] - price = (if item.twoHanded then 2 else 1) / 4 + price = (if item.twoHanded or item.gearSet is 'animal' then 2 else 1) / 4 else item = content[type][key] price = item.value / 4 @@ -895,6 +895,9 @@ api.wrap = (user, main=true) -> return cb?({code:401, message: i18n.t('notEnoughGems', req.language)}) if user.balance < cost and !alreadyOwns if fullSet _.each path.split(","), (p) -> + if ~path.indexOf('gear.') + user.fns.dotSet("#{p}", true);true + else user.fns.dotSet("purchased.#{p}", true);true else if alreadyOwns @@ -904,8 +907,8 @@ api.wrap = (user, main=true) -> return cb? null, req user.fns.dotSet "purchased." + path, true user.balance -= cost - user.markModified? 'purchased' - cb? null, _.pick(user,$w 'purchased preferences') + if ~path.indexOf('gear.') then user.markModified? 'gear.owned' else user.markModified? 'purchased' + cb? null, _.pick(user,$w 'purchased preferences items') ga?.event('behavior', 'gems', path).send() # ------ diff --git a/website/public/js/controllers/inventoryCtrl.js b/website/public/js/controllers/inventoryCtrl.js index 587752e84e..9dd2f698aa 100644 --- a/website/public/js/controllers/inventoryCtrl.js +++ b/website/public/js/controllers/inventoryCtrl.js @@ -103,26 +103,6 @@ habitrpg.controller("InventoryCtrl", } } - $scope.purchase = function(type, item){ - if (type == 'special') return User.user.ops.buySpecialSpell({params:{key:item.key}}); - - var gems = User.user.balance * 4; - - var string = (type == 'weapon') ? window.env.t('weapon') : (type == 'armor') ? window.env.t('armor') : (type == 'head') ? window.env.t('headgear') : (type == 'shield') ? window.env.t('offhand') : (type == 'headAccessory') ? window.env.t('headAccessory') : (type == 'hatchingPotions') ? window.env.t('hatchingPotion') : (type == 'eggs') ? window.env.t('eggSingular') : (type == 'quests') ? window.env.t('quest') : (item.key == 'Saddle') ? window.env.t('foodSaddleText').toLowerCase() : type; // this is ugly but temporary, once the purchase modal is done this will be removed - if (type == 'weapon' || type == 'armor' || type == 'head' || type == 'shield' || type == 'headAccessory') { - if (gems < ((item.specialClass == "wizard") && (item.type == "weapon")) + 1) return $rootScope.openModal('buyGems'); - var message = window.env.t('buyThis', {text: string, price: ((item.specialClass == "wizard") && (item.type == "weapon")) + 1, gems: gems}) - if($window.confirm(message)) - User.user.ops.purchase({params:{type:"gear",key:item.key}}); - } else { - if(gems < item.value) return $rootScope.openModal('buyGems'); - var message = window.env.t('buyThis', {text: string, price: item.value, gems: gems}) - if($window.confirm(message)) - User.user.ops.purchase({params:{type:type,key:item.key}}); - } - - } - $scope.choosePet = function(egg, potion){ var petDisplayName = env.t('petName', { potion: Content.hatchingPotions[potion] ? Content.hatchingPotions[potion].text() : potion, diff --git a/website/public/js/controllers/rootCtrl.js b/website/public/js/controllers/rootCtrl.js index a14d41d55e..8f1f4255fa 100644 --- a/website/public/js/controllers/rootCtrl.js +++ b/website/public/js/controllers/rootCtrl.js @@ -3,8 +3,8 @@ /* Make user and settings available for everyone through root scope. */ -habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$http', '$state', '$stateParams', 'Notification', 'Groups', 'Shared', 'Content', '$modal', '$timeout', 'ApiUrl', 'Payments','$sce', - function($scope, $rootScope, $location, User, $http, $state, $stateParams, Notification, Groups, Shared, Content, $modal, $timeout, ApiUrl, Payments,$sce) { +habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$http', '$state', '$stateParams', 'Notification', 'Groups', 'Shared', 'Content', '$modal', '$timeout', 'ApiUrl', 'Payments','$sce','$window', + function($scope, $rootScope, $location, User, $http, $state, $stateParams, Notification, Groups, Shared, Content, $modal, $timeout, ApiUrl, Payments, $sce, $window) { var user = User.user; var initSticky = _.once(function(){ @@ -201,7 +201,40 @@ habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$ chart.draw(data, options); }; + $rootScope.getGearArray = function(set){ + var flatGearArray = _.toArray(Content.gear.flat); + var filteredArray = _.where(flatGearArray, {gearSet: set}); + + return filteredArray; + } + + $rootScope.purchase = function(type, item){ + if (type == 'special') return User.user.ops.buySpecialSpell({params:{key:item.key}}); + + var gems = User.user.balance * 4; + + var string = (type == 'weapon') ? window.env.t('weapon') : (type == 'armor') ? window.env.t('armor') : (type == 'head') ? window.env.t('headgear') : (type == 'shield') ? window.env.t('offhand') : (type == 'headAccessory') ? window.env.t('headAccessory') : (type == 'hatchingPotions') ? window.env.t('hatchingPotion') : (type == 'eggs') ? window.env.t('eggSingular') : (type == 'quests') ? window.env.t('quest') : (item.key == 'Saddle') ? window.env.t('foodSaddleText').toLowerCase() : type; // FIXME this is ugly but temporary, once the purchase modal is done this will be removed + var price = ((((item.specialClass == "wizard") && (item.type == "weapon")) || item.gearSet == "animal") + 1); + if (type == 'weapon' || type == 'armor' || type == 'head' || type == 'shield' || type == 'headAccessory') { + if (User.user.items.gear.owned[item.key]) { + if (User.user.preferences.costume) return User.user.ops.equip({params:{type: 'costume', key: item.key}}); + else { + return User.user.ops.equip({params:{type: 'equipped', key: item.key}}) + } + } + if (gems < price) return $rootScope.openModal('buyGems'); + var message = window.env.t('buyThis', {text: string, price: price, gems: gems}) + if($window.confirm(message)) + User.user.ops.purchase({params:{type:"gear",key:item.key}}); + } else { + if(gems < item.value) return $rootScope.openModal('buyGems'); + var message = window.env.t('buyThis', {text: string, price: item.value, gems: gems}) + if($window.confirm(message)) + User.user.ops.purchase({params:{type:type,key:item.key}}); + } + + } /* ------------------------ diff --git a/website/src/middleware.js b/website/src/middleware.js index 34e1446be8..5c77e0a5dd 100644 --- a/website/src/middleware.js +++ b/website/src/middleware.js @@ -198,7 +198,8 @@ module.exports.locals = function(req, res, next) { Content: shared.content, mods: require('./models/user').mods, tavern: tavern, // for world boss - worldDmg: (tavern && tavern.quest && tavern.quest.extra && tavern.quest.extra.worldDmg) || {} + worldDmg: (tavern && tavern.quest && tavern.quest.extra && tavern.quest.extra.worldDmg) || {}, + _: _ }); // Put query-string party (& guild but use partyInvite for backward compatibility) diff --git a/website/views/options/profile.jade b/website/views/options/profile.jade index d37cf01aa0..d5c6cebda6 100644 --- a/website/views/options/profile.jade +++ b/website/views/options/profile.jade @@ -4,6 +4,7 @@ mixin gemCost(cost) = ' ' + env.t('locked') block +-var gearGroup = function(grouping) { return env._(env.Content.gear.flat).where({gearSet:grouping}).pluck('key') } -var showPath = function(path, items, joiner) { return path+'["'+items.join('"] '+joiner+' '+path+'["')+'"]'; } -var unlockPath = function(path, items) { return 'unlock("'+path+'.'+items.join(','+path+'.')+'")'; } @@ -45,6 +46,15 @@ mixin customizeProfile(mobile) each shirt in specialShirts button.customize-option(type='button', class='{{user.preferences.size}}_shirt_'+shirt, ng-class='{locked: !user.purchased.shirt.'+shirt+'}', ng-click='unlock("shirt.'+shirt+'")') + h3(class=mobile?'item item-divider':'')=env.t('accessories') + + menu(type='list') + li.customize-menu + menu(label=env.t('animalEars')) + span(ng-hide='#{showPath("user.items.gear.owned", gearGroup("animal"), "&&")}') + +gemCost(2) + button.btn.btn-xs(ng-click='#{unlockPath("items.gear.owned", gearGroup("animal"))}')!= env.t('unlockSet', {cost: 5}) + ' ' + button.customize-option(ng-repeat='item in ::getGearArray("animal")' ng-class="{locked: user.items.gear.owned[item.key] == undefined}", popover='{{::item.notes()}}', popover-title='{{::item.text()}}', popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', ng-click='purchase(item.type,item)', class='shop_{{::item.key}}') .col-md-4 h3(class=mobile?'item item-divider':'')=env.t('bodyHead') @@ -132,11 +142,12 @@ mixin customizeProfile(mobile) each color in ['ddc994','f5a76e','ea8349','c06534','98461a','915533','c3e1dc','6bd049'] button.customize-option(type='button', class='skin_#{color}', ng-click='set({"preferences.skin":"#{color}"})') - // Rainbow Skin + // Always-available premium skins +buyPref('skin', ['eb052b','f69922','f5d70f','0ff591','2b43f6','d7a9f7','800ed0','rainbow'], 'rainbowSkins') - +buyPref('skin', ['pastelPink','pastelOrange','pastelYellow','pastelGreen','pastelBlue','pastelPurple','pastelRainbowChevron','pastelRainbowDiagonal'], 'pastelSkins', 'disabled') + +buyPref('skin', ['bear','cactus','fox','lion','panda','pig','tiger','wolf'], 'animalSkins') - // Special Events + // Seasonal event skins. Note that Spooky Skins are a legacy set and should always be disabled for purchase + +buyPref('skin', ['pastelPink','pastelOrange','pastelYellow','pastelGreen','pastelBlue','pastelPurple','pastelRainbowChevron','pastelRainbowDiagonal'], 'pastelSkins', 'disabled') +buyPref('skin', ['monster','pumpkin','skeleton','zombie','ghost','shadow'], 'spookySkins', 'disabled') +buyPref('skin', ['candycorn','ogre','pumpkin2','reptile','shadow2','skeleton2','transparent','zombie2'], 'supernaturalSkins', 'disabled')