|  | 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 "<i>" + pickByMass(name,mass) + "</i>";
}
 |