script.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. let diff_tier = [
  2. 0, // 0 cells
  3. 2, // 1 cell
  4. 5, // 2 cells
  5. 8, // 3 cells
  6. 11 // 4 cells
  7. ];
  8. let level_tier = [
  9. [1, 0], // PrisonStart
  10. [3, 0], // PrisonCourtyard
  11. [7, 2], // PrisonDepths
  12. [3, 2], // SewerShort
  13. [6, 2], // PrisonRoof
  14. [8, 2], // Ossuary
  15. [7, 3], // SewerDepths
  16. [11, 0], // Bridge
  17. [11, 0], // Beholder
  18. // [9, 0], // PrisonCorrupt
  19. [11, 2], // StiltVillage
  20. [12, 2], // AncientTemple
  21. [12, 2], // Cemetery
  22. [15, 2], // Crypt
  23. [16, 2], // ClockTower
  24. // [13, 0], // Cavern
  25. [21, 0], // TopClockTower
  26. // [16, 0], // Giant
  27. [22, 2], // Castle
  28. [26, 0] // Throne
  29. ];
  30. let mob_hp = [
  31. 120, // Zombie
  32. 90, // FastZombie
  33. 140, // FlyZombie
  34. 45, // S_Fly
  35. 140,
  36. 30,
  37. 50,
  38. 100,
  39. 100, // Scorpio
  40. 390,
  41. 100,
  42. 110,
  43. 60,
  44. 140,
  45. 160,
  46. 230, // LeapingDuelyst
  47. 100,
  48. 125,
  49. 150,
  50. 1,
  51. 1,
  52. 40,
  53. 150, // Shielder
  54. 215,
  55. 220,
  56. 200,
  57. 1000,
  58. 35,
  59. 250,
  60. 200, // PirateChief
  61. 195,
  62. 90,
  63. 100,
  64. 200,
  65. 400,
  66. 190,
  67. 300,
  68. 150,
  69. 4096,
  70. 4096,
  71. 250,
  72. 2500,
  73. 5900
  74. ];
  75. let stats = [1, 1, 1];
  76. let diff = 0;
  77. let mob = -1;
  78. let level = -1;
  79. function separator_gen(val) {
  80. return val.toString().replace(/\B(?=(\d{3})+(?!\d))/g, " ");
  81. }
  82. function recalc() {
  83. if(mob == -1 || level == -1) {
  84. return;
  85. }
  86. let result = 0;
  87. let result1 = 0;
  88. let result2 = 0;
  89. let allstats = Number(stats[0]) + Number(stats[1]) + Number(stats[2]) - 3;
  90. let current_diff = diff_tier[diff];
  91. let current_mob_hp = mob_hp[mob];
  92. let current_level_mintier = Number(current_diff) + Number(level_tier[level][0]);
  93. let current_level_maxtier = Number(current_diff + level_tier[level][0]) + Number(level_tier[level][1]);
  94. // alert(current_mob_hp + ' ' + current_level_mintier + ' ' + current_level_maxtier + ' ' + allstats);
  95. result1 = Math.round(current_mob_hp * (1 + current_level_mintier * .12) * Math.pow(1.08, allstats));
  96. result2 = Math.round(current_mob_hp * (1 + current_level_maxtier * .12) * Math.pow(1.08, allstats));
  97. let hardcap = null;
  98. let result_hardcap = 0;
  99. switch(Number(mob)) {
  100. case 38: hardcap = .05; break;
  101. case 39: hardcap = .05; break;
  102. case 40: hardcap = .25; break;
  103. case 41: hardcap = 0.03; break;
  104. case 42: hardcap = .05; break;
  105. default: hardcap = .0;
  106. }
  107. if(result1 === result2) {
  108. result = separator_gen(result1);
  109. result_hardcap = Math.round(hardcap * result1);
  110. }
  111. else {
  112. result = separator_gen(result1) + "-" + separator_gen(result2);
  113. result_hardcap = separator_gen(Math.round(hardcap * result1)) + "-" + separator_gen(Math.round(hardcap * result2));
  114. }
  115. result_hardcap += ' (' + (hardcap * 100) + '%)';
  116. let capdiv = document.getElementById('capdiv');
  117. if(hardcap > .0) {
  118. capdiv.style.display = "block";
  119. }
  120. else {
  121. capdiv.style.display = "none";
  122. }
  123. document.getElementById('result').innerHTML = result;
  124. document.getElementById('hardcap').innerHTML = result_hardcap;
  125. }
  126. function update_stat(type, val) {
  127. stats[type] = val;
  128. recalc(false);
  129. }
  130. function update_diff(val) {
  131. diff = val;
  132. recalc();
  133. }
  134. function update_mob(val) {
  135. mob = val;
  136. recalc();
  137. }
  138. function update_level(val) {
  139. level = val;
  140. recalc();
  141. }
  142. function init() {
  143. reset();
  144. stats[0] = document.getElementById('brut').value;
  145. stats[1] = document.getElementById('tact').value;
  146. stats[2] = document.getElementById('surv').value;
  147. }
  148. function reset() {
  149. document.getElementById('frm').reset();
  150. document.getElementById('result').innerHTML = '—';
  151. document.getElementById('capdiv').style.display = "none";
  152. stats = [1, 1, 1];
  153. diff = 0;
  154. mob = -1;
  155. level = -1;
  156. }