Revert "feature: adding hp notification for boss damage" (#8340)

This commit is contained in:
Alys
2016-12-31 17:31:25 +10:00
committed by GitHub
parent fe7850d10f
commit 91f5c47d9d
6 changed files with 7 additions and 66 deletions

View File

@@ -219,37 +219,6 @@ describe('Group Model', () => {
expect(updatedUndecidedMember.stats.hp).to.eql(50); expect(updatedUndecidedMember.stats.hp).to.eql(50);
}); });
it('doesn\'t notify the user when the boss damage is 0', async () => {
progress.down = 0;
await Group.processQuestProgress(participatingMember, progress);
let updatedLeader = await User.findById(questLeader._id);
expect(updatedLeader.stats.hp).to.eql(50);
expect(updatedLeader.notifications.length).to.eql(0);
});
it('notifies user of boss damage', async () => {
await Group.processQuestProgress(participatingMember, progress);
let updatedLeader = await User.findById(questLeader._id);
expect(updatedLeader.stats.hp).to.eql(42.5);
expect(updatedLeader.notifications[0].type).to.eql('BOSS_DAMAGE');
expect(updatedLeader.notifications[0].data).to.eql({damageTaken: -7.5});
});
it('combines boss damage notifications across multiple updates', async () => {
await Group.processQuestProgress(participatingMember, progress);
await Group.processQuestProgress(participatingMember, progress);
let updatedLeader = await User.findById(participatingMember._id);
expect(updatedLeader.stats.hp).to.eql(35);
expect(updatedLeader.notifications[0].type).to.eql('BOSS_DAMAGE');
expect(updatedLeader.notifications[0].data).to.eql({damageTaken: -15});
});
it('applies damage only to participating members of party even under buggy conditions', async () => { it('applies damage only to participating members of party even under buggy conditions', async () => {
// stops unfair damage from mbugs like https://github.com/HabitRPG/habitrpg/issues/7653 // stops unfair damage from mbugs like https://github.com/HabitRPG/habitrpg/issues/7653
party.quest.members = { party.quest.members = {

View File

@@ -149,9 +149,6 @@ habitrpg.controller('NotificationCtrl',
case 'LOGIN_INCENTIVE': case 'LOGIN_INCENTIVE':
Notification.showLoginIncentive(User.user, notification.data, Social.loadWidgets); Notification.showLoginIncentive(User.user, notification.data, Social.loadWidgets);
break; break;
case 'BOSS_DAMAGE':
Notification.bossDamage(notification.data.damageTaken);
break;
default: default:
if (notification.data.headerText && notification.data.bodyText) { if (notification.data.headerText && notification.data.bodyText) {
var modalScope = $rootScope.$new(); var modalScope = $rootScope.$new();

View File

@@ -78,13 +78,6 @@ angular.module("habitrpg").factory("Notification",
_notify(_sign(val) + " " + _round(val) + " " + window.env.t('health'), 'hp', 'glyphicon glyphicon-heart'); _notify(_sign(val) + " " + _round(val) + " " + window.env.t('health'), 'hp', 'glyphicon glyphicon-heart');
} }
function bossDamage(val) {
var data = {
val: _round(val),
};
_notify(window.env.t('bossDamageDone', data), 'hp', 'glyphicon glyphicon-heart');
}
function lvl(){ function lvl(){
_notify(window.env.t('levelUp'), 'lvl', 'glyphicon glyphicon-chevron-up'); _notify(window.env.t('levelUp'), 'lvl', 'glyphicon glyphicon-chevron-up');
} }
@@ -183,6 +176,5 @@ angular.module("habitrpg").factory("Notification",
text: text, text: text,
quest: quest, quest: quest,
showLoginIncentive: showLoginIncentive, showLoginIncentive: showLoginIncentive,
bossDamage: bossDamage,
}; };
}]); }]);

View File

@@ -41,7 +41,6 @@
"collected": "Collected", "collected": "Collected",
"collectionItems": "<%= number %> <%= items %>", "collectionItems": "<%= number %> <%= items %>",
"itemsToCollect": "Items to Collect", "itemsToCollect": "Items to Collect",
"bossDamageDone": "Damage from Boss: - <%= val %> Health",
"bossDmg1": "Each completed Daily and To-Do and each positive Habit hurts the boss. Hurt it more with redder tasks or Brutal Smash and Burst of Flames. The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies! <strong>All damage to and from a boss is tallied on cron (your day roll-over).</strong>", "bossDmg1": "Each completed Daily and To-Do and each positive Habit hurts the boss. Hurt it more with redder tasks or Brutal Smash and Burst of Flames. The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies! <strong>All damage to and from a boss is tallied on cron (your day roll-over).</strong>",
"bossDmg2": "Only participants will fight the boss and share in the quest loot.", "bossDmg2": "Only participants will fight the boss and share in the quest loot.",
"bossDmg1Broken": "Each completed Daily and To-Do and each positive Habit hurts the boss... Hurt it more with redder tasks or Brutal Smash and Burst of Flames... The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies... <strong>All damage to and from a boss is tallied on cron (your day roll-over)...</strong>", "bossDmg1Broken": "Each completed Daily and To-Do and each positive Habit hurts the boss... Hurt it more with redder tasks or Brutal Smash and Burst of Flames... The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies... <strong>All damage to and from a boss is tallied on cron (your day roll-over)...</strong>",

View File

@@ -709,26 +709,12 @@ schema.methods._processBossQuest = async function processBossQuest (options) {
} }
} }
let promises = [];
// Everyone takes damage // Everyone takes damage
if (down !== 0) { await User.update({
let members = await User.find({
_id: {$in: this.getParticipatingQuestMembers()}, _id: {$in: this.getParticipatingQuestMembers()},
}).select('notifications stats.hp'); }, {
$inc: {'stats.hp': down},
_.each(members, (member) => { }, {multi: true}).exec();
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 // 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 // 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 // must be notModified or otherwise could overwrite future changes: if the user is saved it'll save
@@ -740,11 +726,10 @@ schema.methods._processBossQuest = async function processBossQuest (options) {
group.sendChat(`\`You defeated ${quest.boss.name('en')}! Questing party members receive the rewards of victory.\``); group.sendChat(`\`You defeated ${quest.boss.name('en')}! Questing party members receive the rewards of victory.\``);
// Participants: Grant rewards & achievements, finish quest // Participants: Grant rewards & achievements, finish quest
promises.push(group.finishQuest(shared.content.quests[group.quest.key])); await group.finishQuest(shared.content.quests[group.quest.key]);
} }
promises.push(group.save()); return await group.save();
return await Bluebird.all(promises);
}; };
schema.methods._processCollectionQuest = async function processCollectionQuest (options) { schema.methods._processCollectionQuest = async function processCollectionQuest (options) {

View File

@@ -16,7 +16,6 @@ const NOTIFICATION_TYPES = [
'GROUP_TASK_APPROVED', 'GROUP_TASK_APPROVED',
'LOGIN_INCENTIVE', 'LOGIN_INCENTIVE',
'GROUP_INVITE_ACCEPTED', 'GROUP_INVITE_ACCEPTED',
'BOSS_DAMAGE',
'SCORED_TASK', 'SCORED_TASK',
]; ];