From dab72e5865b69009a6c3a82ddf2998813358fd5a Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Wed, 24 Jul 2013 16:45:48 -0400 Subject: [PATCH] cap items to maximum in their array, in case the user manually entered a number larger than the max allowed item in the "restore" modal --- script/algos.coffee | 14 ++++++-------- script/helpers.coffee | 36 +++++++++++++++++++++++++----------- script/items.coffee | 7 +++++++ 3 files changed, 38 insertions(+), 19 deletions(-) diff --git a/script/algos.coffee b/script/algos.coffee index 5a75252795..8881f4ac60 100644 --- a/script/algos.coffee +++ b/script/algos.coffee @@ -184,9 +184,8 @@ obj.score = (user, task, direction, options={}) -> delta += nextDelta addPoints = -> - level = user.stats.lvl - weaponStrength = items.items.weapon[user.items.weapon].strength - exp += obj.expModifier(delta, weaponStrength, level, priority) / 2 # /2 hack for now, people leveling too fast + weaponStr = items.getItem('weapon', user.items.weapon).strength + exp += obj.expModifier(delta, weaponStr, user.stats.lvl, priority) / 2 # /2 hack for now, people leveling too fast if streak gp += obj.gpModifier(delta, 1, priority, streak, user) else @@ -194,11 +193,10 @@ obj.score = (user, task, direction, options={}) -> subtractPoints = -> - level = user.stats.lvl - armorDefense = items.items.armor[user.items.armor].defense - helmDefense = items.items.head[user.items.head].defense - shieldDefense = items.items.shield[user.items.shield].defense - hp += obj.hpModifier(delta, armorDefense, helmDefense, shieldDefense, level, priority) + armorDef = items.getItem('armor', user.items.armor).defense + headDef = items.getItem('head', user.items.head).defense + shieldDef = items.getItem('shield', user.items.shield).defense + hp += obj.hpModifier(delta, armorDef, headDef, shieldDef, user.stats.lvl, priority) switch type when 'habit' diff --git a/script/helpers.coffee b/script/helpers.coffee index 2fd1599b40..76e76b1d67 100644 --- a/script/helpers.coffee +++ b/script/helpers.coffee @@ -4,7 +4,7 @@ items = require('./items.coffee') sod = (timestamp, dayStart=0) -> #sanity-check reset-time (is it 24h time?) - dayStart = 0 unless (dayStart = parseInt(dayStart)) and (0 <= dayStart <= 24) + dayStart = 0 unless (dayStart = +dayStart) and (0 <= dayStart <= 24) moment(timestamp).startOf('day').add('h', dayStart) dayMapping = {0:'su',1:'m',2:'t',3:'w',4:'th',5:'f',6:'s'} @@ -173,8 +173,8 @@ module.exports = ### equipped: (type, item=0, preferences={gender:'m', armorSet:'v1'}, backerTier=0) -> {gender, armorSet} = preferences - item = parseInt(item) - backerTier = parseInt(backerTier) + item = ~~item + backerTier = ~~backerTier switch type when'armor' @@ -310,13 +310,27 @@ module.exports = User stats ### - userStr: (level) -> str = (level-1) / 2 + userStr: (level) -> + (level-1) / 2 + totalStr: (level, weapon=0) -> str = (level-1) / 2 - totalStr = (str + items.items.weapon[weapon].strength) - userDef: (level) -> def = (level-1) / 2 - totalDef: (level, armor=0, helm=0, shield=0) -> - def = (level-1) / 2 - totalDef = (def + items.items.armor[armor].defense + items.items.head[helm].defense + items.items.shield[shield].defense) - itemText: (type, item=0) -> items.items[type][parseInt(item)].text - itemStat: (type, item=0) -> if type is 'weapon' then items.items[type][parseInt(item)].strength else items.items[type][parseInt(item)].defense \ No newline at end of file + (str + items.getItem('weapon', weapon).strength) + + userDef: (level) -> + (level-1) / 2 + + totalDef: (level, armor=0, head=0, shield=0) -> + totalDef = + (level - 1) / 2 + # defense + items.getItem('armor', armor).defense + + items.getItem('head', head).defense + + items.getItem('shield', shield).defense + return totalDef + + itemText: (type, item=0) -> + items.getItem(type, item).text + + itemStat: (type, item=0) -> + i = items.getItem(type, item) + if type is 'weapon' then i.strength else i.defense \ No newline at end of file diff --git a/script/items.coffee b/script/items.coffee index a328a39e9f..50c37916b2 100644 --- a/script/items.coffee +++ b/script/items.coffee @@ -107,3 +107,10 @@ module.exports.updateStore = (user) -> showNext = false changes[type] = if showNext then items[type][i] else {hide:true} return changes + +### + Gets an itme, and caps max to the last item in its array +### +module.exports.getItem = (type, index=0) -> + i = if (~~index > items[type].length - 1) then items[type].length - 1 else ~~index + items[type][i] \ No newline at end of file