mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-19 07:37:25 +01:00
add exp overflow migration
This commit is contained in:
39
migrations/20130307_exp_overflow.js
Normal file
39
migrations/20130307_exp_overflow.js
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
// mongo habitrpg ./node_modules/underscore/underscore.js ./migrations/20130307_normalize_algo_values.js
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Make sure people aren't overflowing their exp with the new system
|
||||||
|
*/
|
||||||
|
db.users.find().forEach(function(user){
|
||||||
|
function oldTnl(level) {
|
||||||
|
return (Math.pow(level,2)*10)+(level*10)+80
|
||||||
|
}
|
||||||
|
|
||||||
|
function newTnl(level) {
|
||||||
|
var value = 0;
|
||||||
|
if (level >= 100) {
|
||||||
|
value = 0
|
||||||
|
} else {
|
||||||
|
value = Math.round(((Math.pow(level,2)*0.25)+(10 * level) + 139.75)/10)*10; // round to nearest 10
|
||||||
|
}
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
|
||||||
|
var newTnl = newTnl(user.stats.lvl);
|
||||||
|
if (user.stats.exp > newTnl) {
|
||||||
|
var percent = user.stats.exp / oldTnl(user.stats.lvl);
|
||||||
|
percent = (percent>1) ? 1 : percent;
|
||||||
|
user.stats.exp = newTnl * percent;
|
||||||
|
|
||||||
|
try {
|
||||||
|
db.users.update(
|
||||||
|
{_id:user._id},
|
||||||
|
{$set: {'stats.exp': user.stats.exp}},
|
||||||
|
{multi:true}
|
||||||
|
);
|
||||||
|
} catch(e) {
|
||||||
|
print(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
Reference in New Issue
Block a user