feature: adding hp notification for boss damage (#8249)

* feature: adding hp notification for boss damage. fixes #7749

* Updating boss damage text to 'Damage from Boss' to make it more clear
This commit is contained in:
Travis
2016-12-30 13:29:20 -06:00
committed by Keith Holliday
parent 47d9594679
commit 2a1f52a359
6 changed files with 66 additions and 7 deletions

View File

@@ -709,12 +709,26 @@ schema.methods._processBossQuest = async function processBossQuest (options) {
}
}
let promises = [];
// Everyone takes damage
await User.update({
_id: {$in: this.getParticipatingQuestMembers()},
}, {
$inc: {'stats.hp': down},
}, {multi: true}).exec();
if (down !== 0) {
let members = await User.find({
_id: {$in: this.getParticipatingQuestMembers()},
}).select('notifications stats.hp');
_.each(members, (member) => {
member.stats.hp += down;
let bossNotification = _.find(member.notifications, {type: 'BOSS_DAMAGE'});
if (bossNotification) {
bossNotification.data.damageTaken += down;
bossNotification.markModified('data.damageTaken');
} else {
member.addNotification('BOSS_DAMAGE', {damageTaken: down});
}
promises.push(member.save());
});
}
// Apply changes the currently cronning user locally so we don't have to reload it to get the updated state
// TODO how to mark not modified? https://github.com/Automattic/mongoose/pull/1167
// must be notModified or otherwise could overwrite future changes: if the user is saved it'll save
@@ -726,10 +740,11 @@ schema.methods._processBossQuest = async function processBossQuest (options) {
group.sendChat(`\`You defeated ${quest.boss.name('en')}! Questing party members receive the rewards of victory.\``);
// Participants: Grant rewards & achievements, finish quest
await group.finishQuest(shared.content.quests[group.quest.key]);
promises.push(group.finishQuest(shared.content.quests[group.quest.key]));
}
return await group.save();
promises.push(group.save());
return await Bluebird.all(promises);
};
schema.methods._processCollectionQuest = async function processCollectionQuest (options) {