achievement-unlocked
Achievement detection - not just for games..
get going
var achieve = require('../lib/index.js').Achieve
achieve.defineProperty('user_logins', 0)
achieve.defineAchievement('Time to change your password', [
{
propName:'user_logins',
activation:'ACTIVE_IF_EQUALS_OR_GREATER_THAN',
activationValue:'10'
}
])
achieve.setValue('user_logins', 10)
achieve.checkAchievements()
advanced uses
Combine multiple properties to define an achievement, only when all properties are active will the achievement be active.
a.defineAchievement('You unlocked badass ninja acheivement!!', [
{
propName:'selectedWeapon',
activation:'ACTIVE_IF_EQUALS',
activationValue:'3'
},
{
propName:'killedEnemies',
activation:'ACTIVE_IF_GREATER_THAN',
activationValue:'23'
},
{
propName:'currentLevel',
activation:'ACTIVE_IF_GREATER_THAN',
activationValue:'9'
},
{
propName:'secretsFound',
activation:'ACTIVE_IF_GREATER_THAN',
activationValue:'3'
},
{
propName:'playerHealth',
activation:'ACTIVE_IF_LESS_THAN',
activationValue:'30'
}
])
More examples in tests
reuse existing properties and achievements will unlock as the property changes over time
a.defineProperty('readFAQ', 0)
a.defineAchievement('You discovered our help resouce', [
{
propName:'readFAQ',
activation:'ACTIVE_IF_EQUALS',
activationValue:'1'
}
])
a.defineAchievement('Thanks for checking the help guide', [
{
propName:'readFAQ',
activation:'ACTIVE_IF_EQUALS',
activationValue:'3'
}
])
a.defineAchievement('You are turning into a real guru now!', [
{
propName:'readFAQ',
activation:'ACTIVE_IF_EQUALS',
activationValue:'6'
}
])
a.addValue('readFAQ', 1)
a.addValue('readFAQ', 2)
a.addValue('readFAQ', 3)
view the progress of achievements
Check the active state of each property and progress percentage
a.checkAchievements() // computes each achievement property activity status
a.getAchievements() // returns all achievements and their properties
testing
npm run test
compile source
npm run compile
Attribution
- Inspired by Fernando Bevilacqua
- Logo by Holvonix LLC