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
This commit is contained in:
Tyler Renelle 2013-07-24 16:45:48 -04:00
parent a5eb64f771
commit dab72e5865
3 changed files with 38 additions and 19 deletions

View file

@ -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'

View file

@ -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
(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

View file

@ -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]