Sound effects go brr (Oib.io)

BRRRRRRRRRRRR

  1. // ==UserScript==
  2. // @name Sound effects go brr (Oib.io)
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.1
  5. // @description BRRRRRRRRRRRR
  6. // @author kmccord1
  7. // @match http://oib.io/
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. (function() {
  12.  
  13.  
  14.  
  15.  
  16. var sounds = {
  17. "oof" : {
  18. url : "https://raw.githubusercontent.com/ShantnuS/oof-on-close/master/oof.mp3"
  19. }
  20. };
  21.  
  22.  
  23. var soundContext = new AudioContext();
  24.  
  25. for(var key in sounds) {
  26. loadSound(key);
  27. }
  28.  
  29. function loadSound(name){
  30. var sound = sounds[name];
  31.  
  32. var url = sound.url;
  33. var buffer = sound.buffer;
  34.  
  35. var request = new XMLHttpRequest();
  36. request.open('GET', url, true);
  37. request.responseType = 'arraybuffer';
  38.  
  39. request.onload = function() {
  40. soundContext.decodeAudioData(request.response, function(newBuffer) {
  41. sound.buffer = newBuffer;
  42. });
  43. }
  44.  
  45. request.send();
  46. }
  47.  
  48. function playSound(name, options){
  49. var sound = sounds[name];
  50. var soundVolume = sounds[name].volume || 1;
  51.  
  52. var buffer = sound.buffer;
  53. if(buffer){
  54. var source = soundContext.createBufferSource();
  55. source.buffer = buffer;
  56.  
  57. var volume = soundContext.createGain();
  58.  
  59. if(options) {
  60. if(options.volume) {
  61. volume.gain.value = soundVolume * options.volume;
  62. }
  63. } else {
  64. volume.gain.value = soundVolume;
  65. }
  66.  
  67. volume.connect(soundContext.destination);
  68. source.connect(volume);
  69. source.start(0);
  70. }
  71. }
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79. function checkoibs() {
  80. if (window.lapa10315mauve) {
  81. for (let i = 0; i < window.lapa10315mauve.units.length; i++) {
  82. if (window.lapa10315mauve.units[i].state == 3 && !window.lapa10315mauve.units[i].dead) {
  83. window.lapa10315mauve.units[i].dead = true;
  84. playSound("oof");
  85. }
  86. }
  87. }
  88. requestAnimationFrame(checkoibs);
  89. }
  90. checkoibs();
  91. })();