let last_used = {}; let sounds = { crush: [ ["Thump.", "Thoomp."], ["Crunch."], ["Crrruunch."], ["CRUNCH!"], ["CRRRUNNCH!"], ["SKRRRRUNCH!"], ["SKRRRRRRRSMASH!"], ], swallow: [ ["Ulp.", "Glp.", "Slurp."], ["Glrph.", "Glurk."], ["Gluuuurrkph!", "Glurp - GLK."], ["GLRP!", "GULP!", "GLUK!"], ["GLRRRRPKH!", "GLUUUURK!"], ["GLUUUUURRPKH!", "GLOOOORPH-GLK!"], ], drip: [ ["Drip."], ["Dribble"], ["Drip-sploosh"], ["Dribble-SPLOOSH!"], ["SPLOOOOOSH!!"], ], liquid: [ ["Sploosh."], ["Gush!"], ["SPLOOSH!"], ["SPLOOSH!"], ["SPLOOOOOOSH!"], ], insert: [ ["Slp.", "Shlk."], ["Shlp.", "Shlrp."], ["Shlllp."], ["SHLP!", "SQUELCH!"], ["SHLLLLRP!"], ], drop: [["Thump."], ["Thump!"], ["Splat."], ["Splat!"], ["SPLAT!"]], belch: [ ["Burp.", "Urp."], ["Urph.", "Burph."], ["Urrrrrph."], ["UuuuuuuRRRRRPPHHHhhhh."], ["UUUURRRRPHH!"], ["BUUUURRRRRRRRPPPHHH!"], ], fart: [ ["Pft."], ["Pffft."], ["Pfffffbt."], ["Frrrrrrrt."], ["FRRRRRRRRPBBT!"], ], scat: [ ["Clench."], ["Squeeeeeze."], ["Squeeeeeeeeeeeze."], ["Sqlllllch."], ["SQLLLLLLCH!"], ], digest: [ ["Grrgle."], ["Grrrrgle"], ["Grrrrlglorp."], ["GrrrrGLRRRLPH!"], ["GRRRRRLGPRLHK!"], ], goo: [ ["Splat."], ["Squish."], ["Squish!"], ["SQLCH!"], ["SQLLLLRCH!"], ["SQQQQUEEEEELLCH!"], ], vomit: [ ["Hurk."], ["Hurrk."], ["Bleugh."], ["Bleugh!"], ["Bleeeugh!"], ["BLEEEUGHK!"], ], breath: [["Woosh."], ["Fwoosh."], ["FWOOSH."], ["FWOOSH!"], ["FWOOOOOOSH!"]], chew: [ ["Snap.", "Crack."], ["Crunch."], ["Crack!"], ["CRUNCH!"], ["CRRRUNCH!"], ], magic: [["Zap."], ["Zap!"], ["Fwoosh!"]], }; function pickByMass(name, mass) { let list = sounds[name]; let index = Math.floor(Math.log10(mass / 100) / 2); index = Math.max(index, 0); choice = index < list.length ? list[index] : list[list.length - 1]; let subindex = Math.floor(Math.random() * Math.floor(choice.length)); // less likely to repeat if (last_used[name] != undefined && last_used[name] == subindex) { subindex = Math.floor(Math.random() * Math.floor(choice.length)); } last_used[name] = subindex; return choice[subindex]; } function getSound(name, mass) { return "" + pickByMass(name, mass) + ""; }