let config = { 0: [{ name: 'Common Essence', sprite: [0, 2] }, { name: 'Iron Bar', sprite: [0, 0] }, { name: 'Cloth Scrap', sprite: [0, 1] }, { name: 'Leather Scrap', sprite: [0, 7] }], 1: [{ name: 'Magic Essence', sprite: [0, 3] }], 2: [{ name: 'Rare Essence', sprite: [0, 4] }], 3: [{ name: 'Cerulean Pearl', sprite: [11, 9] }, { name: 'Epic Essence', sprite: [0, 5] }], 4: [{ name: 'Legendary Essence', sprite: [0, 6] }] }; module.exports = { generate: function (streak) { let items = []; let qualityTotals = { 0: 1 + Math.min(streak * 3, 15), 1: ~~(streak / 3), 2: ~~(streak / 5), 3: ~~(streak / 10), 4: ~~(streak / 21) }; for (let p in qualityTotals) { let total = qualityTotals[p]; let picks = config[p]; while (total > 0) { let pick = picks[~~(Math.random() * picks.length)]; let amount = 1 + ~~(Math.random() * (total - 1)); total -= amount; let item = items.find(f => (f.name === pick.name)); if (!item) { item = extend(true, { material: true, quality: p }, pick); item.quantity = 0; items.push(item); } item.quantity += amount; } } if (items.length > 0) items[0].msg = `Daily login reward for ${streak} days:`; return items; } };