Ensured quest drops are only from incomplete progress (#9671)

* Ensured quest drops are only from incomplete progress

* Fixed spelling error
This commit is contained in:
Keith Holliday
2017-12-07 12:33:40 -05:00
committed by GitHub
parent e1a1b4eab6
commit 57193bd5f3
2 changed files with 24 additions and 1 deletions

View File

@@ -391,6 +391,20 @@ describe('Group Model', () => {
expect(party.quest.progress.collect.soapBars).to.eq(5);
});
it('does not drop an item if not need when on a collection quest', async () => {
party.quest.key = 'dilatoryDistress1';
party.quest.active = false;
await party.startQuest(questLeader);
party.quest.progress.collect.fireCoral = 20;
await party.save();
await Group.processQuestProgress(participatingMember, progress);
party = await Group.findOne({_id: party._id});
expect(party.quest.progress.collect.fireCoral).to.eq(20);
});
it('sends a chat message about progress', async () => {
await Group.processQuestProgress(participatingMember, progress);

View File

@@ -874,8 +874,17 @@ schema.methods._processCollectionQuest = async function processCollectionQuest (
let quest = questScrolls[group.quest.key];
let itemsFound = {};
const possibleItemKeys = Object.keys(quest.collect).filter((key) => {
return group.quest.progress.collect[key] !== quest.collect[key].count;
});
const possibleItemsToCollect = possibleItemKeys.reduce((accumulator, current, index) => {
accumulator[possibleItemKeys[index]] = quest.collect[current];
return accumulator;
}, {});
_.times(progress.collectedItems, () => {
let item = shared.randomVal(quest.collect, {key: true});
let item = shared.randomVal(possibleItemsToCollect, {key: true});
if (!itemsFound[item]) {
itemsFound[item] = 0;