feat(hourglass): Buy pets/mounts

This commit is contained in:
Sabe Jones
2015-09-15 14:55:38 -04:00
parent 66a8be526b
commit 2ce52e980d
4 changed files with 20 additions and 11 deletions

View File

@@ -72,5 +72,6 @@
"mountsAlreadyOwned": "Mount already owned.", "mountsAlreadyOwned": "Mount already owned.",
"typeNotAllowedHourglass": "Item type not supported for purchase with Mystic Hourglass. Allowed types: ", "typeNotAllowedHourglass": "Item type not supported for purchase with Mystic Hourglass. Allowed types: ",
"petsNotAllowedHourglass": "Pet not available for purchase with Mystic Hourglass.", "petsNotAllowedHourglass": "Pet not available for purchase with Mystic Hourglass.",
"mountsNotAllowedHourglass": "Mount not available for purchase with Mystic Hourglass." "mountsNotAllowedHourglass": "Mount not available for purchase with Mystic Hourglass.",
"hourglassPurchase": "Purchased an item using a Mystic Hourglass!"
} }

View File

@@ -1020,10 +1020,16 @@ api.wrap = (user, main=true) ->
hourglassPurchase: (req, cb, analytics)-> hourglassPurchase: (req, cb, analytics)->
{type, key} = req.params {type, key} = req.params
return cb?({code:400, message:i18n.t('typeNotAllowedHourglass', req.language) + JSON.stringify(_.keys(content.timeTravelStable))}) unless content.timeTravelStable[type] return cb?({code:403, message:i18n.t('typeNotAllowedHourglass', req.language) + JSON.stringify(_.keys(content.timeTravelStable))}) unless content.timeTravelStable[type]
return cb?({code:400, message:i18n.t(type+'NotAllowedHourglass', req.language)}) if not _.includes(content.timeTravelStable[type], key) return cb?({code:403, message:i18n.t(type+'NotAllowedHourglass', req.language)}) unless _.contains(content.timeTravelStable[type], key)
return cb?({code:400, message:i18n.t(type+'AlreadyOwned', req.language)}) if user.items[type][key] return cb?({code:403, message:i18n.t(type+'AlreadyOwned', req.language)}) if user.items[type][key]
return cb?({code:400, message:i18n.t('notEnoughHourglasses', req.language)}) unless user.purchased.plan.consecutive.trinkets > 0 return cb?({code:403, message:i18n.t('notEnoughHourglasses', req.language)}) unless user.purchased.plan.consecutive.trinkets > 0
user.purchased.plan.consecutive.trinkets--
if type is 'pets'
user.items.pets[key] = 5
if type is 'mounts'
user.items.mounts[key] = true
cb? {code:200, message:i18n.t('hourglassPurchase', req.language)}, _.pick(user,$w 'items purchased.plan.consecutive')
sell: (req, cb) -> sell: (req, cb) ->
{key, type} = req.params {key, type} = req.params

View File

@@ -6,7 +6,7 @@ var _ = require('lodash');
require('coffee-script'); require('coffee-script');
var shared = require('../../common/script/index.coffee'); var shared = require('../../common/script/index.coffee');
var Content = require('../../common/script/content.coffee'); var Content = require('../../common/script/content/index.coffee');
describe('user.ops.buyMysterySet', function() { describe('user.ops.buyMysterySet', function() {
var user; var user;

View File

@@ -6,7 +6,7 @@ var _ = require('lodash');
require('coffee-script'); require('coffee-script');
var shared = require('../../common/script/index.coffee'); var shared = require('../../common/script/index.coffee');
var Content = require('../../common/script/content.coffee'); var Content = require('../../common/script/content/index.coffee');
describe('user.ops.hourglassPurchase', function() { describe('user.ops.hourglassPurchase', function() {
var user; var user;
@@ -36,7 +36,7 @@ describe('user.ops.hourglassPurchase', function() {
it('does not allow purchase of unsupported item types', function(done) { it('does not allow purchase of unsupported item types', function(done) {
user.ops.hourglassPurchase({params:{type: 'hatchingPotions', key: 'Base'}}, function(response) { user.ops.hourglassPurchase({params:{type: 'hatchingPotions', key: 'Base'}}, function(response) {
expect(response.message).to.eql("Item type not supported for purchase with Mystic Hourglass. Allowed types: [pets, mounts]"); expect(response.message).to.eql('Item type not supported for purchase with Mystic Hourglass. Allowed types: ["pets","mounts"]');
expect(user.items.hatchingPotions).to.eql({}); expect(user.items.hatchingPotions).to.eql({});
done(); done();
}); });
@@ -110,9 +110,10 @@ describe('user.ops.hourglassPurchase', function() {
it('buys a pet', function(done) { it('buys a pet', function(done) {
user.purchased.plan.consecutive.trinkets = 2; user.purchased.plan.consecutive.trinkets = 2;
user.ops.hourglassPurchase({params: {type: 'pets', key: 'MantisShrimp-Base'}}, function() { user.ops.hourglassPurchase({params: {type: 'pets', key: 'MantisShrimp-Base'}}, function(response) {
expect(response.message).to.eql('Purchased an item using a Mystic Hourglass!');
expect(user.purchased.plan.consecutive.trinkets).to.eql(1); expect(user.purchased.plan.consecutive.trinkets).to.eql(1);
expect(user.items.pets).to.eql({'MantisShrimp-Base':true}); expect(user.items.pets).to.eql({'MantisShrimp-Base':5});
done(); done();
}); });
}); });
@@ -120,7 +121,8 @@ describe('user.ops.hourglassPurchase', function() {
it('buys a mount', function(done) { it('buys a mount', function(done) {
user.purchased.plan.consecutive.trinkets = 2; user.purchased.plan.consecutive.trinkets = 2;
user.ops.hourglassPurchase({params: {type: 'mounts', key: 'MantisShrimp-Base'}}, function() { user.ops.hourglassPurchase({params: {type: 'mounts', key: 'MantisShrimp-Base'}}, function(response) {
expect(response.message).to.eql('Purchased an item using a Mystic Hourglass!');
expect(user.purchased.plan.consecutive.trinkets).to.eql(1); expect(user.purchased.plan.consecutive.trinkets).to.eql(1);
expect(user.items.mounts).to.eql({'MantisShrimp-Base':true}); expect(user.items.mounts).to.eql({'MantisShrimp-Base':true});
done(); done();