Advertisement
pasta_la_wista

Untitled

Apr 13th, 2023
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 39.20 KB | None | 0 0
  1. from selenium import webdriver
  2. import time
  3. import discord
  4. from math import *
  5. import random
  6. import asyncio
  7. from vars import *
  8.  
  9. script_text = """let export_fun = ()=>{
  10.  
  11.  
  12. function attackmonster(attacker, ax, ay, x, y, defender, shootok, koef, inuse) {
  13. var mainattack = 1;
  14. var ax1 = ax;
  15. var ay1 = ay;
  16. if (defender == 1000) return 0;
  17. if (defender <= 0) return 0;
  18. if (!window.stage.pole.obj[defender]) return 0;
  19. if (window.stage.pole.obj[defender]['hero']) return 0;
  20. if (window.stage.pole.obj[defender]['rock']) return 0;
  21. if (shootok == undefined) shootok = 0;
  22. if (koef == undefined) koef = 1;
  23. if (inuse == undefined) inuse = '';
  24. var len = window.wmap2[y * defxn + x];
  25. if ((window.stage.pole.obj[attacker].x == x) && (window.stage.pole.obj[attacker].y == y)) len = spd;
  26. if (window.stage.pole.obj[attacker]['big']) {
  27. if (ax > x) {
  28. x++;
  29. };
  30. if (ay > y) {
  31. y++;
  32. };
  33. };
  34. if (window.stage.pole.obj[attacker]['bigx']) {
  35. if (ax > x) {
  36. x++;
  37. };
  38. };
  39. if (window.stage.pole.obj[attacker]['bigy']) {
  40. if (ay > y) {
  41. y++;
  42. };
  43. };
  44. var spd = Math.max(0, Math.round((window.stage.pole.obj[attacker].speed + window.stage.pole.obj[attacker]['ragespeed'] + window.stage.pole.obj[attacker]['speedaddon']) * window.stage.pole.obj[attacker].speedmodifier));
  45. if (window.magic[attacker]['ent']) {
  46. spd = 0;
  47. };
  48. var movelen = spd - len;
  49. window.attacker_c = attacker;
  50. window.ax_c = ax;
  51. window.ay_c = ay;
  52. window.x_c = x;
  53. window.y_c = y;
  54. window.defender_c = defender;
  55. window.shootok_c = shootok;
  56. if ((x == 0) && (y == 0)) {
  57. x = window.stage.pole.obj[attacker]['x'];
  58. y = window.stage.pole.obj[attacker]['y'];
  59. };
  60. if ((defender > 0) && (window.stage.pole.obj[defender]['big'])) {
  61. if ((x - ax > 1) && (ax < x) && (defender == mapobj[ay * defxn + ax + 1])) {
  62. ax++;
  63. };
  64. if ((y - ay > 1) && (ay < y) && (defender == mapobj[(ay + 1) * defxn + ax])) {
  65. ay++;
  66. };
  67. if ((ax - x > 1) && (ax > x) && (defender == mapobj[ay * defxn + ax - 1])) {
  68. ax--;
  69. };
  70. if ((ay - y > 1) && (ay > y) && (defender == mapobj[(ay - 1) * defxn + ax])) {
  71. ay--;
  72. };
  73. };
  74. if ((defender > 0) && (window.stage.pole.obj[defender]['bigx'])) {
  75. if ((x - ax > 1) && (ax < x) && (defender == mapobj[ay * defxn + ax + 1])) {
  76. ax++;
  77. };
  78. if ((ax - x > 1) && (ax > x) && (defender == mapobj[ay * defxn + ax - 1])) {
  79. ax--;
  80. };
  81. };
  82. if ((defender > 0) && (window.stage.pole.obj[defender]['bigy'])) {
  83. if ((y - ay > 1) && (ay < y) && (defender == mapobj[(ay + 1) * defxn + ax])) {
  84. ay++;
  85. };
  86. if ((ay - y > 1) && (ay > y) && (defender == mapobj[(ay - 1) * defxn + ax])) {
  87. ay--;
  88. };
  89. };
  90. let dx = x - ax;
  91. let dy = y - ay;
  92. l = dx * dx + dy * dy;
  93.  
  94. if (movelen == undefined) movelen = 0;;
  95. window.PhysicalModifiers = 1;
  96. window.PhysicalModifiers *= koef;
  97. if (window.stage.pole.obj[attacker]['shadowattack']) l = 0;
  98.  
  99. var hera = 0;
  100. var herd = 0;
  101. len = window.stage.pole.obj_array.length;
  102. for (var k1 = 0; k1 < len; k1++) {
  103. window.k = window.stage.pole.obj_array[k1];
  104.  
  105. if ((window.stage.pole.obj[k].hero) && (window.stage.pole.obj[k].owner == window.stage.pole.obj[attacker].owner)) hera = window.k;
  106. if ((window.stage.pole.obj[k].hero) && (window.stage.pole.obj[k].owner == window.stage.pole.obj[defender].owner)) herd = window.k;
  107. };
  108. if ((window.stage.pole.obj[defender]['pirate']) && ((window.magic[defender]['sea']) || (window.gtype == 125) || (window.gtype == 126) || (window.gtype == 133))) {
  109. window.PhysicalModifiers *= 0.85;
  110. };
  111. if (window.stage.pole.obj[defender]['deadflesh']) {
  112. window.PhysicalModifiers *= 0.8;
  113. };
  114. if (window.stage.pole.obj[defender]['immaterial']) {
  115. window.PhysicalModifiers *= 0.65;
  116. };
  117. if ((window.stage.pole.obj[attacker]['oppressionofweak']) && (window.stage.pole.obj[defender]['level'] == 1)) {
  118. window.PhysicalModifiers *= 1.5;
  119. };
  120. if ((window.stage.pole.obj[attacker]['fearofstrong']) && (window.stage.pole.obj[defender]['level'] == 7)) {
  121. window.PhysicalModifiers *= 0.5;
  122. };
  123. if ((hera > 0) && (window.magic[hera]['bna'])) {
  124. window.PhysicalModifiers = window.PhysicalModifiers * (1 + window.magic[hera]['bna']['effect'] / 100);
  125. if ((window.stage.pole.obj[defender]['mechanical']) && (window.magic[hera]['MEC'])) {
  126. window.PhysicalModifiers *= 1 + window.magic[hera]['MEC']['effect'] / 100;
  127. };
  128. if ((window.stage.pole.obj[attacker]['mechanical']) && (window.magic[hera]['mch'])) {
  129. window.PhysicalModifiers *= 1 + window.magic[hera]['mch']['effect'] / 100;
  130. };
  131. };
  132. if ((window.stage.pole.obj[defender]['building']) && (!window.stage.pole.obj[attacker]['siegewalls'])) {
  133. window.PhysicalModifiers *= 0.05;
  134. };
  135. if ((defender > 0) && (window.stage.pole.obj[attacker]['cruelty']) && ((window.stage.pole.obj[defender]['nowhealth'] < window.stage.pole.obj[defender]['maxhealth']) || (window.stage.pole.obj[defender]['nownumber'] < window.stage.pole.obj[defender]['maxnumber']))) {
  136. window.PhysicalModifiers *= 1.15;
  137. };
  138. if ((defender > 0) && (window.stage.pole.obj[attacker]['morecruelty']) && ((window.stage.pole.obj[defender]['nowhealth'] < window.stage.pole.obj[defender]['maxhealth']) || (window.stage.pole.obj[defender]['nownumber'] < window.stage.pole.obj[defender]['maxnumber']))) {
  139. window.PhysicalModifiers *= 1.3;
  140. };
  141. if ((window.stage.pole.obj[attacker]['giantkiller']) && (window.stage.pole.obj[defender]['big'])) window.PhysicalModifiers *= 2;
  142. if ((window.stage.pole.obj[attacker]['pygmykiller']) && (!window.stage.pole.obj[defender]['big'])) window.PhysicalModifiers *= 1.33;
  143. if (window.stage.pole.obj[attacker]['stormstrike']) window.PhysicalModifiers *= 2;
  144. if ((window.stage.pole.obj[attacker]['undeadkiller']) && (window.stage.pole.obj[defender]['undead'])) window.PhysicalModifiers *= 1.5;
  145. if ((window.stage.pole.obj[attacker]['pirate']) && (window.magic[defender]['blb'])) window.PhysicalModifiers *= 1.5;
  146. if ((!window.stage.pole.obj[attacker]['hero']) && (window.magic[attacker]['zat'])) {
  147. window.PhysicalModifiers *= 1.15;
  148. };
  149. if ((herd > 0) && (window.magic[herd]['bnd'])) {
  150. window.PhysicalModifiers = window.PhysicalModifiers / (1 + window.magic[herd]['bnd']['effect'] / 100);
  151. };
  152. if ((herd > 0) && (window.magic[herd]['fld'])) {
  153. window.PhysicalModifiers = window.PhysicalModifiers * (1 - window.magic[herd]['fld']['effect'] / 100);
  154. };
  155. if ((herd > 0) && (window.magic[herd]['rcd']) && (monster_race[window.stage.pole.obj[attacker]['id']] == window.magic[herd]['rcd']['effect'])) {
  156. window.PhysicalModifiers = window.PhysicalModifiers * 0.93;
  157. };
  158. if (window.magic[attacker]['prp']) {
  159. window.PhysicalModifiers = window.PhysicalModifiers * (1 + window.magic[attacker]['prp']['effect'] / 100);
  160. };
  161. if (window.magic[defender]['sta']) {
  162. window.PhysicalModifiers *= 0.5;
  163. };
  164. if ((window.magic[attacker]['chd']) && (window.stage.pole.obj[window.magic[attacker]['chd']['effect']]['nownumber'] > 0) && (window.magic[attacker]['chd']['effect'] != defender)) {
  165. window.PhysicalModifiers *= 0.55;
  166. };
  167. window.PhysicalModifiers *= window.stage.pole.checkmembrane(defender);
  168. if (!window.stage.pole.obj[attacker]['hero']) {
  169. if ((l <= 2) && (window.stage.pole.obj[attacker]['shooter']) && (!window.stage.pole.obj[attacker]['nopenalty']) && (!window.stage.pole.obj[attacker]['warmachine'])) {
  170. window.PhysicalModifiers = window.PhysicalModifiers * 0.5;
  171. };
  172. if ((l > 2) && (window.stage.pole.obj[attacker]['rangepenalty'])) {
  173. window.PhysicalModifiers = window.PhysicalModifiers * 0.5;
  174. };
  175. window.rangemod = 1;
  176. if ((l > 2) && (window.stage.pole.obj[attacker]['shooter']) && (((window.stage.pole.obj[attacker]['range'] < Math.sqrt(l)) && (!window.stage.pole.obj[attacker].shadowattack)) || ((iswalls) && (!window.stage.pole.obj[attacker]['hero']) && (window.checkwall(x, y, ax, ay))))) {
  177. window.PhysicalModifiers = window.PhysicalModifiers * 0.5;
  178. window.rangemod = 0.5;
  179. };
  180. if ((l > 2) && (window.stage.pole.obj[attacker]['shooter']) && (iswalls2) && (!window.stage.pole.obj[attacker]['hero']) && (((!window.stage.pole.obj[attacker].siegewalls) || (btype == 118)) || (!window.stage.pole.obj[defender].stone)) && (window.checkwall2(x, y, ax, ay, attacker))) {
  181. window.PhysicalModifiers = window.PhysicalModifiers * 0.5;
  182. window.rangemod *= 0.5;
  183. };
  184. };
  185. var _PERK_ARCHERY = 11;
  186. var _PERK_EVASION = 22;
  187. if ((defender > 0) && (window.stage.pole.obj[defender]['dodge']) && (((l <= 2) && (!window.stage.pole.obj[attacker]['ballista']) && (inuse != 'ssh') && (inuse != 'mga') && (inuse != 'dcd') && (inuse != 'chs') && (!window.stage.pole.obj[attacker]['hero'])) || (inuse == 'brs') || (inuse == 'cpt'))) {
  188. window.PhysicalModifiers *= 0.5;
  189. };
  190. if (((l > 2) || (shootok == 1)) && (!window.stage.pole.obj[attacker]['hero']) && (window.stage.pole.obj[attacker]['shooter'])) {
  191. if (window.isperk(attacker, _PERK_ARCHERY)) window.PhysicalModifiers *= 1.2;
  192. if (window.isperk(defender, _PERK_EVASION)) window.PhysicalModifiers *= 0.8;
  193. if ((!window.stage.pole.obj[defender]['lshield']) && (window.stage.pole.shieldother(defender))) {
  194. window.PhysicalModifiers = window.PhysicalModifiers * 0.75;
  195. };
  196. if ((window.stage.pole.obj[defender]['lshield']) || (window.stage.pole.obj[defender]['hollowbones'])) {
  197. window.PhysicalModifiers = window.PhysicalModifiers * 0.5;
  198. };
  199. if (window.stage.pole.obj[defender]['diamondarmor']) {
  200. window.PhysicalModifiers = window.PhysicalModifiers * 0.1;
  201. };
  202. if (window.stage.pole.obj[defender]['shielded']) {
  203. window.PhysicalModifiers = window.PhysicalModifiers * 0.75;
  204. };
  205. if (window.stage.pole.obj[defender]['unprotectedtarget']) {
  206. window.PhysicalModifiers = window.PhysicalModifiers * 1.25;
  207. };
  208. if (window.magic[defender]['dfm']) {
  209. window.PhysicalModifiers = window.PhysicalModifiers * (1 - window.magic[defender]['dfm']['effect'] / 100);
  210. };
  211. if (window.magic[attacker]['cnf']) {
  212. window.PhysicalModifiers = window.PhysicalModifiers * (1 - window.magic[attacker]['cnf']['effect'] / 100);
  213. };
  214.  
  215. if (hera > 0) {
  216. if (window.magic[hera]['sat']) {
  217. window.PhysicalModifiers = window.PhysicalModifiers * (100 + window.magic[hera]['sat']['effect']) / 100;
  218. };
  219. };
  220. };
  221. if ((!window.stage.pole.obj[attacker]['hero']) && (window.isperk(attacker, _PERK_BLESS))) {
  222. window.PhysicalModifiers *= 1.04;
  223. };
  224. let o = window.stage.pole.obj[attacker]['owner'];
  225. if (window.magic[defender]['mf' + o]) {
  226. window.PhysicalModifiers *= 1 + window.magic[defender]['mf' + o]['effect'] / 100;
  227. };
  228. if ((!window.stage.pole.obj[attacker]['hero']) && (window.isperk(attacker, _PERK_FERVOR))) {
  229. window.PhysicalModifiers *= 1.03;
  230. };
  231. if (hera > 0) {
  232. var h = hera;
  233. if ((window.magic[h]['nut']) && ((plid2 == -2) || (ohotnik_set_neutral()))) {
  234. window.PhysicalModifiers = window.PhysicalModifiers * (100 + window.magic[h]['nut']['effect']) / 100;
  235. };
  236. if ((window.magic[h]['mle']) && ((window.stage.pole.obj[attacker].shooter == 1 && l<=2)||(window.stage.pole.obj[attacker].shooter!= 1))) {
  237. window.PhysicalModifiers = window.PhysicalModifiers * (100 + window.magic[h]['mle']['effect']) / 100;
  238. };
  239. if (window.magic[attacker]['fbd']) {
  240. window.PhysicalModifiers = window.PhysicalModifiers * (100 + Math.floor(window.magic[attacker]['fbd']['effect'] / 10)) / 100;
  241. };
  242. };
  243. window.monatt = window.stage.pole.obj[attacker]['attack'] + window.stage.pole.obj[attacker]['attackaddon'] + window.stage.pole.obj[attacker]['rageattack'];
  244. if ((defender > 0) && (window.stage.pole.obj[attacker]['giantslayer']) && (window.stage.pole.obj[defender]['big'])) window.monatt += 4;
  245. if ((!window.stage.pole.obj[attacker]['undead']) && (!window.stage.pole.obj[attacker]['hero']) && (!window.stage.pole.obj[attacker]['perseverance'])) {
  246. window.frig2 = false;
  247. window.i = attacker;
  248. var bigx = window.stage.pole.obj[i]['big'];
  249. var bigy = window.stage.pole.obj[i]['big'];
  250. if (window.stage.pole.obj[i]['bigx']) bigx = 1;
  251. if (window.stage.pole.obj[i]['bigy']) bigy = 1;
  252. window.xd = window.stage.pole.obj[i]['x'];
  253. window.yd = window.stage.pole.obj[i]['y'];
  254. for (var xz = window.xd - 1; xz <= window.xd + 1 + bigx; xz++) {
  255. for (var yz = window.yd - 1; yz <= window.yd + 1 + bigy; yz++) {
  256. if ((!window.frig2) && (mapobj[yz * defxn + xz] > 0) && (window.stage.pole.obj[mapobj[yz * defxn + xz]]['side'] != window.stage.pole.obj[i]['side']) && (window.stage.pole.obj[mapobj[yz * defxn + xz]]['festeringaura']) && (window.stage.pole.obj[mapobj[yz * defxn + xz]]['nownumber'] > 0)) {
  257. window.monatt -= 4;
  258. window.frig2 = true;
  259. };
  260. };
  261. };
  262. };
  263.  
  264. if ((window.magic[attacker]['bsr']) || (window.magic[attacker]['rof'])) {
  265. window.monatt += Math.floor((window.stage.pole.obj[attacker]['defence'] + window.stage.pole.obj[attacker]['defenceaddon'] + window.stage.pole.obj[attacker]['ragedefence']) * window.stage.pole.obj[attacker]['defencemodifier']);
  266. };
  267. if (herd > 0) {
  268. h = herd;
  269. if ((window.magic[h]['mld']) && (l <= 2)) {
  270. window.PhysicalModifiers = window.PhysicalModifiers * (100 - window.magic[h]['mld']['effect']) / 100;
  271. };
  272. if ((window.magic[h]['_ia']) && (!window.stage.pole.obj[attacker]['perseverance'])) {
  273. window.monatt *= (1 - window.magic[h]['_ia']['effect'] / 100);
  274. };
  275. if ((!window.stage.pole.obj[attacker]['hero']) && (window.stage.pole.obj[attacker].shooter)&& (window.stage.pole.obj[attacker].shots!=0) && (window.magic[h]['msk']) && (l > 2)) {
  276. window.PhysicalModifiers = window.PhysicalModifiers * (100 - window.magic[h]['msk']['effect']) / 100;
  277. };
  278. };
  279. window.defadd = 0;
  280. if (window.stage.pole.obj[defender]['agility']) {
  281. if (!window.magic[defender]['agl']) window.defadd = window.stage.pole.obj[defender]['speed'] * 2;
  282. };
  283. if ((window.stage.pole.obj[defender]['spirit']) && (!window.magic[defender]['spi'])) {
  284. window.PhysicalModifiers *= 0.5;
  285. };
  286. if ((window.stage.pole.obj[attacker]['rageagainsttheliving']) && (window.stage.pole.obj[defender]['alive'])) {
  287. window.PhysicalModifiers *= 1.3;
  288. };
  289. if ((window.stage.pole.obj[defender]['defensivestance']) && (!window.magic[defender]['mvd'])) {
  290. window.defadd += 5;
  291. };
  292. if ((!window.stage.pole.obj[defender]['undead']) && (!window.stage.pole.obj[defender]['armoured']) && (!window.stage.pole.obj[defender]['organicarmor'])) {
  293. window.frig2 = false;
  294. window.i = defender;
  295. bigx = window.stage.pole.obj[i]['big'];
  296. bigy = window.stage.pole.obj[i]['big'];
  297. if (window.stage.pole.obj[i]['bigx']) bigx = 1;
  298. if (window.stage.pole.obj[i]['bigy']) bigy = 1;
  299. window.xd = window.stage.pole.obj[i]['x'];
  300. window.yd = window.stage.pole.obj[i]['y'];
  301. for (let xz = window.xd - 1; xz <= window.xd + 1 + bigx; xz++) {
  302. for (let yz = window.yd - 1; yz <= window.yd + 1 + bigy; yz++) {
  303. if ((!window.frig2) && (mapobj[yz * defxn + xz] > 0) && (window.stage.pole.obj[mapobj[yz * defxn + xz]]['side'] != window.stage.pole.obj[i]['side']) && (window.stage.pole.obj[mapobj[yz * defxn + xz]]['festeringaura']) && (window.stage.pole.obj[mapobj[yz * defxn + xz]]['nownumber'] > 0)) {
  304. window.defadd -= 4;
  305. window.frig2 = true;
  306. };
  307. };
  308. };
  309. };
  310. if ((attacker > 0) && (window.stage.pole.obj[defender]['giantslayer']) && (window.stage.pole.obj[attacker]['big'])) window.defadd += 4;
  311. window.mondef = Math.round((window.stage.pole.obj[defender]['defence'] + window.stage.pole.obj[defender]['defenceaddon'] + window.defadd + window.stage.pole.obj[defender]['ragedefence']) * window.stage.pole.obj[defender]['defencemodifier']);
  312. if (window.magic[defender]['bsr']) {
  313. window.mondef = 0;
  314. };
  315. if (window.stage.pole.obj[attacker].nametxt == "Арбалетчики") console.log(`l: ${l}, rangemod: ${rangemod} ability: ${stage.pole.obj[attacker].preciseshot}`)
  316.  
  317. if ((window.stage.pole.obj[attacker]['preciseshot']) && (l > 2) && (l <= 9) && (window.rangemod >= 1)) {
  318. window.mondef = 0;
  319. };
  320. if ((window.stage.pole.obj[attacker]['ignoredefence'])) {
  321. window.mondef *= (1 - window.stage.pole.obj[attacker]['ignoredefence'] / 100);
  322. };
  323. if (window.stage.pole.obj[attacker]['crushingleadership']) {
  324. var morale_delta = window.stage.pole.getmorale(attacker) - window.stage.pole.getmorale(defender);
  325. if (morale_delta > 0) {
  326. window.mondef *= Math.max(0, 1 - morale_delta / 10);
  327. };
  328. };
  329. if (window.stage.pole.obj[attacker]['sacredweapon']) {
  330. var dark_count = get_dark_count(defender);
  331. if (dark_count > 0) {
  332. window.mondef *= Math.max(0, 1 - 0.15 * dark_count);
  333. };
  334. };
  335. if (window.isperk(attacker, _PERK_PIERCING_LUCK)) {
  336. window.mondef *= 1 - Math.max(0, 0.025 * (window.stage.pole.obj[attacker]['luck'] + window.stage.pole.obj[attacker]['luckaddon']));
  337. };
  338. if ((window.stage.pole.obj[defender]['ignoreattack'])) {
  339. window.monatt *= (1 - window.stage.pole.obj[defender]['ignoreattack'] / 100);
  340. };
  341. if ((window.stage.pole.obj[attacker]['ridercharge']) && (movelen > 0)) {
  342. window.mondef = window.mondef * (5 - movelen) / 5;
  343. };
  344. if ((window.stage.pole.obj[attacker]['forcearrow']) && (!window.stage.pole.obj[defender]['armoured']) && (!window.stage.pole.obj[defender]['organicarmor']) && (l > 2)) {
  345. window.mondef *= 0.8;
  346. };
  347. if ((window.stage.pole.obj[attacker]['armorpiercing']) && (!window.stage.pole.obj[defender]['armoured']) && (!window.stage.pole.obj[defender]['organicarmor']) && (l > 2)) {
  348. window.mondef *= 0.5;
  349. };
  350. if ((window.stage.pole.obj[attacker]['jousting']) && (movelen > 0)) {
  351. window.PhysicalModifiers = window.PhysicalModifiers * (1 + 0.05 * movelen);
  352. };
  353. if (((window.stage.pole.obj[attacker]['blindingcharge']) || (window.stage.pole.obj[attacker]['charge'])) && (movelen > 0)) {
  354. window.PhysicalModifiers = window.PhysicalModifiers * (1 + 0.1 * movelen);
  355. };
  356. if ((window.stage.pole.obj[defender]['shieldwall']) && (movelen > 0)) {
  357. window.PhysicalModifiers = window.PhysicalModifiers * Math.max(0.1, 1 - 0.1 * movelen);
  358. };
  359. if ((window.magic[defender]['enc']) && (window.magic[defender]['enc']['effect'] == 1)) {
  360. window.PhysicalModifiers *= 0.5;
  361. };
  362. if ((window.stage.pole.obj[attacker]['safeposition']) && (movelen == 0)) {
  363. window.PhysicalModifiers *= 1.5;
  364. };
  365. if ((window.stage.pole.obj[attacker]['agilesteed']) && (movelen > 0)) {
  366. window.PhysicalModifiers *= 1 - 0.05 * movelen;
  367. };
  368. if (window.mondef < 0) {
  369. window.mondef = 0;
  370. };
  371.  
  372. window.air = 0;
  373. window.fire = 0;
  374. window.water = 0;
  375. window.earth = 0;
  376. if ((hera > 0) && (!window.stage.pole.obj[attacker]['taran'])) {
  377. h = hera;
  378. if (window.magic[h]['_id']) {
  379. window.mondef *= (1 - window.magic[h]['_id']['effect'] / 100);
  380. };
  381. if (window.magic[h]['_aa']) {
  382. window.air = window.magic[h]['_aa']['effect'] / 100;
  383. };
  384. if (window.magic[h]['_af']) {
  385. window.fire = window.magic[h]['_af']['effect'] / 100;
  386. };
  387. if (window.magic[h]['_aw']) {
  388. window.water = window.magic[h]['_aw']['effect'] / 100;
  389. };
  390. if (window.magic[h]['_ae']) {
  391. window.earth = window.magic[h]['_ae']['effect'] / 100;
  392. };
  393. };
  394. if ((window.stage.pole.obj[defender]['armoured']) || (window.stage.pole.obj[defender]['organicarmor'])) {
  395. window.mondef = Math.round((window.stage.pole.obj[defender]['defence'] + window.stage.pole.obj[defender]['defenceaddon'] + window.stage.pole.obj[defender]['ragedefence']) * window.stage.pole.obj[defender]['defencemodifier']);
  396. };
  397. if (window.monatt < 0) {
  398. window.monatt = 0;
  399. };
  400. if (window.monatt > window.mondef) {
  401. window.AttackDefenseModifier = 1 + (window.monatt - window.mondef) * 0.05;
  402. } else {
  403. window.AttackDefenseModifier = 1 / (1 + (window.mondef - window.monatt) * 0.05);
  404. };
  405. if (window.stage.pole.obj[attacker]['hero']) {
  406. window.AttackDefenseModifier = 1;
  407. };
  408. var _PERK_ATTACK1 = 8;
  409. var _PERK_ATTACK2 = 9;
  410. var _PERK_ATTACK3 = 10;
  411. var _PERK_DEFENSE1 = 19;
  412. var _PERK_DEFENSE2 = 20;
  413. var _PERK_DEFENSE3 = 21;
  414.  
  415. if ((!window.stage.pole.obj[attacker]['hero'])&& ((window.stage.pole.obj[attacker].shooter == 1 && l<=2)||(window.stage.pole.obj[attacker].shooter!= 1))) {
  416. if (window.isperk(attacker, _PERK_ATTACK3)) {
  417. window.PhysicalModifiers *= 1.3;
  418. } else {
  419. if (window.isperk(attacker, _PERK_ATTACK2)) {
  420. window.PhysicalModifiers *= 1.2;
  421. } else
  422. if (window.isperk(attacker, _PERK_ATTACK1)) window.PhysicalModifiers *= 1.1;
  423. };
  424. if (window.isperk(defender, _PERK_DEFENSE3)) {
  425. window.PhysicalModifiers *= 0.7;
  426. } else {
  427. if (window.isperk(defender, _PERK_DEFENSE2)) {
  428. window.PhysicalModifiers *= 0.8;
  429. } else {
  430. if (window.isperk(defender, _PERK_DEFENSE1)) window.PhysicalModifiers *= 0.9;
  431. };
  432. };
  433. };
  434. if ((window.stage.pole.obj[attacker]['siegewalls']) && (window.stage.pole.obj[defender]['stone'])) {
  435. window.PhysicalModifiers *= 10;
  436. };
  437. var _PERK_COLD_STEEL = 14;
  438. var _PERK_FIERY_WRATH = 101;
  439. var _PERK_HELLFIRE_AURA = 123;
  440. var _PERK_RETRIBUTION = 16;
  441.  
  442. if (window.isperk(attacker, _PERK_COLD_STEEL)) window.water = 1 - (1 - window.water) * (0.9);
  443. if (window.isperk(attacker, _PERK_FIERY_WRATH)) window.fire = 1 - (1 - window.fire) * (0.85);
  444. if (window.isperk(attacker, _PERK_HELLFIRE_AURA)) window.fire = 1 - (1 - window.fire) * (0.95);
  445.  
  446. if (window.magic[attacker]['cre']) {
  447. window.air = 1 - (1 - window.air) * (1 - window.magic[attacker]['cre']['effect'] / 100);
  448. };
  449.  
  450. if (window.isperk(attacker, _PERK_RETRIBUTION)) window.PhysicalModifiers *= (1 + Math.min(Math.max(window.stage.pole.getmorale(attacker, x, y), 0), 5) / 20);
  451. if ((window.stage.pole.obj[attacker]['viciousstrike']) && (Math.max(0, Math.round((window.stage.pole.obj[defender]['speed'] + window.stage.pole.obj[defender]['ragespeed'] + window.stage.pole.obj[defender]['speedaddon']) * window.stage.pole.obj[defender]['speedmodifier'])) == 0)) window.PhysicalModifiers *= 1.5;
  452. window.PhysicalModifiers *= window.stage.pole.magicmod(attacker, defender, window.fire, window.air, window.water, window.earth, 0.1);
  453. if ((window.stage.pole.obj[attacker]['bloodfrenzy']) && (window.magic[defender]['fd1'])) {
  454. window.PhysicalModifiers *= 1.3;
  455. };
  456. window.UmelkaModifiers = 1;
  457.  
  458. if ((umelka[window.stage.pole.obj[attacker]['owner']][0] > 0) && (umelka[window.stage.pole.obj[defender]['owner']][0] > 0)) {
  459. window.k = umelka[window.stage.pole.obj[attacker]['owner']][0];
  460. if ((window.k > 0) && (window.k < 11)) {
  461. let j = umelka[window.stage.pole.obj[defender]['owner']][k];
  462. window.UmelkaModifiers = 1 - j * 0.03;
  463. };
  464. };
  465. window.NumCreatures = window.stage.pole.obj[attacker]['nownumber'];
  466. let tsc = 0;
  467.  
  468. bigx = window.stage.pole.obj[defender]['big'];
  469. bigy = window.stage.pole.obj[defender]['big'];
  470. if (window.stage.pole.obj[defender]['bigx']) bigx = 1;
  471. if (window.stage.pole.obj[defender]['bigy']) bigy = 1;
  472. for (var xs = window.stage.pole.obj[defender]['x'] - 1; xs <= window.stage.pole.obj[defender]['x'] + 1 + bigx; xs++) {
  473. for (var ys = window.stage.pole.obj[defender]['y'] - 1; ys <= window.stage.pole.obj[defender]['y'] + 1 + bigy; ys++) {
  474. if ((mapobj[xs + ys * defxn] > 0) && (mapobj[xs + ys * defxn] != defender) && (window.stage.pole.obj[mapobj[xs + ys * defxn]]['shieldguard']) && (window.stage.pole.obj[defender]['side'] == window.stage.pole.obj[mapobj[xs + ys * defxn]]['side'])) {
  475. tsc++;
  476. };
  477. };
  478. };
  479.  
  480.  
  481. window.PhysicalModifiers /= (tsc + 1);
  482.  
  483. var minmag = 0;
  484. var maxmag = 0;
  485. if ((inuse == 'lep') && (window.stage.pole.obj[attacker]['crashingleap'])) {
  486. window.Totalmagicdamage = 0;
  487. window.stage.pole.obj[defender]['attacked'] = 1;
  488. window.stage.pole.attackmagic(attacker, defender, window.stage.pole.obj[attacker]['nownumber'] * 4, 'cold', '', 0, 0, 0);
  489. minmag = window.Totalmagicdamage;
  490. window.Totalmagicdamage = 0;
  491. window.stage.pole.obj[defender]['attacked'] = 1;
  492. window.stage.pole.attackmagic(attacker, defender, window.stage.pole.obj[attacker]['nownumber'] * 6, 'cold', '', 0, 0, 0);
  493. maxmag = window.Totalmagicdamage;
  494. };
  495.  
  496. window.mindam = window.stage.pole.obj[attacker]['mindam'] + window.stage.pole.obj[attacker]['damageaddon'] + (window.stage.pole.obj[attacker]['maxdam'] - window.stage.pole.obj[attacker]['mindam']) * (window.stage.pole.obj[attacker]['mindamaddon']) + window.stage.pole.obj[attacker]['ragedamage'];
  497. window.maxdam = window.stage.pole.obj[attacker]['maxdam'] + window.stage.pole.obj[attacker]['damageaddon'] - (window.stage.pole.obj[attacker]['maxdam'] - window.stage.pole.obj[attacker]['mindam']) * (window.stage.pole.obj[attacker]['maxdamaddon']) + window.stage.pole.obj[attacker]['ragedamage'];
  498. h = hera;
  499. if ((h > 0) && (window.magic[h]) && (window.magic[h]['BLS']) && (window.magic[h]['BLS']['effect'] > 0)) window.mindam = window.maxdam;
  500. if ((h > 0) && (window.magic[h]) && (window.magic[h]['CRS']) && (window.magic[h]['CRS']['effect'] > 0)) window.maxdam = window.mindam;
  501. if ((window.stage.pole.obj[attacker]['taran']) && (window.stage.pole.obj[defender]['stone'])) {
  502. h = hera;
  503. window.mindam = Math.floor(Math.pow(window.stage.pole.obj[h]['maxhealth'], 0.5) * 200 * window.stage.pole.obj[attacker]['mindam']);
  504. window.maxdam = Math.floor(Math.pow(window.stage.pole.obj[h]['maxhealth'], 0.5) * 400 * window.stage.pole.obj[attacker]['maxdam']);
  505. };
  506. if (window.stage.pole.obj[attacker]['accuracy']) window.mindam = window.maxdam;
  507. window.BaseDamage = window.mindam;
  508. window.PhysicalDamage = window.NumCreatures * window.BaseDamage * window.AttackDefenseModifier * window.PhysicalModifiers * window.UmelkaModifiers + minmag;
  509. window.PhysicalDamage2 = window.NumCreatures * window.maxdam * window.AttackDefenseModifier * window.PhysicalModifiers * window.UmelkaModifiers + maxmag;
  510. if ((window.stage.pole.obj[attacker]['deathstrike']) && (window.stage.pole.obj[defender]['maxhealth'] < 400) && (!window.stage.pole.obj[defender]['stone'])) {
  511. if ((window.stage.pole.obj[defender]['nownumber'] - 1) * window.stage.pole.obj[defender]['maxhealth'] + window.stage.pole.obj[defender]['nowhealth'] > window.PhysicalDamage) {
  512. window.PhysicalDamage += window.stage.pole.obj[defender]['maxhealth'] - window.PhysicalDamage % window.stage.pole.obj[defender]['maxhealth'];
  513. };
  514. if ((window.stage.pole.obj[defender]['nownumber'] - 1) * window.stage.pole.obj[defender]['maxhealth'] + window.stage.pole.obj[defender]['nowhealth'] > window.PhysicalDamage2) {
  515. window.PhysicalDamage2 += window.stage.pole.obj[defender]['maxhealth'] - window.PhysicalDamage2 % window.stage.pole.obj[defender]['maxhealth'];
  516. };
  517. };
  518.  
  519. if (window.stage.pole.obj[attacker]['bladeofslaughter']) {
  520. window.PhysicalDamage += Math.min(500, window.stage.pole.obj[defender]['nownumber'] * 2);
  521. window.PhysicalDamage2 += Math.min(500, window.stage.pole.obj[defender]['nownumber'] * 2);
  522. };
  523. if (window.magic[attacker]['brk']) {
  524. window.PhysicalDamage *= (1 + window.magic[attacker]['brk']['effect'] * 0.03);
  525. window.PhysicalDamage2 *= (1 + window.magic[attacker]['brk']['effect'] * 0.03);
  526. };
  527. if (window.PhysicalDamage < 1) {
  528. window.PhysicalDamage = 1;
  529. };
  530. if (window.PhysicalDamage2 < 1) {
  531. window.PhysicalDamage2 = 1;
  532. };
  533. if ((window.stage.pole.obj[attacker]['magicattack']) && (window.l > 2) && (window.stage.pole.issomething(defender, 'dampenmagic'))) window.PhysicalDamage = 0;
  534. if (window.magic[defender]['rag']) {
  535. window.PhysicalDamage = window.stage.pole.ragedamage(defender, window.PhysicalDamage);
  536. window.PhysicalDamage2 = window.stage.pole.ragedamage(defender, window.PhysicalDamage2);
  537. };
  538. if ((window.stage.pole.obj[attacker]['vorpalsword']) && (window.stage.pole.obj[defender]['maxhealth'] < 400) && (!window.stage.pole.obj[defender]['stone'])) {
  539. window.PhysicalDamage += window.stage.pole.obj[defender]['maxhealth'];
  540. window.PhysicalDamage2 += window.stage.pole.obj[defender]['maxhealth'];
  541. };
  542.  
  543. window.PhysicalDamage = Math.round(window.PhysicalDamage);
  544. window.PhysicalDamage2 = Math.round(window.PhysicalDamage2);
  545. if (window.stage.pole.obj[defender]['pleasureinpain']) {
  546. window.PhysicalDamage = Math.round(window.PhysicalDamage * 0.9);
  547. window.PhysicalDamage2 = Math.round(window.PhysicalDamage2 * 0.9);
  548. };
  549. if (window.stage.pole.obj[defender]['raptureinagony']) {
  550. window.PhysicalDamage = Math.round(window.PhysicalDamage * 0.8);
  551. window.PhysicalDamage2 = Math.round(window.PhysicalDamage2 * 0.8);
  552. };
  553. var totalh = (window.stage.pole.obj[defender]['nownumber'] - 1) * window.stage.pole.obj[defender]['maxhealth'] + window.stage.pole.obj[defender]['nowhealth'];
  554. window.Uronkills = Math.floor(Math.min(window.PhysicalDamage, totalh) / window.stage.pole.obj[defender]['maxhealth']);
  555. window.Uronkills2 = Math.floor(Math.min(window.PhysicalDamage2, totalh) / window.stage.pole.obj[defender]['maxhealth']);
  556. var nowhealth = window.stage.pole.obj[defender]['nowhealth'] - (Math.min(window.PhysicalDamage, totalh) - window.Uronkills * window.stage.pole.obj[defender]['maxhealth']);
  557. var nowhealth2 = window.stage.pole.obj[defender]['nowhealth'] - (Math.min(window.PhysicalDamage2, totalh) - window.Uronkills2 * window.stage.pole.obj[defender]['maxhealth']);
  558. if (nowhealth <= 0) window.Uronkills++;
  559. if (nowhealth2 <= 0) window.Uronkills2++;
  560. window.tUronkills += window.Uronkills;
  561. window.tUronkills2 += window.Uronkills2;
  562. window.tPhysicalDamage += window.PhysicalDamage;
  563. window.tPhysicalDamage2 += window.PhysicalDamage2;
  564. }
  565. function get_dmg_info(cre1_id, cre2_id){
  566. let dmg_dict = attackmonster(cre1_id, window.stage.pole.obj[cre1_id].x, window.stage.pole.obj[cre1_id].y, window.stage.pole.obj[cre2_id].x, window.stage.pole.obj[cre2_id].y, cre2_id);
  567. return {min: window.PhysicalDamage, max: window.PhysicalDamage2, min_killed: window.Uronkills, max_killed: window.Uronkills2}
  568. }
  569. let json_data = {}
  570. let cre_list = Object.values(window.stage.pole.obj);
  571. cre_list.sort(function(a, b) {
  572. return a.obj_index - b.obj_index;
  573. });
  574. [1,-1].forEach(cre_side=>{
  575. let opposite_side = -cre_side
  576. let first_side_creatures = cre_list.filter(creature => creature.side == cre_side)
  577. console.log(`cre_list.length: ${cre_list.length}`)
  578. let second_side_creatures = cre_list.filter(creature => creature.side == opposite_side)
  579. console.log(`first_side_creatures.length: ${first_side_creatures.length}`)
  580. console.log(`second_side_creatures.length : ${second_side_creatures.length}`)
  581. json_data[cre_side] = {}
  582.  
  583. first_side_creatures.forEach(first_side_creature=>{ // defender
  584. if ([0,-1].includes(first_side_creature.nownumber) || first_side_creature.nametxt=="" || first_side_creature.hero) return
  585. json_data[cre_side][first_side_creature.obj_index] = {}
  586. json_data[cre_side][first_side_creature.obj_index]['name'] = `${first_side_creature.nametxt} [${first_side_creature.nownumber}]`
  587. second_side_creatures.forEach(second_side_creature=>{ // attacker
  588. if ([0,-1].includes(second_side_creature.nownumber) || second_side_creature.nametxt=="") return
  589. let dmg = get_dmg_info(second_side_creature.obj_index, first_side_creature.obj_index)
  590. let hp = first_side_creature.maxhealth
  591. json_data[cre_side][first_side_creature.obj_index][second_side_creature.obj_index] = {}
  592. json_data[cre_side][first_side_creature.obj_index][second_side_creature.obj_index]['min'] = dmg.min
  593. json_data[cre_side][first_side_creature.obj_index][second_side_creature.obj_index]['max'] = dmg.max
  594. json_data[cre_side][first_side_creature.obj_index][second_side_creature.obj_index]['min_killed'] = Math.floor(dmg.min / hp)
  595. json_data[cre_side][first_side_creature.obj_index][second_side_creature.obj_index]['max_killed'] = Math.floor(dmg.max / hp)
  596. json_data[cre_side][first_side_creature.obj_index][second_side_creature.obj_index]['name'] = `${second_side_creature.nametxt} [${second_side_creature.nownumber}]`
  597. })
  598. })
  599. })
  600. return json_data
  601. }
  602. return export_fun()
  603. """
  604. battle_url = "https://www.heroeswm.ru/war.php?lt=-1&warid=1333310475&html5=1"
  605.  
  606. intents = discord.Intents.all()
  607. bot = discord.Client(intents=intents)
  608. chrome_options = webdriver.ChromeOptions()
  609. chrome_options.add_argument("--no-sandbox")
  610. chrome_options.add_argument("--headless")
  611. chrome_options.add_argument("--disable-gpu")
  612.  
  613. link_arr = []
  614. last_one_finished = True
  615. @bot.event
  616. async def on_message(message):
  617. try:
  618. driver = webdriver.Chrome(options=chrome_options)
  619. if message.channel.id != 1096129420781158531 or message.author.bot:
  620. return False
  621. msg = message.content
  622. msg_arr = message.content.split("!");
  623. if not "!" in msg:
  624. await message.reply("Неверный формат")
  625. return False
  626. link = msg_arr[0].strip()
  627. print(link)
  628. if not (link.startswith("https://www.heroeswm.ru/war") or link.startswith("https://www.lordswm.com/war") or link.startswith("https://my.lordswm.com/war")):
  629. await message.reply("<:facepalm:1061075997971189830>")
  630. return False
  631. cre_side = msg_arr[1].strip()
  632. if cre_side.lower() == "лево":
  633. cre_side = 1
  634. elif cre_side.lower() == "право":
  635. cre_side = -1
  636. else:
  637. await message.reply("Неправильно выбрана сторона")
  638. return False
  639. cre = msg_arr[2].strip()
  640.  
  641.  
  642. global last_one_finished
  643. if not last_one_finished:
  644. await message.reply("Подождите очереди")
  645. while not last_one_finished:
  646. time.sleep(1)
  647. last_one_finished = False
  648.  
  649. #https://my.lordswm.com/war*
  650. #https://www.lordswm.com/war*
  651.  
  652. channel = bot.get_channel(bot_testing_channel_id)
  653. json_data = None
  654. temp = None
  655.  
  656. driver.get(link)
  657. while not temp:
  658. try:
  659. temp = driver.execute_script("return window.stage.pole.obj[2].nametxt")
  660. json_data = driver.execute_script(script_text)
  661. except Exception as e:
  662. time.sleep(1)
  663. string = ""
  664. creature_choice = None
  665. for key, defender in json_data[str(cre_side)].items():
  666. if defender['name'].lower() == cre.lower():
  667. creature_choice = key
  668. if not creature_choice:
  669. await message.reply("Нету такого существа")
  670. return False
  671. cre_dict = json_data[str(cre_side)][str(creature_choice)]
  672. string+= f"_Урон по _**__{cre_dict['name']}__**: \n"
  673. for attacker in cre_dict.values():
  674. if (isinstance(attacker,str)):
  675. continue
  676. string+=f"__{attacker['name']}__--> **{attacker['min_killed']}-{attacker['max_killed']}** _существ_ ({attacker['min']}-{attacker['max']})\n"
  677. last_one_finished = True
  678. await message.reply(string)
  679. except Exception as e:
  680. print(e)
  681. finally:
  682. driver.quit()
  683.  
  684. bot.run(token)
  685.  
  686.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement