DC - Bullets_alert_fixed

Play song while gun charger is low on fight

  1. // ==UserScript==
  2. // @name DC - Bullets_alert_fixed
  3. // @author Ladoria, Lorkah(fix)
  4. // @version 1
  5. // @grant none
  6. // @description Play song while gun charger is low on fight
  7. // @match https://www.dreadcast.net/Main
  8. // @copyright 2015+, Ladoria
  9. // @namespace InGame
  10. // ==/UserScript==
  11.  
  12. var bullet_chargers = new Array();
  13.  
  14. var lowBullets = 1;
  15.  
  16. $('body').append('<audio id="DC_bullets_low_charger" src="https://bacon-network.net/dreadcast/bip.mp3" type="audio/waw"></audio><audio id="DC_bullets_empty_charger" src="https://bacon-network.net/dreadcast/low_bullet.mp3" type="audio/waw"></audio>');
  17. $("#DC_bullets_low_charger").prop('volume', '1');
  18. $("#DC_bullets_empty_charger").prop('volume', '1');
  19.  
  20. $(document).ready( function() {
  21. function alert_user() {
  22. //if no fight, skip
  23. if(0 == $('#combat_barre_out').length)
  24. return;
  25.  
  26. //console.log('fight detected');
  27.  
  28. var gun_chargers = $('#equipement_inventaire [class*=balles_munitions_]');
  29.  
  30. $('#equipement_inventaire [class*=balles_munitions_]').eq(0).parent().parent().parent().parent().parent().parent();
  31.  
  32. if(0 == gun_chargers.length)
  33. return;
  34.  
  35. for(var i = 0; i <= gun_chargers.length - 1; i++) {
  36. var gun_charger = gun_chargers.eq(i);
  37. var bullets = parseInt(gun_charger.html());
  38. var bullets_alert;
  39.  
  40. //console.log('Bullets : ' + bullets);
  41.  
  42. //charger empty, low or ok + colouration
  43. if(0 >= bullets) {
  44. bullets_alert = 'empty';
  45. animate_gun(i, 'red');
  46. }
  47. else if(lowBullets >= bullets) {
  48. bullets_alert = 'low'
  49. animate_gun(i, 'yellow');
  50. }
  51. else
  52. animate_gun(i, 'none');
  53.  
  54. var charger = gun_charger.attr('class');
  55.  
  56. //if unhandled
  57. if(-1 == $.inArray(charger, Object.keys(bullet_chargers)))
  58. bullet_chargers[charger] = {previous_bullets : -1, alert : bullets_alert};
  59.  
  60. //bullets in charger changed? Yes : need to alert
  61. if(bullets != bullet_chargers[charger].previous_bullets)
  62. bullet_chargers[charger].alert = bullets_alert;
  63.  
  64. bullet_chargers[charger].previous_bullets = bullets;
  65. }
  66.  
  67. //console.log(bullet_chargers);
  68.  
  69. //what sound to play?
  70. var alert = 'none'
  71. for(var key in bullet_chargers) {
  72. //console.log(key);
  73. if('empty' != alert) {
  74. if('empty' == bullet_chargers[key].alert)
  75. alert = 'empty';
  76. if ('low' == bullet_chargers[key].alert)
  77. alert = 'low';
  78. }
  79.  
  80. //alert noted, neutralise
  81. bullet_chargers[key].alert = 'none';
  82. }
  83.  
  84. //console.log(alert);
  85.  
  86. //no need to alert, skip
  87. if('none' == alert)
  88. return;
  89.  
  90. //console.log('play alert');
  91.  
  92. var song = ('empty' == alert) ? song = $('#DC_bullets_empty_charger')[0]
  93. : song = $('#DC_bullets_low_charger')[0];
  94.  
  95. song.load();
  96. song.play();
  97. }
  98.  
  99. function animate_gun(case_number,color) {
  100. var rgba = 'rgba(0,0,0,0)';
  101. if('red' == color)
  102. rgba = 'rgba(255,0,0,0.5)';
  103. if('yellow' == color)
  104. rgba = 'rgba(255,125,0,0.5)';
  105.  
  106. $('#equipement_inventaire .zone_case' + (case_number + 3)).find('img.activable').css({'backgroundColor' : rgba});
  107. }
  108.  
  109. $(document).ajaxComplete( function(a,b,c) {
  110. if(/Check/.test(c.url)) {
  111. alert_user();
  112. }
  113. });
  114. });
  115. console.log('DC - Bullets Alert started');