diff --git a/src/app/algos.coffee b/src/app/algos.coffee index fe4d9d1c92..6ec2c97907 100644 --- a/src/app/algos.coffee +++ b/src/app/algos.coffee @@ -48,9 +48,12 @@ module.exports.hpModifier = (value, armorDef, helmDef, shieldDef, level, priorit Future use {priority} user-defined priority multiplier ### -module.exports.gpModifier = (value, modifier, priority='!', streak=0) -> +module.exports.gpModifier = (value, modifier, priority='!', streak=0, model) -> streakBonus = streak / 100 + 1 # eg, 1-day streak is 1.1, 2-day is 1.2, etc - return value * modifier * priorityValue(priority) * streakBonus + val = value * modifier * priorityValue(priority) + afterStreak = val * streakBonus + model.set('_streakBonus', afterStreak - val) if (model and streak and (val > 0)) # can we do this without model? just global emit? + return afterStreak ### Calculates the next task.value based on direction diff --git a/src/app/browser.coffee b/src/app/browser.coffee index 9256a4021f..38e5fcc935 100644 --- a/src/app/browser.coffee +++ b/src/app/browser.coffee @@ -157,6 +157,12 @@ setupGrowlNotifications = (model) -> else if num > 0 statsNotification " + #{rounded} XP", 'xp' + model.on 'set', '_streakBonus', (captures, args) -> + absolute = Math.abs(captures) + gold = Math.floor(absolute) + silver = Math.floor((absolute-gold)*100) + statsNotification "+ #{gold} #{silver} - Streak Bonus!", 'gp' + user.on 'set', 'stats.gp', (captures, args) -> num = captures - args absolute = Math.abs(num) diff --git a/src/app/scoring.coffee b/src/app/scoring.coffee index f9cf4351e8..e0fb4afeb3 100644 --- a/src/app/scoring.coffee +++ b/src/app/scoring.coffee @@ -119,7 +119,7 @@ score = (model, taskId, direction, times, batch, cron) -> level = user.get('stats.lvl') weaponStrength = items.items.weapon[user.get('items.weapon')].strength exp += algos.expModifier(delta,weaponStrength,level, priority) / 2 # / 2 hack for now bcause people leveling too fast - gp += algos.gpModifier(delta, 1, priority, taskObj.streak) + gp += algos.gpModifier(delta, 1, priority, taskObj.streak, model) subtractPoints = -> level = user.get('stats.lvl')