Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 

38 řádky
675 B

  1. const buildPool = config => {
  2. const pool = [];
  3. config.forEach(c => {
  4. for (let i = 0; i < c.chance; i++)
  5. pool.push(c.name);
  6. });
  7. return pool;
  8. };
  9. module.exports = (itemCount, useConfig = []) => {
  10. const config = useConfig;
  11. const pool = buildPool(useConfig);
  12. const items = [];
  13. for (let i = 0; i < itemCount; i++) {
  14. let pickName = pool[~~(Math.random() * pool.length)];
  15. const pick = config.find(f => f.name === pickName);
  16. if (!pick)
  17. break;
  18. let item = items.find(f => f.name === pickName);
  19. if (!item) {
  20. items.push({
  21. ...pick,
  22. quantity: pick.quantity || 1
  23. });
  24. } else
  25. item.quantity += (pick.quantity || 1);
  26. }
  27. return items;
  28. };