mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-18 15:17:25 +01:00
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:
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user