bw-auto-battle

http://www.bloodyworld.com

  1. // ==UserScript==
  2. // @name bw-auto-battle
  3. // @description http://www.bloodyworld.com
  4. // @include http://www.bloodyworld.com/*
  5. // @version 0.0.1.20150604003425
  6. // @namespace https://greasyfork.org/users/12000
  7. // ==/UserScript==
  8.  
  9. if(!document.location.href.match("http://www.bloodyworld.com/xfn")) {
  10. if (document.location.href.match("http://www.bloodyworld.com/index.php\\?file=menu")) {
  11. window.opera.addEventListener('AfterEvent.load',function(e){
  12. if( e.event.target instanceof Document) {
  13. kobb = document.getElementById('kob_tbl');
  14. if (!kobb) {
  15. /* Create special menu */
  16. var newdiv = document.createElement('div');
  17. newdiv.setAttribute('id','kob_conf');
  18. newdiv.innerHTML = '<hr><table border=1><tr id=kob_tbl><td>&nbsp;</td></tr></table>';
  19. document.body.appendChild(newdiv);
  20. kobb = document.getElementById('kob_tbl');
  21. }
  22. newtd=document.createElement('td');
  23. newtd.innerHTML = "<input type=checkbox id=kob_autobattle>Auto-battle<br>"+
  24. "<button onclick='top.main.bwab_fight_set();return false;'>Fight</button>"+
  25. "<button onclick='top.main.bwab_def_set();return false;'>Defend</button><br>"+
  26. "MinHP: <input size=4 id=kob_ab_stophp value="+Math.floor(top.main.realLife*0.25)+">";
  27. kobb.appendChild(newtd);
  28. }
  29. },false);
  30. } else {
  31. function scan_items()
  32. {
  33. var db = document.body.innerHTML;
  34.  
  35. var ans = new Object();
  36. var uid = db.match(/showNameBlock\('[^']+','([0-9]+)'/i)[1];
  37. var l = db.match(/var h_[^}]+}";/ig);
  38. var re = new RegExp("var h_([a-z0-9]+)"+uid+"=[^}]+'fi':'([0-9]*)'");
  39. for(var i=0;i<l.length;i++) {
  40. var rr = l[i].match(re);
  41. if (rr) ans[rr[1]] = rr[2];
  42. }
  43. return ans;
  44. }
  45.  
  46. function bwab_def_set()
  47. {
  48. var items = (function(){ try { return scan_items(); } catch (error) { return new Object(); } })()
  49. var verkart = [10,10,10,10,10];
  50. verkart[0] += Math.max(items["shlem"], items['necklace']); // head
  51. verkart[1] += Math.max(items["weapon"], items['ring'], items['ring2']); // right hand
  52. verkart[2] += Math.max(items['armours']); // body
  53. verkart[3] += Math.max(items["weapon2"], items['ring3'], items['ring4']); // left hand
  54. verkart[4] += Math.max(items["boots"], items["belt"]); // legs
  55. var vertot = verkart[0] + verkart[1] + verkart[2] + verkart[3] + verkart[4];
  56. var s = 0;
  57. for (var i=0; i<5; i++) {
  58. s+=verkart[i]; verkart[i] = s*5/vertot;
  59. }
  60. bDEF = document.getElementsByName('shit[]');
  61. if (bDEF && bDEF.length > 0) {
  62. if (TotalDEF!=0) {
  63. for (i = 0; i<bDEF.length; i++) {
  64. bDEF[i].checked = false;
  65. }
  66. }
  67. set = [0,0,0,0,0];
  68. for (i = 0; i<MaxTotalDEF; i++) {
  69. var j = -1;
  70. while(j<0 || set[j] == 1) {
  71. var k = Math.floor(Math.random()*5);
  72. for (j=0; j<4; j++) if (k < verkart[j]) break;
  73. j = Math.floor(Math.random()*5);
  74. }
  75. set[j] = 1;
  76. }
  77. for (i = 0; i<bDEF.length; i++) {
  78. bDEF[i].checked = (set[i]==1);
  79. }
  80. TotalDEF = MaxTotalDEF;
  81. }
  82. };
  83.  
  84. function bwab_fight_set()
  85. {
  86. if (MaxTotalATK > 1) {
  87. bATK = document.getElementsByName('fire[]');
  88. if (bATK && bATK.length > 0) {
  89. if (TotalATK!=0) {
  90. for (i = 0; i<bATK.length; i++) {
  91. bATK[i].checked = false;
  92. }
  93. }
  94. set = [0,0,0,0,0];
  95. for (i = 0; i<MaxTotalATK; i++) {
  96. j = Math.floor(Math.random()*5);
  97. set[j]++;
  98. }
  99. c = bATK.length/5;
  100. for (i = 0; i<5; i++) {
  101. for(j=0; j<set[i]; j++) {
  102. bATK[i*c+j].checked = true;
  103. }
  104. }
  105. TotalATK = MaxTotalATK;
  106. }
  107. } else {
  108. bATK = document.getElementsByName('fire');
  109. if (bATK && bATK.length > 0) {
  110. j = Math.floor(Math.random()*bATK.length);
  111. bATK[j].checked = true;
  112. }
  113. TotalATK = MaxTotalATK;
  114. }
  115. };
  116.  
  117. window.opera.addEventListener('AfterEvent.load',function(e){
  118. if( e.event.target instanceof Document && top.menu.document.getElementById('kob_autobattle').checked ) {
  119. bwab_def_set();
  120. bwab_fight_set();
  121. youRL = document.body.innerHTML.match(/realLife = parseInt\('([0-9]+)'\);/)[1]+0;
  122. if (youRL <= (top.menu.document.getElementById('kob_ab_stophp').value+0)) {
  123. SendSay("Life below auto-minimum!");
  124. } else
  125. if ((MaxTotalATK > 0) && (TotalATK == MaxTotalATK) && (MaxTotalDEF > 0) && (TotalDEF == MaxTotalDEF)) {
  126. hitin = Math.random()*1000;
  127. setTimeout("document.getElementsByName('go')[0].click()", hitin+1000);
  128. }
  129. }
  130. },false);
  131. }
  132. }