From 381fb48c0304aa84f94e4346efe13d24bd4d042d Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Sat, 4 May 2013 09:40:46 +0100 Subject: [PATCH] emit the streak bonus so we can display the growl notification. I'm not sure I like this approach, because (1) we can't set growl order, streak bonus comes first, and (2) I want to keep model-aware code to a minimum so we can weed out the mem leak --- src/app/algos.coffee | 7 +++++-- src/app/browser.coffee | 6 ++++++ src/app/scoring.coffee | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) 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')