From 1a335cc68a88c58f90c0395c5e329e468620aa8c Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Sun, 3 Mar 2013 17:54:14 -0500 Subject: [PATCH 1/6] add priority-multiplier to html & tasks.coffee (note, requires merge of @IvanGaravito /derby#hotfix-model_at_for_each_blocks --- src/app/tasks.coffee | 9 +++++++++ views/app/tasks.html | 14 ++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/app/tasks.coffee b/src/app/tasks.coffee index 50a7fa976b..02ee38901f 100644 --- a/src/app/tasks.coffee +++ b/src/app/tasks.coffee @@ -177,3 +177,12 @@ module.exports.app = (appExports, model) -> # When they update their notes, re-establish tooltip & popover $('[rel=tooltip]').tooltip() $('[rel=popover]').popover() + + appExports.tasksToggleAdvanced = (e, el) -> + $(el).next('.advanced').toggle() + + appExports.tasksSetMultiplier = (e, el) -> + dataId = $(el).parent('[data-id]').attr('data-id') + #"_user.tasks.#{dataId}" + model.at(e.target).set 'multiplier', parseInt($(el).attr('data-multiplier')) + debugger \ No newline at end of file diff --git a/views/app/tasks.html b/views/app/tasks.html index 4d11b210b5..2b881e8a71 100644 --- a/views/app/tasks.html +++ b/views/app/tasks.html @@ -207,6 +207,20 @@
Enter as date, eg 02/19/2013 or 02-19-2013
{/} + + {#unless equal(:task.type, 'reward')} +
+
+ Advanced +
+ + + + +
+
+
+ {/} From c33c6c34807553243cedbc8778f0c9c59ffb2ed4 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Sun, 3 Mar 2013 18:18:49 -0500 Subject: [PATCH 2/6] add multiplier functionality to task scoring --- src/app/algos.coffee | 24 ++++++++++++------------ src/app/scoring.coffee | 5 +++-- views/app/tasks.html | 2 +- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/app/algos.coffee b/src/app/algos.coffee index 205842d178..8ff90414ca 100644 --- a/src/app/algos.coffee +++ b/src/app/algos.coffee @@ -10,11 +10,11 @@ module.exports.tnl = (level) -> {weaponStrength) weapon strength {level} current user level ### -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, multiplier=1) -> + levelModifier = (level-1) * MODIFIER + weaponModifier = weaponStrength / 100 + strength = 1 + weaponModifier + levelModifier + return value * strength * multiplier ### Calculates HP modification based on level and armor defence @@ -23,17 +23,17 @@ module.exports.expModifier = (value, weaponStrength, level) -> {helmDefense} defense from helm {level} current user level ### -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, multiplier=1) -> + levelModifier = (level-1) * MODIFIER + armorModifier = (armorDefense + helmDefense + shieldDefense) / 100 + defense = 1 - levelModifier + armorModifier + return value * defense * multiplier ### Future use ### -module.exports.gpModifier = (value, modifier) -> - return value * modifier +module.exports.gpModifier = (value, modifier, multiplier=1) -> + return value * modifier * multiplier ### Calculates the next task.value based on direction diff --git a/src/app/scoring.coffee b/src/app/scoring.coffee index f9f13a909c..f95d12c7f3 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 + multiplier = if taskObj.multiplier then parseInt(taskObj.multiplier) else 1 # 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,7 +52,7 @@ 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, multiplier) exp += modified*10 gp += delta @@ -60,7 +61,7 @@ score = (model, taskId, direction, times, batch, cron) -> 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, multiplier) hp += modified switch type diff --git a/views/app/tasks.html b/views/app/tasks.html index 2b881e8a71..b3b6b7e88e 100644 --- a/views/app/tasks.html +++ b/views/app/tasks.html @@ -214,7 +214,7 @@ Advanced
- +
From 7f03a30fd59f3c42be4b0bad2f0a40e36c4ffe53 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Sun, 3 Mar 2013 21:38:21 -0500 Subject: [PATCH 3/6] remove "advanced" section, clean up the task-edit form a bit --- src/app/tasks.coffee | 6 +---- views/app/tasks.html | 58 +++++++++++++++++++++++--------------------- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/src/app/tasks.coffee b/src/app/tasks.coffee index 02ee38901f..32afa0699f 100644 --- a/src/app/tasks.coffee +++ b/src/app/tasks.coffee @@ -178,11 +178,7 @@ module.exports.app = (appExports, model) -> $('[rel=tooltip]').tooltip() $('[rel=popover]').popover() - appExports.tasksToggleAdvanced = (e, el) -> - $(el).next('.advanced').toggle() - appExports.tasksSetMultiplier = (e, el) -> dataId = $(el).parent('[data-id]').attr('data-id') #"_user.tasks.#{dataId}" - model.at(e.target).set 'multiplier', parseInt($(el).attr('data-multiplier')) - debugger \ No newline at end of file + model.at(e.target).set 'multiplier', parseInt($(el).attr('data-multiplier')) \ No newline at end of file diff --git a/views/app/tasks.html b/views/app/tasks.html index b3b6b7e88e..112dfc4aaa 100644 --- a/views/app/tasks.html +++ b/views/app/tasks.html @@ -176,31 +176,36 @@ {#if equal(:task.type, 'habit')} -
- - -
+
+ +
+ + +
{else if equal(:task.type, 'daily')} - -
- - - - - - - - -
+
+ +
+ + + + + + + + +
{else if equal(:task.type, 'reward')} -
-
{else if equal(:task.type, 'todo')} +
@@ -209,18 +214,17 @@ {/} {#unless equal(:task.type, 'reward')} +
-
- Advanced -
- - - - -
+
+ + + +
{/} +
From d925c43c7beffb4a9d5ae6a480fc6d1e0941a45e Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Sun, 3 Mar 2013 22:01:59 -0500 Subject: [PATCH 4/6] multipy GP with priority-multiplier, too --- src/app/algos.coffee | 3 +++ src/app/scoring.coffee | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/app/algos.coffee b/src/app/algos.coffee index 8ff90414ca..fb366c313a 100644 --- a/src/app/algos.coffee +++ b/src/app/algos.coffee @@ -9,6 +9,7 @@ module.exports.tnl = (level) -> {value} task.value for exp gain {weaponStrength) weapon strength {level} current user level + {multiplier} user-defined priority multiplier ### module.exports.expModifier = (value, weaponStrength, level, multiplier=1) -> levelModifier = (level-1) * MODIFIER @@ -22,6 +23,7 @@ module.exports.expModifier = (value, weaponStrength, level, multiplier=1) -> {armorDefense} defense from armor {helmDefense} defense from helm {level} current user level + {multiplier} user-defined priority multiplier ### module.exports.hpModifier = (value, armorDefense, helmDefense, shieldDefense, level, multiplier=1) -> levelModifier = (level-1) * MODIFIER @@ -31,6 +33,7 @@ module.exports.hpModifier = (value, armorDefense, helmDefense, shieldDefense, le ### Future use + {multiplier} user-defined priority multiplier ### module.exports.gpModifier = (value, modifier, multiplier=1) -> return value * modifier * multiplier diff --git a/src/app/scoring.coffee b/src/app/scoring.coffee index 4ae7dfd955..a728b2a640 100644 --- a/src/app/scoring.coffee +++ b/src/app/scoring.coffee @@ -54,7 +54,7 @@ score = (model, taskId, direction, times, batch, cron) -> weaponStrength = items.items.weapon[user.get('items.weapon')].strength modified = algos.expModifier(delta,weaponStrength,level, multiplier) exp += modified*10 - gp += delta + gp += algos.gpModifier(delta, 1, multiplier) subtractPoints = -> level = user.get('stats.lvl') From 1bd067f32f91b119c8ce9ff414e058e67f4d01ae Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Sun, 3 Mar 2013 22:06:34 -0500 Subject: [PATCH 5/6] add multiplier "new feature" alert --- src/app/character.coffee | 3 +++ views/app/alerts.html | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/src/app/character.coffee b/src/app/character.coffee index 3acbaba2b3..25c8ccd87c 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.closeMultiplierNotification = (e, el) -> + user.set('flags.multiplierNotification', 'hide') + appExports.customizeGender = (e, el) -> user.set 'preferences.gender', $(el).attr('data-value') diff --git a/views/app/alerts.html b/views/app/alerts.html index a230f65abd..6e5769101a 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.multiplierNotification, 'show')} +
+ [x] +

New Feature: Priority Multiplier! You can now multiply "more important" tasks on a 1x, 2x, or 3x scale. See details.

+
{/} \ No newline at end of file From 9517455a798f14df4ec2c99138fa9675701a71dd Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Mon, 4 Mar 2013 11:33:36 -0500 Subject: [PATCH 6/6] migrate "multiplier" setup to "priority" setup, with ! !! !!! instead of 1 2 3. multipliers are now 1x 1.5x 2x --- src/app/algos.coffee | 25 ++++++++++++++++--------- src/app/character.coffee | 4 ++-- src/app/scoring.coffee | 8 ++++---- src/app/tasks.coffee | 4 ++-- views/app/alerts.html | 6 +++--- views/app/tasks.html | 8 ++++---- 6 files changed, 31 insertions(+), 24 deletions(-) diff --git a/src/app/algos.coffee b/src/app/algos.coffee index fb366c313a..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,13 +16,13 @@ module.exports.tnl = (level) -> {value} task.value for exp gain {weaponStrength) weapon strength {level} current user level - {multiplier} user-defined priority multiplier + {priority} user-defined priority multiplier ### -module.exports.expModifier = (value, weaponStrength, level, multiplier=1) -> +module.exports.expModifier = (value, weaponStrength, level, priority='!') -> levelModifier = (level-1) * MODIFIER weaponModifier = weaponStrength / 100 strength = 1 + weaponModifier + levelModifier - return value * strength * multiplier + return value * strength * priorityValue(priority) ### Calculates HP modification based on level and armor defence @@ -23,20 +30,20 @@ module.exports.expModifier = (value, weaponStrength, level, multiplier=1) -> {armorDefense} defense from armor {helmDefense} defense from helm {level} current user level - {multiplier} user-defined priority multiplier + {priority} user-defined priority multiplier ### -module.exports.hpModifier = (value, armorDefense, helmDefense, shieldDefense, level, multiplier=1) -> +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 * multiplier + return value * defense * priorityValue(priority) ### Future use - {multiplier} user-defined priority multiplier + {priority} user-defined priority multiplier ### -module.exports.gpModifier = (value, modifier, multiplier=1) -> - return value * modifier * multiplier +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 25c8ccd87c..5e98588f94 100644 --- a/src/app/character.coffee +++ b/src/app/character.coffee @@ -63,8 +63,8 @@ module.exports.app = (appExports, model) -> appExports.closeOnliesNotification = (e, el) -> user.set('flags.onliesNotification', 'hide') - appExports.closeMultiplierNotification = (e, el) -> - user.set('flags.multiplierNotification', '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 a728b2a640..e82f77e466 100644 --- a/src/app/scoring.coffee +++ b/src/app/scoring.coffee @@ -28,7 +28,7 @@ score = (model, taskId, direction, times, batch, cron) -> taskPath = "tasks.#{taskId}" taskObj = obj.tasks[taskId] {type, value} = taskObj - multiplier = if taskObj.multiplier then parseInt(taskObj.multiplier) else 1 + 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' @@ -52,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, multiplier) + modified = algos.expModifier(delta,weaponStrength,level, priority) exp += modified*10 - gp += algos.gpModifier(delta, 1, multiplier) + 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, multiplier) + 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 32afa0699f..94d142ad03 100644 --- a/src/app/tasks.coffee +++ b/src/app/tasks.coffee @@ -178,7 +178,7 @@ module.exports.app = (appExports, model) -> $('[rel=tooltip]').tooltip() $('[rel=popover]').popover() - appExports.tasksSetMultiplier = (e, el) -> + appExports.tasksSetPriority = (e, el) -> dataId = $(el).parent('[data-id]').attr('data-id') #"_user.tasks.#{dataId}" - model.at(e.target).set 'multiplier', parseInt($(el).attr('data-multiplier')) \ No newline at end of file + 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 6e5769101a..5c96173b0a 100644 --- a/views/app/alerts.html +++ b/views/app/alerts.html @@ -24,9 +24,9 @@ {/} - {#if equal(_user.flags.multiplierNotification, 'show')} + {#if equal(_user.flags.priorityNotification, 'show')}
- [x] -

New Feature: Priority Multiplier! You can now multiply "more important" tasks on a 1x, 2x, or 3x scale. See details.

+ [x] +

New Feature: Priority Multiplier! You can now multiply "more important" tasks on a 1x, 1.5x, or 2x scale. See details.

{/} \ No newline at end of file diff --git a/views/app/tasks.html b/views/app/tasks.html index 112dfc4aaa..ccdd9bf407 100644 --- a/views/app/tasks.html +++ b/views/app/tasks.html @@ -217,10 +217,10 @@
- - - - + + + +
{/}