Skip to content

Commit

Permalink
feat(achievements): award quest completionist cheevo
Browse files Browse the repository at this point in the history
  • Loading branch information
SabreCat committed Oct 13, 2017
1 parent 0462775 commit 0e2b80e
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 4 deletions.
4 changes: 3 additions & 1 deletion website/common/locales/en/achievements.json
Expand Up @@ -2,5 +2,7 @@
"share": "Share",
"onwards": "Onwards!",
"levelup": "By accomplishing your real life goals, you leveled up and are now fully healed!",
"reachedLevel": "You Reached Level <%= level %>"
"reachedLevel": "You Reached Level <%= level %>",
"achievementLostMasterclasser": "Quest Completionist: Masterclasser Series",
"achievementLostMasterclasserText": "You've completed all sixteen quests in the Masterclasser Quest Series and solved the mystery of the Lost Masterclasser!"
}
5 changes: 5 additions & 0 deletions website/common/script/content/achievements.js
Expand Up @@ -117,6 +117,11 @@ let basicAchievs = {
titleKey: 'invitedFriend',
textKey: 'invitedFriendText',
},
lostMasterclasser: {
icon: 'achievement-lostMasterclasser',
titleKey: 'achievementLostMasterclasser',
textKey: 'achievementLostMasterclasserText',
},
};
Object.assign(achievementsData, basicAchievs);

Expand Down
1 change: 1 addition & 0 deletions website/common/script/libs/achievements.js
Expand Up @@ -183,6 +183,7 @@ function _getBasicAchievements (user, language) {
_addSimple(result, user, {path: 'royallyLoyal', language});
_addSimple(result, user, {path: 'joinedChallenge', language});
_addSimple(result, user, {path: 'invitedFriend', language});
_addSimple(result, user, {path: 'lostMasterclasser', language});

_addSimpleWithMasterCount(result, user, {path: 'beastMaster', language});
_addSimpleWithMasterCount(result, user, {path: 'mountMaster', language});
Expand Down
32 changes: 30 additions & 2 deletions website/server/models/group.js
Expand Up @@ -712,8 +712,9 @@ function _getUserUpdateForQuestReward (itemToAward, allAwardedItems) {
return updates;
}

async function _updateUserWithRetries (userId, updates, numTry = 1) {
return await User.update({_id: userId}, updates).exec()
async function _updateUserWithRetries (userId, updates, numTry = 1, query = {}) {
query._id = userId;
return await User.update(query, updates).exec()
.then((raw) => {
return raw;
}).catch((err) => {
Expand Down Expand Up @@ -772,6 +773,33 @@ schema.methods.finishQuest = async function finishQuest (quest) {
}
});

if (questK === 'lostMasterclasser4') {
let lostMasterclasserQuery = {
'achievements.lostMasterclasser': {$ne: true},
'achievements.quests.mayhemMistiflying1': {$gt: 0},
'achievements.quests.mayhemMistiflying2': {$gt: 0},
'achievements.quests.mayhemMistiflying3': {$gt: 0},
'achievements.quests.stoikalmCalamity1': {$gt: 0},
'achievements.quests.stoikalmCalamity2': {$gt: 0},
'achievements.quests.stoikalmCalamity3': {$gt: 0},
'achievements.quests.taskwoodsTerror1': {$gt: 0},
'achievements.quests.taskwoodsTerror2': {$gt: 0},
'achievements.quests.taskwoodsTerror3': {$gt: 0},
'achievements.quests.dilatoryDistress1': {$gt: 0},
'achievements.quests.dilatoryDistress2': {$gt: 0},
'achievements.quests.dilatoryDistress3': {$gt: 0},
'achievements.quests.lostMasterclasser1': {$gt: 0},
'achievements.quests.lostMasterclasser2': {$gt: 0},
'achievements.quests.lostMasterclasser3': {$gt: 0},
};
let lostMasterclasserUpdate = {
$set: {'achievements.lostMasterclasser': true},
};
promises.concat(participants.map(userId => {
return _updateUserWithRetries(userId, lostMasterclasserUpdate, null, lostMasterclasserQuery);
}));
}

return Bluebird.all(promises);
};

Expand Down
2 changes: 1 addition & 1 deletion website/server/models/user/schema.js
Expand Up @@ -102,7 +102,6 @@ let schema = new Schema({
perfect: {type: Number, default: 0},
habitBirthdays: Number,
valentine: Number,
costumeContest: Boolean, // Superseded by costumeContests
nye: Number,
habiticaDays: Number,
greeting: Number,
Expand All @@ -118,6 +117,7 @@ let schema = new Schema({
joinedGuild: Boolean,
joinedChallenge: Boolean,
invitedFriend: Boolean,
lostMasterclasser: Boolean,
},

backer: {
Expand Down

0 comments on commit 0e2b80e

Please sign in to comment.