diff --git a/src/app/algos.coffee b/src/app/algos.coffee index 205842d178..563ae7e5b0 100644 --- a/src/app/algos.coffee +++ b/src/app/algos.coffee @@ -1,6 +1,13 @@ MODIFIER = .02 +priorityValue = (priority='!') -> + switch priority + when '!' then 1 + when '!!' then 1.5 + when '!!!' then 2 + else 1 + module.exports.tnl = (level) -> return (Math.pow(level,2)*10)+(level*10)+80 @@ -9,12 +16,13 @@ module.exports.tnl = (level) -> {value} task.value for exp gain {weaponStrength) weapon strength {level} current user level + {priority} user-defined priority multiplier ### -module.exports.expModifier = (value, weaponStrength, level) -> - levelModifier = (level-1) * MODIFIER - weaponModifier = weaponStrength / 100 - strength = 1 + weaponModifier + levelModifier - return value * strength +module.exports.expModifier = (value, weaponStrength, level, priority='!') -> + levelModifier = (level-1) * MODIFIER + weaponModifier = weaponStrength / 100 + strength = 1 + weaponModifier + levelModifier + return value * strength * priorityValue(priority) ### Calculates HP modification based on level and armor defence @@ -22,18 +30,20 @@ module.exports.expModifier = (value, weaponStrength, level) -> {armorDefense} defense from armor {helmDefense} defense from helm {level} current user level + {priority} user-defined priority multiplier ### -module.exports.hpModifier = (value, armorDefense, helmDefense, shieldDefense, level) -> - levelModifier = (level-1) * MODIFIER - armorModifier = (armorDefense + helmDefense + shieldDefense) / 100 - defense = 1 - levelModifier + armorModifier - return value * defense +module.exports.hpModifier = (value, armorDefense, helmDefense, shieldDefense, level, priority='!') -> + levelModifier = (level-1) * MODIFIER + armorModifier = (armorDefense + helmDefense + shieldDefense) / 100 + defense = 1 - levelModifier + armorModifier + return value * defense * priorityValue(priority) ### Future use + {priority} user-defined priority multiplier ### -module.exports.gpModifier = (value, modifier) -> - return value * modifier +module.exports.gpModifier = (value, modifier, priority='!') -> + return value * modifier * priorityValue(priority) ### Calculates the next task.value based on direction diff --git a/src/app/character.coffee b/src/app/character.coffee index 3acbaba2b3..5e98588f94 100644 --- a/src/app/character.coffee +++ b/src/app/character.coffee @@ -63,6 +63,9 @@ module.exports.app = (appExports, model) -> appExports.closeOnliesNotification = (e, el) -> user.set('flags.onliesNotification', 'hide') + appExports.closePriorityNotification = (e, el) -> + user.set('flags.priorityNotification', 'hide') + appExports.customizeGender = (e, el) -> user.set 'preferences.gender', $(el).attr('data-value') diff --git a/src/app/scoring.coffee b/src/app/scoring.coffee index 4726d7baaf..e82f77e466 100644 --- a/src/app/scoring.coffee +++ b/src/app/scoring.coffee @@ -28,6 +28,7 @@ score = (model, taskId, direction, times, batch, cron) -> taskPath = "tasks.#{taskId}" taskObj = obj.tasks[taskId] {type, value} = taskObj + priority = taskObj.priority or '!' # If they're trying to purhcase a too-expensive reward, confirm they want to take a hit for it if taskObj.value > obj.stats.gp and taskObj.type is 'reward' @@ -51,16 +52,16 @@ score = (model, taskId, direction, times, batch, cron) -> addPoints = -> level = user.get('stats.lvl') weaponStrength = items.items.weapon[user.get('items.weapon')].strength - modified = algos.expModifier(delta,weaponStrength,level) + modified = algos.expModifier(delta,weaponStrength,level, priority) exp += modified*10 - gp += delta + gp += algos.gpModifier(delta, 1, priority) subtractPoints = -> level = user.get('stats.lvl') armorDefense = items.items.armor[user.get('items.armor')].defense helmDefense = items.items.head[user.get('items.head')].defense shieldDefense = items.items.shield[user.get('items.shield')].defense - modified = algos.hpModifier(delta,armorDefense,helmDefense,shieldDefense,level) + modified = algos.hpModifier(delta,armorDefense,helmDefense,shieldDefense,level, priority) hp += modified switch type diff --git a/src/app/tasks.coffee b/src/app/tasks.coffee index 50a7fa976b..94d142ad03 100644 --- a/src/app/tasks.coffee +++ b/src/app/tasks.coffee @@ -177,3 +177,8 @@ module.exports.app = (appExports, model) -> # When they update their notes, re-establish tooltip & popover $('[rel=tooltip]').tooltip() $('[rel=popover]').popover() + + appExports.tasksSetPriority = (e, el) -> + dataId = $(el).parent('[data-id]').attr('data-id') + #"_user.tasks.#{dataId}" + model.at(e.target).set 'priority', $(el).attr('data-priority') \ No newline at end of file diff --git a/views/app/alerts.html b/views/app/alerts.html index 8032ca8373..55ad0571e8 100644 --- a/views/app/alerts.html +++ b/views/app/alerts.html @@ -22,5 +22,11 @@ chime in with your recommendations on this mechanic.
+ {/} + {#if equal(_user.flags.priorityNotification, 'show')} +New Feature: Priority Multiplier! You can now multiply "more important" tasks on a 1x, 1.5x, or 2x scale. See details.
+