diff --git a/common/script/fns/randomDrop.js b/common/script/fns/randomDrop.js index 92064e62f1..ec6f350d4c 100644 --- a/common/script/fns/randomDrop.js +++ b/common/script/fns/randomDrop.js @@ -3,7 +3,7 @@ import content from '../content/index'; import i18n from '../i18n'; import { daysSince } from '../cron'; import { diminishingReturns } from '../statHelpers'; -import predictableRandom from './predictableRandom'; +import _predictableRandom from './predictableRandom'; import randomVal from './randomVal'; // Clone a drop object maintaining its functions so that we can change it without affecting the original item @@ -13,7 +13,7 @@ function cloneDropItem (drop) { }); } -module.exports = function randomDrop (user, modifiers, req = {}) { +module.exports = function randomDrop (user, options, req = {}) { let acceptableDrops; let chance; let drop; @@ -23,7 +23,8 @@ module.exports = function randomDrop (user, modifiers, req = {}) { let rarity; let task; - task = modifiers.task; + let predictableRandom = options.predictableRandom || _predictableRandom; + task = options.task; chance = _.min([Math.abs(task.value - 21.27), 37.5]) / 150 + 0.02; chance *= task.priority * // Task priority: +50% for Medium, +100% for Hard diff --git a/test/common/fns/randomDrop.test.js b/test/common/fns/randomDrop.test.js index 9569067ffc..39920e02bf 100644 --- a/test/common/fns/randomDrop.test.js +++ b/test/common/fns/randomDrop.test.js @@ -1,7 +1,3 @@ -// TODO disable until we can find a way to stub predictableRandom - -/* eslint-disable */ - import randomDrop from '../../../common/script/fns/randomDrop'; import { generateUser, @@ -10,10 +6,9 @@ import { generateDaily, generateReward, } from '../../helpers/common.helper'; -// import predictableRandom from '../../../common/script/fns/predictableRandom'; // eslint-disable import content from '../../../common/script/content/index'; -xdescribe('common.fns.randomDrop', () => { +describe('common.fns.randomDrop', () => { let user; let task; let predictableRandom; @@ -40,9 +35,9 @@ xdescribe('common.fns.randomDrop', () => { predictableRandom = () => { return 0.0001; }; - randomDrop(user, { task }); + randomDrop(user, { task, predictableRandom }); expect(user.party.quest.progress.collect[collectWhat]).to.eql(1); - randomDrop(user, { task }); + randomDrop(user, { task, predictableRandom }); expect(user.party.quest.progress.collect[collectWhat]).to.eql(2); }); @@ -54,7 +49,7 @@ xdescribe('common.fns.randomDrop', () => { it('does nothing if user.items.lastDrop.count is exceeded', () => { user.items.lastDrop.count = 100; - randomDrop(user, { task }); + randomDrop(user, { task, predictableRandom }); expect(user._tmp).to.eql({}); }); @@ -64,7 +59,7 @@ xdescribe('common.fns.randomDrop', () => { predictableRandom = () => { return 0.1; }; - randomDrop(user, { task }); + randomDrop(user, { task, predictableRandom }); expect(user._tmp).to.not.eql({}); }); @@ -75,7 +70,7 @@ xdescribe('common.fns.randomDrop', () => { predictableRandom = () => { return 0.1; }; - randomDrop(user, { task }); + randomDrop(user, { task, predictableRandom }); expect(user._tmp).to.not.eql({}); }); @@ -86,7 +81,7 @@ xdescribe('common.fns.randomDrop', () => { predictableRandom = () => { return 0.1; }; - randomDrop(user, { task }); + randomDrop(user, { task, predictableRandom }); expect(user._tmp).to.not.eql({}); }); @@ -97,7 +92,7 @@ xdescribe('common.fns.randomDrop', () => { predictableRandom = () => { return 0.1; }; - randomDrop(user, { task }); + randomDrop(user, { task, predictableRandom }); expect(user._tmp).to.not.eql({}); }); @@ -105,7 +100,7 @@ xdescribe('common.fns.randomDrop', () => { predictableRandom = () => { return 0.65; }; - randomDrop(user, { task }); + randomDrop(user, { task, predictableRandom }); expect(user._tmp.drop.type).to.eql('Food'); }); @@ -113,7 +108,7 @@ xdescribe('common.fns.randomDrop', () => { predictableRandom = () => { return 0.35; }; - randomDrop(user, { task }); + randomDrop(user, { task, predictableRandom }); expect(user._tmp.drop.type).to.eql('Egg'); }); @@ -122,7 +117,7 @@ xdescribe('common.fns.randomDrop', () => { predictableRandom = () => { return 0.01; }; - randomDrop(user, { task }); + randomDrop(user, { task, predictableRandom }); expect(user._tmp.drop.type).to.eql('HatchingPotion'); expect(user._tmp.drop.value).to.eql(5); expect(user._tmp.drop.key).to.eql('Golden'); @@ -132,7 +127,7 @@ xdescribe('common.fns.randomDrop', () => { predictableRandom = () => { return 0.08; }; - randomDrop(user, { task }); + randomDrop(user, { task, predictableRandom }); expect(user._tmp.drop.type).to.eql('HatchingPotion'); expect(user._tmp.drop.value).to.eql(4); let acceptableDrops = ['Zombie', 'CottonCandyPink', 'CottonCandyBlue']; @@ -143,7 +138,7 @@ xdescribe('common.fns.randomDrop', () => { predictableRandom = () => { return 0.17; }; - randomDrop(user, { task }); + randomDrop(user, { task, predictableRandom }); expect(user._tmp.drop.type).to.eql('HatchingPotion'); expect(user._tmp.drop.value).to.eql(3); let acceptableDrops = ['Red', 'Shade', 'Skeleton']; @@ -154,7 +149,7 @@ xdescribe('common.fns.randomDrop', () => { predictableRandom = () => { return 0.20; }; - randomDrop(user, { task }); + randomDrop(user, { task, predictableRandom }); expect(user._tmp.drop.type).to.eql('HatchingPotion'); expect(user._tmp.drop.value).to.eql(2); let acceptableDrops = ['Base', 'White', 'Desert'];