Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from selenium import webdriver
- import time
- import discord
- from math import *
- import random
- import asyncio
- from vars import *
- script_text = """let export_fun = ()=>{
- function attackmonster(attacker, ax, ay, x, y, defender, shootok, koef, inuse) {
- var mainattack = 1;
- var ax1 = ax;
- var ay1 = ay;
- if (defender == 1000) return 0;
- if (defender <= 0) return 0;
- if (!window.stage.pole.obj[defender]) return 0;
- if (window.stage.pole.obj[defender]['hero']) return 0;
- if (window.stage.pole.obj[defender]['rock']) return 0;
- if (shootok == undefined) shootok = 0;
- if (koef == undefined) koef = 1;
- if (inuse == undefined) inuse = '';
- var len = window.wmap2[y * defxn + x];
- if ((window.stage.pole.obj[attacker].x == x) && (window.stage.pole.obj[attacker].y == y)) len = spd;
- if (window.stage.pole.obj[attacker]['big']) {
- if (ax > x) {
- x++;
- };
- if (ay > y) {
- y++;
- };
- };
- if (window.stage.pole.obj[attacker]['bigx']) {
- if (ax > x) {
- x++;
- };
- };
- if (window.stage.pole.obj[attacker]['bigy']) {
- if (ay > y) {
- y++;
- };
- };
- 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));
- if (window.magic[attacker]['ent']) {
- spd = 0;
- };
- var movelen = spd - len;
- window.attacker_c = attacker;
- window.ax_c = ax;
- window.ay_c = ay;
- window.x_c = x;
- window.y_c = y;
- window.defender_c = defender;
- window.shootok_c = shootok;
- if ((x == 0) && (y == 0)) {
- x = window.stage.pole.obj[attacker]['x'];
- y = window.stage.pole.obj[attacker]['y'];
- };
- if ((defender > 0) && (window.stage.pole.obj[defender]['big'])) {
- if ((x - ax > 1) && (ax < x) && (defender == mapobj[ay * defxn + ax + 1])) {
- ax++;
- };
- if ((y - ay > 1) && (ay < y) && (defender == mapobj[(ay + 1) * defxn + ax])) {
- ay++;
- };
- if ((ax - x > 1) && (ax > x) && (defender == mapobj[ay * defxn + ax - 1])) {
- ax--;
- };
- if ((ay - y > 1) && (ay > y) && (defender == mapobj[(ay - 1) * defxn + ax])) {
- ay--;
- };
- };
- if ((defender > 0) && (window.stage.pole.obj[defender]['bigx'])) {
- if ((x - ax > 1) && (ax < x) && (defender == mapobj[ay * defxn + ax + 1])) {
- ax++;
- };
- if ((ax - x > 1) && (ax > x) && (defender == mapobj[ay * defxn + ax - 1])) {
- ax--;
- };
- };
- if ((defender > 0) && (window.stage.pole.obj[defender]['bigy'])) {
- if ((y - ay > 1) && (ay < y) && (defender == mapobj[(ay + 1) * defxn + ax])) {
- ay++;
- };
- if ((ay - y > 1) && (ay > y) && (defender == mapobj[(ay - 1) * defxn + ax])) {
- ay--;
- };
- };
- let dx = x - ax;
- let dy = y - ay;
- l = dx * dx + dy * dy;
- if (movelen == undefined) movelen = 0;;
- window.PhysicalModifiers = 1;
- window.PhysicalModifiers *= koef;
- if (window.stage.pole.obj[attacker]['shadowattack']) l = 0;
- var hera = 0;
- var herd = 0;
- len = window.stage.pole.obj_array.length;
- for (var k1 = 0; k1 < len; k1++) {
- window.k = window.stage.pole.obj_array[k1];
- if ((window.stage.pole.obj[k].hero) && (window.stage.pole.obj[k].owner == window.stage.pole.obj[attacker].owner)) hera = window.k;
- if ((window.stage.pole.obj[k].hero) && (window.stage.pole.obj[k].owner == window.stage.pole.obj[defender].owner)) herd = window.k;
- };
- if ((window.stage.pole.obj[defender]['pirate']) && ((window.magic[defender]['sea']) || (window.gtype == 125) || (window.gtype == 126) || (window.gtype == 133))) {
- window.PhysicalModifiers *= 0.85;
- };
- if (window.stage.pole.obj[defender]['deadflesh']) {
- window.PhysicalModifiers *= 0.8;
- };
- if (window.stage.pole.obj[defender]['immaterial']) {
- window.PhysicalModifiers *= 0.65;
- };
- if ((window.stage.pole.obj[attacker]['oppressionofweak']) && (window.stage.pole.obj[defender]['level'] == 1)) {
- window.PhysicalModifiers *= 1.5;
- };
- if ((window.stage.pole.obj[attacker]['fearofstrong']) && (window.stage.pole.obj[defender]['level'] == 7)) {
- window.PhysicalModifiers *= 0.5;
- };
- if ((hera > 0) && (window.magic[hera]['bna'])) {
- window.PhysicalModifiers = window.PhysicalModifiers * (1 + window.magic[hera]['bna']['effect'] / 100);
- if ((window.stage.pole.obj[defender]['mechanical']) && (window.magic[hera]['MEC'])) {
- window.PhysicalModifiers *= 1 + window.magic[hera]['MEC']['effect'] / 100;
- };
- if ((window.stage.pole.obj[attacker]['mechanical']) && (window.magic[hera]['mch'])) {
- window.PhysicalModifiers *= 1 + window.magic[hera]['mch']['effect'] / 100;
- };
- };
- if ((window.stage.pole.obj[defender]['building']) && (!window.stage.pole.obj[attacker]['siegewalls'])) {
- window.PhysicalModifiers *= 0.05;
- };
- 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']))) {
- window.PhysicalModifiers *= 1.15;
- };
- 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']))) {
- window.PhysicalModifiers *= 1.3;
- };
- if ((window.stage.pole.obj[attacker]['giantkiller']) && (window.stage.pole.obj[defender]['big'])) window.PhysicalModifiers *= 2;
- if ((window.stage.pole.obj[attacker]['pygmykiller']) && (!window.stage.pole.obj[defender]['big'])) window.PhysicalModifiers *= 1.33;
- if (window.stage.pole.obj[attacker]['stormstrike']) window.PhysicalModifiers *= 2;
- if ((window.stage.pole.obj[attacker]['undeadkiller']) && (window.stage.pole.obj[defender]['undead'])) window.PhysicalModifiers *= 1.5;
- if ((window.stage.pole.obj[attacker]['pirate']) && (window.magic[defender]['blb'])) window.PhysicalModifiers *= 1.5;
- if ((!window.stage.pole.obj[attacker]['hero']) && (window.magic[attacker]['zat'])) {
- window.PhysicalModifiers *= 1.15;
- };
- if ((herd > 0) && (window.magic[herd]['bnd'])) {
- window.PhysicalModifiers = window.PhysicalModifiers / (1 + window.magic[herd]['bnd']['effect'] / 100);
- };
- if ((herd > 0) && (window.magic[herd]['fld'])) {
- window.PhysicalModifiers = window.PhysicalModifiers * (1 - window.magic[herd]['fld']['effect'] / 100);
- };
- if ((herd > 0) && (window.magic[herd]['rcd']) && (monster_race[window.stage.pole.obj[attacker]['id']] == window.magic[herd]['rcd']['effect'])) {
- window.PhysicalModifiers = window.PhysicalModifiers * 0.93;
- };
- if (window.magic[attacker]['prp']) {
- window.PhysicalModifiers = window.PhysicalModifiers * (1 + window.magic[attacker]['prp']['effect'] / 100);
- };
- if (window.magic[defender]['sta']) {
- window.PhysicalModifiers *= 0.5;
- };
- if ((window.magic[attacker]['chd']) && (window.stage.pole.obj[window.magic[attacker]['chd']['effect']]['nownumber'] > 0) && (window.magic[attacker]['chd']['effect'] != defender)) {
- window.PhysicalModifiers *= 0.55;
- };
- window.PhysicalModifiers *= window.stage.pole.checkmembrane(defender);
- if (!window.stage.pole.obj[attacker]['hero']) {
- if ((l <= 2) && (window.stage.pole.obj[attacker]['shooter']) && (!window.stage.pole.obj[attacker]['nopenalty']) && (!window.stage.pole.obj[attacker]['warmachine'])) {
- window.PhysicalModifiers = window.PhysicalModifiers * 0.5;
- };
- if ((l > 2) && (window.stage.pole.obj[attacker]['rangepenalty'])) {
- window.PhysicalModifiers = window.PhysicalModifiers * 0.5;
- };
- window.rangemod = 1;
- 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))))) {
- window.PhysicalModifiers = window.PhysicalModifiers * 0.5;
- window.rangemod = 0.5;
- };
- 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))) {
- window.PhysicalModifiers = window.PhysicalModifiers * 0.5;
- window.rangemod *= 0.5;
- };
- };
- var _PERK_ARCHERY = 11;
- var _PERK_EVASION = 22;
- 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'))) {
- window.PhysicalModifiers *= 0.5;
- };
- if (((l > 2) || (shootok == 1)) && (!window.stage.pole.obj[attacker]['hero']) && (window.stage.pole.obj[attacker]['shooter'])) {
- if (window.isperk(attacker, _PERK_ARCHERY)) window.PhysicalModifiers *= 1.2;
- if (window.isperk(defender, _PERK_EVASION)) window.PhysicalModifiers *= 0.8;
- if ((!window.stage.pole.obj[defender]['lshield']) && (window.stage.pole.shieldother(defender))) {
- window.PhysicalModifiers = window.PhysicalModifiers * 0.75;
- };
- if ((window.stage.pole.obj[defender]['lshield']) || (window.stage.pole.obj[defender]['hollowbones'])) {
- window.PhysicalModifiers = window.PhysicalModifiers * 0.5;
- };
- if (window.stage.pole.obj[defender]['diamondarmor']) {
- window.PhysicalModifiers = window.PhysicalModifiers * 0.1;
- };
- if (window.stage.pole.obj[defender]['shielded']) {
- window.PhysicalModifiers = window.PhysicalModifiers * 0.75;
- };
- if (window.stage.pole.obj[defender]['unprotectedtarget']) {
- window.PhysicalModifiers = window.PhysicalModifiers * 1.25;
- };
- if (window.magic[defender]['dfm']) {
- window.PhysicalModifiers = window.PhysicalModifiers * (1 - window.magic[defender]['dfm']['effect'] / 100);
- };
- if (window.magic[attacker]['cnf']) {
- window.PhysicalModifiers = window.PhysicalModifiers * (1 - window.magic[attacker]['cnf']['effect'] / 100);
- };
- if (hera > 0) {
- if (window.magic[hera]['sat']) {
- window.PhysicalModifiers = window.PhysicalModifiers * (100 + window.magic[hera]['sat']['effect']) / 100;
- };
- };
- };
- if ((!window.stage.pole.obj[attacker]['hero']) && (window.isperk(attacker, _PERK_BLESS))) {
- window.PhysicalModifiers *= 1.04;
- };
- let o = window.stage.pole.obj[attacker]['owner'];
- if (window.magic[defender]['mf' + o]) {
- window.PhysicalModifiers *= 1 + window.magic[defender]['mf' + o]['effect'] / 100;
- };
- if ((!window.stage.pole.obj[attacker]['hero']) && (window.isperk(attacker, _PERK_FERVOR))) {
- window.PhysicalModifiers *= 1.03;
- };
- if (hera > 0) {
- var h = hera;
- if ((window.magic[h]['nut']) && ((plid2 == -2) || (ohotnik_set_neutral()))) {
- window.PhysicalModifiers = window.PhysicalModifiers * (100 + window.magic[h]['nut']['effect']) / 100;
- };
- if ((window.magic[h]['mle']) && ((window.stage.pole.obj[attacker].shooter == 1 && l<=2)||(window.stage.pole.obj[attacker].shooter!= 1))) {
- window.PhysicalModifiers = window.PhysicalModifiers * (100 + window.magic[h]['mle']['effect']) / 100;
- };
- if (window.magic[attacker]['fbd']) {
- window.PhysicalModifiers = window.PhysicalModifiers * (100 + Math.floor(window.magic[attacker]['fbd']['effect'] / 10)) / 100;
- };
- };
- window.monatt = window.stage.pole.obj[attacker]['attack'] + window.stage.pole.obj[attacker]['attackaddon'] + window.stage.pole.obj[attacker]['rageattack'];
- if ((defender > 0) && (window.stage.pole.obj[attacker]['giantslayer']) && (window.stage.pole.obj[defender]['big'])) window.monatt += 4;
- if ((!window.stage.pole.obj[attacker]['undead']) && (!window.stage.pole.obj[attacker]['hero']) && (!window.stage.pole.obj[attacker]['perseverance'])) {
- window.frig2 = false;
- window.i = attacker;
- var bigx = window.stage.pole.obj[i]['big'];
- var bigy = window.stage.pole.obj[i]['big'];
- if (window.stage.pole.obj[i]['bigx']) bigx = 1;
- if (window.stage.pole.obj[i]['bigy']) bigy = 1;
- window.xd = window.stage.pole.obj[i]['x'];
- window.yd = window.stage.pole.obj[i]['y'];
- for (var xz = window.xd - 1; xz <= window.xd + 1 + bigx; xz++) {
- for (var yz = window.yd - 1; yz <= window.yd + 1 + bigy; yz++) {
- 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)) {
- window.monatt -= 4;
- window.frig2 = true;
- };
- };
- };
- };
- if ((window.magic[attacker]['bsr']) || (window.magic[attacker]['rof'])) {
- 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']);
- };
- if (herd > 0) {
- h = herd;
- if ((window.magic[h]['mld']) && (l <= 2)) {
- window.PhysicalModifiers = window.PhysicalModifiers * (100 - window.magic[h]['mld']['effect']) / 100;
- };
- if ((window.magic[h]['_ia']) && (!window.stage.pole.obj[attacker]['perseverance'])) {
- window.monatt *= (1 - window.magic[h]['_ia']['effect'] / 100);
- };
- 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)) {
- window.PhysicalModifiers = window.PhysicalModifiers * (100 - window.magic[h]['msk']['effect']) / 100;
- };
- };
- window.defadd = 0;
- if (window.stage.pole.obj[defender]['agility']) {
- if (!window.magic[defender]['agl']) window.defadd = window.stage.pole.obj[defender]['speed'] * 2;
- };
- if ((window.stage.pole.obj[defender]['spirit']) && (!window.magic[defender]['spi'])) {
- window.PhysicalModifiers *= 0.5;
- };
- if ((window.stage.pole.obj[attacker]['rageagainsttheliving']) && (window.stage.pole.obj[defender]['alive'])) {
- window.PhysicalModifiers *= 1.3;
- };
- if ((window.stage.pole.obj[defender]['defensivestance']) && (!window.magic[defender]['mvd'])) {
- window.defadd += 5;
- };
- if ((!window.stage.pole.obj[defender]['undead']) && (!window.stage.pole.obj[defender]['armoured']) && (!window.stage.pole.obj[defender]['organicarmor'])) {
- window.frig2 = false;
- window.i = defender;
- bigx = window.stage.pole.obj[i]['big'];
- bigy = window.stage.pole.obj[i]['big'];
- if (window.stage.pole.obj[i]['bigx']) bigx = 1;
- if (window.stage.pole.obj[i]['bigy']) bigy = 1;
- window.xd = window.stage.pole.obj[i]['x'];
- window.yd = window.stage.pole.obj[i]['y'];
- for (let xz = window.xd - 1; xz <= window.xd + 1 + bigx; xz++) {
- for (let yz = window.yd - 1; yz <= window.yd + 1 + bigy; yz++) {
- 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)) {
- window.defadd -= 4;
- window.frig2 = true;
- };
- };
- };
- };
- if ((attacker > 0) && (window.stage.pole.obj[defender]['giantslayer']) && (window.stage.pole.obj[attacker]['big'])) window.defadd += 4;
- 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']);
- if (window.magic[defender]['bsr']) {
- window.mondef = 0;
- };
- if (window.stage.pole.obj[attacker].nametxt == "Арбалетчики") console.log(`l: ${l}, rangemod: ${rangemod} ability: ${stage.pole.obj[attacker].preciseshot}`)
- if ((window.stage.pole.obj[attacker]['preciseshot']) && (l > 2) && (l <= 9) && (window.rangemod >= 1)) {
- window.mondef = 0;
- };
- if ((window.stage.pole.obj[attacker]['ignoredefence'])) {
- window.mondef *= (1 - window.stage.pole.obj[attacker]['ignoredefence'] / 100);
- };
- if (window.stage.pole.obj[attacker]['crushingleadership']) {
- var morale_delta = window.stage.pole.getmorale(attacker) - window.stage.pole.getmorale(defender);
- if (morale_delta > 0) {
- window.mondef *= Math.max(0, 1 - morale_delta / 10);
- };
- };
- if (window.stage.pole.obj[attacker]['sacredweapon']) {
- var dark_count = get_dark_count(defender);
- if (dark_count > 0) {
- window.mondef *= Math.max(0, 1 - 0.15 * dark_count);
- };
- };
- if (window.isperk(attacker, _PERK_PIERCING_LUCK)) {
- window.mondef *= 1 - Math.max(0, 0.025 * (window.stage.pole.obj[attacker]['luck'] + window.stage.pole.obj[attacker]['luckaddon']));
- };
- if ((window.stage.pole.obj[defender]['ignoreattack'])) {
- window.monatt *= (1 - window.stage.pole.obj[defender]['ignoreattack'] / 100);
- };
- if ((window.stage.pole.obj[attacker]['ridercharge']) && (movelen > 0)) {
- window.mondef = window.mondef * (5 - movelen) / 5;
- };
- if ((window.stage.pole.obj[attacker]['forcearrow']) && (!window.stage.pole.obj[defender]['armoured']) && (!window.stage.pole.obj[defender]['organicarmor']) && (l > 2)) {
- window.mondef *= 0.8;
- };
- if ((window.stage.pole.obj[attacker]['armorpiercing']) && (!window.stage.pole.obj[defender]['armoured']) && (!window.stage.pole.obj[defender]['organicarmor']) && (l > 2)) {
- window.mondef *= 0.5;
- };
- if ((window.stage.pole.obj[attacker]['jousting']) && (movelen > 0)) {
- window.PhysicalModifiers = window.PhysicalModifiers * (1 + 0.05 * movelen);
- };
- if (((window.stage.pole.obj[attacker]['blindingcharge']) || (window.stage.pole.obj[attacker]['charge'])) && (movelen > 0)) {
- window.PhysicalModifiers = window.PhysicalModifiers * (1 + 0.1 * movelen);
- };
- if ((window.stage.pole.obj[defender]['shieldwall']) && (movelen > 0)) {
- window.PhysicalModifiers = window.PhysicalModifiers * Math.max(0.1, 1 - 0.1 * movelen);
- };
- if ((window.magic[defender]['enc']) && (window.magic[defender]['enc']['effect'] == 1)) {
- window.PhysicalModifiers *= 0.5;
- };
- if ((window.stage.pole.obj[attacker]['safeposition']) && (movelen == 0)) {
- window.PhysicalModifiers *= 1.5;
- };
- if ((window.stage.pole.obj[attacker]['agilesteed']) && (movelen > 0)) {
- window.PhysicalModifiers *= 1 - 0.05 * movelen;
- };
- if (window.mondef < 0) {
- window.mondef = 0;
- };
- window.air = 0;
- window.fire = 0;
- window.water = 0;
- window.earth = 0;
- if ((hera > 0) && (!window.stage.pole.obj[attacker]['taran'])) {
- h = hera;
- if (window.magic[h]['_id']) {
- window.mondef *= (1 - window.magic[h]['_id']['effect'] / 100);
- };
- if (window.magic[h]['_aa']) {
- window.air = window.magic[h]['_aa']['effect'] / 100;
- };
- if (window.magic[h]['_af']) {
- window.fire = window.magic[h]['_af']['effect'] / 100;
- };
- if (window.magic[h]['_aw']) {
- window.water = window.magic[h]['_aw']['effect'] / 100;
- };
- if (window.magic[h]['_ae']) {
- window.earth = window.magic[h]['_ae']['effect'] / 100;
- };
- };
- if ((window.stage.pole.obj[defender]['armoured']) || (window.stage.pole.obj[defender]['organicarmor'])) {
- 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']);
- };
- if (window.monatt < 0) {
- window.monatt = 0;
- };
- if (window.monatt > window.mondef) {
- window.AttackDefenseModifier = 1 + (window.monatt - window.mondef) * 0.05;
- } else {
- window.AttackDefenseModifier = 1 / (1 + (window.mondef - window.monatt) * 0.05);
- };
- if (window.stage.pole.obj[attacker]['hero']) {
- window.AttackDefenseModifier = 1;
- };
- var _PERK_ATTACK1 = 8;
- var _PERK_ATTACK2 = 9;
- var _PERK_ATTACK3 = 10;
- var _PERK_DEFENSE1 = 19;
- var _PERK_DEFENSE2 = 20;
- var _PERK_DEFENSE3 = 21;
- if ((!window.stage.pole.obj[attacker]['hero'])&& ((window.stage.pole.obj[attacker].shooter == 1 && l<=2)||(window.stage.pole.obj[attacker].shooter!= 1))) {
- if (window.isperk(attacker, _PERK_ATTACK3)) {
- window.PhysicalModifiers *= 1.3;
- } else {
- if (window.isperk(attacker, _PERK_ATTACK2)) {
- window.PhysicalModifiers *= 1.2;
- } else
- if (window.isperk(attacker, _PERK_ATTACK1)) window.PhysicalModifiers *= 1.1;
- };
- if (window.isperk(defender, _PERK_DEFENSE3)) {
- window.PhysicalModifiers *= 0.7;
- } else {
- if (window.isperk(defender, _PERK_DEFENSE2)) {
- window.PhysicalModifiers *= 0.8;
- } else {
- if (window.isperk(defender, _PERK_DEFENSE1)) window.PhysicalModifiers *= 0.9;
- };
- };
- };
- if ((window.stage.pole.obj[attacker]['siegewalls']) && (window.stage.pole.obj[defender]['stone'])) {
- window.PhysicalModifiers *= 10;
- };
- var _PERK_COLD_STEEL = 14;
- var _PERK_FIERY_WRATH = 101;
- var _PERK_HELLFIRE_AURA = 123;
- var _PERK_RETRIBUTION = 16;
- if (window.isperk(attacker, _PERK_COLD_STEEL)) window.water = 1 - (1 - window.water) * (0.9);
- if (window.isperk(attacker, _PERK_FIERY_WRATH)) window.fire = 1 - (1 - window.fire) * (0.85);
- if (window.isperk(attacker, _PERK_HELLFIRE_AURA)) window.fire = 1 - (1 - window.fire) * (0.95);
- if (window.magic[attacker]['cre']) {
- window.air = 1 - (1 - window.air) * (1 - window.magic[attacker]['cre']['effect'] / 100);
- };
- if (window.isperk(attacker, _PERK_RETRIBUTION)) window.PhysicalModifiers *= (1 + Math.min(Math.max(window.stage.pole.getmorale(attacker, x, y), 0), 5) / 20);
- 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;
- window.PhysicalModifiers *= window.stage.pole.magicmod(attacker, defender, window.fire, window.air, window.water, window.earth, 0.1);
- if ((window.stage.pole.obj[attacker]['bloodfrenzy']) && (window.magic[defender]['fd1'])) {
- window.PhysicalModifiers *= 1.3;
- };
- window.UmelkaModifiers = 1;
- if ((umelka[window.stage.pole.obj[attacker]['owner']][0] > 0) && (umelka[window.stage.pole.obj[defender]['owner']][0] > 0)) {
- window.k = umelka[window.stage.pole.obj[attacker]['owner']][0];
- if ((window.k > 0) && (window.k < 11)) {
- let j = umelka[window.stage.pole.obj[defender]['owner']][k];
- window.UmelkaModifiers = 1 - j * 0.03;
- };
- };
- window.NumCreatures = window.stage.pole.obj[attacker]['nownumber'];
- let tsc = 0;
- bigx = window.stage.pole.obj[defender]['big'];
- bigy = window.stage.pole.obj[defender]['big'];
- if (window.stage.pole.obj[defender]['bigx']) bigx = 1;
- if (window.stage.pole.obj[defender]['bigy']) bigy = 1;
- for (var xs = window.stage.pole.obj[defender]['x'] - 1; xs <= window.stage.pole.obj[defender]['x'] + 1 + bigx; xs++) {
- for (var ys = window.stage.pole.obj[defender]['y'] - 1; ys <= window.stage.pole.obj[defender]['y'] + 1 + bigy; ys++) {
- 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'])) {
- tsc++;
- };
- };
- };
- window.PhysicalModifiers /= (tsc + 1);
- var minmag = 0;
- var maxmag = 0;
- if ((inuse == 'lep') && (window.stage.pole.obj[attacker]['crashingleap'])) {
- window.Totalmagicdamage = 0;
- window.stage.pole.obj[defender]['attacked'] = 1;
- window.stage.pole.attackmagic(attacker, defender, window.stage.pole.obj[attacker]['nownumber'] * 4, 'cold', '', 0, 0, 0);
- minmag = window.Totalmagicdamage;
- window.Totalmagicdamage = 0;
- window.stage.pole.obj[defender]['attacked'] = 1;
- window.stage.pole.attackmagic(attacker, defender, window.stage.pole.obj[attacker]['nownumber'] * 6, 'cold', '', 0, 0, 0);
- maxmag = window.Totalmagicdamage;
- };
- 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'];
- 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'];
- h = hera;
- if ((h > 0) && (window.magic[h]) && (window.magic[h]['BLS']) && (window.magic[h]['BLS']['effect'] > 0)) window.mindam = window.maxdam;
- if ((h > 0) && (window.magic[h]) && (window.magic[h]['CRS']) && (window.magic[h]['CRS']['effect'] > 0)) window.maxdam = window.mindam;
- if ((window.stage.pole.obj[attacker]['taran']) && (window.stage.pole.obj[defender]['stone'])) {
- h = hera;
- window.mindam = Math.floor(Math.pow(window.stage.pole.obj[h]['maxhealth'], 0.5) * 200 * window.stage.pole.obj[attacker]['mindam']);
- window.maxdam = Math.floor(Math.pow(window.stage.pole.obj[h]['maxhealth'], 0.5) * 400 * window.stage.pole.obj[attacker]['maxdam']);
- };
- if (window.stage.pole.obj[attacker]['accuracy']) window.mindam = window.maxdam;
- window.BaseDamage = window.mindam;
- window.PhysicalDamage = window.NumCreatures * window.BaseDamage * window.AttackDefenseModifier * window.PhysicalModifiers * window.UmelkaModifiers + minmag;
- window.PhysicalDamage2 = window.NumCreatures * window.maxdam * window.AttackDefenseModifier * window.PhysicalModifiers * window.UmelkaModifiers + maxmag;
- if ((window.stage.pole.obj[attacker]['deathstrike']) && (window.stage.pole.obj[defender]['maxhealth'] < 400) && (!window.stage.pole.obj[defender]['stone'])) {
- if ((window.stage.pole.obj[defender]['nownumber'] - 1) * window.stage.pole.obj[defender]['maxhealth'] + window.stage.pole.obj[defender]['nowhealth'] > window.PhysicalDamage) {
- window.PhysicalDamage += window.stage.pole.obj[defender]['maxhealth'] - window.PhysicalDamage % window.stage.pole.obj[defender]['maxhealth'];
- };
- if ((window.stage.pole.obj[defender]['nownumber'] - 1) * window.stage.pole.obj[defender]['maxhealth'] + window.stage.pole.obj[defender]['nowhealth'] > window.PhysicalDamage2) {
- window.PhysicalDamage2 += window.stage.pole.obj[defender]['maxhealth'] - window.PhysicalDamage2 % window.stage.pole.obj[defender]['maxhealth'];
- };
- };
- if (window.stage.pole.obj[attacker]['bladeofslaughter']) {
- window.PhysicalDamage += Math.min(500, window.stage.pole.obj[defender]['nownumber'] * 2);
- window.PhysicalDamage2 += Math.min(500, window.stage.pole.obj[defender]['nownumber'] * 2);
- };
- if (window.magic[attacker]['brk']) {
- window.PhysicalDamage *= (1 + window.magic[attacker]['brk']['effect'] * 0.03);
- window.PhysicalDamage2 *= (1 + window.magic[attacker]['brk']['effect'] * 0.03);
- };
- if (window.PhysicalDamage < 1) {
- window.PhysicalDamage = 1;
- };
- if (window.PhysicalDamage2 < 1) {
- window.PhysicalDamage2 = 1;
- };
- if ((window.stage.pole.obj[attacker]['magicattack']) && (window.l > 2) && (window.stage.pole.issomething(defender, 'dampenmagic'))) window.PhysicalDamage = 0;
- if (window.magic[defender]['rag']) {
- window.PhysicalDamage = window.stage.pole.ragedamage(defender, window.PhysicalDamage);
- window.PhysicalDamage2 = window.stage.pole.ragedamage(defender, window.PhysicalDamage2);
- };
- if ((window.stage.pole.obj[attacker]['vorpalsword']) && (window.stage.pole.obj[defender]['maxhealth'] < 400) && (!window.stage.pole.obj[defender]['stone'])) {
- window.PhysicalDamage += window.stage.pole.obj[defender]['maxhealth'];
- window.PhysicalDamage2 += window.stage.pole.obj[defender]['maxhealth'];
- };
- window.PhysicalDamage = Math.round(window.PhysicalDamage);
- window.PhysicalDamage2 = Math.round(window.PhysicalDamage2);
- if (window.stage.pole.obj[defender]['pleasureinpain']) {
- window.PhysicalDamage = Math.round(window.PhysicalDamage * 0.9);
- window.PhysicalDamage2 = Math.round(window.PhysicalDamage2 * 0.9);
- };
- if (window.stage.pole.obj[defender]['raptureinagony']) {
- window.PhysicalDamage = Math.round(window.PhysicalDamage * 0.8);
- window.PhysicalDamage2 = Math.round(window.PhysicalDamage2 * 0.8);
- };
- var totalh = (window.stage.pole.obj[defender]['nownumber'] - 1) * window.stage.pole.obj[defender]['maxhealth'] + window.stage.pole.obj[defender]['nowhealth'];
- window.Uronkills = Math.floor(Math.min(window.PhysicalDamage, totalh) / window.stage.pole.obj[defender]['maxhealth']);
- window.Uronkills2 = Math.floor(Math.min(window.PhysicalDamage2, totalh) / window.stage.pole.obj[defender]['maxhealth']);
- var nowhealth = window.stage.pole.obj[defender]['nowhealth'] - (Math.min(window.PhysicalDamage, totalh) - window.Uronkills * window.stage.pole.obj[defender]['maxhealth']);
- var nowhealth2 = window.stage.pole.obj[defender]['nowhealth'] - (Math.min(window.PhysicalDamage2, totalh) - window.Uronkills2 * window.stage.pole.obj[defender]['maxhealth']);
- if (nowhealth <= 0) window.Uronkills++;
- if (nowhealth2 <= 0) window.Uronkills2++;
- window.tUronkills += window.Uronkills;
- window.tUronkills2 += window.Uronkills2;
- window.tPhysicalDamage += window.PhysicalDamage;
- window.tPhysicalDamage2 += window.PhysicalDamage2;
- }
- function get_dmg_info(cre1_id, cre2_id){
- 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);
- return {min: window.PhysicalDamage, max: window.PhysicalDamage2, min_killed: window.Uronkills, max_killed: window.Uronkills2}
- }
- let json_data = {}
- let cre_list = Object.values(window.stage.pole.obj);
- cre_list.sort(function(a, b) {
- return a.obj_index - b.obj_index;
- });
- [1,-1].forEach(cre_side=>{
- let opposite_side = -cre_side
- let first_side_creatures = cre_list.filter(creature => creature.side == cre_side)
- console.log(`cre_list.length: ${cre_list.length}`)
- let second_side_creatures = cre_list.filter(creature => creature.side == opposite_side)
- console.log(`first_side_creatures.length: ${first_side_creatures.length}`)
- console.log(`second_side_creatures.length : ${second_side_creatures.length}`)
- json_data[cre_side] = {}
- first_side_creatures.forEach(first_side_creature=>{ // defender
- if ([0,-1].includes(first_side_creature.nownumber) || first_side_creature.nametxt=="" || first_side_creature.hero) return
- json_data[cre_side][first_side_creature.obj_index] = {}
- json_data[cre_side][first_side_creature.obj_index]['name'] = `${first_side_creature.nametxt} [${first_side_creature.nownumber}]`
- second_side_creatures.forEach(second_side_creature=>{ // attacker
- if ([0,-1].includes(second_side_creature.nownumber) || second_side_creature.nametxt=="") return
- let dmg = get_dmg_info(second_side_creature.obj_index, first_side_creature.obj_index)
- let hp = first_side_creature.maxhealth
- json_data[cre_side][first_side_creature.obj_index][second_side_creature.obj_index] = {}
- json_data[cre_side][first_side_creature.obj_index][second_side_creature.obj_index]['min'] = dmg.min
- json_data[cre_side][first_side_creature.obj_index][second_side_creature.obj_index]['max'] = dmg.max
- json_data[cre_side][first_side_creature.obj_index][second_side_creature.obj_index]['min_killed'] = Math.floor(dmg.min / hp)
- json_data[cre_side][first_side_creature.obj_index][second_side_creature.obj_index]['max_killed'] = Math.floor(dmg.max / hp)
- json_data[cre_side][first_side_creature.obj_index][second_side_creature.obj_index]['name'] = `${second_side_creature.nametxt} [${second_side_creature.nownumber}]`
- })
- })
- })
- return json_data
- }
- return export_fun()
- """
- battle_url = "https://www.heroeswm.ru/war.php?lt=-1&warid=1333310475&html5=1"
- intents = discord.Intents.all()
- bot = discord.Client(intents=intents)
- chrome_options = webdriver.ChromeOptions()
- chrome_options.add_argument("--no-sandbox")
- chrome_options.add_argument("--headless")
- chrome_options.add_argument("--disable-gpu")
- link_arr = []
- last_one_finished = True
- @bot.event
- async def on_message(message):
- try:
- driver = webdriver.Chrome(options=chrome_options)
- if message.channel.id != 1096129420781158531 or message.author.bot:
- return False
- msg = message.content
- msg_arr = message.content.split("!");
- if not "!" in msg:
- await message.reply("Неверный формат")
- return False
- link = msg_arr[0].strip()
- print(link)
- 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")):
- await message.reply("<:facepalm:1061075997971189830>")
- return False
- cre_side = msg_arr[1].strip()
- if cre_side.lower() == "лево":
- cre_side = 1
- elif cre_side.lower() == "право":
- cre_side = -1
- else:
- await message.reply("Неправильно выбрана сторона")
- return False
- cre = msg_arr[2].strip()
- global last_one_finished
- if not last_one_finished:
- await message.reply("Подождите очереди")
- while not last_one_finished:
- time.sleep(1)
- last_one_finished = False
- #https://my.lordswm.com/war*
- #https://www.lordswm.com/war*
- channel = bot.get_channel(bot_testing_channel_id)
- json_data = None
- temp = None
- driver.get(link)
- while not temp:
- try:
- temp = driver.execute_script("return window.stage.pole.obj[2].nametxt")
- json_data = driver.execute_script(script_text)
- except Exception as e:
- time.sleep(1)
- string = ""
- creature_choice = None
- for key, defender in json_data[str(cre_side)].items():
- if defender['name'].lower() == cre.lower():
- creature_choice = key
- if not creature_choice:
- await message.reply("Нету такого существа")
- return False
- cre_dict = json_data[str(cre_side)][str(creature_choice)]
- string+= f"_Урон по _**__{cre_dict['name']}__**: \n"
- for attacker in cre_dict.values():
- if (isinstance(attacker,str)):
- continue
- string+=f"__{attacker['name']}__--> **{attacker['min_killed']}-{attacker['max_killed']}** _существ_ ({attacker['min']}-{attacker['max']})\n"
- last_one_finished = True
- await message.reply(string)
- except Exception as e:
- print(e)
- finally:
- driver.quit()
- bot.run(token)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement