返回首頁 

battleHelper (fixed)

Исправленный и рабочий battleHelper


Install this script?
// ==UserScript==// @name           battleHelper (fixed)// @author         Neleus// @namespace      Neleus// @description    Исправленный и рабочий battleHelper// @version        0.45// @include        /^https{0,1}:\/\/((www|qrator|my)\.(heroeswm|lordswm)\.(ru|com)|178\.248\.235\.15)\/(war|warlog|leader_guild|leader_army|inventory).php(?!.?setkamarmy)/// @grant          GM_xmlhttpRequest// @grant          unsafeWindow// @license        GNU GPLv3// ==/UserScript==;(function () {if (location.pathname.indexOf("leader_guild.php") >= 0) {var turnId = {amummy: { id: 933, hp: 80 },acrossbowman: { id: 1021, hp: 24 },air: { id: 153, hp: 30 },ancienent: { id: 238, hp: 181 },ancientpig: { id: 691, hp: 15 },angel: { id: 132, hp: 180 },anubis: { id: 917, hp: 160 },arcaneelf: { id: 261, hp: 12 },archer: { id: 2, hp: 7 },archlich: { id: 146, hp: 55 },archmage: { id: 104, hp: 30 },armorgnom: { id: 982, hp: 55 },assassin: { id: 56, hp: 14 },assida: { id: 847, hp: 30 },axegnom: { id: 985, hp: 10 },banditka: { id: 729, hp: 8 },banshee: { id: 515, hp: 110 },battlegriffin: { id: 36, hp: 35 },battlegriffon: { id: 493, hp: 52 },battlemage: { id: 578, hp: 29 },battlerager: { id: 960, hp: 30 },bear: { id: 172, hp: 22 },bearrider: { id: 161, hp: 25 },behemoth: { id: 131, hp: 210 },berserker: { id: 163, hp: 25 },bigspider: { id: 724, hp: 55 },blackbearrider: { id: 162, hp: 30 },blackknight: { id: 272, hp: 90 },blackwidow: { id: 661, hp: 14 },bloodsister: { id: 315, hp: 24 },boar: { id: 690, hp: 17 },boarrider: { id: 318, hp: 14 },bobbit: { id: 895, hp: 6 },bonedragon: { id: 133, hp: 150 },brawler: { id: 114, hp: 20 },brigand: { id: 725, hp: 5 },briskrider: { id: 316, hp: 50 },brute: { id: 254, hp: 8 },cavalier: { id: 90, hp: 90 },cbal: { id: 791, hp: 65 },cerberus: { id: 75, hp: 15 },champion: { id: 495, hp: 100 },chieftain: { id: 436, hp: 48 },colossus: { id: 106, hp: 175 },conscript: { id: 34, hp: 6 },cpirate: { id: 677, hp: 4 },crossman: { id: 257, hp: 8 },crusader: { id: 672, hp: 30 },cursed: { id: 522, hp: 20 },cursedent: { id: 664, hp: 215 },cyclop: { id: 89, hp: 85 },cyclopking: { id: 237, hp: 95 },cyclopod: { id: 537, hp: 100 },dancer: { id: 25, hp: 12 },darkbird: { id: 544, hp: 60 },darkrider: { id: 51, hp: 40 },ddhigh: { id: 587, hp: 34 },deephydra: { id: 149, hp: 125 },defender: { id: 157, hp: 7 },devil: { id: 82, hp: 166 },dgolem: { id: 520, hp: 350 },diamondgolem: { id: 660, hp: 60 },djinn: { id: 39, hp: 40 },djinn_sultan: { id: 105, hp: 45 },djinn_vizier: { id: 579, hp: 50 },druid: { id: 26, hp: 34 },druideld: { id: 120, hp: 38 },dryad: { id: 255, hp: 6 },eadaughter: { id: 333, hp: 35 },earth: { id: 154, hp: 75 },efreeti: { id: 280, hp: 90 },elf: { id: 19, hp: 10 },elgargoly: { id: 256, hp: 16 },enforcer: { id: 35, hp: 7 },executioner: { id: 335, hp: 40 },familiar: { id: 80, hp: 6 },fatpirate: { id: 651, hp: 100 },fatpirateup: { id: 652, hp: 120 },fcentaur: { id: 310, hp: 6 },fire: { id: 155, hp: 43 },firebird: { id: 536, hp: 65 },firedragon: { id: 168, hp: 230 },flamelord: { id: 958, hp: 120 },footman: { id: 10, hp: 16 },foulhydra: { id: 746, hp: 125 },foulwyvern: { id: 337, hp: 105 },fury: { id: 53, hp: 16 },ghost: { id: 11, hp: 8 },giant: { id: 792, hp: 100 },giantarch: { id: 817, hp: 100 },gnomon: { id: 728, hp: 9 },goblin: { id: 14, hp: 3 },goblinarcher: { id: 314, hp: 3 },goblinmag: { id: 545, hp: 3 },goblinus: { id: 329, hp: 3 },gogachi: { id: 285, hp: 13 },greendragon: { id: 103, hp: 200 },gremlin: { id: 9, hp: 5 },griffon: { id: 3, hp: 30 },grimrider: { id: 121, hp: 50 },harpooner: { id: 378, hp: 10 },harpy: { id: 200, hp: 15 },harpyhag: { id: 201, hp: 15 },hellcharger: { id: 76, hp: 50 },hellhound: { id: 74, hp: 15 },hellkon: { id: 290, hp: 66 },highwayman: { id: 730, hp: 24 },hobgoblin: { id: 33, hp: 4 },horneddemon: { id: 77, hp: 13 },hornedoverseer: { id: 79, hp: 13 },hotdog: { id: 288, hp: 15 },hydra: { id: 50, hp: 80 },hyenarider: { id: 859, hp: 14 },imp: { id: 78, hp: 4 },impergriffin: { id: 117, hp: 35 },inquisitor: { id: 145, hp: 80 },iron_golem: { id: 12, hp: 18 },jdemon: { id: 289, hp: 13 },kachok: { id: 601, hp: 50 },kamneed: { id: 202, hp: 45 },kamnegryz: { id: 203, hp: 55 },leprekon: { id: 610, hp: 7 },lich: { id: 29, hp: 50 },mage: { id: 16, hp: 18 },magneticgolem: { id: 259, hp: 28 },maiden: { id: 49, hp: 16 },manticore: { id: 754, hp: 80 },marksman: { id: 42, hp: 10 },mastergremlin: { id: 32, hp: 6 },masterhunter: { id: 72, hp: 14 },masterlich: { id: 341, hp: 55 },matriarch: { id: 239, hp: 90 },mauler: { id: 320, hp: 12 },mcentaur: { id: 309, hp: 10 },medusa: { id: 752, hp: 25 },medusaup: { id: 753, hp: 30 },megogachi: { id: 287, hp: 13 },mercarcher: { id: 20, hp: 8 },mercfootman: { id: 21, hp: 24 },minotaur: { id: 55, hp: 31 },minotaurguard: { id: 70, hp: 35 },mistress: { id: 745, hp: 100 },mountaingr: { id: 339, hp: 12 },mummy: { id: 268, hp: 50 },ncentaur: { id: 311, hp: 9 },negro: { id: 849, hp: 17 },nightmare: { id: 150, hp: 66 },nomad: { id: 897, hp: 30 },obsgargoyle: { id: 44, hp: 20 },ocean: { id: 848, hp: 30 },ogre: { id: 24, hp: 50 },ogrebrutal: { id: 535, hp: 70 },ogremagi: { id: 119, hp: 65 },ogreshaman: { id: 855, hp: 55 },orc: { id: 23, hp: 12 },orcchief: { id: 73, hp: 18 },orcrubak: { id: 534, hp: 20 },orcshaman: { id: 546, hp: 13 },outlaw: { id: 727, hp: 6 },outlawup: { id: 896, hp: 8 },peasant: { id: 4, hp: 4 },pegasus: { id: 625, hp: 30 },pikeman: { id: 1004, hp: 15 },piratemonster: { id: 644, hp: 190 },piratka: { id: 649, hp: 10 },piratkaup: { id: 650, hp: 12 },pitfiend: { id: 83, hp: 110 },pitlord: { id: 236, hp: 120 },pity: { id: 291, hp: 140 },pixel: { id: 17, hp: 5 },plaguezombie: { id: 40, hp: 17 },plant: { id: 624, hp: 60 },poltergeist: { id: 512, hp: 20 },priest: { id: 37, hp: 54 },priestess: { id: 852, hp: 35 },priestessup: { id: 853, hp: 35 },pristineunicorn: { id: 588, hp: 80 },rakshasa_kshatra: { id: 580, hp: 135 },rakshasa_raja: { id: 108, hp: 140 },rakshasa_rani: { id: 93, hp: 120 },rapukk: { id: 283, hp: 99 },reptiloid: { id: 850, hp: 80 },reptiloidup: { id: 851, hp: 90 },robber: { id: 726, hp: 5 },rocbird: { id: 30, hp: 55 },rotzombie: { id: 270, hp: 23 },runekeeper: { id: 961, hp: 65 },runepatriarch: { id: 165, hp: 70 },runepriest: { id: 164, hp: 60 },saboteurgremlin: { id: 253, hp: 6 },satyr: { id: 626, hp: 36 },savageent: { id: 589, hp: 175 },sceletonwar: { id: 267, hp: 5 },scout: { id: 52, hp: 10 },sdaughter: { id: 332, hp: 35 },seducer: { id: 485, hp: 26 },shadowdragon: { id: 102, hp: 200 },shadow_witch: { id: 94, hp: 80 },shamancyclop: { id: 860, hp: 105 },shamaness: { id: 331, hp: 30 },shieldguard: { id: 158, hp: 12 },shootpirate: { id: 646, hp: 15 },shootpirateup: { id: 647, hp: 18 },silverunicorn: { id: 147, hp: 77 },skeleton: { id: 1, hp: 4 },skeletonarcher: { id: 28, hp: 4 },skeletonpirate: { id: 604, hp: 4 },skeletonpirateup: { id: 606, hp: 4 },skirmesher: { id: 160, hp: 12 },skmarksman: { id: 340, hp: 6 },slayer: { id: 334, hp: 34 },snowwolf: { id: 942, hp: 50 },spearwielder: { id: 159, hp: 10 },spectre: { id: 68, hp: 19 },spegasus: { id: 629, hp: 30 },spider: { id: 198, hp: 9 },spiderpois: { id: 199, hp: 11 },sprite: { id: 31, hp: 6 },squire: { id: 71, hp: 26 },stalker: { id: 696, hp: 15 },steelgolem: { id: 69, hp: 24 },stone_gargoyle: { id: 8, hp: 15 },succubus: { id: 81, hp: 20 },succubusmis: { id: 122, hp: 30 },taskmaster: { id: 317, hp: 40 },tengu: { id: 793, hp: 45 },thane: { id: 166, hp: 100 },thiefarcher: { id: 124, hp: 40 },thiefmage: { id: 125, hp: 30 },thiefwarrior: { id: 123, hp: 45 },throwgnom: { id: 993, hp: 24 },thunderbird: { id: 148, hp: 65 },thunderlord: { id: 167, hp: 120 },trapper: { id: 386, hp: 7 },treant: { id: 92, hp: 175 },troglodyte: { id: 750, hp: 5 },troglodyteup: { id: 751, hp: 6 },troll: { id: 204, hp: 150 },unicorn: { id: 38, hp: 57 },vampire: { id: 15, hp: 30 },vampirelord: { id: 118, hp: 35 },vampireprince: { id: 513, hp: 40 },vermin: { id: 281, hp: 6 },vindicator: { id: 260, hp: 23 },vulture: { id: 731, hp: 40 },wardancer: { id: 41, hp: 12 },warmong: { id: 330, hp: 20 },warrior: { id: 319, hp: 12 },water: { id: 156, hp: 43 },wdancer: { id: 258, hp: 14 },whitebearrider: { id: 959, hp: 30 },wight: { id: 91, hp: 95 },wolfraider: { id: 43, hp: 12 },wolfrider: { id: 18, hp: 10 },wraith: { id: 235, hp: 100 },wyvern: { id: 336, hp: 90 },zealot: { id: 494, hp: 80 },zombie: { id: 5, hp: 17 },zpirate: { id: 679, hp: 150 },archangel: { id: 249, hp: 220 },seraph2: { id: 496, hp: 220 },spectraldragon: { id: 300, hp: 160 },ghostdragon: { id: 514, hp: 150 },titan: { id: 107, hp: 190 },stormtitan: { id: 581, hp: 190 },emeralddragon: { id: 100, hp: 200 },crystaldragon: { id: 590, hp: 200 },ancientbehemoth: { id: 301, hp: 250 },dbehemoth: { id: 538, hp: 280 },cursedbehemoth: { id: 861, hp: 250 },blackdragon: { id: 101, hp: 240 },reddragon: { id: 747, hp: 235 },archdevil: { id: 292, hp: 199 },archdemon: { id: 293, hp: 211 },magmadragon: { id: 169, hp: 280 },lavadragon: { id: 962, hp: 275 },untamedcyc: { id: 433, hp: 225 },bloodeyecyc: { id: 399, hp: 235 },cyclopus: { id: 397, hp: 220 },paladin: { id: 234, hp: 100 },efreetisultan: { id: 282, hp: 100 },naga: { id: 673, hp: 110 },golddragon: { id: 609, hp: 169 },pharaoh: { id: 269, hp: 70 },deadknight: { id: 273, hp: 100 },zhryak: { id: 284, hp: 99 },ballista: { id: 85, hp: 200 },tent: { id: 0, hp: 0 },piratemonsterup: { id: 645, hp: 200 },blacktroll: { id: 205, hp: 180 },zasad: { id: 1047, hp: 70 },magicel: { id: 662, hp: 80 },scorp: { id: 923, hp: 4 },duneraider: { id: 921, hp: 12 },scorpup: { id: 924, hp: 5 },dromad: { id: 919, hp: 40 },duneraiderup: { id: 922, hp: 12 },shakal: { id: 925, hp: 24 },slon: { id: 931, hp: 100 },priestmoon: { id: 929, hp: 50 },slonup: { id: 932, hp: 110 },shakalup: { id: 926, hp: 30 },dromadup: { id: 920, hp: 45 },priestsun: { id: 930, hp: 55 },anubisup: { id: 918, hp: 200 },scarab: { id: 927, hp: 6 },scarabup: { id: 928, hp: 6 },tenguup: { id: 937, hp: 60 },gnoll: { id: 1041, hp: 6 },brigandup: { id: 1038, hp: 6 },verblud: { id: 1060, hp: 35 },gnollum: { id: 1042, hp: 6 },krokodil: { id: 1067, hp: 70 },krokodilup: { id: 1068, hp: 80 },gnollsh: { id: 1089, hp: 6 },smaster: { id: 1095, hp: 84 },manticoreup: { id: 755, hp: 80 },apirate: { id: 612, hp: 13 },bpirate: { id: 611, hp: 16 },wendigoup: { id: 945, hp: 35 },whitetiger: { id: 631, hp: 35 },dgolemup: { id: 521, hp: 400 },exile: { id: 1040, hp: 28 },banditkaup: { id: 936, hp: 9 },nomadup: { id: 938, hp: 33 },spearthrower: { id: 1114, hp: 19 },gatekeeper: { id: 1132, hp: 120 },gnollup: { id: 1138, hp: 9 },gnollka: { id: 1139, hp: 6 },gnollboss: { id: 1140, hp: 36 },pushkar: { id: 1055, hp: 64 },robberup: { id: 1044, hp: 6 },sekhmet: { id: 1062, hp: 50 },valkyrie: { id: 1185, hp: 61 },goblinshaman: { id: 1193, hp: 5 },poukai: { id: 1194, hp: 120 },monk: { id: 1221, hp: 20 },warden: { id: 1223, hp: 39 },snowwolfup: { id: 1165, hp: 53 },necrodogup: { id: 1325, hp: 9 },necrodog: { id: 1324, hp: 8 },blackarcher: { id: 1311, hp: 13 },deadarcher: { id: 1312, hp: 16 },ork: { id: 1346, hp: 24 },grib: { id: 1187, hp: 20 },gribok: { id: 1188, hp: 16 },}var imgId = {mundus: "acrossbowman",assasin: "assassin",ocean: "assida",knight: "cavalier",crossbowman: "crossman",cursed_: "cursed",cyclopod_: "cyclopod",lizardrider: "darkrider",dd_: "druid",ddeld: "druideld",dryad_: "dryad",firebird_: "firebird",gog: "gogachi",nightmare: "hellcharger",demondog: "hellhound",hellstallion: "hellkon",hdemon: "horneddemon",fdemon: "hornedoverseer",firehound: "hotdog",golem: "iron_golem",lepr: "leprekon",hunterelf: "masterhunter",magog: "megogachi",minotaurguard_: "minotaurguard",stallion: "nightmare",obsgargoly: "obsgargoyle",assida: "ocean",paesant: "peasant",pitfiend_: "pitfiend",pitlord_: "pitlord",pitspawn: "pity",pp: "pixel",rakshas: "rakshasa_rani",roc: "rocbird",witch: "shadow_witch",cyclopshaman: "shamancyclop",sceleton: "skeleton",sceletonarcher: "skeletonarcher",dpirate: "skeletonpirate",dpirateup: "skeletonpirateup",swordman: "squire",gargoly: "stone_gargoyle",succub: "succubus",succubusm: "succubusmis",ent: "treant",bladedancer: "wardancer",winddancer: "wdancer",hobwolfrider: "wolfraider",abehemoth: "ancientbehemoth",bbehemoth: "cursedbehemoth",zhrica: "priestmoon",zhricaup: "priestsun",mmaster: "smaster",jpirate: "spearthrower",witchdoctor: "goblinshaman",paokai: "poukai",deaddog: "necrodogup",blackdog: "necrodog",}let tr = document.getElementById("gl_tasks").getElementsByTagName("tr")for (let i = 0; i < tr.length; i++) {if (tr[i].childNodes.length != 1) {continue}let cre = tr[i].getElementsByClassName("cre_creature")let checkSum = 0let hp = 0let f = truefor (let j = 0; j < cre.length; j++) {let id = cre[j].innerHTML.match(/name=([^\"]+)/)[1]let count = cre[j].querySelector("#add_now_count").innerHTMLcheckSum += turnId[id].id * counthp += turnId[id].hp * count}if (checkSum > 0 && hp > 0) {// tr[i].querySelector("td").innerHTML += "<div style = 'margin-left:10px'><a href = 'https://daily.heroeswm.ru/leader/bandits.php?hp=" + hp + "&sum=" + checkSum + "'>Поиск боя на Daily</a></div>";}}}if ((location.pathname.indexOf("war.php") >= 0 ||location.pathname.indexOf("warlog.php") >= 0) &&location.href.indexOf("show_enemy") == -1) {var timerIdn = setInterval(check, 100)}function check() {if (document.getElementById("play_button").style.display == "none") {unsafeWindow.gpause = false}if (typeof unsafeWindow.stage !== "undefined" &&typeof unsafeWindow.stage.pole !== "undefined" &&typeof unsafeWindow.stage.pole.onMouseMoveFlash === "function") {clearInterval(timerIdn)if (typeof unsafeWindow.setshadAbs !== "undefined") {return 0}unsafeWindow.spell_type = {raisedead: "1",magicfist: "1",lighting: "2",magicarrow: "2",slow: "4",fast: "3",swarm: "1",curse: "4",bless: "3",stoneskin: "3",stonespikes: "2",poison: "4",mfast: "3",mbless: "3",mstoneskin: "3",dispel: "3",dray: "4",icebolt: "2",fireball: "2",mdispel: "3",righteous_might: "3",deflect_missile: "3",suffering: "4",confusion: "4",circle_of_winter: "2",phantom_forces: "1",mslow: "4",mcurse: "4",mpoison: "4",mdray: "4",msuffering: "4",mconfusion: "4",mrighteous_might: "3",mdeflect_missile: "3",armageddon: "2",blind: "4",frenzy: "4",teleport: "3",meteor: "2",chainlighting: "2",summonel: "1",antimagic: "3",firewall: "1",earthquake: "1",summonphoenix: "1",arcanearmor: "1",r###rrection2: "3",divinevengeance: "3",divinev: "3",summonel_f: "1",summonel_a: "1",summonel_w: "1",summonel_e: "1",}unsafeWindow.magicbookspells_new = []for (let i = 0; i <= 4; i++) {for (let j in magicbookspells) {let type = 0if (spell_type[magicbookspells[j]]) {type = spell_type[magicbookspells[j]]}if (type == i) {magicbookspells_new.push(magicbookspells[j])}}}stage.pole.showmagicbook = function (page, iszak, check_spell) {let actMiniSpells = hwm_set["miniSpells"]spell_per_page = actMiniSpells ? 16 : 6var cm = magicbookspells_new.lengthlet count = 0for (i = 0; i < cm; i++) {if (hwm_set["spellsOrder"]) {s = magicbookspells_new[i]} else {s = magicbookspells[i]}if (this.obj[activeobj][s] == 1 ||(s == "gating" &&magic[activeobj]["dem"] &&magic[activeobj]["dem"]["effect"] == 1)) {if (s == "gating" && this.obj[activeobj].alreadysummon) {continue}if (s == "firstblood") {continue}if (s == "explosion" && this.obj[activeobj].nowmanna == 0) {continue}if (s == "teleport" && this.obj[activeobj].demonic) {continue}if (s == "summonpitlords" && magic[activeobj]["pit"]) {continue}if (s == "invisibility" &&magic[activeobj]["2in"] &&magic[activeobj]["2in"]["effect"] == 1) {continue}if (s == "seduction" && magic[activeobj]["usd"]) {continue}if (s == "manafeed" && this.obj[activeobj].nowmanna == 0) {continue}count++}if (this.obj[activeobj].darkpower &&this.obj[activeobj][s] == 1 &&magicbookchaos[magicbookspells.indexOf(s)] &&k >= page &&k < page + spell_per_page) {count++}if (this.check_mass_day_or_night(activeobj, s)) {if (k >= page && k < page + spell_per_page) {var scut = s.substr(1)count++}}}actMiniSpells = count > 6 ? actMiniSpells : 0if (!android) {spell_per_page = actMiniSpells ? 16 : 6} else {spell_per_page = 4}var k = 0,j = 0,s = "",so = "",book_txt = "",was_spell = 0lastpage = pageif (iszak != 1) zakarrow = falsefunction proccedinbook(so, powered, showed_cnt) {if (so == "zakarrow" &&(zakarrow == true ||(magic[activeobj]["za2"] &&magic[activeobj]["za2"]["effect"] > 0)))return 0j = k % spell_per_pagevar cost = stage[war_scr].obj[activeobj][s + "cost"]if (powered) {cost *= 2}kz = 1var kz2 = 1if (isperk(activeobj, 110) && stage[war_scr].obj[activeobj].hero) {kz *= 0.8}if (isperk(activeobj, 87) && !stage[war_scr].obj[activeobj].hero) {kz = 0.5}if (isperk(activeobj, 111) && stage[war_scr].obj[activeobj].hero) {kz *= 0.8}if (magic[activeobj]["dnn"]) {var sp_bonus =1.03 + umelka[stage[war_scr].obj[activeobj]["owner"]][10] * 0.03if (is_day_or_night(activeobj, s)) {kz2 /= sp_bonus}}cost = Math.round(cost * kz)cost = Math.round(cost * eco * kz2)if (s == "manafeed") {cost = Math.min(stage[war_scr].obj[activeobj].nowmanna,stage[war_scr].obj[activeobj].nownumber)}if (s == "explosion") {cost = ""}if (s == "invisibility") {cost = ""}if (s == "channeling") {cost = ""}if (s == "siphonmana") {cost = ""}if (s == "leap") {cost = ""}if (s == "leap6") {cost = ""}if (s == "sacrificegoblin") {cost = ""}if (s == "gating") {cost = ""}if (s == "summonpitlords") {cost = ""}if (s == "seduction") {cost = ""}if (s == "teleportother") {cost = ""}if (s == "consumecorpse" || s == "benediction") {cost = ""}if (cost > stage[war_scr].obj[activeobj].nowmanna ||(cost == 0 && s == "manafeed")) {var disabled = true} else {var disabled = falsewas_spell = 1}if (check_spell) {return 0}var s_name = ""if (magicbooknames[magicbookspells.indexOf(s)].includes("Mass ")) {s_name += "Mass"}if (magicbooknames[magicbookspells.indexOf(s)].includes("Массов")) {s_name += "Массовое"}var nametxt = magicbooknames[magicbookspells.indexOf(s)]if (powered || is_day_or_night(activeobj, s)) {switch (lang) {case 0:nametxt += " (усиленное)"s_name += " Усиленное"breakcase 1:nametxt += " (empowered)"s_name += "(emp)"break}}if (s == "angerofhorde") {eff = 0var len = stage[war_scr].obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {var k = stage[war_scr].obj_array[k1]if (stage[war_scr].obj[k]["owner"] ==stage[war_scr].obj[activeobj]["owner"] &&!stage[war_scr].obj[k]["hero"] &&!stage[war_scr].obj[k]["warmachine"]) {eff += stage[war_scr].obj[k]["nownumber"]}}stage[war_scr].obj[activeobj][s + "effmain"] = eff}if (stage[war_scr].obj[activeobj][s + "effmain"] > 0) {if (stage[war_scr].obj[activeobj].hero) {var s1 = 0if (isperk(activeobj, 93) &&(s == "magicfist" || s == "raisedead")) {s1 = 4}if (isperk(activeobj, 78) && (s == "poison" || s == "mpoison")) {s1 += 5}if (isperk(activeobj, 89) && (s == "poison" || s == "mpoison")) {s1 += 3}eff =stage[war_scr].obj[activeobj][s + "effmain"] +stage[war_scr].obj[activeobj][s + "effmult"] *(stage[war_scr].getspellpower(activeobj, s) + s1)if (stage[war_scr].obj[activeobj][s + "effmult"] == 1.5) {eff = Math.round(eff)}var teff = effif (powered) {eff = Math.round(eff * 1.5)}} else {eff = Math.round(stage[war_scr].obj[activeobj][s + "effmain"] +stage[war_scr].obj[activeobj][s + "effmult"] *Math.pow(stage[war_scr].obj[activeobj]["nownumber"], 0.7))if (s == "blind") {eff = Math.round(stage[war_scr].obj[activeobj][s + "effmain"] +stage[war_scr].obj[activeobj][s + "effmult"] *stage[war_scr].obj[activeobj]["nownumber"])}var teff = eff}if (!powered) stage[war_scr].obj[activeobj][s + "_magiceff"] = effif (stage[war_scr].obj[activeobj][s + "time"] > 0 &&stage[war_scr].obj[activeobj][s + "effmain"] > 15 &&s != "antimagic") {eff = stage[war_scr].obj[activeobj][s + "effmain"] + "%"}if (s.substr(0, s.length - 1) == "summoncreature") {if (magic[activeobj]["suc"]) {eff = Math.floor(eff * Math.pow(0.9, magic[activeobj]["suc"]["effect"]))}}efftxt = eff} else {efftxt = ""if (s == "explosion") {eff = Math.round(9 +9 * Math.pow(stage[war_scr].obj[activeobj]["nownumber"], 0.7))efftxt = eff}if (s == "channeling") {eff = Math.max(1,Math.floor(stage[war_scr].obj[activeobj]["nownumber"] * 0.5))efftxt = eff}}if (stage[war_scr].obj[activeobj][s + "time"] > 0) {if (stage[war_scr].obj[activeobj].hero || magic[activeobj]["her"]) {eff = stage[war_scr].getspellpower(activeobj, s)if (isperk(activeobj, 89)) {eff += 3}if (isperk(activeobj, 78) && checkdark(s)) {eff += 5}} else {eff = stage[war_scr].obj[activeobj]["nownumber"]if (magic[activeobj]["bhr"]) {eff = Math.max(eff,Math.floor(stage[war_scr].obj[activeobj]["maxmanna"] / 5))}}if (eff == 0) {eff = 0.5}durationtxt = eff} else {durationtxt = ""}var add_desktop = ""if (!android) add_desktop = "_Desktop"book_txt +="<div" +(actMiniSpells ? "" : " title = '" + nametxt + "'") +' class="book_skill_block' +add_desktop +'" id="spell_block' +showed_cnt +'" style="background-image:url(' +stage[war_scr].subpath +"combat/magicbook/" +so +".png?v=" +image_ver +");"if (disabled == false) {book_txt +='"><div class="spell_btn' +add_desktop +'" id="spell' +showed_cnt +'" attr_disabled="0" style="cursor: pointer;" '} else {book_txt +='opacity: 0.3;"><div attr_disabled="1" style="cursor: auto;"'}spell_id[showed_cnt] = sospell_powered[showed_cnt] = poweredlet style = actMiniSpells ? "font-size: 0.8rem;line-height: 1;" : ""book_txt +='></div><div class="book_skill_block_container"><div class="book_skill_block_amounts book_skill_block_name" style = "' +style +'">' +(actMiniSpells ? s_name : nametxt) +"</div>"if (cost != "")book_txt +='<div class="book_skill_block_amounts book_skill_block_effects">' +cost +"</div>"if (efftxt != "")book_txt +='<div class="book_skill_block_amounts book_skill_block_cost">' +efftxt +"</div>"if (durationtxt != "")book_txt +='<div class="book_skill_block_amounts book_skill_block_durt">' +durationtxt +"</div>"book_txt += "</div></div>"}page = page * spell_per_pagevar eco = 1if (this.obj[activeobj]["hero"]) {var len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {i = this.obj_array[k1]if (this.obj[i]["energychannel"] &&this.obj[i]["nownumber"] > 0 &&this.obj[i]["owner"] == this.obj[activeobj]["owner"]) {eco = 0.75}}for (var k1 = 0; k1 < len; k1++) {i = this.obj_array[k1]if (this.obj[i]["manaeater"] &&this.obj[i]["nownumber"] > 0 &&this.obj[i]["side"] != this.obj[activeobj]["side"]) {eco = 1.3}}} else {var len = this.obj_array.lengthvar max = 0for (var k1 = 0; k1 < len; k1++) {i = this.obj_array[k1]if (this.obj[i]["manacurser"] &&this.obj[i]["nownumber"] > 0 &&this.obj[i]["side"] != this.obj[activeobj]["side"]) {max = Math.max(max, this.obj[i]["nownumber"])}}max = Math.min(40, max)eco *= 1 + max / 100}var cm = magicbookspells_new.lengthfor (zz = 0; zz <= 1; zz++) {var showed_cnt = 0k = 0for (i = 0; i < cm; i++) {if (hwm_set["spellsOrder"]) {s = magicbookspells_new[i]} else {s = magicbookspells[i]}if ((this.obj[activeobj][s] == 1 ||(s == "gating" &&magic[activeobj]["dem"] &&magic[activeobj]["dem"]["effect"] == 1)) &&((k >= page && k < page + spell_per_page) || check_spell)) {if (s == "gating" && this.obj[activeobj].alreadysummon) {continue}if (s == "firstblood") {continue}if (s == "explosion" && this.obj[activeobj].nowmanna == 0) {continue}if (s == "teleport" && this.obj[activeobj].demonic) {continue}if (s == "summonpitlords" && magic[activeobj]["pit"]) {continue}if (s == "invisibility" &&magic[activeobj]["2in"] &&magic[activeobj]["2in"]["effect"] == 1) {continue}if (s == "seduction" && magic[activeobj]["usd"]) {continue}if (s == "manafeed" && this.obj[activeobj].nowmanna == 0) {continue}showed_cnt++proccedinbook(s, 0, showed_cnt)}if (this.obj[activeobj][s] == 1 ||(s == "gating" &&magic[activeobj]["dem"] &&magic[activeobj]["dem"]["effect"] == 1)) {k++}if (this.obj[activeobj].darkpower &&this.obj[activeobj][s] == 1 &&magicbookchaos[magicbookspells.indexOf(s)] &&k >= page &&k < page + spell_per_page) {showed_cnt++proccedinbook(s, 1, showed_cnt)}if (this.obj[activeobj].darkpower &&this.obj[activeobj][s] == 1 &&magicbookchaos[magicbookspells.indexOf(s)]) {k++}if (this.check_mass_day_or_night(activeobj, s)) {if (k >= page && k < page + spell_per_page) {var scut = s.substr(1)showed_cnt++this.obj[activeobj][s + "cost"] =this.obj[activeobj][scut + "cost"] * 2this.obj[activeobj][s + "effmain"] =this.obj[activeobj][scut + "effmain"]this.obj[activeobj][s + "effmult"] =this.obj[activeobj][scut + "effmult"]this.obj[activeobj][s + "time"] =this.obj[activeobj][scut + "time"]proccedinbook(s, 0, showed_cnt)}k++}}if (k > page || k == 0) breakelse {page = 0bookpage = 0}}if (check_spell) {return was_spell}if (actMiniSpells) {book_txt +="<style>.book_skill_block_amounts {font-weight:bold;}.book_skill_block_Desktop{width:25% !important;height: 17vh !important;} .book_skills_container_Desktop{margin-left: 5%;margin-right: 5%;}</style>"}document.getElementById("magic_book_page").innerHTML = book_txtdocument.getElementById("book_mana").innerHTML ="<div>" +this.obj[activeobj].nowmanna +" / " +this.obj[activeobj].maxmanna +"</div>"for (i = 1; i <= spell_per_page; i++) {if (document.getElementById("spell" + i)) {if (magic_book_hints) {var disabled = tointeger(document.getElementById("spell" + i).getAttribute("attr_disabled"))if (disabled != 1) {show_div_arrow("spell_block" + i,"","position: absolute;   left: calc(50% - 25px);   top: 90%;   width: 50px;   height: 50px;   pointer-events: none;   display: block;  transform: rotate(270deg);")} else {hide_div_arrow("spell_block" + i)}}document.getElementById("spell" + i).addEventListener("mouseup", spell_button_release.bind(null, i))}}}//unsafeWindow.hwm_set = {miniSpells: false,atbStartDisplay: false,spellsOrder: false,}for (i in hwm_set) {hwm_set[i] = localStorage.getItem(i)if (hwm_set[i] === null ||hwm_set[i] === undefined ||hwm_set[i] === "1" ||hwm_set[i] === "0" ||hwm_set[i] === 1 ||hwm_set[i] === 0) {hwm_set[i] = false}}unsafeWindow.checkTrue = function (name) {return hwm_set[name] === true || hwm_set[name] === "true"}unsafeWindow.setAtbStyle = function () {let elems = document.getElementsByClassName("atb-info")for (let i = 0; i < elems.length; i++) {elems[i].style.display = checkTrue("atbStartDisplay")? "block": "none"}}setAtbStyle()unsafeWindow.checkSet = function (name) {document.getElementById(name + "_checkbox").checked = checkTrue(name)? true: falselocalStorage.setItem(name, checkTrue(name) ? false : true)hwm_set[name] = checkTrue(name) ? false : trueif (name == "atbStartDisplay") {setAtbStyle()}}unsafeWindow.chatMode = function () {return chat.className.substring(chat.className.length - 1)}let divs = [],divc = [],divt = []let backgroundColors = ["","#991515","#4b66ff","#25C953","#BD8500","#B000FF","#005C13",]for (let i = btype == 145 ? 6 : 2; i >= 1; i--) {divs[i] = document.createElement("div")divs[i].setAttribute("id", "hp" + i)divs[i].classList.add("hp")divc[i] = document.createElement("div")divc[i].style.backgroundColor = backgroundColors[i]divc[i].setAttribute("id", "hp" + i + "c")divc[i].classList.add("hpc")divt[i] = document.createElement("div")divt[i].setAttribute("id", "hp" + i + "t")divt[i].classList.add("hpt")if (i > 1) {divs[i].style.marginTop = "3px"}document.querySelector("#chat_format").prepend(divs[i])divs[i].prepend(divc[i])divs[i].prepend(divt[i])}div = document.createElement("div")div.innerHTML ="<div class='info_row' id='atb-start-bonus' onmouseup = 'checkSet(\"atbStartDisplay\")'><label class='checkbox_container'>Стартовый бонус АТБ<input type='checkbox'" +(checkTrue("atbStartDisplay") ? " checked " : "") +"id='atbStartDisplay_checkbox'><span class='checkbox_checkmark'></span></label></div><br>"document.getElementById("win_Settings").getElementsByTagName("form")[0].querySelector("#webgl_settings_whole").after(div)global_init = 0unsafeWindow.firsTurnShow =tointeger(command.substr(1, command.indexOf(":") - 1)) <= 1? true: falseunsafeWindow.btime = falseunsafeWindow.fireInfo = falseunsafeWindow.skillProbability = ""unsafeWindow.luckProbability = 0unsafeWindow.curAbil = ""unsafeWindow.last_line3 = ""unsafeWindow.phm = {}unsafeWindow.psc = {}unsafeWindow.psa = {}unsafeWindow.sHP = [0, 0]unsafeWindow.nHP = [0, 0]//unsafeWindow.gate = {};unsafeWindow.lastChain = 0unsafeWindow.damageTable = ""unsafeWindow.damage = [[], []]unsafeWindow.targetMagicdamage = 0unsafeWindow.targetMagickills = 0unsafeWindow.test_temp = 0unsafeWindow.addSpeedLastTurn = 0unsafeWindow.addIniLastTurn = 0unsafeWindow.lastRaidsCount = 0unsafeWindow.raidsCurrentWave = 0damageTableStyle = document.createElement("style")damageTableStyle.innerHTML ="#win_BattleR###lt{max-height:90%} #damageTable td {vertical-align: baseline; font-size:90%} #damageTable {max-height: 30vh;overflow: auto;}"damageTableStyle.innerHTML +="#test table {width:100%;margin-left:3px;} #test {padding-left:5px;font-weight:bold;height:100%;width:100%;position: absolute;top:0;right: 0;background: #151313;font-size: 0.9em;z-index:101;}"damageTableStyle.innerHTML +="#effectsDisplay:hover{filter: brightness(1500%) drop-shadow(0 0 10px #fff);} #effectsDisplay {display: inline-block;float: right;height: 26px;cursor: pointer;line-height: 26px;color:#979797;font-size:12px}"damageTableStyle.innerHTML +="#dop-info img {filter: drop-shadow(#000 0px 0px 0.1em);margin-left:-2px;vertical-align: baseline;} #dop-info {position:absolute;font-family: Arial;position: absolute;text-align: right;text-shadow: -0   -0.03em 0.03em #000, 0   -0.03em 0.03em #000,-0    0.03em 0.03em #000, 0    0.03em 0.03em #000,-0.03em -0   0.03em #000, 0.03em -0   0.03em #000,-0.03em  0   0.03em #000, 0.03em  0   0.03em #000,-0.03em -0.03em 0.03em #000, 0.03em -0.03em 0.03em #000,-0.03em  0.03em 0.03em #000, 0.03em  0.03em 0.03em #000,-0.03em -0.03em 0.03em #000, 0.03em -0.03em 0.03em #000,-0.03em  0.03em 0.03em #000, 0.03em  0.03em 0.03em #000;color: #fff;font-size:130%}"damageTableStyle.innerHTML +=".hp {width:100%; height:15px; border: 1px solid #fff; border-radius: 5px; color:#fff; position:relative;}"damageTableStyle.innerHTML +=".hpt {width:100%; height:100%; text-align:center; line-height:15px; font-size:13px; font-weight:bold; color:#fff; position:absolute; z-index:1;}"damageTableStyle.innerHTML +=".hpc {width:100%; height:100%; border-radius: 5px; position:absolute;}"document.head.appendChild(damageTableStyle)effectsDisplay = document.createElement("div")effectsDisplay.setAttribute("id", "effectsDisplay")effectsDisplay.innerHTML = "Эффекты"effectsDisplay.setAttribute("title","Отображать в окне чата бафы и дебафы существ при наведении курсора")effectsDisplay.setAttribute("onclick", "setEffectDisplay()")document.getElementById("chat_panelPosition_btn1").before(effectsDisplay)dopInfoPanel = document.createElement("div")dopInfoPanel.setAttribute("id", "dop-info")unsafeWindow.lastFire = 0document.getElementById("timer").after(dopInfoPanel)unsafeWindow.testBlock = function (i = 0, firewall = false) {if (chatMode() == "V") {return 0}let div = document.getElementById("test")if (firewall == true && i != lastFire && i > 0) {div.style.height = "100%"div.innerHTML = "<center>Огнестенка " + i + " ход.</center>"lastFire = ifireInfo = true} else if (firewall == false) {fireInfo = falseif (i == 0 ||stage.pole.showmagicinfo(i, 1).indexOf("Эффекты отсутствуют") != -1) {div.innerHTML = ""div.style.height = "0"lastFire = 0return 0}div.style.height = "100%"if (lastFire == 0) {div.innerHTML = ""}div.innerHTML +="<center>" + stage.pole.get_name_html(i) + "</center>"let str = stage.pole.showmagicinfo(i, 1)div.innerHTML += str}}unsafeWindow.updateBar = function (ch = 2) {sHP = [0, 0, 0, 0, 0, 0]nHP = [0, 0, 0, 0, 0, 0]for (k in stage.pole.obj) {let ow =ch == 2? (stage.pole.obj[k].owner % 2) * -1 + 1: +stage.pole.obj[k].owner - 1if (stage.pole.obj[k].hero != undefined ||stage.pole.obj[k].warmachine != undefined ||stage.pole.obj[k].building != undefined)continuesHP[ow] += stage.pole.obj[k].maxnumber * stage.pole.obj[k].maxhealthnHP[ow] +=Math.max(stage.pole.obj[k].nownumber - 1, 0) *stage.pole.obj[k].maxhealth +stage.pole.obj[k].nowhealth}for (let i = 1; i <= ch; i++) {let percentage = (nHP[i - 1] / sHP[i - 1]) * 100document.getElementById("hp" + i + "t").innerHTML = `${nHP[i - 1]}/${sHP[i - 1]} (${percentage.toFixed(2)}%)`document.getElementById("hp" + i + "c").style.width = `${percentage.toFixed(2)}%`}}unsafeWindow.infoBlock = function (i = 0) {let div = document.getElementById("dop-info")if (i == 0) {div.innerHTML = ""return 0}let str = ""let h = Math.round((atb_scaling *atb_height *stage.pole.scaling *(1 / MainPixelRatio)) /3)if (stage.pole.luckMoraleProbability(i, "morale") > 0) {str +="<div style = 'line-height:" +(h - 2) +"px;height:" +h +"px;'><img align='absmiddle' height = '" +(h - 4) +"px' src = 'https://dcdn.heroeswm.ru/i/icons/attr_morale.png'>&#8201;" +stage.pole.luckMoralePerc(i, "morale") +"</div>"}if (stage.pole.luckMoraleProbability(i, "luck") > 0) {str +="<div style = 'line-height:" +(h - 2) +"px;height:" +h +"px;'><img align='absmiddle' height = '" +(h - 4) +"px' src = 'https://dcdn.heroeswm.ru/i/icons/attr_fortune.png'>&#8201;" +stage.pole.luckMoralePerc(i, "luck") +"</div>"}if (str != "" && time > 0) {str += "<style>#timer {opacity:0.3}</style>"}div.innerHTML = str}let damageTableDisplay = localStorage.getItem("damage-table-display")if (damageTableDisplay === null || damageTableDisplay === undefined) {damageTableDisplay = "table"}let spanHTML = damageTableDisplay == "table" ? "(скрыть)" : "(показать)"let effectDisplay = localStorage.getItem("effect-display")if (effectDisplay === null || effectDisplay === undefined) {effectDisplay = "block"}div = document.createElement("div")div.setAttribute("id", "test")div.style.height = "0"div.style.display = effectDisplaydocument.getElementById("effectsDisplay").style.textDecoration =effectDisplay == "none" ? "line-through" : "none"document.getElementById("chat_format").prepend(div)unsafeWindow.setEffectDisplay = function () {effectDisplay = effectDisplay == "none" ? "block" : "none"localStorage.setItem("effect-display", effectDisplay)document.getElementById("test").style.display = effectDisplaydocument.getElementById("effectsDisplay").style.textDecoration =effectDisplay == "none" ? "line-through" : "none"}unsafeWindow.setDamageTableDisplay = function () {damageTableDisplay = damageTableDisplay == "table" ? "none" : "table"localStorage.setItem("damage-table-display", damageTableDisplay)document.getElementById("win_BattleR###lt").querySelector("table").style.display = damageTableDisplayspanHTML = damageTableDisplay == "table" ? "(скрыть)" : "(показать)"updateDamageData()}unsafeWindow.updateDamageData = function () {if (damageTable == "") {damageTable = document.createElement("div")damageTable.setAttribute("id", "damageTable")document.getElementById("win_BattleR###lt").querySelector("#btn_watch_WatchBattle").before(damageTable)}let txt ="<B>Нанесённый урон</B> <span onclick = 'setDamageTableDisplay()' title 'скрыть/показать' style = 'font-size:80%;cursor:pointer'>" +spanHTML +"</span><table width = 100% style = 'display:" +damageTableDisplay +"'><tbody><tr>"for (let i = 0; i < 2; i++) {if (damage[i].length == 0) {continue}txt += "<td width = 50%><table width = 95%><tbody>"damage[i].sort((a, b) => (a.s < b.s ? 1 : -1))for (let j = 0; j < damage[i].length; j++) {txt +="<tr><td align = left>" +stage.pole.html("name", damage[i][j]["id"]) +"</td><td align = right>" +damage[i][j]["s"] +"</td></tr>"}txt += "</tbody></table></td>"}txt += "</tr></tbody></table>"document.getElementById("damageTable").innerHTML = txt}stage.pole.procceddamage = unsafeWindow.procceddamage = function (i) {realDamage = Math.min(this.obj[i].damage,(this.obj[i].nownumber - 1) * this.obj[i].maxhealth +this.obj[i].nowhealth)if (this.obj[this.obj[i].damaged] !== undefined ||this.obj[i].damaged == -2 ||this.obj[i].damaged == -1 ||this.obj[i].damaged == -9) {let id = 0if (this.obj[i].damaged == -9 && psa[i] !== "undefined") {// id = psa[i];} else if (this.obj[i].damaged == -1 && psc[i] !== "undefined") {id = psc[i]} else if (this.obj[i].damaged == -2) {let x = tointeger(tmp.substr(6, 2))let y = tointeger(tmp.substr(8, 2))id = Math.floor(firewalls[x + y * defxn] / 100)} else {id = this.obj[i].damaged}if (id > 0 && this.obj[id] && this.obj[id].owner) {let owner = this.obj[id].ownerlet side = (this.obj[id].owner % 2) * -1 + 1let name = this.obj[id].nametxtlet f = falsefor (let j = 0; j < damage[side].length; j++) {if (damage[side][j]["name"] == name &&damage[side][j]["owner"] == owner) {f = truedamage[side][j]["s"] += realDamage}}if (f == false) {let o = {id: id,s: realDamage,name: name,owner: owner,}damage[side].push(o)}updateDamageData()}}if (this.obj[this.obj[i].damaged] !== undefined) {if (this.obj[this.obj[i].damaged].separhsum === null ||this.obj[this.obj[i].damaged].separhsum === undefined) {this.obj[this.obj[i].damaged].separhsum = 0}let s = 0if (realDamage >= this.obj[i].nowhealth) {s += this.obj[i].levelif (realDamage - this.obj[i].nowhealth > 0) {s *=Math.floor((realDamage - this.obj[i].nowhealth) / this.obj[i].maxhealth) + 1}this.obj[this.obj[i].damaged].separhsum += s}if (stage.pole.obj[this.obj[i].damaged]["hitcount"] === undefined) {stage.pole.obj[this.obj[i].damaged]["hitcount"] = 0stage.pole.obj[this.obj[i].damaged]["luckcount"] = 0}if (this["nowhit"] != this.obj[i].damaged &&!this.obj[i].magicdamage) {let curName = curAbil.substr(0, 3)if (curAbil == "" ||parseInt(curAbil.substr(3, 3)) != this.obj[i].damaged ||(curName != "stb" &&curName != "htc" &&curName != "blh" &&curName != "dwl" &&curName != "ltn" &&curName != "clt" &&curName != "lep" &&curName != "spk" &&curName != "bdd" &&curName != "rs2" &&curName != "ooc" &&curName != "fls")) {if (magic[this.obj[i].damaged] &&magic[this.obj[i].damaged]["hyp"] &&magic[this.obj[i].damaged]["hyp"]["nowinit"] > 0) {} else {this.obj[this.obj[i].damaged]["hitcount"] += 1}this["nowhit"] = this.obj[i].damaged}curAbil = ""}}curshowmagic = ""if (this.obj[i].damaged > 0) {this.obj[this.obj[i].damaged].att = true}if (this.obj[i].damage != 0 || !this.obj[i].runaway) {this.obj[i].donow = "b"if (this.obj[i].incorporeal) {if (this.obj[i].magicdamage &&this.obj[i].magicdamage != "Магический кулак") {this.obj[i].misscount = 0} else {if (this.obj[i].damage == 0) {if (this.obj[i].misscount === undefined ||this.obj[i].misscount == 0) {this.obj[i].misscount = -1} else {if (this.obj[i].misscount == -1) {this.obj[i].misscount = -2} else {this.obj[i].misscount = -1}}} else {if (this.obj[i].misscount === undefined ||this.obj[i].misscount == 0) {this.obj[i].misscount = 1} else {if (this.obj[i].misscount == 1) {this.obj[i].misscount = 2} else {this.obj[i].misscount = 1}}}}}if (this.obj[i].damage == 0 && magic[i]["phm"]) {this.obj[i].donow = ""} else {if (this.obj[i].damaged > 0) {this.obj[i].destx = this.obj[this.obj[i].damaged].x}if (this.obj[i].damaged > 0) {this.obj[i].desty = this.obj[this.obj[i].damaged].y}this.obj[i].active = truesomeactive = true}}this.obj[i]["needSetNumber"] = 0this.calcdamage(i)}stage.pole.process_luck = unsafeWindow.process_luck = function (current) {var lucky = command.substring(4, command.indexOf("^"))playsound(current, lucky, 70)if (lucky == "badmorale") {switch (lang) {case 0:htmllog +="" +this.html("name", current) +" ожидают в страхе" +this.html("end")breakcase 1:htmllog +="" +this.html("name", current) +" freeze in fear." +this.html("end")break}showtext()showdefwait(current, "unmorale")}if (lucky == "morale") {this.incrementParam(current, "moraleCount")switch (lang) {case 0:htmllog +="" +this.html("name", current) +" рвутся в бой!" +this.html("end")breakcase 1:htmllog +="" +this.html("name", current) +" are bursting for more action!" +this.html("end")break}showtext()showdefwait(current, "morale")}if (lucky == "luck") {if (stage.pole.obj[current]["hitcount"] === undefined) {stage.pole.obj[current]["hitcount"] = 0stage.pole.obj[current]["luckcount"] = 0}stage.pole.obj[current]["luckcount"] += 1switch (lang) {case 0:htmllog +="" +this.html("name", current) +" посетила удача!" +this.html("end")breakcase 1:htmllog +="Luck befalls " +this.html("name", current) +"!" +this.html("end")break}showtext()showdefwait(current, "luck")}if (lucky == "unluck") {switch (lang) {case 0:htmllog +="" +this.html("name", current) +" посетила неудача." +this.html("end")breakcase 1:htmllog +="Bad luck befalls " +this.html("name", current) +"." +this.html("end")break}showtext()showdefwait(current, "unluck")}if (lucky == "critical") {switch (lang) {case 0:htmllog +="" +this.html("name", current) +" - критический удар по заклятому врагу." +this.html("end")breakcase 1:htmllog +="" +this.html("name", current) +" deal critical damage to favoured enemy." +this.html("end")break}showtext()showdefwait(current, "crit")}if (lucky == "drunk") {switch (lang) {case 0:htmllog +="" +this.html("name", current) +" - самоуправство." +this.html("end")breakcase 1:htmllog +="" +this.html("name", current) +" - independence." +this.html("end")break}showtext()showdefwait(current, "rage", 0)}command = command.substr(command.indexOf("^") + 1)}stage.pole.luckMoraleProbability = function (i, name) {let probability = 0if (!firsTurnShow) {return 0}let cre = stage.pole.obj[i]if (cre === undefined) {return 0}let allCount = ""let yesCount = ""let lastValue = ""let luck = 0if (name == "morale") {allCount = "turnCount"yesCount = "moraleCount"lastValue = "lastMorale"luck = stage.pole.getMoraleN(i)} else if (name == "luck") {allCount = "hitcount"yesCount = "luckcount"lastValue = "lastluck"luck = cre["luck"] + cre["luckaddon"]}if (cre[allCount] === undefined) {cre[allCount] = 0}if (cre[yesCount] === undefined) {cre[yesCount] = 0}if (cre["checkMrl"] !== undefined && cre["checkMrl"] == 1) {if (magic[i]["mrl"] === 0) {stage.pole.clearPar(i, "morale")cre["checkMrl"] = 0}}if (cre[lastValue] !== undefined && luck != cre[lastValue]) {stage.pole.clearPar(i, name)}cre[lastValue] = luckluck = Math.max(0, Math.min(luck * 0.1, 0.5))if (cre["hero"] != 1) {probability = Math.min(Math.pow(luck,1 +cre[yesCount] -((cre[allCount] - cre[yesCount]) * luck) / (1 - luck)),1)}if (probability >= 0.1) {return probability.toFixed(2)} else {return probability.toFixed(3)}}stage.pole.luckMoralePerc = function (i, name) {let prob = this.luckMoraleProbability(i, name)if (prob >= 0.1) {return (prob * 100).toFixed(0) + "%"} else {return (prob * 100).toFixed(1) + "%"}}stage.pole.snaresPossible = unsafeWindow.snaresPossible = function (attacker,defender) {let n =Math.floor(attacker.nownumber / 25) -(defender.level +Math.floor((defender.nownumber * defender.maxhealth) /(80 + defender.level * 20)))let possible = [25, 25, 25, 25]let b = nif (n > 0) {for (let i = 3; i >= 1; i--) {while (possible[i] > 5 && n > 0) {possible[0] += 5possible[i] -= 5n -= 1}}}if (n < 0) {for (let i = 0; i <= 2; i++) {while (possible[i] > 5 && n < 0) {possible[3] += 5possible[i] -= 5n += 1}}}return possible[0] + possible[1] + possible[2] + "%"}stage.pole.checkProbabilitySkill = unsafeWindow.checkProbabilitySkill =function (attacker, attackx, attacky, ax, ay, range = 0) {unsafeWindow.skillProbability = ""if (!this.obj[attacker] ||!this.obj[attacker].hasOwnProperty("nownumber")) {return false}var defender = mapobj[ax + ay * defxn]if (!this.obj[defender] ||!this.obj[defender].hasOwnProperty("nownumber")) {return false}let hpa =(this.obj[attacker].nownumber - 1) * this.obj[attacker].maxhealth +this.obj[attacker].nowhealthlet hpd =(this.obj[defender].nownumber - 1) * this.obj[defender].maxhealth +this.obj[defender].nowhealthlet soldiersLuck = 0if (heroes[this.obj[activeobj]["owner"]] > 0) {let h = heroes[this.obj[activeobj]["owner"]]if (isperk(activeobj, 33)) {soldiersLuck = 1}}if (this.obj[attacker]["blinding_attack"] &&this.obj[defender]["alive"] &&!this.obj[defender]["warmachine"] &&!this.obj[defender]["iblind"] &&!this.obj[defender]["imind"] &&!this.obj[defender]["twistedmind"] &&!this.obj[defender]["absolutepurity"] &&!this.obj[defender]["enchantedarmor"]) {skillProbability = getSkillProbability(hpa,Math.max(1, hpd - tPhysicalDamage))if (skillProbability !=getSkillProbability(hpa, Math.max(1, hpd - tPhysicalDamage2))) {skillProbability =skillProbability +"% - " +getSkillProbability(hpa, Math.max(1, hpd - tPhysicalDamage2))}}if (this.obj[attacker]["fearattack"] &&this.obj[defender]["alive"] &&!this.obj[defender]["imind"] &&!this.obj[defender]["twistedmind"] &&!this.obj[defender]["absolutepurity"]) {skillProbability = getSkillProbability(hpa,Math.max(1, hpd - tPhysicalDamage))if (skillProbability !=getSkillProbability(hpa, Math.max(1, hpd - tPhysicalDamage2))) {skillProbability =skillProbability +"% - " +getSkillProbability(hpa, Math.max(1, hpd - tPhysicalDamage2))}}if (this.obj[attacker]["flamewave"] ||(this.obj[attacker]["shootbash"] && range == 1) ||this.obj[attacker]["shieldbash"] ||this.obj[attacker]["deathattack"] ||(this.obj[attacker]["wardingarrows"] &&!this.obj[defender]["warmachine"] &&!this.obj[defender]["mechanical"])) {skillProbability = getSkillProbability(hpa, hpd)}if (this.obj[attacker]["torpor"] &&this.obj[defender]["alive"] &&!this.obj[defender]["warmachine"] &&!this.obj[defender]["absolutepurity"]) {skillProbability = getSkillProbability(hpa, hpd)}if (this.obj[attacker]["pawstrike"]) {let len = wmap2[attacky * defxn + attackx]let spd = Math.max(0,Math.round((this.obj[attacker].speed +this.obj[attacker]["ragespeed"] +this.obj[attacker]["speedaddon"]) *this.obj[attacker].speedmodifier))if (magic[attacker]["ent"] &&magic[attacker]["ent"]["nowinit"] > 0) {spd = 0}if (this.obj[attacker].x == attackx &&this.obj[attacker].y == attacky) {len = spd}let movelen = spd - lenskillProbability = getSkillProbability(hpa,hpd,Math.floor(movelen))}if ((this.obj[attacker]["bindshot"] && range == 1) ||(this.obj[attacker]["bindingstrike"] && range == 0)) {skillProbability = getSkillProbability(hpa,Math.max(1, hpd - tPhysicalDamage),2)if (skillProbability !=getSkillProbability(hpa, Math.max(1, hpd - tPhysicalDamage2), 2)) {skillProbability =skillProbability +"% - " +getSkillProbability(hpa, Math.max(1, hpd - tPhysicalDamage2), 2)}}if (this.obj[attacker]["purge"] ||this.obj[attacker]["cripplingwound"] ||this.obj[attacker]["assault"] ||(this.obj[attacker]["markoffire"] && range == 1) ||(this.obj[attacker]["powerstrike"] && !this.obj[defender]["big"]) ||this.obj[attacker]["lighting_attack"] ||(this.obj[attacker]["whipstrike"] && range == 0) ||(this.obj[attacker]["forcearrow"] && range == 1) ||(this.obj[attacker]["stoning"] && range == 0) ||this.obj[attacker]["paralyzing"] ||this.obj[attacker]["hexingattack"]) {skillProbability = getSkillProbability(hpa,Math.max(1, hpd - tPhysicalDamage))if (skillProbability !=getSkillProbability(hpa, Math.max(1, hpd - tPhysicalDamage2))) {skillProbability =skillProbability +"% - " +getSkillProbability(hpa, Math.max(1, hpd - tPhysicalDamage2))}}function getSkillProbability(hpa, hpd, attempt = 1) {let skillProbability = 0if (hpa > hpd) {skillProbability = 25 + 3 * (hpa / hpd)} else {skillProbability = 25 - 3 * (hpd / hpa)}skillProbability = Math.min(75, Math.max(5, skillProbability))skillProbability = Math.round((1 -Math.pow(1 - skillProbability / 100,attempt * (soldiersLuck + 1))) *100)return skillProbability}}unsafeWindow.showuron = function (mag, effect = "") {if (myuron.line3 === undefined) {var ttext = Make_Text("", uron_data)set_X(ttext, uron_data.x)set_Y(ttext, uron_data.y + 69)myuron.line3 = ttextMake_addChild(myuron2, ttext)option = {offsetX: -razmetka["war_images"][24][mqc["sdx"]],offsetY:-razmetka["war_images"][24][mqc["sdy"]] -(razmetka["war_images"][19][mqc["ys"]] +razmetka["war_images"][24][mqc["y"]]),image: stage.pole.ground["war_images"],width: razmetka["war_images"][24][mqc["xs"]],height: razmetka["war_images"][24][mqc["ys"]],crop: {x: razmetka["war_images"][24][mqc["x"]],y: razmetka["war_images"][24][mqc["y"]],width: razmetka["war_images"][24][mqc["xs"]],height: razmetka["war_images"][24][mqc["ys"]],visible: 1,},listening: false,}var img_temp = My_Image(option)img_temp.option = optionset_visible(img_temp, 1)Make_addChild(myuron2, img_temp)set_scaleX(img_temp, sub_scale * 0.4)set_scaleY(img_temp, sub_scale * 0.4)}var line1 = 0var line2 = 0var line3 = stage.pole.luckMoraleProbability(activeobj, "luck")if (umelka[1][0] == undefined) {return 0}if (effect != "") {line1 = ""line2 = effect} else if (mag == 1) {if (ctrldown && targetMagicdamage > 0) {line2 = targetMagicdamageline1 = targetMagickills} else {line2 = Totalmagicdamageline1 = Totalmagickills}} else {if (ctrldown) {line1 = Uronkillsif (Uronkills != Uronkills2) line1 += " - " + Uronkills2line2 = PhysicalDamageif (PhysicalDamage != PhysicalDamage2)line2 += " - " + PhysicalDamage2} else {line1 = tUronkillsif (tUronkills != tUronkills2) {line1 += " - " + tUronkills2}line2 = tPhysicalDamageif (tPhysicalDamage != tPhysicalDamage2) {line2 += " - " + tPhysicalDamage2}if (skillProbability != "") {line2 += " (" + skillProbability + "%)"}}}var scale =Math.max(min_uron_scale, stage[war_scr].scaling_ratio) *MainPixelRatioset_scaleX(myuron2, scale)set_scaleY(myuron2, scale)if (last_line1 != line1 || last_line2 != line2 || last_line3 != line3) {last_line1 = line1last_line2 = line2last_line3 = line3set_cache(myuron, false)set_text(myuron.line1, line1 + " ")set_text(myuron.line2, line2 + " ")luckProbability = stage.pole.luckMoraleProbability(activeobj, "luck")if (mag == 1 ||luckProbability == 0 ||magicuse == "leap" ||magicuse == "leap6") {myuron2.children[4].visible = 0myuron.line3.visible = 0} else {myuron2.children[4].visible = 1myuron.line3.visible = 1set_text(myuron.line3, stage.pole.luckMoralePerc(activeobj, "luck"))}set_visible(myuron, 1)set_strokeThickness(myuron.line1,Math.round(uron_stroke_width * Math.min(1, scale)))set_strokeThickness(myuron.line2,Math.round(uron_stroke_width * Math.min(1, scale)))set_strokeThickness(myuron.line3,Math.round(uron_stroke_width * Math.min(1, scale)))//		myuron.cacheAsBitmap = true;}set_visible(myuron, 1)//	set_cache(myuron, true);var sc = 1var ratio = getDevicePixelRatio()//	if (android)//	{var sc = stage[war_scr].scaling * ratio//	}var rect = get_clientRect(myuron)if (currentTip == 1) {rect.width *= scalerect.height *= scale}if (currentTip == 1 &&(rect.x > 6000 || rect.width > 2000 || rect.height > 200)) {rect.width =Math.min(300,Math.max(myuron.line1.width, myuron.line2.width) + 20) * stage[war_scr].scalingrect.height =Math.min(100, myuron.line1.height * 2 + 5) * stage[war_scr].scaling}var gscaling = stage[war_scr].scalingvar xx2 = scr_xmousevar max_x = original_widthif (android && stage_width > stage_height) {max_x = original_width - pole_left - pole_right}if (xx2 + get_width(myuron) > max_x * gscaling) {xx2 = max_x * gscaling - get_width(myuron)}var xx = xx2var yy = scr_ymouseif (!android) {xx -= cursor_width * scaleyy += cursor_height * 1.5 * scale} else {xx -= cursor_width * scaleyy -= cursor_height * 4 * scaleif (yy < 3) yy = 3}if (yy + get_height(rect) * 1.2 > atby) {yy = atby - get_height(rect) * 1.2}if (xx + get_width(rect) * 1.1 > stage_width) {xx = stage_width - get_width(rect) * 1.1}set_X(myuron, Math.round(xx))set_Y(myuron, Math.round(yy))}stage.pole.onMouseMoveFlash = unsafeWindow.onMouseMoveFlash = function (from_event,xmouse,ymouse,force,reset,lastcoords) {attack_xr = 0attack_yr = 0targetMagicdamage = 0targetMagickills = 0if (buttons_visible["win_dialog"]) return 0if (buttons_visible["scroll_runes"]) return 0if (buttons_visible["magic_book"]) return 0if (buttons_visible["win_SeparateArmy"]) return 0if (buttons_visible["win_Mission"]) return 0if (buttons_visible["win_Settings"]) return 0if (total_delta > 20) return 0if (typeof unsafeWindow.csword === "undefined") return 0shiftdown = falsectrldown = falseif (!android) {var isRightMB = falsevar e = 0if ((typeof event !== "undefined" && event) || from_event) {var e = from_eventif (typeof event !== "undefined" && event) e = eventif (e.which) {if (e.which == 2 || e.which == 3) {isRightMB = 1}} else if (e.button) isRightMB = e.button >= 2}if (KeyisDown(16)) shiftdown = trueelse shiftdown = falseif (KeyisDown(17) || isRightMB) ctrldown = trueelse ctrldown = false}shiftdown = (shiftdown || shift_button) && shift_okctrldown = ctrldown || info_buttonif (activeobj > 0 && this.obj[activeobj]) {if (this.obj[activeobj]["was_atb"] > 0) {this.reset_temp_magic()this.showatb()this.obj[activeobj]["was_atb"] = 0}if (magicuse != "" &&this.obj[activeobj][magicuse + "elem"] == "air" &&((this.obj[activeobj]["hero"] && isperk(activeobj, 100)) ||this.obj[activeobj]["master_of_storms"])) {this.reset_temp_magic()this.showatb()}if (magicuse != "" &&(magicuse == "circle_of_winter" || magicuse == "icebolt") &&((this.obj[activeobj]["hero"] && isperk(activeobj, 99)) ||this.obj[activeobj]["master_of_ice"])) {this.reset_temp_magic()this.showatb()}}movecounter++var i = 0,bigok = false,len = 0,xk = 0,yk = 0,range = 0,xaa = 0,yaa = 0,x = 0,y = 0,xr = 0,yr = 0,a = 0,ab = 0,ac = 0,xb = 0,yb = 0,res = 0,ok = falseif (onrune) {if (lastshad > 0) {set_visible(shado[lastshad], 0)set_visible(shado[lastshad + 1], 0)set_visible(shado[lastshad + 1 + defxn], 0)set_visible(shado[lastshad + defxn], 0)}lastshad = 0return 0}if (itrunepanel()) {return 0}attackx = 0attacky = 0movex = 0movey = 0magicx = -1magicy = 0scr_ymouse = ymousescr_xmouse = xmouseif (lastcoords == true) {scr_ymouse = scr_ymouselastscr_xmouse = scr_xmouselast}scr_ymouselast = scr_ymousescr_xmouselast = scr_xmousevar r = getxa_from(scr_xmouse, scr_ymouse)x = r.x + 1y = r.y + 1xr = Math.ceil(r.x)yr = Math.ceil(r.y)if (interactive_obj > 0) {if (xr > 0 &&yr > 0 &&xr <= defxn - 2 &&yr <= defyn &&mapobj[yr * defxn + xr] == interactive_obj) {} else {xr = this.obj[interactive_obj].xyr = this.obj[interactive_obj].y}}xr_last = xryr_last = yrxr_z = scr_xmouseyr_z = scr_ymouseif (reset) {xr_z = -100yr_z = -100xr = -5yr = -5}if (buttons_visible["win_InfoCreatureEffect"]) return 0if (buttons_visible["win_InfoHero"]) return 0if (buttons_visible["win_InfoHero2"]) return 0if (buttons_visible["win_InfoCreature"]) return 0if (xr > 0 && yr > 0 && xr <= defxn - 2 && yr <= defyn) {show_coords(xr, yr)if (firewalls[yr * defxn + xr] > 0) {let lifeTime = (magic[Math.floor(firewalls[yr * defxn + xr] / 100)]["F" + ((firewalls[yr * defxn + xr] % 100) + "").padStart(2, "0")]["nowinit"] / 100).toFixed(2)testBlock(lifeTime, true)} else if (fireInfo) {testBlock()}} else {show_coords(0, 0)}if (loader.loading ||((someactive || command != "") && !gpause) ||buttons_visible["magic_book"] ||buttons_visible["scroll_runes"]) {return 0}if (!inserted && inssubmit) {return 0}if (!inserted && !inssubmit) {if (reset) {xr = -5yr = -5}if (activestek <= 0) {lastshad = -1}if (xr + yr * defxn != lastshad) {if (shado[lastshad]) set_visible(shado[lastshad], 0)if (shado[lastshad + 1]) set_visible(shado[lastshad + 1], 0)if (shado[lastshad + 1 + defxn])set_visible(shado[lastshad + 1 + defxn], 0)if (shado[lastshad + defxn]) set_visible(shado[lastshad + defxn], 0)lastshad = xr + yr * defxnif (activestek > 0) {if (stekx[activestek] > 0) {set_visible(shado[stekx[activestek] + steky[activestek] * defxn],1)if (this.obj[activestek].big) {set_visible(shado[stekx[activestek] + steky[activestek] * defxn + 1],1)set_visible(shado[stekx[activestek] + steky[activestek] * defxn + 1 + defxn],1)set_visible(shado[stekx[activestek] + steky[activestek] * defxn + defxn],1)}if (this.obj[activestek].bigx) {set_visible(shado[stekx[activestek] + steky[activestek] * defxn + 1],1)}if (this.obj[activestek].bigy) {set_visible(shado[stekx[activestek] + steky[activestek] * defxn + defxn],1)}}po = Math.floor((playero - 1) / 2)if (getbtype(btype) == 1 || getbtype(btype) == 3) {if (playero > 2) {playero1 = playero + 1} else {playero1 = playero}t1 = 0t2 = 0t11 = 0t21 = 0k = playerok1 = playero1if (isperk(0, 12, k)) {if (k % 2 == 0) {t1 = -1} else {t2 = 1}if (k1 % 2 == 0) {t11 = -1} else {t21 = 1}}for (x = 9 - (playero % 2) * 8 + t1;x <= 9 - (playero % 2) * 8 + 3 + t2;x++) {for (y = (defyn - 4) * ((playero1 + 1) % 2) + 1 + t11;y <= (defyn - 4) * ((playero1 + 1) % 2) + 4 + t21;y++) {setmap(x, y, 250)}}} else {if (getbtype(btype) == NEWKZS ||btype == _PIRATE_NEW_EVENT ||winter == "arena8" ||btype == _VILLAGE_EVENT) {setpole(btype, 250, playero, yourside, defxn - 2, defyn)} else if (getbtype(btype) == 4 ||getbtype(btype, defxn - 2, defyn) == _NEWTHIEF ||getbtype(btype) == _NECR_EVENT2 ||btype == _ELKA_DEFENSE) {setpole(btype, 250, playero, yourside, defxn - 2, defyn, po)} else {t1 = 0t2 = 0k = playeroif (isperk(0, 12, k)) {if ((k + camp_mirror) % 2 == 0) {t1 = -1} else {t2 = 1}}y1 = Math.floor((po * defyn) / yourside + 1)y2 = Math.floor(((po + 1) * defyn) / yourside)if (fullinsert) {y1 = 1y2 = defyn}for (x =defxn -3 -((playero + camp_mirror) % 2) * (defxn - 4) +t1;x <=defxn -3 -((playero + camp_mirror) % 2) * (defxn - 4) +1 +t2;x++) {for (y = y1; y <= y2; y++) {setmap(x, y, 250)}}}}this.setotherobjs()for (k = 1; k <= Math.max(7, stackcount); k++) {if (k != activestek) {setmap(stekx[k], steky[k], 210)if (this.obj[k]) {if (this.obj[k].big) {setmap(stekx[k] + 1, steky[k], 210)setmap(stekx[k] + 1, steky[k] + 1, 210)setmap(stekx[k], steky[k] + 1, 210)}if (this.obj[k].bigx) {setmap(stekx[k] + 1, steky[k], 210)}if (this.obj[k].bigy) {setmap(stekx[k], steky[k] + 1, 210)}}}}var bigx = this.obj[activestek]["big"]var bigy = this.obj[activestek]["big"]if (this.obj[activestek]["bigx"]) bigx = 1if (this.obj[activestek]["bigy"]) bigy = 1var cnt = 0var xp = Array(0, -1, 0, -1)var yp = Array(0, 0, -1, -1)var xro = xr,yro = yrif (this.obj[activestek]["big"]) cnt = 3for (k = 0; k <= cnt; k++) {ok = truexr = xro + xp[k]yr = yro + yp[k]xr_last = xryr_last = yrfor (x = 0; x <= bigx; x++) {for (y = 0; y <= bigy; y++) {if (getmap(x + xr, y + yr) != 250) {ok = false}}}if (ok) break}if (ok && (xr != stekx[activestek] || yr != steky[activestek])) {lastshad = xr + yr * defxnsetstekx = xrsetsteky = yrset_visible(shado[xr + yr * defxn], 1)if (this.obj[activestek].big) {set_visible(shado[xr + yr * defxn + 1], 1)set_visible(shado[xr + yr * defxn + 1 + defxn], 1)set_visible(shado[xr + yr * defxn + defxn], 1)}if (this.obj[activestek].bigx) {set_visible(shado[xr + yr * defxn + 1], 1)}if (this.obj[activestek].bigy) {set_visible(shado[xr + yr * defxn + defxn], 1)}} else {setstekx = -1setsteky = -1}}}var i = mapobj[yr * defxn + xr]if (i > 0) {if ((activeobj > 0 || someactive == false || gpause) &&this.obj[i].doing != "walk" &&(activeobj != i || gpause) &&!this.obj[i].hero &&showway) {this.showposway(i, 0, activeobj)if (!gpause) this.checkthrower(activeobj)}} else {var was = 0,m = 0lastpole = 0if (this.shadows)for (x = 0; x <= defxn + 1; x++) {if (!this.shadows.shad1[x]) continuefor (y = 1; y <= defyn; y++) {if (!this.shadows.shad1[x][y]) continuem = getmap(x, y)if (m == 210) {m = 250}if (m == 200 || m == 250 || mapzz[y * defxn + x] == 240) {if (!was) set_visible(this.shadows.shadow1, 1)was = 1}if (this.shadows.shad1[x][y].shadowed == 1) {set_Alpha(this.shadows.shad1[x][y], 0.3)}if (mapzz[y * defxn + x] == 240) {set_Alpha(this.shadows.shad1[x][y], 0.5)this.shadows.shad1[x][y].shadowed = 1}if (m == 200 && gpause) continueif (m == 200 || m == 250 || mapzz[y * defxn + x] == 240) {set_visible(this.shadows.shad1[x][y], 1)} else {set_visible(this.shadows.shad1[x][y], 0)}}}this.shadows.shadow1.no_filter = trueif (shadow_cache) set_cache(this.shadows.shadow1, true, 1)}return 0}var cur_atb = this.get_cur_atb(scr_xmouse, scr_ymouse)if (cur_atb > 0 && zoomed == false) {if (combat_zoom_timeout > 0) {clearTimeout(combat_zoom_timeout)combat_zoom_timeout = 0}k = cur_atb - 1for (var kk = 0; kk <= atb_cnt; kk++) {if (kk != k) {if (typeof this.p_array === "undefined" ||!this.portraits[this.p_array[kk]])continueshowshadow(this.portraits[this.p_array[kk]].under, false)}}if (this.obj[atb[k + atbsd]] &&!this.obj[atb[k + atbsd]].shadowed &&!someactive) {this.showmi(atb[k + atbsd])var i = atb[k + atbsd]showshadow(this.obj[atb[k + atbsd]], true)lasti = atb[k + atbsd]showshadow(this.portraits[this.p_array[k]].under, true)if (this.obj[atb[k + atbsd]].nownumber > 0 &&!this.obj[atb[k + atbsd]].stone &&!this.obj[atb[k + atbsd]].portal) {this.obj[atb[k + atbsd]].ontop = 1this.obj[atb[k + atbsd]].get_obj_z(this.obj[atb[k + atbsd]].y)if (this.obj[atb[k + atbsd]].hero) {set_visible(this.obj[atb[k + atbsd]].number, 1)}showshadow(this.obj[atb[k + atbsd]], true)need_sort = true}var len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {i = this.obj_array[k1]if (i != atb[k + atbsd] && this.obj[i].shadowed) {clearpole2()if (this.obj[i].nownumber > 0 &&!this.obj[i].stone &&!this.obj[i].portal) {this.obj[i].ontop = 0this.obj[i].get_obj_z(this.obj[i].y)if (this.obj[i].hero) {set_visible(this.obj[i].number, 0)}need_sort = true}showshadow(this.obj[i], false)}}}if (lastk != k) re_cache_atb()lastk = kif (inserted) {set_cursor(0)if (myuron) set_visible(myuron, 0)if (csword) set_visible(csword, 0)clearshado()clearshadway()}return 0}lastk = -1if (reset) {xr = -5yr = -5}mishowed = falsevar i = mapobj[yr * defxn + xr]var nowi = 0if (lasti > 0 && lasti != i && this.obj[lasti].shadowed) {i = lastilasti = 0for (k = 0; k <= atb_cnt; k++) {if (atb[k + atbsd] == i) {showshadow(this.portraits[this.p_array[k]].under, false)}}if (!mishowed) {set_visible(mini_info_panel, 0)this.showmi(-1)if (btype == 20 || btype == _SURVIVAL_GNOM || btype == _2SURVIVAL) {this.showmitnv()}if (btype == 8) {this.showmitnv(1)}if (btype == 119) {// this.showmitnv(2);}clearpole2()}if (this.obj[i].nownumber > 0 &&!this.obj[i].stone &&!this.obj[i].portal) {this.obj[i].ontop = 0this.obj[i].get_obj_z(this.obj[i].y)if (this.obj[i].hero) {set_visible(this.obj[i].number, 0)}need_sort = true}showshadow(this.obj[i], false)if (!(mapobj[yr * defxn + xr] > 0)) re_cache_atb()}if (gpause) this.fill_mapobj()if (i > 0) {bigok = falseif (this.obj[i].big) {if (this.obj[i].x <= xr &&this.obj[i].x + 1 >= xr &&this.obj[i].y <= yr &&this.obj[i].y + 1 >= yr) {bigok = true}}if (this.obj[i].bigx) {if (this.obj[i].x <= xr &&this.obj[i].x + 1 >= xr &&this.obj[i].y == yr) {bigok = true}}if (this.obj[i].bigy) {if (this.obj[i].y <= yr &&this.obj[i].y + 1 >= yr &&this.obj[i].x == xr) {bigok = true}}if (!this.obj[i].rock &&this.obj[i].nownumber > 0 &&(!someactive || gpause) &&((this.obj[i].x == xr && this.obj[i].y == yr) || bigok)) {nowi = iif (!this.obj[i].shadowed && this.obj[i].inited_show) {if (!this.obj[i].stone && !this.obj[i].portal) {this.obj[i].ontop = 1this.obj[i].get_obj_z(this.obj[i].y)if (this.obj[i].hero) {set_visible(this.obj[i].number, 1)}need_sort = true}mishowed = truethis.showmi(i)showshadow(this.obj[i], true)if ((activeobj > 0 || someactive == false || gpause) &&this.obj[i].doing != "walk" &&(activeobj != i || gpause) &&!this.obj[i].hero &&showway) {this.showposway(i, 0, activeobj)if (!gpause) this.checkthrower(activeobj)}for (k = 0; k <= atb_cnt; k++) {if (atb[k + atbsd] == i) {showshadow(this.portraits[this.p_array[k]].under, true)}}}}if (lasti != i) re_cache_atb()}if (i > 0) lasti = ielse lasti = 0crun_visible2 = trueif (typeof unsafeWindow.myuron !== "undefined") set_visible(myuron, 0)k = getmap(xr, yr)clearshado()if (k == 200) {k = 250}if (xr > defxn - 1 || xr < 0) {k = 0}if (magicuse != "" &&magicuse != "layhands" &&magicuse != "orderofchief" &&magicuse != "harmtouch" &&magicuse != "hailstorm" &&magicuse != "allaroundslash" &&magicuse != "feralcharge" &&magicuse != "slam" &&magicuse != "unstoppablecharge" &&magicuse != "mightyslam" &&magicuse != "incinerate" &&magicuse != "leap" &&magicuse != "leap6" &&magicuse != "harpoonstrike") {k = magicuse}if (magicuse == "ssh") {if (xr >= 1 &&xr <= defxn - 2 &&yr >= 1 &&yr <= defyn &&(Math.abs(xr - this.obj[activeobj].x) > 1 ||Math.abs(yr - this.obj[activeobj].y) > 1)) {k = "ssh"} else {k = 0}}if (k == "mdispel" ||k == "mstoneskin" ||k == "mbless" ||k == "mrighteous_might" ||k == "mdeflect_missile" ||k == "mskyandearth") {k = "mfast"}if (k == "mslow" ||k == "mcurse" ||k == "mdray" ||k == "msuffering" ||k == "mconfusion") {k = "mslow"}if (k == "knightmark" || k == "necr_soul") {k = "knightmark"}if (k == "righteous_might" ||k == "deflect_missile" ||k == "antimagic") {k = "fast"}if (k == "implosion") {k = "lighting"}if (k == "divinev") {k = "angerofhorde"}if (k == "suffering") {k = "curse"}var enemy = 210if (magicuse == "layhands") enemy = 211if (magicuse == "orderofchief") enemy = 211switch (k) {case "magicfist":set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}if (getmap(xr, yr) != 210) {res = 0break}lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)res = "magicfist"magicx = xrmagicy = yrthis.calcmagic(activeobj, xr, yr, magicuse)breakcase "lighting":set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}if (getmap(xr, yr) != 210) {res = 0break}lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)res = "lighting"magicx = xrmagicy = yrthis.calcmagic(activeobj, xr, yr, magicuse)breakcase "chainlighting":set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)lastshad = -2clearshado()var len = this.obj_array.lengthfor (var k = 0; k < len; k++) {i = this.obj_array[k]if (this.obj[i].inited_image == true &&this.obj[i].inited_show) {this.obj[i].set_number()}}}}if (getmap(xr, yr) != 210) {res = 0break}lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)res = "chainlighting"magicx = xrmagicy = yrthis.calcchainlighting(activeobj, xr, yr, magicuse)lastChain = activeobjbreakcase "knightmark":set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}ok = falsevar len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {i = this.obj_array[k1]if (!this.obj[i].warmachine &&!this.obj[i].hero &&i == mapobj[xr + yr * defxn] &&this.obj[i].owner == this.obj[activeobj].owner &&this.obj[i].nownumber > 0 &&!magic[i]["sum"]) {ok = truebreak}}if (!ok) {res = 0break}lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)res = "fast"magicx = xrmagicy = yrbreakcase "dispel":set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}ok = falsevar len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {i = this.obj_array[k1]if (i == mapobj[xr + yr * defxn] &&this.obj[i].nownumber > 0 &&!this.obj[i].hero) {ok = truebreak}}if (!ok) {res = 0break}lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)res = "fast"magicx = xrmagicy = yrbreakcase "mfast":set_cursor(6)var p = 2if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(-1, -1, p, p, false)}}if (magicuse == "mfast") {this.reset_temp_magic()this.showatb()}if (xr > 0 && xr <= defxn - 2 && yr > 0 && yr <= defyn) {} else {return 0}lastshad = xr + yr * defxnsetshad(-1, -1, p, p, true)if (magicuse == "mfast") {this.reset_temp_magic()for (var xrr = xr - 1; xrr <= xr + p; xrr++)for (var yrr = yr - 1; yrr <= yr + p; yrr++) {var i = mapobj[xrr + yrr * defxn]if (i > 0 &&i < 1000 &&!this.obj[i].warmachine &&!this.obj[i].immunity &&!this.obj[i].enchantedarmor &&!this.obj[i].hero &&this.obj[i].side == this.obj[activeobj].getside() &&this.obj[i].nownumber > 0) {setn_temp_magic(i, "fst")}}this.showatb()}res = "mfast"magicx = xrmagicy = yrbreakcase "mslow":set_cursor(6)var p = 2if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(-2, -2, p, p, false)}}if (magicuse == "mslow") {this.reset_temp_magic()this.showatb()}if (xr > 0 && xr <= defxn - 2 && yr > 0 && yr <= defyn) {} else {return 0}lastshad = xr + yr * defxnsetshad(-2, -2, p, p, true)if (magicuse == "mslow") {this.reset_temp_magic()for (var xrr = xr - 2; xrr <= xr + p; xrr++)for (var yrr = yr - 2; yrr <= yr + p; yrr++) {var i = mapobj[xrr + yrr * defxn]if (i > 0 &&!this.obj[i].warmachine &&!this.obj[i].islow &&!this.obj[i].immunity &&!this.obj[i].absolutepurity &&!this.obj[i].enchantedarmor &&!this.obj[i].hero &&this.obj[i].side != this.obj[activeobj].getside() &&this.obj[i].nownumber > 0) {setn_temp_magic(i, "slw")}}this.showatb()}res = "mslow"magicx = xrmagicy = yrbreakcase "mpoison":set_cursor(6)var p = 1if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(-1, -1, p, p, false)}}if (xr > 0 && xr <= defxn - 2 && yr > 0 && yr <= defyn) {} else {return 0}lastshad = xr + yr * defxnsetshad(-1, -1, p, p, true)res = "mfast"magicx = xrmagicy = yrthis.calcmagic(activeobj, xr, yr, magicuse)breakcase "phantom_forces":set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}ok = falsevar len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {i = this.obj_array[k1]if (!this.obj[i].hero &&!this.obj[i].warmachine &&i == mapobj[xr + yr * defxn] &&this.obj[i].owner == this.obj[activeobj].owner &&this.obj[i].nownumber > 0 &&!magic[i]["sum"] &&!magic[i]["phm"] &&!magic[i]["whp"] &&this.obj[i].level <=this.obj[activeobj]["phantom_forceseffmain"]) {j = iok = truebreak}}if (!ok) {res = 0break}xo = this.obj[j].xyo = this.obj[j].yb = 0var bigx = this.obj[j]["big"]var bigy = this.obj[j]["big"]if (this.obj[j]["bigx"]) bigx = 1if (this.obj[j]["bigy"]) bigy = 1ok = falsei = activeobjsetmap(this.obj[i].x, this.obj[i].y, 210, i)if (this.obj[i].big) {setmap(this.obj[i].x, this.obj[i].y + 1, 210, i)setmap(this.obj[i].x + 1, this.obj[i].y + 1, 210, i)setmap(this.obj[i].x + 1, this.obj[i].y, 210, i)}if (this.obj[i].bigx) {setmap(this.obj[i].x + 1, this.obj[i].y, 210, i)}if (this.obj[i].bigy) {setmap(this.obj[i].x, this.obj[i].y + 1, 210, i)}for (x = xo - 1 - bigx; x <= xo + 1 + bigx; x++) {for (y = yo - 1 - bigy; y <= yo + 1 + bigy; y++) {ok2 = truefor (xz = x; xz <= x + bigx; xz++) {for (yz = y; yz <= y + bigy; yz++) {if (xz < 1 ||yz < 1 ||yz > defyn ||xz > defxn - 2 ||getmap(xz, yz) == 210 ||getmap(xz, yz) == 211) {ok2 = false}}}if (ok2) {ok = true}}}i = activeobjsetmap(this.obj[i].x, this.obj[i].y, 0, i)if (this.obj[i].big) {setmap(this.obj[i].x, this.obj[i].y + 1, 0, i)setmap(this.obj[i].x + 1, this.obj[i].y + 1, 0, i)setmap(this.obj[i].x + 1, this.obj[i].y, 0, i)}if (this.obj[i].bigx) {setmap(this.obj[i].x + 1, this.obj[i].y, 0, i)}if (this.obj[i].bigy) {setmap(this.obj[i].x, this.obj[i].y + 1, 0, i)}if (!ok) {res = 0break}lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)res = "phantom_forces"magicx = xrmagicy = yrbreakcase "bless":set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}ok = falsevar len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {i = this.obj_array[k1]if (!this.obj[i].hero &&!this.obj[i].warmachine &&i == mapobj[xr + yr * defxn] &&this.obj[i].side == this.obj[activeobj].getside() &&this.obj[i].nownumber > 0) {ok = truebreak}}if (!ok) {res = 0break}lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)res = "bless"magicx = xrmagicy = yrbreakcase "divine_guidance":set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}ok = falsevar len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {i = this.obj_array[k1]if (!this.obj[i].hero &&!this.obj[i].warmachine &&i == mapobj[xr + yr * defxn] &&this.obj[i].side == this.obj[activeobj].getside() &&this.obj[i].nownumber > 0) {ok = trueobjset = ibreak}}if (!ok) {res = 0this.reset_temp_magic()this.showatb()break}lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)res = "divine_guidance"magicx = xrmagicy = yrthis.reset_temp_magic()var init = this.obj[activeobj]["divine_guidanceeffmain"]var init = 33var j = mapobj[yr * defxn + xr]if (this.obj[j]["nowinit"] - init <this.obj[activeobj]["nowinit"]) {init = Math.floor(this.obj[j]["nowinit"] - this.obj[activeobj]["nowinit"])}this.obj[j]["reset_init"] = -initthis.showatb()breakcase "stoneskin":set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}ok = falsevar len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {i = this.obj_array[k1]if (!this.obj[i].warmachine &&!this.obj[i].hero &&i == mapobj[xr + yr * defxn] &&this.obj[i].side == this.obj[activeobj].getside() &&this.obj[i].nownumber > 0) {ok = truebreak}}if (!ok) {res = 0break}lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)res = "stoneskin"magicx = xrmagicy = yrbreakcase "blind":set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}this.reset_temp_magic()this.showatb()if (getmap(xr, yr) != 210) {res = 0break}ok = truevar len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {i = this.obj_array[k1]if ((this.obj[i].hero ||this.obj[i].warmachine ||!this.obj[i].alive ||this.obj[i].iblind ||this.obj[i].imind ||this.obj[i].twistedmind ||(magic[i]["wfr"] && magic[i]["wfr"]["effect"] == 1) ||this.obj[i].absolutepurity ||this.obj[i].immunity ||this.obj[i].enchantedarmor) &&i == mapobj[xr + yr * defxn] &&this.obj[i].nownumber > 0) {ok = falsebreak}}if (ok &&btype == _PVP_DIAGONAL_EVENT &&checkwall2(this.obj[activeobj]["x"],this.obj[activeobj]["y"],xr,yr,activeobj)) {ok = falsebreak}if (!ok) {res = 0break}this.reset_temp_magic()var uo = mapobj[lastshad]setn_temp_magic(uo, "bld")this.showatb()lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)res = "blind"magicx = xrmagicy = yrbreakcase "seduction":set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}if (getmap(xr, yr) != 210) {res = 0break}ok = trueif ((this.obj[mapobj[yr * defxn + xr]].hero ||this.obj[mapobj[yr * defxn + xr]].immunetohypnos ||this.obj[mapobj[yr * defxn + xr]].immunity ||this.obj[mapobj[yr * defxn + xr]].warmachine ||!this.obj[mapobj[yr * defxn + xr]].alive ||this.obj[mapobj[yr * defxn + xr]].imind ||this.obj[mapobj[yr * defxn + xr]].twistedmind ||(magic[mapobj[yr * defxn + xr]]["wfr"] &&magic[mapobj[yr * defxn + xr]]["wfr"]["effect"] == 1) ||this.obj[mapobj[yr * defxn + xr]].absolutepurity) &&this.obj[mapobj[yr * defxn + xr]].nownumber > 0) {ok = falsebreak}var s = "seduction"hpa =((this.obj[activeobj].nownumber - 1) *this.obj[activeobj].maxhealth +this.obj[activeobj].nowhealth) /((this.obj[mapobj[yr * defxn + xr]].nownumber - 1) *this.obj[mapobj[yr * defxn + xr]].maxhealth +this.obj[mapobj[yr * defxn + xr]].nowhealth)if (hpa <= 0.25 ||Math.floor((2 + Math.log(hpa) / Math.log(2)) * 100) <= 0) {ok = falsebreak}if (ok &&btype == _PVP_DIAGONAL_EVENT &&checkwall2(this.obj[activeobj]["x"],this.obj[activeobj]["y"],xr,yr,activeobj)) {ok = falsebreak}if (!ok) {res = 0break}lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)res = "seduction"magicx = xrmagicy = yrshowuron(1,Math.min((2 + Math.log(hpa) / Math.log(2)).toFixed(2), 4))breakcase "randl":set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}ok = falsevar len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {i = this.obj_array[k1]if (!this.obj[i].hero &&!this.obj[i].warmachine &&!this.obj[i].rock &&i == mapobj[xr + yr * defxn] &&this.obj[i].nownumber > 0) {ok = truebreak}}if (!ok) {res = 0break}lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)res = "randl"magicx = xrmagicy = yrbreakcase "flamestrike":set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}if (getmap(xr, yr) != 210) {res = 0break}ok = truevar len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {i = this.obj_array[k1]if (this.obj[i].hero && i == mapobj[xr + yr * defxn]) {ok = falsebreak}}if (!ok) {res = 0break}lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)res = "stormbolt"magicx = xrmagicy = yrthis.calcflamestrike(activeobj, xr, yr, "flamestrike", 1.2)breakcase "stormbolt":set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}if (getmap(xr, yr) != 210) {res = 0break}ok = truevar len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {i = this.obj_array[k1]if (this.obj[i].hero && i == mapobj[xr + yr * defxn]) {ok = falsebreak}}if (!ok) {res = 0break}lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)res = "stormbolt"magicx = xrmagicy = yrthis.calcflamestrike(activeobj, xr, yr, "stormbolt", 0.5)breakcase "randd":set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}if (getmap(xr, yr) != 210) {res = 0break}ok = truevar len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {i = this.obj_array[k1]if ((this.obj[i].hero ||this.obj[i].warmachine ||this.obj[i].absolutepurity) &&i == mapobj[xr + yr * defxn] &&this.obj[i].nownumber > 0) {ok = falsebreak}}if (!ok) {res = 0break}lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)res = "randd"magicx = xrmagicy = yrbreakcase "poison":set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}if (getmap(xr, yr) != 210) {res = 0break}ok = truevar len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {i = this.obj_array[k1]if (i == mapobj[xr + yr * defxn] &&this.obj[i].absolutepurity &&this.obj[i].nownumber > 0) {ok = falsebreak}}if (!ok) {res = 0break}lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)res = "poison"magicx = xrmagicy = yrthis.calcmagic(activeobj, xr, yr, magicuse)breakcase "magicarrow":set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}if (getmap(xr, yr) != 210) {res = 0break}lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)res = "magicarrow"magicx = xrmagicy = yrthis.calcmagic(activeobj, xr, yr, magicuse)breakcase "firearrow":set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}if (getmap(xr, yr) != 210) {res = 0break}lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)res = "firearrow"magicx = xrmagicy = yrthis.calcmagic(activeobj, xr, yr, magicuse)breakcase "icebolt":set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}if (getmap(xr, yr) != 210) {res = 0break}lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)res = "icebolt"magicx = xrmagicy = yrthis.calcmagic(activeobj, xr, yr, magicuse)breakcase "dray":set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}if (getmap(xr, yr) != 210) {res = 0break}ok = truevar len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {i = this.obj_array[k1]if ((((this.obj[i].hero ||this.obj[i].warmachine ||this.obj[i].absolutepurity) &&this.obj[i].nownumber > 0) ||(mapobj[yr * defxn + xr] > 0 &&(this.obj[mapobj[yr * defxn + xr]].armoured ||this.obj[mapobj[yr * defxn + xr]].organicarmor))) &&i == mapobj[xr + yr * defxn]) {ok = falsebreak}}if (!ok) {res = 0break}lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)res = "dray"magicx = xrmagicy = yrbreakcase "raisedead":set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}ok = falsebig = falsebigf = falsevar len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {i = this.obj_array[k1]if ((this.obj[i].undead || this.obj[i].alive) &&!magic[i]["phm"] &&!magic[i]["sum"] &&xr >= this.obj[i].x &&xr <= this.obj[i].x + this.obj[i].big &&yr >= this.obj[i].y &&yr <= this.obj[i].y + this.obj[i].big &&this.obj[i].owner == this.obj[activeobj].owner &&!this.obj[i].hero &&(this.obj[i].nownumber < this.obj[i].maxnumber ||this.obj[i].nowhealth < this.obj[i].maxhealth) &&getmap(xr, yr) != 210 &&(mapobj[yr * defxn + xr] == undefined ||mapobj[yr * defxn + xr] <= 0 ||this.obj[mapobj[yr * defxn + xr]].owner ==this.obj[activeobj].owner)) {big = falseif (this.obj[i].big && this.obj[i].nownumber == 0) {big = true}bigf = falseif (this.obj[i].nownumber) {bigf = true}ok2 = trueif (big && !bigf) {var x1 = this.obj[i].xvar y1 = this.obj[i].yif ((mapobj[x1 + y1 * defxn] > 0 &&mapobj[x1 + y1 * defxn] != i) ||(mapobj[x1 + y1 * defxn + 1] > 0 &&mapobj[x1 + y1 * defxn + 1] != i) ||(mapobj[x1 + (y1 + 1) * defxn + 1] > 0 &&mapobj[x1 + (y1 + 1) * defxn + 1] != i) ||(mapobj[x1 + (y1 + 1) * defxn] > 0 &&mapobj[x1 + (y1 + 1) * defxn] != i)) {ok2 = false}}if (this.obj[i].bigx && this.obj[i].nownumber == 0 && !bigf) {if (getmap(xr + 1, yr) == 211 || getmap(xr + 1, yr) == 210) {ok2 = false}}if (this.obj[i].bigy && this.obj[i].nownumber == 0 && !bigf) {if (getmap(xr, yr + 1) == 211 || getmap(xr, yr + 1) == 210) {ok2 = false}}if (!ok) {ok = ok2}big = falsebigf = false}}if (!ok) {if (xr + yr * defxn != lastshad) this.showatb()res = 0break}lastshad = xr + yr * defxnthis.show_atb_raisedead(xr, yr)setshad(0, 0, 0, 0, true)res = "raisedead"magicx = xrmagicy = yrbreakcase "heal":set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}ok = falsebig = falsebigf = falsevar len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {i = this.obj_array[k1]if (this.obj[i].alive &&!magic[i]["phm"] &&i == mapobj[xr + yr * defxn] &&this.obj[i].owner == this.obj[activeobj].owner &&!this.obj[i].hero &&this.obj[i].nownumber > 0 &&(this.obj[i].nownumber < this.obj[i].maxnumber ||this.obj[i].nowhealth < this.obj[i].maxhealth) &&getmap(xr, yr) != 210 &&(mapobj[yr * defxn + xr] == undefined ||mapobj[yr * defxn + xr] <= 0 ||this.obj[mapobj[yr * defxn + xr]].owner ==this.obj[activeobj].owner)) {if (this.obj[i].big && this.obj[i].nownumber == 0) {big = true}if (this.obj[i].nownumber) {bigf = true}ok2 = trueif (big && !bigf) {if (getmap(xr + 1, yr + 1) == 211 ||getmap(xr + 1, yr + 1) == 210 ||getmap(xr, yr + 1) == 211 ||getmap(xr, yr + 1) == 210 ||getmap(xr + 1, yr) == 211 ||getmap(xr + 1, yr) == 210) {ok2 = false}}if (this.obj[i].bigx && this.obj[i].nownumber == 0 && !bigf) {if (getmap(xr + 1, yr) == 211 || getmap(xr + 1, yr) == 210) {ok2 = false}}if (this.obj[i].bigy && this.obj[i].nownumber == 0 && !bigf) {if (getmap(xr, yr + 1) == 211 || getmap(xr, yr + 1) == 210) {ok2 = false}}if (!ok) {ok = ok2}big = falsebigf = false}}if (!ok) {res = 0break}lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)res = "heal"magicx = xrmagicy = yrbreakcase "summonpit":set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}ok = falsebig = falsebigf = falsevar len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {i = this.obj_array[k1]if (this.obj[i].alive &&!magic[i]["phm"] &&!magic[i]["sum"] &&this.obj[i].x == xr &&this.obj[i].y == yr &&this.obj[i].owner == this.obj[activeobj].owner &&!this.obj[i].hero &&this.obj[i].nownumber <= 0 &&getmap(xr, yr) != 210 &&(mapobj[yr * defxn + xr] == undefined ||mapobj[yr * defxn + xr] <= 0 ||this.obj[mapobj[yr * defxn + xr]].owner ==this.obj[activeobj].owner)) {if (this.obj[i].big && this.obj[i].nownumber == 0) {big = true}ok2 = trueif (big && !bigf) {if (getmap(xr + 1, yr + 1) == 211 ||getmap(xr + 1, yr + 1) == 210 ||getmap(xr, yr + 1) == 211 ||getmap(xr, yr + 1) == 210 ||getmap(xr + 1, yr) == 211 ||getmap(xr + 1, yr) == 210) {ok2 = false}}if (this.obj[i].bigx && this.obj[i].nownumber == 0 && !bigf) {if (getmap(xr + 1, yr) == 211 || getmap(xr + 1, yr) == 210) {ok2 = false}}if (this.obj[i].bigy && this.obj[i].nownumber == 0 && !bigf) {if (getmap(xr, yr + 1) == 211 || getmap(xr, yr + 1) == 210) {ok2 = false}}if (Math.min(this.obj[i]["maxhealth"], 120) *this.obj[i]["maxnumber"] <120)ok2 = falseif (!ok) {ok = ok2}big = falsebigf = false}}if (!ok) {res = 0break}lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)res = "summonpit"magicx = xrmagicy = yrbreakcase "gating":set_cursor(6)var bigx = this.obj[activeobj]["big"]var bigy = this.obj[activeobj]["big"]if (this.obj[activeobj]["bigx"]) bigx = 1if (this.obj[activeobj]["bigy"]) bigy = 1if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, bigx, bigy, false)}}ok = falseok = truefor (x = 0; x <= bigx; x++) {for (y = 0; y <= bigy; y++) {if (mapg[xr + x + (yr + y) * defxn] != 0) {ok = false}}}if (!ok) {res = 0break}lastshad = xr + yr * defxnsetshad(0, 0, bigx, bigy, true)res = "gating"magicx = xrmagicy = yrbreakcase "repair":set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}ok = falsevar len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {i = this.obj_array[k1]if (this.obj[i].mechanical &&this.obj[i].x == xr &&this.obj[i].y == yr &&this.obj[i].side == this.obj[activeobj].getside() &&!this.obj[i].hero &&(this.obj[i].nownumber < this.obj[i].maxnumber ||this.obj[i].nowhealth < this.obj[i].maxhealth) &&getmap(xr, yr) != 210 &&((this.obj[i].nownumber == 0 && getmap(xr, yr) != 211) ||(this.obj[i].nownumber > 0 && getmap(xr, yr) == 211))) {ok = true}}if (!ok) {res = 0break}lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)res = "repair"magicx = xrmagicy = yrbreakcase "firstaid":set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}ok = falsevar len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {i = this.obj_array[k1]if (!this.obj[i].warmachine &&i == mapobj[xr + yr * defxn] &&this.obj[i].owner == this.obj[activeobj].owner &&!this.obj[i].hero &&(this.obj[i].nownumber < this.obj[i].maxnumber ||this.obj[i].nowhealth < this.obj[i].maxhealth) &&getmap(xr, yr) != 210 &&this.obj[i].nownumber > 0 &&getmap(xr, yr) == 211) {ok = true}}if (!ok) {res = 0break}lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)res = "firstaid"magicx = xrmagicy = yrbreakcase "teleport":if (carryo == -1) {var s = "teleport"if (xr <= 0 || yr <= 0 || xr > defxn - 2 || yr > defyn) {res = 0break}var len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {i = this.obj_array[k1]if (!this.obj[i].warmachine &&!magic[i]["ent"] &&i == mapobj[xr + yr * defxn] &&!this.obj[i].hero &&this.obj[i]["nownumber"] > 0 &&this.obj[i].side == this.obj[activeobj].getside() &&Math.floor((10 *(this.obj[activeobj][s + "effmain"] +this.obj[activeobj].maxnumber *this.obj[activeobj][s + "effmult"])) /((this.obj[i].nownumber - 1) * this.obj[i].maxhealth +this.obj[i].nowhealth)) > 0) {set_cursor(6)res = "teleport"}}} else {var b = 0if (carryo > 0) {if (this.obj[carryo].big) {setmap(this.obj[carryo].x + 1, this.obj[carryo].y + 1, 0)setmap(this.obj[carryo].x + 1, this.obj[carryo].y, 0)setmap(this.obj[carryo].x, this.obj[carryo].y + 1, 0)}if (this.obj[carryo].bigx) {setmap(this.obj[carryo].x + 1, this.obj[carryo].y, 0)}if (this.obj[carryo].bigy) {setmap(this.obj[carryo].x, this.obj[carryo].y + 1, 0)}}var bigx = this.obj[carryo]["big"]var bigy = this.obj[carryo]["big"]if (this.obj[carryo]["bigx"]) bigx = 1if (this.obj[carryo]["bigy"]) bigy = 1ok = truefor (var xrr = xr; xrr <= xr + bigx; xrr++) {for (var yrr = yr; yrr <= yr + bigy; yrr++) {if (carryo > 0 &&(xr != this.obj[carryo].x || yr != this.obj[carryo].y) &&getmap(xrr, yrr) != 200 &&getmap(xrr, yrr) != 210 &&(getmap(xrr, yrr) != 211 ||mapobj[xrr + yrr * defxn] == carryo) &&xr > 0 &&yr > 0 &&xr <= defxn - 2 - bigx &&yr <= defyn - bigy) {} else {ok = falsebreak}}}var s = "teleport"if (carryo <= 0) {var r = 0var r1 = 1} else {var r = Math.floor((10 *(this.obj[activeobj][s + "effmain"] +(this.getspellpower(activeobj, s) +isperk(activeobj, 89) * 3) *this.obj[activeobj][s + "effmult"])) /((this.obj[carryo].nownumber - 1) *this.obj[carryo].maxhealth +this.obj[carryo].nowhealth))var r1 =(xr - this.obj[carryo].x) * (xr - this.obj[carryo].x) +(yr - this.obj[carryo].y) * (yr - this.obj[carryo].y)}if (r1 > r * r) {ok = false}if (ok) {set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, bigx, bigy, false)}lastshad = xr + yr * defxnsetshad(0, 0, bigx, bigy, true)}magicx = xrmagicy = yrres = "teleport"} else {res = 0if (lastshad > 0) {setshad(0, 0, bigx, bigy, false)}lastshad = -1}var lastshadt = lastshadif (carryo > 0) {lastshad = this.obj[carryo].x + this.obj[carryo].y * defxnsetshad(0, 0, bigx, bigy, true)lastshad = lastshadtif (bigx == 1 && bigy == 1) {setmap(this.obj[carryo].x + 1, this.obj[carryo].y + 1, 211)setmap(this.obj[carryo].x + 1, this.obj[carryo].y, 211)setmap(this.obj[carryo].x, this.obj[carryo].y + 1, 211)}if (bigx == 1) {setmap(this.obj[carryo].x + 1, this.obj[carryo].y, 211)}if (bigy == 1) {setmap(this.obj[carryo].x, this.obj[carryo].y + 1, 211)}}}breakcase "carry":spd = Math.max(0,Math.round((this.obj[activeobj].speed +this.obj[activeobj]["ragespeed"] +this.obj[activeobj]["speedaddon"]) *this.obj[activeobj].speedmodifier))if (magic[activeobj]["ent"]) {spd = 0}xr1 = xryr1 = yrif (xr1 > this.obj[activeobj]["x"]) {xr1--}if (yr1 > this.obj[activeobj]["y"]) {yr1--}if (Math.abs(Math.abs(this.obj[activeobj]["x"] - xr1) -Math.abs(this.obj[activeobj]["y"] - yr1)) +1.5 *(Math.max(Math.abs(this.obj[activeobj]["x"] - xr1),Math.abs(this.obj[activeobj]["y"] - yr1)) -Math.abs(Math.abs(this.obj[activeobj]["x"] - xr1) -Math.abs(this.obj[activeobj]["y"] - yr1))) <=spd) {} else {res = 0break}if (carryo == -1) {if (xr <= 0 || yr <= 0 || xr > defxn - 2 || yr > defyn) {res = 0break}var len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {i = this.obj_array[k1]if (!this.obj[i].warmachine &&(!magic[i]["inv"] || magic[i]["inv"]["effect"] != 1) &&!magic[i]["ent"] &&i == mapobj[xr + yr * defxn] &&!this.obj[i].big &&!this.obj[i].bigx &&!this.obj[i].bigy &&!this.obj[i].hero &&this.obj[activeobj]["nownumber"] * 2 >=this.obj[i]["nownumber"] &&this.obj[i]["nownumber"] > 0 &&this.obj[i].side == this.obj[activeobj].getside()) {set_cursor(6)res = "carry"}}} else {if (getmap(xr, yr) != 200 &&getmap(xr, yr) != 210 &&getmap(xr, yr) != 211) {set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)}magicx = xrmagicy = yrres = "carry"}}breakcase "fireball":set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(-1, -1, 1, 1, false)}if (xr <= 0 || yr <= 0 || xr > defxn - 2 || yr > defyn) {res = 0break}lastshad = xr + yr * defxnsetshad(-1, -1, 1, 1, true)}magicx = xrmagicy = yrres = "fireball"this.calcmagic(activeobj, xr, yr, magicuse)break}if (k == 250) {ok = trueif (activeobj > 0 &&this.obj[activeobj].x == xr &&this.obj[activeobj].y == yr &&(!android ||!android_submit ||this.obj[activeobj].hero ||this.obj[activeobj].warmachine)) {ok = false} else {xrr = -1yrr = -1len = 100movex = xrmovey = yrif (activeobj > 0 && this.obj[activeobj].big) {if (wmap2[xr + yr * defxn] >= 0 && !this.obj[activeobj].flyer) {} else {if (this.obj[activeobj].flyer) {i = activeobjsetmap(this.obj[i].x, this.obj[i].y, 250)setmap(this.obj[i].x, this.obj[i].y + 1, 250)setmap(this.obj[i].x + 1, this.obj[i].y + 1, 250)setmap(this.obj[i].x + 1, this.obj[i].y, 250)}for (xk = xr - 1; xk <= xr; xk++) {for (yk = yr - 1; yk <= yr; yk++) {if (wmap2[xk + yk * defxn] >= 0) {if ((xr - xk) * (xr - xk) + (yr - yk) * (yr - yk) < len) {xrr = xkyrr = yklen = (xr - xk) * (xr - xk) + (yr - yk) * (yr - yk)}}}}if (xrr != -1) {xr = xrryr = yrrxr_last = xryr_last = yrmovex = xrmovey = yrif (this.obj[activeobj].x == xr &&this.obj[activeobj].y == yr &&!android) {movex = 0movey = 0res = 0ok = false}} else {movex = 0movey = 0res = 0ok = false}}}if (activeobj > 0 && this.obj[activeobj].bigx && ok) {if (wmap2[xr + yr * defxn] >= 0 && !this.obj[activeobj].flyer) {} else {if (this.obj[activeobj].flyer) {i = activeobjsetmap(this.obj[i].x, this.obj[i].y, 250)setmap(this.obj[i].x + 1, this.obj[i].y, 250)}for (xk = xr - 1; xk <= xr + 1; xk++) {for (yk = yr - 1; yk <= yr + 1; yk++) {if (wmap2[xk + yk * defxn] >= 0) {if ((xr - xk) * (xr - xk) + (yr - yk) * (yr - yk) < len) {if (this.obj[activeobj].flyer) {if (getmap(xk, yk) != 250 ||getmap(xk + 1, yk) != 250) {continue}xrr = xkyrr = yklen = (xr - xk) * (xr - xk) + (yr - yk) * (yr - yk)}}}}}if (xrr != -1) {xr = xrryr = yrrxr_last = xryr_last = yrmovex = xrmovey = yrif (this.obj[activeobj].x == xr &&this.obj[activeobj].y == yr) {movex = 0movey = 0res = 0ok = false}} else {movex = 0movey = 0res = 0ok = false}}}if (activeobj > 0 && this.obj[activeobj].bigy && ok) {if (wmap2[xr + yr * defxn] >= 0 && !this.obj[activeobj].flyer) {} else {if (this.obj[activeobj].flyer) {i = activeobjsetmap(this.obj[i].x, this.obj[i].y, 250)setmap(this.obj[i].x, this.obj[i].y + 1, 250)}for (xk = xr - 1; xk <= xr + 1; xk++) {for (yk = yr - 1; yk <= yr + 1; yk++) {if (wmap2[xk + yk * defxn] >= 0) {if ((xr - xk) * (xr - xk) + (yr - yk) * (yr - yk) < len) {if (this.obj[activeobj].flyer) {if (getmap(xk, yk) != 250 ||getmap(xk, yk + 1) != 250) {continue}xrr = xkyrr = yklen = (xr - xk) * (xr - xk) + (yr - yk) * (yr - yk)}}}}}if (xrr != -1) {xr = xrryr = yrrxr_last = xryr_last = yrmovex = xrmovey = yrif (this.obj[activeobj].x == xr &&this.obj[activeobj].y == yr) {movex = 0movey = 0res = 0ok = false}} else {movex = 0movey = 0res = 0ok = false}}}}if (ok && activeobj > 0) {if (magicuse == "leap" || magicuse == "leap6") {res = 0ok = false}if (ok) {set_cursor(1)xr_go = xryr_go = yrif (xr + yr * defxn != lastshad) {if (lastshad > 0 && shado[lastshad]) {set_visible(shado[lastshad], 0)if (this.obj[activeobj].big) {if (shado[lastshad + 1 + defxn]) {set_visible(shado[lastshad + 1], 0)set_visible(shado[lastshad + 1 + defxn], 0)set_visible(shado[lastshad + defxn], 0)}}if (this.obj[activeobj].bigx) {set_visible(shado[lastshad + 1], 0)}if (this.obj[activeobj].bigy) {set_visible(shado[lastshad + defxn], 0)}}lastshad = xr + yr * defxnset_visible(shado[xr + yr * defxn], 1)if (this.obj[activeobj].big) {set_visible(shado[xr + yr * defxn + 1], 1)set_visible(shado[xr + yr * defxn + 1 + defxn], 1)set_visible(shado[xr + yr * defxn + defxn], 1)}if (this.obj[activeobj].bigx) {set_visible(shado[xr + yr * defxn + 1], 1)}if (this.obj[activeobj].bigy) {set_visible(shado[xr + yr * defxn + defxn], 1)}}res = 250}}}resa = this.in_mousemove(xr, yr, k, magicuse)if (resa["res"] != 0) {res = resa["res"]magicx = resa["magicx"]magicy = resa["magicy"]}if (k == "frenzy") {ok = trueset_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}if (getmap(xr, yr) != 210) {res = 0ok = false}if (ok) {if ((this.obj[mapobj[yr * defxn + xr]].hero ||this.obj[mapobj[yr * defxn + xr]].warmachine ||!this.obj[mapobj[yr * defxn + xr]].alive ||this.obj[mapobj[yr * defxn + xr]].imind ||this.obj[mapobj[yr * defxn + xr]].twistedmind ||(magic[mapobj[yr * defxn + xr]]["wfr"] &&magic[mapobj[yr * defxn + xr]]["wfr"]["effect"] == 1) ||this.obj[mapobj[yr * defxn + xr]].absolutepurity ||this.obj[mapobj[yr * defxn + xr]].ifrenzy) &&this.obj[mapobj[yr * defxn + xr]].nownumber > 0) {ok = false}if (ok &&btype == _PVP_DIAGONAL_EVENT &&checkwall2(this.obj[activeobj]["x"],this.obj[activeobj]["y"],xr,yr,activeobj)) {ok = false}if (ok) {var s = "frenzy"var addeff = 0if (this.obj[activeobj].hero) {if (isperk(activeobj, 78)) {addeff += 5}if (isperk(activeobj, 89)) {addeff += 3}}var th =(this.obj[mapobj[yr * defxn + xr]].nownumber - 1) *this.obj[mapobj[yr * defxn + xr]].maxhealth +this.obj[mapobj[yr * defxn + xr]].nowhealthvar pff =getimmune2(activeobj, mapobj[yr * defxn + xr]) *(this.obj[activeobj][s + "effmain"] +(this.getspellpower(activeobj, magicuse) + addeff) *this.obj[activeobj][s + "effmult"])if (th > pff) ok = falseif (!ok) {res = 0} else {lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)res = "frenzy"magicx = xrmagicy = yr}}}if (!ok) res = 0}if (k == "battledive") {set_cursor(8)ok = trueif (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}if (xr <= 0 || yr <= 0 || xr > defxn - 2 || yr > defyn) {res = 0ok = false}if (ok) {lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)}}if (ok) {magicx = xrmagicy = yrres = "battledive"defender = mapobj[yr * defxn + xr]if (defender > 0 && defender < 1000)this.attackmonster(activeobj, xr, yr, xr, yr, defender)}}if (k == "circle_of_winter") {set_cursor(6)ok = trueif (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(-1, -1, 1, 1, false)}if (xr <= 0 || yr <= 0 || xr > defxn - 2 || yr > defyn) {res = 0ok = false}if (ok) {lastshad = xr + yr * defxnsetshad(-1, -1, 1, 1, true)setshad(0, 0, 0, 0, false)}}if (ok) {magicx = xrmagicy = yrres = "circle_of_winter"this.calcmagic(activeobj, xr, yr, magicuse)}}if (k == "stonespikes") {set_cursor(6)ok = trueif (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)lastshad--setshad(0, 0, 0, 0, false)lastshad += 2setshad(0, 0, 0, 0, false)lastshad--lastshad -= defxnsetshad(0, 0, 0, 0, false)lastshad += 2 * defxnsetshad(0, 0, 0, 0, false)lastshad -= defxn}if (xr <= 0 || yr <= 0 || xr > defxn - 2 || yr > defyn) {res = 0ok = false}lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)lastshad--setshad(0, 0, 0, 0, true)lastshad += 2setshad(0, 0, 0, 0, true)lastshad--lastshad -= defxnsetshad(0, 0, 0, 0, true)lastshad += 2 * defxnsetshad(0, 0, 0, 0, true)lastshad -= defxn}if (ok) {magicx = xrmagicy = yrres = "stonespikes"this.calcmagic(activeobj, xr, yr, magicuse)}}if (k == "wordofchief") {set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}ok = falsevar len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {i = this.obj_array[k1]if (!this.obj[i].warmachine &&!this.obj[i].hero &&i == mapobj[xr + yr * defxn] &&this.obj[i].side == this.obj[activeobj].getside() &&this.obj[i].nownumber > 0) {ok = truebreak}}if (!ok) {res = 0this.reset_temp_magic()this.showatb()} else {lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)res = "wordofchief"magicx = xrmagicy = yrvar eff = this.obj[activeobj][magicuse + "effmain"]var init = eff * 100var j = mapobj[lastshad]if (this.obj[j]["nowinit"] - init <this.obj[activeobj]["nowinit"]) {init = Math.floor(this.obj[j]["nowinit"] - this.obj[activeobj]["nowinit"])}this.reset_temp_magic()this.obj[mapobj[yr * defxn + xr]]["reset_init"] = -initthis.showatb()}}if (k == "wheeloffortune") {set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}ok = falsevar len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {i = this.obj_array[k1]if (i == mapobj[xr + yr * defxn] &&this.obj[i].nownumber > 0 &&!this.obj[i].hero &&i != activeobj) {ok = true}}if (!ok) {res = 0} else {lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)res = "wheeloffortune"magicx = xrmagicy = yr}}if (k == "corpseeater") {set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}var maxh =this.obj[activeobj]["maxnumber"] * this.obj[activeobj]["maxhealth"]var nowh =(this.obj[activeobj]["nownumber"] - 1) *this.obj[activeobj]["maxhealth"] +this.obj[activeobj]["nowhealth"]big2 = 0if (this.obj[activeobj].big) big2 = 1var ok1 = falseif (nowh < maxh) {var len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {var k = this.obj_array[k1]var big = 0if (this.obj[k]["big"]) big = 1if (this.obj[k]["nownumber"] == 0 &&this.obj[k]["alive"] &&!this.obj[k]["warmachine"] &&!this.obj[k]["hsm"] &&this.obj[k].x >= xr &&this.obj[k].x <= xr + big &&this.obj[k].y >= yr &&this.obj[k].y <= yr + big) {var ok = falsefor (var x1 = this.obj[k]["x"] - 1 - big2;x1 <= this.obj[k]["x"] + 1 + big;x1++) {for (var y1 = this.obj[k]["y"] - 1 - big2;y1 <= this.obj[k]["y"] + 1 + big;y1++) {if (wmap2[x1 + y1 * defxn] >= 0) {ok = truebreak}}if (ok) break}if (!ok) continuevar ok1 = truefor (var x1 = this.obj[k]["x"];x1 <= this.obj[k]["x"] + big;x1++) {for (var y1 = this.obj[k]["y"];y1 <= this.obj[k]["y"] + big;y1++) {if (mapobj[yr * defxn + xr] > 0) ok1 = false}}if (ok1) break}}}if (!ok1) {res = 0} else {lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)res = "corpseeater"magicx = xrmagicy = yr}}if (k == "wavesofrenewal") {set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}ok = falsevar len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {i = this.obj_array[k1]if (i == mapobj[xr + yr * defxn] &&this.obj[i].nownumber > 0 &&!this.obj[i].hero &&this.obj[i].side == this.obj[activeobj].getside()) {ok = true}}if (!ok) {res = 0} else {lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)res = "wavesofrenewal"magicx = xrmagicy = yr}}if (k == "angerofhorde") {set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}if (getmap(xr, yr) != 210) {res = 0} else {lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)res = "angerofhorde"magicx = xrmagicy = yrif (stage.pole.obj[activeobj]["divinev"]) {this.calcdivinev(activeobj, xr, yr)} else {this.calcmagic(activeobj, xr, yr, magicuse)}}}if (k == "spiritlink") {set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}ok = falsevar len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {i = this.obj_array[k1]if (!this.obj[i].warmachine &&!this.obj[i].immunity &&!this.obj[i].enchantedarmor &&!this.obj[i].hero &&i == mapobj[xr + yr * defxn] &&i != activeobj &&this.obj[i].side == this.obj[activeobj].getside() &&this.obj[i].nownumber > 0) {ok = truebreak}}if (!ok) {res = 0} else {lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)res = "spiritlink"magicx = xrmagicy = yr}}if (k == "setsnares") {set_cursor(6)ok = trueif (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}if (xr <= 0 ||yr <= 0 ||xr > defxn - 2 ||yr > defyn ||(getmap(xr, yr) != 250 && getmap(xr, yr) != 0)) {res = 0ok = falseif (getmap(xr, yr) == 210) {showuron(1,snaresPossible(this.obj[activeobj],this.obj[mapobj[yr * defxn + xr]]))}} else {lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)}}if (ok) {magicx = xrmagicy = yrres = "setsnares"}}if (k == "setmagicmine") {set_cursor(6)ok = trueif (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}if (xr <= 0 ||yr <= 0 ||xr > defxn - 2 ||yr > defyn ||(getmap(xr, yr) != 250 && getmap(xr, yr) != 0)) {res = 0ok = false} else {lastshad = xr + yr * defxnsetshad(0, 0, 0, 0, true)}}if (ok) {magicx = xrmagicy = yrres = "setmagicmine"}}if (k == "fearmyroar") {set_cursor(6)if (xr + yr * defxn != lastshad) {if (lastshad > 0) {setshad(0, 0, 0, 0, false)}}this.reset_temp_magic()this.showatb()if (getmap(xr, yr) != 210) {res = 0} else {ok = truevar len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {i = this.obj_array[k1]if ((this.obj[i].hero ||this.obj[i].warmachine ||this.obj[i].absolutepurity ||!this.obj[i].alive ||this.obj[i].imind ||this.obj[i].twistedmind ||(magic[i]["wfr"] && magic[i]["wfr"]["effect"] == 1)) &&mapobj[yr * defxn + xr] == i &&this.obj[i].nownumber > 0) {ok = falsebreak}if ((this.obj[i].nownumber - 1) * this.obj[i].maxhealth +this.obj[i].nowhealth >this.obj[activeobj]["fearmyroar" + "effmain"] &&this.obj[i].nownumber > 0 &&mapobj[yr * defxn + xr] == i) {ok = falsebreak}}if (!ok) {res = 0} else {lastshad = xr + yr * defxnvar defender = mapobj[lastshad]if (this.obj[defender]["nowinit"] < 100) {var init = 100if (this.obj[defender]["nowinit"] -this.obj[activeobj]["nowinit"] +init >100) {init = Math.max(0,Math.floor(100 +this.obj[activeobj]["nowinit"] -this.obj[defender]["nowinit"]))}this.reset_temp_magic()this.obj[defender]["reset_init"] = initthis.showatb()}setshad(0, 0, 0, 0, true)res = "curse"magicx = xrmagicy = yr}}}tUronkills = 0tUronkills2 = 0tPhysicalDamage = 0tPhysicalDamage2 = 0res = this.checkcast(k, res, xr, yr)if (magicuse != "" &&this.obj[activeobj]["hero"] &&magicuse != "raisedead" &&magicuse != "r###rrection") {var plus = 100if (isperk(activeobj, 105)) plus = 90if (isperk(activeobj, 106)) plus = 80if (isperk(activeobj, 107)) plus = 70if (isperk(activeobj, 85) &&(magicuse == "mbless" || magicuse == "mdispel")) {plus = 50}if (isperk(activeobj, 84) &&(magicuse == "mstoneskin" || magicuse == "mdeflect_missile")) {plus = 50}if (isperk(activeobj, 86) &&(magicuse == "mfast" || magicuse == "mrighteous_might")) {plus = 50}if (isperk(activeobj, 75) &&(magicuse == "mcurse" || magicuse == "msuffering")) {plus = 50}if (isperk(activeobj, 76) &&(magicuse == "mslow" || magicuse == "mconfusion")) {plus = 50}if (isperk(activeobj, 77) && magicuse == "mdray") {plus = 50}if (magicuse == "raisedead" &&umelka[this.obj[activeobj]["owner"]][0] == 2 &&!magic[activeobj]["nps"] &&this.obj[activeobj]["hero"] &&magic[activeobj]["cls"] &&magic[activeobj]["cls"]["effect"] == 1) {kk = 1 - 0.03 * umelka[this.obj[activeobj]["owner"]][2]plus = Math.round(plus * kk)}if (plus != 100) {this.obj[activeobj]["reset_init"] = 0this.obj[activeobj]["plus_init"] = plusthis.showatb(activeobj)this.obj[activeobj]["was_atb"] = 1}}var a = 1switch (a) {case 1:if (k == enemy) {if (activeobj > 0 &&magic[activeobj]["noa"] &&magic[activeobj]["noa"]["nowinit"] > 0) {clearshadway()set_visible(csword, 0)set_cursor(5)res = 200return 0}if (activeobj > 0 &&this.obj[activeobj].shooter &&this.obj[activeobj].shots > 0 &&((!shiftdown && likeshift <= shiftcount) ||this.obj[activeobj].hero)) {xaa = this.obj[activeobj].xyaa = this.obj[activeobj].yxaa1 = xaayaa1 = yaab = 0if (this.obj[activeobj].big) {if (xaa < xr) {xaa++}if (yaa < yr) {yaa++}}if (this.obj[activeobj].bigx) {if (xaa < xr) {xaa++}}if (this.obj[activeobj].bigy) {if (yaa < yr) {yaa++}}var bigx = this.obj[activeobj]["big"]var bigy = this.obj[activeobj]["big"]if (this.obj[activeobj]["bigx"]) bigx = 1if (this.obj[activeobj]["bigy"]) bigy = 1range = (xaa - xr) * (xaa - xr) + (yaa - yr) * (yaa - yr)ok = truefor (xb = -1; xb <= 1 + bigx; xb++) {for (yb = -1; yb <= 1 + bigy; yb++) {if (yb + yaa1 >= 1 &&yb + yaa1 <= defyn &&xaa1 + xb >= 0 &&xaa1 + xb <= defxn - 1 &&getmap(xaa1 + xb, yaa1 + yb) == 210 &&mapobj[xaa1 + xb + (yaa1 + yb) * defxn] > 0 &&this.obj[mapobj[xaa1 + xb + (yaa1 + yb) * defxn]].statix != 1) {ok = false}}}if ((range > 2 && ok) ||this.obj[activeobj].hero ||this.obj[activeobj].ballista ||this.obj[activeobj].warmachine) {if (!this.obj[activeobj].hero) {if ((Math.sqrt(range) > this.obj[activeobj].range &&!this.obj[activeobj].shadowattack) ||(iswalls &&!this.obj[activeobj].hero &&checkwall(xaa, yaa, xr, yr)) ||((!this.obj[activeobj].siegewalls ||btype == 118 ||!this.obj[mapobj[yr * defxn + xr]].stone) &&iswalls2 &&!this.obj[activeobj].hero &&checkwall2(xaa, yaa, xr, yr, activeobj))) {set_cursor(4)} else {set_cursor(3)}}if (this.obj[activeobj].hero) {set_cursor(2)if (this.obj[activeobj].id == 59 ||this.obj[activeobj].id == 54 ||this.obj[activeobj].id == 48) {set_cursor(3)}}if (this.obj[activeobj].magicattack ||this.obj[activeobj].piercingbolt) {lastmag = xr + yr * defxnlastshad = -2this.magshot(xr, yr)}attackx = xaa1attacky = yaa1res = 210.5if (magicuse == "harpoonstrike") {set_cursor(8)magicx = attackxmagicy = attacky}if (cur_cursor == 2 || cur_cursor == 4 || cur_cursor == 3) {if (this.obj[activeobj]["hero"] &&magic[activeobj]["brb"]) {var init = 20var defender = mapobj[xr + yr * defxn]if (this.obj[defender]["nowinit"] -this.obj[activeobj]["nowinit"] +init >100) {init = Math.max(0,Math.floor(100 +this.obj[activeobj]["nowinit"] -this.obj[defender]["nowinit"]))}this.reset_temp_magic()this.obj[defender]["reset_init"] = initthis.showatb()this.obj[activeobj]["was_atb"] = 1}this.check_shoot_abilities(activeobj,this.obj[activeobj].x,this.obj[activeobj].y,xr,yr)this.attackmonster(activeobj,xr,yr,this.obj[activeobj].x,this.obj[activeobj].y,mapobj[yr * defxn + xr],1)this.checkProbabilitySkill(activeobj,attackx,attacky,xr,yr,1)showuron()}break}}var def = mapobj[yr * defxn + xr]if (range <= 2 && magicuse == "harpoonstrike") return 0if (def <= 0 || !this.obj[def]) return 0if (activeobj > 0 && this.obj[activeobj].shootonly) {set_visible(csword, 0)set_cursor(5)res = 200return 0}if ((magicuse == "harmtouch" &&(this.obj[def].warmachine ||this.obj[def].stone ||this.obj[def].portal ||this.obj[def].maxhealth >= 400)) ||(magicuse == "layhands" &&(!this.obj[def].alive || def == activeobj)) ||(magicuse == "orderofchief" && def == activeobj)) {set_cursor(0)crun_visible2 = falseclearshadway()return 0}set_cursor(2)if (activeobj > 0 &&this.obj[activeobj].strikeandreturn &&(shiftdown || likeshift > shiftcount)) {set_cursor(7)}var xo = this.obj[def].xvar yo = this.obj[def].yvar xp = 0,yp = 0,xpp = 0,ypp = 0,dd = 0,bdd = 100000,bxp = 0,byp = 0var bigx = 0,bigy = 0,bxr = 0,byr = 0if (this.obj[def].bigx || this.obj[def].big) bigx = 1if (this.obj[def].bigy || this.obj[def].big) bigy = 1var one_place = 0if (xr_go > 0) {for (var xt = xo; xt <= xo + bigx; xt++)for (var yt = yo; yt <= yo + bigy; yt++)for (xp = -1 - this.obj[activeobj].big + xt;xp <= xt + 1;xp++)for (yp = -1 - this.obj[activeobj].big + yt;yp <= yt + 1;yp++)if (xr_go == xp && yr_go == yp) one_place = 1}if (one_place == 0) {xr_go = -1yr_go = -1}if (activeobj > 0) {for (var xt = xo; xt <= xo + bigx; xt++)for (var yt = yo; yt <= yo + bigy; yt++)for (xp = -1 - this.obj[activeobj].big + xt;xp <= xt + 1;xp++)for (yp = -1 - this.obj[activeobj].big + yt;yp <= yt + 1;yp++) {if (wmap_a[yp * defxn + xp] >= 0) {if (magicuse == "incinerate" &&(xp != this.obj[activeobj].x ||yp != this.obj[activeobj].y))continuexpp =(xp - xt + 1 + this.obj[activeobj].big + 0.5) /(3 + this.obj[activeobj].big)ypp =(yp - yt + 1 + this.obj[activeobj].big + 0.5) /(3 + this.obj[activeobj].big)dd =(xt - 1 + xpp - r.x) * (xt - 1 + xpp - r.x) +(yt - 1 + ypp - r.y) * (yt - 1 + ypp - r.y)if (android &&one_place &&(xr_go != xp || yr_go != yp))continueif (dd < bdd) {bdd = ddbxp = xpbyp = ypbxr = xt + xppbyr = yt + ypp}}}} else {break}ac = 200set_visible(csword, 1)if (bdd < 100000) {ac = 0xr = Math.floor(bxr)yr = Math.floor(byr)xr_last = xryr_last = yrxb = bxp - xryb = byp - yrxt = xryt = yrxt2 = r.x + 1yt2 = r.y + 1xt2 = bxryt2 = byrac =(Math.atan((yt + 0.5 - yt2) / (xt + 0.5 - xt2)) * 180) /Math.PIif (xt + 0.5 - xt2 >= 0) ac = 180 + ac}if (ac == 200) {set_visible(csword, 0)set_cursor(5)res = 200break}a = acif (xr + xb + (yr + yb) * defxn != lastshad) {if (lastshad > 0) {set_visible(shado[lastshad], 0)if (this.obj[activeobj].big) {if (shado[lastshad + 1]) set_visible(shado[lastshad + 1], 0)if (shado[lastshad + 1 + defxn])set_visible(shado[lastshad + 1 + defxn], 0)if (shado[lastshad + defxn])set_visible(shado[lastshad + defxn], 0)}if (this.obj[activeobj].bigx) {set_visible(shado[lastshad + 1], 0)}if (this.obj[activeobj].bigy) {set_visible(shado[lastshad + defxn], 0)}}lastshad = xr + xb + (yr + yb) * defxnset_visible(shado[xr + xb + (yr + yb) * defxn], 1)if (this.obj[activeobj].big) {set_visible(shado[xr + xb + (yr + yb) * defxn + 1], 1)set_visible(shado[xr + xb + (yr + yb) * defxn + 1 + defxn], 1)set_visible(shado[xr + xb + (yr + yb) * defxn + defxn], 1)}if (this.obj[activeobj].bigx) {set_visible(shado[xr + xb + (yr + yb) * defxn + 1], 1)}if (this.obj[activeobj].bigy) {set_visible(shado[xr + xb + (yr + yb) * defxn + defxn], 1)}}attack_xr = xrattack_yr = yrxr_last = xryr_last = yrattackx = xr + xbattacky = yr + ybif (magicuse == "harmtouch" ||magicuse == "feralcharge" ||magicuse == "unstoppablecharge" ||magicuse == "allaroundslash" ||magicuse == "slam" ||magicuse == "mightyslam" ||magicuse == "layhands" ||magicuse == "orderofchief" ||magicuse == "leap" ||magicuse == "leap6" ||magicuse == "incinerate") {if (magicuse == "leap" ||magicuse == "leap6" ||magicuse == "feralcharge" ||magicuse == "unstoppablecharge" ||magicuse == "allaroundslash" ||magicuse == "slam" ||magicuse == "mightyslam" ||magicuse == "harpoonstrike" ||magicuse == "incinerate") {set_cursor(8)} else {set_cursor(6)}magicx = attackxmagicy = attackyset_visible(csword, 0)}if (magicuse == "hailstorm") {magicx = attackxmagicy = attacky}this.check_abilities(activeobj, attackx, attacky, xr, yr)if (cur_cursor == 2 || cur_cursor == 7) {this.attackmonster(activeobj, xr, yr, attackx, attacky, def, 0)this.checkProbabilitySkill(activeobj, attackx, attacky, xr, yr)showuron()}if (magicuse == "leap") {tUronkills = 0tUronkills2 = 0tPhysicalDamage = 0tPhysicalDamage2 = 0var dx = Math.abs(this.obj[activeobj]["x"] - attackx)var dy = Math.abs(this.obj[activeobj]["y"] - attacky)var diag =Math.abs(dx - dy) +1.5 * (Math.max(dx, dy) - Math.abs(dx - dy))var monatt = Math.floor((this.obj[activeobj]["attack"] +this.obj[activeobj]["attackaddon"] +this.obj[activeobj]["rageattack"]) *diag *0.1)this.obj[activeobj]["attackaddon"] += monattsetmap(this.obj[activeobj].x, this.obj[activeobj].y, 1, false)this.attackmonster(activeobj, xr, yr, attackx, attacky, def, 0)this.obj[activeobj]["attackaddon"] -= monattshowuron()}if (magicuse == "leap6") {tUronkills = 0tUronkills2 = 0tPhysicalDamage = 0tPhysicalDamage2 = 0var dx = Math.abs(this.obj[activeobj]["x"] - attackx)var dy = Math.abs(this.obj[activeobj]["y"] - attacky)var diag =Math.abs(dx - dy) +1.5 * (Math.max(dx, dy) - Math.abs(dx - dy))var koef = 1 + diag * 0.05setmap(this.obj[activeobj].x, this.obj[activeobj].y, 1, false)this.attackmonster(activeobj,xr,yr,attackx,attacky,def,0,koef,"lep")showuron()}set_angle(csword, Math.round(a))var b = getxa(xr, yr)xsize2 = b.x[2] - b.x[3]var scale = this.scalingset_scaleX(csword, scale)set_scaleY(csword, scale)set_X(csword,(b.x[3] + b.x[2]) / 2 +(Math.cos((a / 180) * Math.PI) * xsize2) / 2)set_Y(csword,(b.y[3] + b.y[1]) / 2 +(Math.sin((a / 180) * Math.PI) * (b.y[1] - b.y[3])) / 2)res = 210}break}if (res == 0) {crun_visible2 = falsexr_go = -1yr_go = -1set_cursor(0)}if (res != 210) {set_visible(csword, 0)}if (res == 0 || res == 210.5 || res == 200) {clearshadway()}if (res == 200 && cancelway) {this.getnearpos(xr, yr)}this.check_uron_abil(res, xr, yr)if (crun_visible2) {} else {set_cursor(0)}draw_ground()}stage.pole.commandsproc = unsafeWindow.commandsproc = function () {ccounter++if (!android && inserted && ccounter % 4 == 0) {ccounter = 0if (KeyisDown(16)) shiftdown = trueelse shiftdown = falseif (KeyisDown(17)) {ctrldown = truethis.onMouseMoveFlash(false, mousePos.x, mousePos.y, 1)} else {ctrldown = false}if (lastshiftdown != shiftdown) {lastshiftdown = shiftdownmovecounter = 0}}movecounter++if (activeobj && this.obj[activeobj] && this.obj[activeobj].firstaid) {magicuse = "firstaid"}if (!loading) {if (btype == 86 || btype == 87) {soundon = false}if (soundeff == -1 && btype != 86 && btype != 87 && btype != 82) {mousevisible = true}}if (!initialized) {return 0}if (soundeff == -1 && btype != 86 && btype != 87 && btype != 82) {if (typeof unsafeWindow.cordova_client != "undefined" &&cordova_client) {soundeff = 1} else {show_sound_dialog()}}if (firstbattle && !buttons_visible["win_dialog"]) {if (firstbattle == 2 && btype == 87) {if (!buttons_visible["win_Mission"] &&!finished &&showed_hint[2] == 0 &&activeobj > 0 &&inserted) {fastloadmy("battle.php?reg_loaded=2&pl_id=" +player +"&warid=" +warid +"&rand=" +mathrandom())showed_hint[2] = 1hide_button("info_on")hide_war_buttons(1)show_button("win_Mission")if (lang == 0) {document.getElementById("mission_header").innerHTML ="Задание: захватить шахту"document.getElementById("win_Mission_txt").innerHTML ="Теперь в вашем распоряжении целая армия, состоящая из различных отрядов. Текущая задача - разгромить пограничников и захватить шахту. \n\nВы можете сами наносить удары на расстоянии, а так же давать любые указания своим отрядам.\nВаш союзник-эльфийка поможет победить!"}if (lang == 1) {document.getElementById("mission_header").innerHTML ="Mission: Break through the security"document.getElementById("win_Mission_txt").innerHTML ="You have an army of several different units at your disposal.\n\nCurrent mission - Defeat the Imperial border guards and occupy the sawmill. Your hero can strike them from a safe distance and order the units under your command. Your partner, the she-elf, will help you in your mission."}}} else if (firstbattle == 2) {if (!buttons_visible["win_Mission"] &&!finished &&showed_hint[2] == 0 &&activeobj > 0 &&inserted) {if (!no_reg_stat) {fastloadmy("battle.php?reg_anim_finish=1&pl_id=" +player +"&warid=" +warid +"&rand=" +mathrandom())}showed_hint[2] = 1hide_button("info_on")hide_war_buttons(1)show_button("win_Mission")if (lang == 0) {document.getElementById("mission_header").innerHTML ="Добро пожаловать в мир Героев!"var txts ="Это увлекательная игра с разнообразными боями, гильдиями, квестами и кампаниями. В неё можно играть на любом устройстве - компьютере и телефоне.<br><br><b>Преимущество перед другими онлайн-играми:<br>1. Регулярно проходят боевые ивенты;<br>2. Не нужно быть топ-игроком или высоким уровнем, чтобы показывать отличные результаты в ивенте;<br>3. Разнообразный игровой мир (бои, квесты, карты, рулетка, экономика и т.п.)<br>4. Не требует реальных денег.</b><br><br>А пока вам необходимо подойти и разгромить вражескую нежить."document.getElementById("win_Mission_txt").innerHTML = txts}if (lang == 1) {document.getElementById("mission_header").innerHTML ="Welcome to the world of heroes!"var txts ="This is a fascinating game with various battles, guilds, quests and campaigns. You may enjoy it on your phone or computer. Whichever suits you best.<br><br><b>Advantages over other online games:<br>1. Scheduled regular combat events;<br>2. No need to be among the top players to demonstrate great r###lts in event battles;<br>3. Diverse gaming experience (PVP battles, quests, campaigns, card game, economy and many more);<br>4) Free to play. You can be top player without donations!</b><br><br>Will you join now and annihilate this army of the undead?"document.getElementById("win_Mission_txt").innerHTML = txts}if (document.getElementById("win_Mission_txt").offsetHeight >document.getElementById("MissionItem_txt").offsetHeight * 1.22) {document.getElementById("win_Mission_txt").style["font-size"] ="65%"}}} else {if (initialized && showed_hint[1] == 0 && !inserted) {showhint(1)} else if (!buttons_visible["win_Mission"] &&showed_hint[2] == 0 &&activeobj > 0 &&inserted) {if (demomode && lang == 0) {document.getElementById("mission_header").innerHTML ="Пробный бой"texts[2] ="Вы находитесь в новой игре Герои Войны и Денег. Это тактическая стратегия с элементами RPG и экономики. Здесь вы сможете реализовать все свои способности, постоянно развиваясь и улучшая свои навыки. � егулярные обновления сохранят ваш интерес к игре надолго.\n\nПобеди в бою и начинай играть!"}if (demomode && lang == 1) {document.getElementById("mission_header").innerHTML ="Demo combat"texts[2] ="You have embarked on a new journey with this game - Lords of War and Money. This is a tactical strategy game with RPG elements and a world with well-developed self-sustaining economy. Here, you can realize all your fantasies, constantly developing and improving your skills. Regular updates will keep you interested forever. Wait no longer and into battle!"}showhint(2)} else if (!buttons_visible["win_Mission"] &&demomode != 1 &&showed_hint[3] == 0 &&showed_hint[2] == 1 &&activeobj > 0 &&inserted) {showhint(3)} else if (!buttons_visible["win_Mission"] &&demomode != 1 &&showed_hint[4] == 0 &&showed_hint[3] == 1 &&activeobj > 0 &&inserted &&this.obj[activeobj].hero != 1 &&this.obj[activeobj].shooter != 1) {showhint(4)} else if (!buttons_visible["win_Mission"] &&showed_hint[5] == 0 &&(showed_hint[3] == 1 || demomode) &&activeobj > 0 &&inserted &&this.obj[activeobj].hero == 1) {showhint(5)} else if (!buttons_visible["win_Mission"] &&showed_hint[6] == 0 &&(showed_hint[3] == 1 || demomode) &&activeobj > 0 &&inserted &&this.obj[activeobj].hero != 1 &&this.obj[activeobj].shooter == 1) {showhint(6)}}}if (gpause) {return 0}if (someactive) {ok = falsefor (i = 1; i <= magicscount; i++) {if (((magics[i].doing != "" && magics[i].doing != undefined) ||(magics[i].cmd != "" && magics[i].cmd != undefined)) &&magics[i] != undefined) {ok = truebreak}}var len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {i = this.obj_array[k1]if (this.obj[i].active ||(this.obj[i].doing != "" && this.obj[i].doing != undefined) ||this.obj[i].donow2 == 1) {if (this.obj[i].bomb) continueok = truebreak}}someactive = ok}if (!someactive) {this["nowhit"] = -1}if (command != "") {k = tointeger(command.substr(1, 3))current = kcmd = command.substr(0, 1)if (cmd == "S" && !someactive) {tmp = command.substr(1, 18)curAbil = tmp}}let command_copy = commandif (command_copy.indexOf("psc") != -1 && !someactive) {let phmCommand = command_copy.substr(command_copy.indexOf("psc"), 18)let a = tointeger(phmCommand.substr(3, 3))let d = tointeger(phmCommand.substr(6, 3))psc[d] = a}if (command_copy.indexOf("psa") != -1 && !someactive) {let phmCommand = command_copy.substr(command_copy.indexOf("psa"), 18)let a = tointeger(phmCommand.substr(3, 3))let d = tointeger(phmCommand.substr(6, 3))psa[d] = a}if (command_copy.indexOf("Sphm") != -1 && !someactive) {let phmCommand = command_copy.substr(command_copy.indexOf("Sphm"), 18)let source = Number(phmCommand.substr(12, 3))let phantom = Number(phmCommand.substr(7, 3))if (phm[phantom] === undefined) {phm[phantom] = source}}while (command_copy.substr(0, 1) == "S" && !someactive) {if (command_copy.substr(1, 3) == "lzb") {stage.pole.incrementParam(Number(command_copy.substr(4, 3)),"hitcount",-1)}command_copy = command_copy.substr(19)}for (i in this.obj) {if (this.obj[phm[i]] !== undefined &&this.obj[i].data_string !== undefined &&this.obj[i].data_string.indexOf("phm100000000001") != -1 &&this.obj[i]["phm"] === undefined) {this.obj[i]["luckcount"] =this.obj[phm[i]]["luckcount"] === undefined? 0: this.obj[phm[i]]["luckcount"]this.obj[i]["hitcount"] =this.obj[phm[i]]["hitcount"] === undefined? 0: this.obj[phm[i]]["hitcount"]this.obj[i]["turnCount"] =this.obj[phm[i]]["turnCount"] === undefined? 0: this.obj[phm[i]]["turnCount"]this.obj[i]["moraleCount"] =this.obj[phm[i]]["moraleCount"] === undefined? 0: this.obj[phm[i]]["moraleCount"]this.obj[i]["phm"] = 1}// if ((this.obj[gate[i]] !== undefined) && (magic[i]) && (magic[i]['sum']) && (magic[i]['sum']['effect'] == 2) && (this.obj[i]["gate"] === undefined)) {// this.obj[i]["luckcount"] = this.obj[gate[i]]["luckcount"] === undefined ? 0 : this.obj[gate[i]]["luckcount"];// this.obj[i]["hitcount"] = this.obj[gate[i]]["hitcount"] === undefined ? 0 : this.obj[gate[i]]["hitcount"];// this.obj[i]["gate"] = 1;// }}this.calcComs_new()this.calcComs()if (srcafterload != undefined && srcafterload != "") {srcafterload = ""}}stage.pole.addself = unsafeWindow.addself = function (i,mname,init,eff,caster) {if (mname == "lcr" || mname == "wof") {let cre = stage.pole.obj[i]cre["hitcount"] = 0cre["luckcount"] = 0}if (mname == "mrl") {stage.pole.clearPar(i, "morale")if (stage.pole.obj[i]["checkMrl"] === undefined ||stage.pole.obj[i]["checkMrl"] == 0) {stage.pole.obj[i]["checkMrl"] = 1}}if (mname == "usd" && stage.pole.obj[i].id != 579) {//djinn_vizier ?console.log("1")stage.pole.incrementParam(i, "turnCount", -1)}var s = "",mn = "",meffect = ""if (!magic[i]) return falseif (magic[i][mname]) {if (mname != "brf") {stage[war_scr].dispelmagic(i, mname, magic[i][mname]["effect"])}}magic[i][mname] = Array()magic[i][mname]["nowinit"] = initmagic[i][mname]["effect"] = effif (caster) {magic[i][mname]["caster"] = caster}if (init <= 0) {magic[i][mname] = 0}stage[war_scr].convertfromselfmagic(i, 1)}stage.pole.showmagicinfo = unsafeWindow.showmagicinfo = function (i,t = 0) {var k = 0,bit = 0mcount = -1;(mname = []),(minit = []),(meffect = []),(mcast = []),(mdo = []),(mtype = []),(mperc = []),(out = "")var showeff = 1mcount = -1var tmp = iconvertfromselfmagic2(i)var len = this.obj_array.lengthif (!this.obj[i].hero)for (var k1 = 0; k1 < len; k1++) {k = this.obj_array[k1]if (this.obj[k].owner == this.obj[i].owner && this.obj[k].hero) {i = kconvertfromselfmagic2(i)break}}var plus = "",color = 0var dat = "<table>"i = tmpvar enter = falseif (!enter) {if (lang == 0) {dat +="<tr><td>Тип</td><td width=10></td><td>Эффект</td><td width=10></td><td>Время</td></tr>"}if (lang == 1) {dat +="<tr><td>Type</td><td width=10></td><td>Effect</td><td width=10></td><td>Time</td></tr>"}}if (this.obj[tmp].hero) {make_perks_html(this.obj[i].owner, stage[war_scr].subpath)} else {if (document.getElementById("hero_info_perks")) {document.getElementById("hero_info_perks").innerHTML = ""document.getElementById("hero_info_perks").style.display = "none"}}combat_was_vrag = Array()for (k = 0; k <= mcount; k++) {this.detectmagic(mname[k], k, tmp)if (minit[k] == 100000 && t == 1) {continue}if (minit[k] > 0 &&mdo[k] != "" &&(meffect[k] > 0 || meffect[k] == " " || mname[k] == "hyp")) {enter = trueplus = ""if (mtype[k] == 0) {color = "#0105b4"}if (mtype[k] == -1) {color = t ? "#ef312c" : "#b40501"}if (mtype[k] == 1) {color = t ? "#649615" : "#3f5b13"}if (mtype[k] == 1) {plus = "+"}if (mtype[k] == -1 && mname[k] != "mmn") {plus = "-"}if (mname[k] == "frd") {mcast[k] = lang ? "Defense" : "Защита"}dat +='<tr style="color: ' +color +';"><td>' +mcast[k] +"</td><td></td>"dat += "<td>"if (mtype[k] == 0) {} else {if (meffect[k] == " ") {meffect[k] = ""plus = ""mperc[k] = ""}let d = tif (mname[k] == "wof") {d = 0}dat +=(d != 1 ? mdo[k] : "") + "&nbsp;" + plus + meffect[k] + mperc[k]}dat += "</td><td> </td>"if (minit[k] == 100000) {dat += "<td>-</td></tr>"} else {dat += "<td>" + (minit[k] / 100).toFixed(2) + "</td></tr>"}}}if (!enter) {if (lang == 0) {dat = "<tr><td>Эффекты отсутствуют</td></tr>"}if (lang == 1) {dat = "<tr><td>No effects</td></tr>"}}dat += "</table>"document.getElementById("effects_list").innerHTML = datdocument.getElementById("effects_info_head").innerHTML =this.get_name_html(i)return dat}stage.pole.calcdivinev = unsafeWindow.calcdivinev = function (i, xr, yr) {Totalmagicdamage = 0Totalmagickills = 0var ok = falsevar xx = 0,yy = 0,xp = 0,yp = 0mul = 1var len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {var j = this.obj_array[k1]this.obj[j]["attacked"] = 1this.obj[j]["attacked2"] = 1}var separhsum = this.obj[mapobj[xr + yr * defxn]].separhsum ?? 0var eff =(this.obj[i]["divineveffmain"] +Math.round(this.obj[i]["divineveffmult"] *Math.pow(this.obj[i]["nownumber"], 0.7))) *Math.sqrt(separhsum)this.attackmagic(i,mapobj[xr + yr * defxn],eff,"other","divinev",0,0,0)showuron(1)}stage.pole.calcflamestrike = unsafeWindow.calcflamestrike = function (i,xr,yr,magicuse,koef) {Totalmagicdamage = 0Totalmagickills = 0var ok = falsevar xx = 0,yy = 0,xp = 0,yp = 0mul = 1var len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {var j = this.obj_array[k1]this.obj[j]["attacked"] = 1this.obj[j]["attacked2"] = 1}var herd = 0var hera = 0for (var k1 = 0; k1 < len; k1++) {k = this.obj_array[k1]if (this.obj[k].hero &&this.obj[k].owner == this.obj[mapobj[xr + yr * defxn]].owner)herd = kif (this.obj[k].hero && this.obj[k].owner == this.obj[i].owner)hera = k}let b = 0if (magic[hera] && magic[hera]["mle"]) {b = magic[hera]["mle"]["effect"]magic[hera]["mle"]["effect"] = 0}if (magic[herd] && magic[herd]["msk"]) {if (magic[herd]["mld"]) {let b = magic[herd]["mld"]["effect"]magic[herd]["mld"]["effect"] = magic[herd]["msk"]["effect"]this.attackmonster(i,xr,yr,xr,yr,mapobj[xr + yr * defxn],0,koef)magic[herd]["mld"]["effect"] = b} else {magic[herd]["mld"] = []magic[herd]["mld"]["effect"] = magic[herd]["msk"]["effect"]this.attackmonster(i,xr,yr,xr,yr,mapobj[xr + yr * defxn],0,koef)delete magic[herd]["mld"]}} else {this.attackmonster(i,xr,yr,xr,yr,mapobj[xr + yr * defxn],0,koef)}if (b != 0) {magic[hera]["mle"]["effect"] = b}showuron()}stage.pole.walk = unsafeWindow.walk = function (x, y) {loadmy("battle.php?warid=" +warid +"&move=1&pl_id=" +player +"&my_monster=" +activeobj +"&x=" +x +"&y=" +y +"&lastturn=" +lastturn +"&lastmess=" +lastmess +"&lastmess2=" +lastmess2 +"&rand=" +mathrandom())}stage.pole.calcchainlighting = unsafeWindow.calcchainlighting = function (i,xr,yr,magicuse) {Totalmagicdamage = 0Totalmagickills = 0var ok = falsevar xx = 0,yy = 0,xp = 0,yp = 0mul = 1if (magicpower == true) mul = 1.5var len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {var j = this.obj_array[k1]this.obj[j]["attacked"] = 1this.obj[j]["attacked2"] = 1}var xx = 0,yy = 0,xp = 0,yp = 0if (magicuse == "chainlighting") {var lasto = mapobj[xr + yr * defxn]var j = lastothis.obj[j]["attacked2"] = 0var eff = this.obj[activeobj][magicuse + "_magiceff"]if (this.obj[activeobj]["spmult"] > 1) {eff = Math.round(this.obj[activeobj]["spmult"] *(this.obj[activeobj]["chainlightingeffmain"] +this.obj[activeobj]["chainlightingeffmult"] *Math.pow(this.obj[activeobj]["nownumber"], 0.7)))}this.attackmagic(i,mapobj[xr + yr * defxn],Math.round(eff * mul),"air","lighting",0,0,0)let b = this.obj[j]["nownumber"]this.obj[j]["nownumber"] = this.obj[j]["nownumber"] + "\n#" + 1this.obj[j].set_number()this.obj[j]["nownumber"] = blet bDamage = TotalmagicdamagetargetMagicdamage = Totalmagicdamagelet totalh =(this.obj[j]["nownumber"] - 1) * this.obj[j]["maxhealth"] +this.obj[j]["nowhealth"]targetMagickills = Math.floor(Math.min(targetMagicdamage, totalh) / this.obj[j]["maxhealth"])let nowhealth =this.obj[j]["nowhealth"] -(Math.min(targetMagicdamage, totalh) -targetMagickills * this.obj[j]["maxhealth"])if (nowhealth <= 0) targetMagickills++this.obj[j]["nownumber"] = bvar penalty = Array(1, 0.5, 0.25, 0.125)let ambiguity = []let f = truefor (var zz = 1; zz <= 3; zz++) {this.obj[lasto]["attacked"] = 0br = 0bj = 0var len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {j = this.obj_array[k1]rr =(this.obj[lasto]["x"] - this.obj[j]["x"]) *(this.obj[lasto]["x"] - this.obj[j]["x"]) +(this.obj[lasto]["y"] - this.obj[j]["y"]) *(this.obj[lasto]["y"] - this.obj[j]["y"])if ((rr <= br || br == 0) &&this.obj[j]["nownumber"] > 0 &&this.obj[j]["x"] < 20 &&!this.obj[j]["hero"] &&!this.obj[j]["stone"] &&this.obj[j]["y"] >= 0 &&!this.obj[j]["rock"] &&this.obj[j]["attacked2"] == 1) {if (rr == br) {ambiguity.push(j)} else {ambiguity = [j]}br = rrbj = j}}if (zz == 1) {console.log(ambiguity)console.log(br)}if (bj > 0) {lasto = bjx1 = this.obj[bj]["x"]y1 = this.obj[bj]["y"]j = bjthis.obj[j]["attacked2"] = 0this.attackmagic(i,j,Math.floor(Math.round(eff * mul) * penalty[zz]),"air","lighting",0,0,0)let b = this.obj[j]["nownumber"]bDamage = Totalmagicdamageif (!f) {continue}if (ambiguity.length > 1) {f = falsefor (let i in ambiguity) {let b1 = this.obj[ambiguity[i]]["nownumber"]this.obj[ambiguity[i]]["nownumber"] =this.obj[ambiguity[i]]["nownumber"] +"\n#" +(zz + 1) +" ???"this.obj[ambiguity[i]].set_number()this.obj[ambiguity[i]]["nownumber"] = b1setshadAbs(this.obj[ambiguity[i]]["x"],this.obj[ambiguity[i]]["y"],1)this.obj[ambiguity[i]]["needSetNumber"] = 1}} else {this.obj[j]["nownumber"] =this.obj[j]["nownumber"] + "\n#" + (zz + 1)setshadAbs(x1, y1, 1)this.obj[j].set_number()this.obj[j]["nownumber"] = b}}}ok = true}if (ok &&magicuse != "" &&(magicuse == "circle_of_winter" || magicuse == "icebolt") &&((this.obj[activeobj]["hero"] && isperk(activeobj, 99)) ||this.obj[activeobj]["master_of_ice"])) {this.showatb()}if (ok &&magicuse != "" &&this.obj[activeobj][magicuse + "elem"] == "air" &&((this.obj[activeobj]["hero"] && isperk(activeobj, 100)) ||this.obj[activeobj]["master_of_storms"])) {this.showatb()}if (ok) showuron(1)}unsafeWindow.setshadAbs = function (x, y, vis) {if (!initialized) return 0if (shado[y * defxn + x]) {set_visible(shado[y * defxn + x], vis)}}unsafeWindow.oneskill_button_release_test = function () {if (is_visible_element("magic_book") ||buttons_visible["scroll_runes"]) {return 0}if (someactive || !inserted) {return 0}if (activeobj == 0) {return 0}if (activeobj > 0 &&stage.pole.obj[activeobj]["dash"] &&(magic[activeobj]["dsh"] === "undefined" ||magic[activeobj]["dsh"] === 0)) {stage.pole.obj[activeobj].maxinit *= 2stage[war_scr].showatb(activeobj, 100)stage.pole.obj[activeobj].maxinit /= 2}}stage.pole.calcComs_new = function () {command_new = commandvar b = 0,i = 0,j = 0,x = 0,y = 0,k = 0,ok = false,time = 0,ii = falsevar cmd = ""if (Date.now() < waittimer && !finished) return 0if (!initialized) return 0if (someactive) {ok = falsefor (i = 1; i <= magicscount; i++) {if (((magics[i].doing != "" && magics[i].doing != undefined) ||(magics[i].cmd != "" && magics[i].cmd != undefined)) &&magics[i] != undefined) {ok = truebreak}}var len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {i = this.obj_array[k1]if (this.obj[i].active ||(this.obj[i].doing != "" && this.obj[i].doing != undefined) ||this.obj[i].donow2 == 1) {if (this.obj[i].donow2 == 1) {this.obj[i].donow2c++if (this.obj[i].donow2 == 1 && this.obj[i].donow2c > 30) {this.obj[i].x = Math.round(this.obj[i].destxx)this.obj[i].y = Math.round(this.obj[i].destyy)this.obj[i].donow2 = 0this.obj[i].donow2c = 0this.obj[i].set_pole_pos(this.obj[i].x, this.obj[i].y)}}if (this.obj[i].bomb) continueok = truebreak}}someactive = ok}if (command_new == "") return 0k = tointeger(command_new.substr(1, 3))current = kcmd = command_new.substr(0, 1)if (loading) return 0while (cmd == "S" &&(command_new.substr(1, 3) == "at3" ||command_new.substr(1, 4) == "dsp-" ||command_new.substr(1, 4) == "ds2-" ||((lastmagic == "rag" ||lastmagic == "ral" ||lastmagic == "raa" ||lastmagic == "ra2") &&command_new.substr(1, 3) == prelastmagic &&prelastmagic != "rgl") ||command_new.substr(1, 3) == "sld" ||command_new.substr(1, 3) == "aci" ||command_new.substr(1, 3) == "prt" ||command_new.substr(1, 3) == "scd" ||command_new.substr(1, 3) == "rnm" ||command_new.substr(1, 3) == "spc" ||command_new.substr(1, 3) == "wnd" ||command_new.substr(1, 3) == "bsh" ||command_new.substr(1, 3) == "net" ||command_new.substr(1, 3) == "rn4" ||command_new.substr(1, 3) == "enr" ||command_new.substr(1, 3) == "ass" ||command_new.substr(1, 3) == "btt" ||command_new.substr(1, 3) == "aim" ||command_new.substr(1, 3) == "mfc" ||command_new.substr(1, 3) == "zat" ||command_new.substr(1, 3) == "prp" ||command_new.substr(1, 3) == "eye" ||command_new.substr(1, 3) == "raa" ||command_new.substr(1, 3) == "fbd" ||command_new.substr(1, 3) == "wfr" ||command_new.substr(1, 3) == "rag" ||command_new.substr(1, 3) == "ral" ||command_new.substr(1, 3) == "ra2" ||command_new.substr(1, 3) == "mga" ||command_new.substr(1, 3) == "enc" ||command_new.substr(1, 3) == "rg2" ||command_new.substr(1, 3) == "mof" ||command_new.substr(1, 3) == "blt" ||command_new.substr(1, 3) == "ent" ||command_new.substr(1, 3) == "nmc" ||command_new.substr(1, 3) == "hfr" ||command_new.substr(1, 3) == "tob" ||command_new.substr(1, 3) == "cha" ||command_new.substr(1, 3) == "frz" ||command_new.substr(1, 3) == "wfr" ||command_new.substr(1, 3) == "blb" ||command_new.substr(1, 3) == "msl" ||command_new.substr(1, 3) == "slm" ||command_new.substr(1, 3) == "hsa" ||command_new.substr(1, 3) == "mlg" ||command_new.substr(1, 3) == "mvd" ||command_new.substr(1, 3) == "spi" ||command_new.substr(1, 3) == "mnl" ||command_new.substr(1, 3) == "eod" ||command_new.substr(1, 3) == "fod" ||command_new.substr(1, 3) == "fo2" ||command_new.substr(1, 3) == "wss" ||command_new.substr(1, 3) == "dtd" ||command_new.substr(1, 3) == "inv" ||command_new.substr(1, 3) == "irr" ||command_new.substr(1, 3) == "btr" ||command_new.substr(1, 3) == "flw" ||command_new.substr(1, 3) == "brf" ||command_new.substr(1, 3) == "chm" ||command_new.substr(1, 3) == "ard" ||command_new.substr(1, 3) == "rn9" ||command_new.substr(1, 3) == "def" ||command_new.substr(1, 3) == "dat" ||command_new.substr(1, 3) == "mrb" ||command_new.substr(1, 3) == "abs" ||command_new.substr(1, 3) == "cut" ||command_new.substr(1, 3) == "add" ||(lastmagic != "rgl" &&(lastmagic == command_new.substr(1, 3) ||(lastmagic.substr(0, 2) == "ds" &&command_new.substr(1, 2) == "ds")) &&lastcaster == command_new.substr(4, 3) &&command_new.substr(1, 3) != "pss" &&command_new.substr(1, 3) != "paa"))) {var obj_id = tointeger(command_new.substr(4, 3))if (command_new.substr(1, 3) == "def") {console.log("2")this.incrementParam(obj_id, "turnCount", -1)}command_new = command_new.substr(19)cmd = command_new.substr(0, 1)k = tointeger(command_new.substr(1, 3))current = k}if ((!someactive || cmd == "P") &&(!spellactive || flamewave_active) &&command_new.length > 1 &&loadcommand == "" &&(!loading || cmd == "P") &&initialized &&waitingcounter > 10) {if (cmd == "S") {if (command_new.substr(1, 3) == "sac" &&tointeger(command_new.substr(13, 1)) == 1) {let objId = tointeger(command_new.substr(4, 3))if (stage.pole.obj[objId]["checkTurn"] === undefined ||stage.pole.obj[objId]["checkTurn"] == 0) {//stage.pole.obj[objId]["checkTurn"] = 1;}}}if (cmd == "r") {if (lastRaidsCount != stage.pole.obj[current]["nownumber"]) {raidsCurrentWave++stage.pole.showmitnv(1)lastRaidsCount = stage.pole.obj[current]["nownumber"]}}if (cmd == "w") {this.incrementParam(current, "turnCount", -1)}if (cmd == "u" && !stage.pole.obj[current]["endurance"]) {let u = new Date(Date.now())let time =u.getHours() +":" +("0" + u.getMinutes()).substr(-2) +":" +("0" + u.getSeconds()).substr(-2)let new_content = "[" + time + "] Скорость мобов +1"let chat_id = classic_chat ? "chat_classic_inside" : "chat_inside"if (addSpeedLastTurn != nowturn) {add_newtext(chat_id, new_content)addSpeedLastTurn = nowturn}}if (command_new.substr(0, 4) == "Sini") {let u = new Date(Date.now())let time =u.getHours() +":" +("0" + u.getMinutes()).substr(-2) +":" +("0" + u.getSeconds()).substr(-2)let new_content = "[" + time + "] Иня мобов +1"let chat_id = classic_chat ? "chat_classic_inside" : "chat_inside"if (addIniLastTurn != nowturn) {add_newtext(chat_id, new_content)addIniLastTurn = nowturn}}if (cmd == "i") {j = tointeger(command_new.substr(4, 4))if (current != -1 && current > 0) {if (this.obj[current].nowinit <= 0 &&this.obj[current].nowinit + j > 0) {if (magic[current] &&magic[current]["hyp"] &&magic[current]["hyp"]["nowinit"] > 0) {return 0}this.incrementParam(current, "turnCount")}}}if (cmd == "s" && !someactive && !loading) {//gatingif (this.obj[current].x >= 100) {//gate[current] = activeobj;this.incrementParam(activeobj, "turnCount", -1)} else {k = tointeger(command_new.substr(8, 5))if (this.obj[current].id != 347 &&this.obj[current].id != 349 &&!this.obj[current].bonus) {if (k == 0) {this.incrementParam(activeobj, "turnCount", -1)return 0}this.incrementParam(current, "turnCount", -1)}}}}}stage.pole.incrementParam = function (i, name, value = 1) {let cre = this.obj[i]if (cre === undefined) {return 0}if (cre[name] === undefined) {cre[name] = 0}cre[name] += value}stage.pole.setParam = function (i, name, value = 0) {let cre = this.obj[i]if (cre === undefined) {return 0}cre[name] = value}stage.pole.atb_scale = function (anyway) {document.getElementById("effectsDisplay").style.display =chatMode() == "V" ? "none" : ""cur_scaling = 1atby = Math.round(scr_top + pole_top_now + pole_height + atb_top * this.scaling)atbx = Math.round((stage_width - scr_left - scr_right) / 2 +scr_left -((atb_width * atb_scaling * atb_count) / 2) * this.scaling)if (!this.setted_atb) return 0if (!this.showed_atb) return 0this.atbg.x1 = Math.floor(atbx)this.atbg.y1 = Math.floor(atby)var sc = atb_cntif (!inserted) {sc = stackcount - 1atb_n_x =atbx +(((atb_count - stackcount) * atb_width * atb_scaling) / 2) *cur_scaling *this.scalingthis.atbg.x1 = Math.floor(atb_n_x)}set_scaleX(this.atbg2, this.scaling)set_scaleY(this.atbg2, this.scaling)set_X(this.atbg, Math.floor(this.atbg.x1))set_Y(this.atbg, Math.floor(this.atbg.y1))var k = cur_scaling * 90if (k < 20) {k = 20}if (atbsd > 0) {set_fontSize(this.ochered, k * atb_scaling)set_strokeThickness(this.ochered,(k / atb_font_size) * atb_stroke_width * atb_scaling)set_X(this.ochered,Math.floor(10 * cur_scaling * atb_scaling) +Math.round(atb_scroll_x * cur_scaling))set_Y(this.ochered, Math.round(1 * cur_scaling))}let flag = truelet dop = 40for (var j = 0; j <= atb_count; j++) {i = this.p_array[j]if (j > sc) {set_visible(this.ntext[j], 0)set_visible(this.portraits[j], 0)continue} else {set_visible(this.portraits[j], 1)}if (this.ntext[i]) {var ntext_vis = get_visible(this.ntext[i])if (ntext_vis) {var k = cur_scaling * 50 * atb_scalingif (k < 14) {k = 14}set_fontSize(this.ntext[i], k)while (get_width(this.ntext[i]) >(atb_width * atb_scaling - 16) * cur_scaling &&k > 5) {k--set_fontSize(this.ntext[i], k)}set_strokeThickness(this.ntext[i],(k / atb_font_size) * atb_stroke_width)if (this.ntext[i].need_cache || anyway) {this.ntext[i].need_cache = 0}set_X(this.ntext[i],Math.round(atb_width * atb_scaling * (j + 1) * cur_scaling -get_width(this.ntext[i]) -8 * cur_scaling * atb_scaling))set_Y(this.ntext[i],Math.round(atb_height * atb_scaling * cur_scaling -get_height(this.ntext[i]) * 0.98))if (flag === true) {flag = false//dop = Math.round(atb_width * atb_scaling * cur_scaling - get_width(this.ntext[i]) - 8 * cur_scaling * atb_scaling)/2;}}}if (!this.portraits[i]) {continue}set_X(this.portraits[i],Math.round(j * atb_width * atb_scaling * cur_scaling))set_visible(this.portraits[i], 1)if (this.portraits[i].img.show_it)set_visible(this.portraits[i].img, 1)}document.getElementById("dop-info").style.top =this.atbg.y1 * (1 / MainPixelRatio) + "px"document.getElementById("dop-info").style.width =stage.pole.atbg.x1 * (1 / MainPixelRatio) + "px"document.getElementById("dop-info").style.fontSize =Math.round((atb_scaling *atb_height *stage.pole.scaling *(1 / MainPixelRatio)) /3 +1) + "px"document.getElementById("dop-info").style.left = "0px"re_cache_atb()}stage.pole.getMoraleN = function (i) {if (!this.obj[i].hasOwnProperty("nametxt")) return 0var festering = falsevar deathstare = falselet mimmune = falseif (inserted) {mimmune = falseif (magic[i] && magic[i]["wfr"] && magic[i]["wfr"]["effect"] == 1)mimmune = trueif (this.obj[i]["twistedmind"] == 1) mimmune = truevar k = 0var x = 0,y = 0,b = 0,x2 = 0,y2 = 0,b2 = 0var len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {k = this.obj_array[k1]if (this.obj[k].festeringaura &&!this.obj[i].undead &&this.obj[k].nownumber > 0 &&this.obj[i].side != this.obj[k].side) {var bigx = this.obj[i]["big"]var bigy = this.obj[i]["big"]if (this.obj[i]["bigx"]) bigx = 1if (this.obj[i]["bigy"]) bigy = 1var bigkx = this.obj[k]["big"]var bigky = this.obj[k]["big"]if (this.obj[k]["bigx"]) bigkx = 1if (this.obj[k]["bigy"]) bigky = 1for (x = this.obj[i].x; x <= this.obj[i].x + bigx; x++) {for (y = this.obj[i].y; y <= this.obj[i].y + bigy; y++) {for (x2 = this.obj[k].x; x2 <= this.obj[k].x + bigkx; x2++) {for (y2 = this.obj[k].y;y2 <= this.obj[k].y + bigky;y2++) {if (Math.abs(x - x2) <= 1 && Math.abs(y - y2) <= 1) {festering = true}}}}}}}}if (inserted) {mimmune = falseif (magic[i] && magic[i]["wfr"] && magic[i]["wfr"]["effect"] == 1)mimmune = trueif (this.obj[i]["twistedmind"] == 1) mimmune = true}var morale = 0var day = 0if (heroes[this.obj[i].owner] &&magic[heroes[this.obj[i].owner]]["day"]) {day = magic[heroes[this.obj[i].owner]]["day"]["effect"]}if (this.obj[i].stone ||this.obj[i].statix ||this.obj[i].portal ||(day != 1 &&(this.obj[i].undead ||this.obj[i].elemental ||this.obj[i].mechanical ||this.obj[i].warmachine ||magic[i]["und"]))) {morale = 0} else {ma = 0if (this.obj[i].moraleaddon) ma = this.obj[i].moraleaddonvar m = maif (this.obj[i].packpower) {var len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {k = this.obj_array[k1]if (k != i &&this.obj[k].packpower &&this.obj[k].nownumber > 0 &&this.obj[k].side == this.obj[i].side &&this.obj[k].x <= defxn) {m++if (this.obj[k].packboss) m++}}}if (inserted) {var k = 0var x = 0,y = 0,b = 0,x2 = 0,y2 = 0,b2 = 0var frig = falsevar brave = falsevar deathstare = falsevar set_zero_morale = falsevar len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {k = this.obj_array[k1]if (this.obj[k].deathstare &&this.obj[k].side != this.obj[i].side &&this.obj[k].nownumber > 0 &&!mimmune)deathstare = trueif (this.obj[k].frightful_aura &&this.obj[k].side != this.obj[i].side &&this.obj[k].nownumber > 0 &&!mimmune) {var bigx = this.obj[i]["big"]var bigy = this.obj[i]["big"]if (this.obj[i]["bigx"]) bigx = 1if (this.obj[i]["bigy"]) bigy = 1var bigkx = this.obj[k]["big"]var bigky = this.obj[k]["big"]if (this.obj[k]["bigx"]) bigkx = 1if (this.obj[k]["bigy"]) bigky = 1for (x = this.obj[i].x; x <= this.obj[i].x + bigx; x++) {for (y = this.obj[i].y; y <= this.obj[i].y + bigy; y++) {for (x2 = this.obj[k].x;x2 <= this.obj[k].x + bigkx;x2++) {for (y2 = this.obj[k].y;y2 <= this.obj[k].y + bigky;y2++) {if (Math.abs(x - x2) <= 1 && Math.abs(y - y2) <= 1) {frig = true}}}}}}if (this.obj[k].auraofbravery &&this.obj[k].side == this.obj[i].side &&this.obj[k].nownumber > 0) {var bigx = this.obj[i]["big"]var bigy = this.obj[i]["big"]if (this.obj[i]["bigx"]) bigx = 1if (this.obj[i]["bigy"]) bigy = 1var bigkx = this.obj[k]["big"]var bigky = this.obj[k]["big"]if (this.obj[k]["bigx"]) bigkx = 1if (this.obj[k]["bigy"]) bigky = 1for (x = this.obj[i].x; x <= this.obj[i].x + bigx; x++) {for (y = this.obj[i].y; y <= this.obj[i].y + bigy; y++) {for (x2 = this.obj[k].x;x2 <= this.obj[k].x + bigkx;x2++) {for (y2 = this.obj[k].y;y2 <= this.obj[k].y + bigky;y2++) {if (Math.abs(x - x2) <= 1 && Math.abs(y - y2) <= 1) {brave = true}}}}}}if ((this.obj[i].morale > 0 || m > 0) &&!this.obj[i].bravery &&!mimmune &&this.obj[k].menacinglook &&this.obj[k].side != this.obj[i].side &&this.obj[k].nownumber > 0) {var bigx = this.obj[i]["big"]var bigy = this.obj[i]["big"]if (this.obj[i]["bigx"]) bigx = 1if (this.obj[i]["bigy"]) bigy = 1var bigkx = this.obj[k]["big"]var bigky = this.obj[k]["big"]if (this.obj[k]["bigx"]) bigkx = 1if (this.obj[k]["bigy"]) bigky = 1for (x = this.obj[i].x; x <= this.obj[i].x + bigx; x++) {for (y = this.obj[i].y; y <= this.obj[i].y + bigy; y++) {for (x2 = this.obj[k].x;x2 <= this.obj[k].x + bigkx;x2++) {for (y2 = this.obj[k].y;y2 <= this.obj[k].y + bigky;y2++) {if (Math.abs(x - x2) <= 1 && Math.abs(y - y2) <= 1) {m = 0set_zero_morale = true}}}}}}}if (frig) {m -= 3this.clearPar(i, "morale")}}if (!mimmune && festering) {//+m -= 2this.clearPar(i, "morale")}if (!mimmune && deathstare) {m -= 1}morale = this.obj[i].morale + mif (set_zero_morale) {morale = 0brave = false}if (this.obj[i].morale + m < 3 && this.obj[i].bravery) {morale = 3}if (this.obj[i].morale + m < 3 && brave) {if (!this.obj[i].bravery && !this.obj[i].auraofbravery) {this.clearPar(i, "morale")}morale = 3}}if (magic[i] && magic[i]["hyp"] && magic[i]["hyp"]["nowinit"] > 0) {morale = Math.min(0, morale)}return morale}stage.pole.clearPar = function (i, name) {if (this.obj[i] === "undefined") {return 0}if (name == "morale") {this.obj[i].moraleCount = 0this.obj[i].turnCount = 0}if (name == "luck") {this.obj[i].luckcount = 0this.obj[i].hitcount = 0}}stage.pole.showmi = unsafeWindow.showmi = function (i) {if (typeof unsafeWindow.mini_info_panel === "undefined") return 0if (i > 0) {testBlock(i)infoBlock(i)} else {testBlock()infoBlock()}if (i == -1) {return 0}if (typeof unsafeWindow.mini_info_panel.miss === "undefined") {var stat = "miss"var temp = Make_Sprite()temp.inited_show = truetemp.r = 0temp.aaa = "miss"set_visible(temp, 0)var img_temp = My_Image({offsetX: -razmetka["war_images"][17][mqc["sdx"]],offsetY: -razmetka["war_images"][17][mqc["sdy"]],image: stage.pole.ground["war_images"],width: razmetka["war_images"][19][mqc["xs"]],height: razmetka["war_images"][19][mqc["ys"]] / 2,crop: {x: razmetka["war_images"][19][mqc["x"]],y:razmetka["war_images"][19][mqc["y"]] +razmetka["war_images"][19][mqc["ys"]] / 2,width: razmetka["war_images"][19][mqc["xs"]],height: razmetka["war_images"][19][mqc["ys"]] / 2,visible: 1,},listening: false,})Make_addChild(temp, img_temp)mini_info_panel[stat] = tempvar ttext = Make_Text("", {x: 55,y: 0,fontFamily: "Arial",fontStyle_konva: "Bold",fontSize: mini_info_font_size,fill: 0xffffff,stroke: 0x000000,strokeThickness: miniinfo_stroke_width,//						  strokeThickness: 0.5,shadowForStrokeEnabled: false,//						  textBaseline: 'middle',dropShadowColor: 0x000000,dropShadowAlpha: 1,dropShadowBlur: 2,dropShadow: true,dropShadowDistance: 0,dropShadowAngle: 0,})set_X(ttext, 55)set_Y(ttext, 0)temp.line = ttextMake_addChild(temp, ttext)Make_addChild(mini_info_panel, temp)}var y = Array(-7.45, 0.5, 9.05, 18.5)var k = 0if (!this.obj[i].mvisible ||this.obj[i].nownumber <= 0 /*||(this.obj[i]._x<0)*/)return 0var stats = ["tnv", "wave", "health", "blood", "mana", "arrow", "miss"]this.mini_info_panel_scale()var s_stats = Array()for (var j = 0; j < stats.length; j++) {if (mini_info_panel[stats[j]]) {set_visible(mini_info_panel[stats[j]], 0)}s_stats[stats[j]] = ""}set_visible(mini_info_panel, 1)var ntxt = ""if (this.obj[i].hero) {switch (lang) {case 0:ntxt =this.obj[i].nametxt + " [" + this.obj[i].maxhealth + " ур.]"breakcase 1:ntxt =this.obj[i].nametxt + " [" + this.obj[i].maxhealth + " lev.]"break}if (this.obj[i].maxmanna > 0 || this.obj[i].nowmanna > 0) {s_stats["mana"] = this.obj[i].nowmanna + "/" + this.obj[i].maxmanna}if (magic[i]["tur"]) {s_stats["tnv"] = magic[i]["tur"]["effect"] + "%"}} else {if (this.obj[i].boss > 0) {switch (lang) {case 0:ntxt = this.obj[i].nametxt + " [" + this.obj[i].boss + " ур.]"breakcase 1:ntxt = this.obj[i].nametxt + " [" + this.obj[i].boss + " lev.]"break}} else {ntxt = this.obj[i].nametxtif (this.obj[i].nownumber > 0) {var addinf = " [" + this.obj[i].nownumber + "]"if (this.obj[i].stone ||this.obj[i].statix ||this.obj[i].warmachine ||this.obj[i].portal ||magic[i]["nnm"] ||magic[i]["BLD"]) {addinf = ""}ntxt = this.obj[i].nametxt + addinf} else {ntxt = this.obj[i].nametxt + " [" + this.obj[i].maxnumber + "]"}if (magic[i]["lev"]) {switch (lang) {case 0:ntxt += "(" + magic[i]["lev"]["effect"] + " ур)"breakcase 1:ntxt += "(" + magic[i]["lev"]["effect"] + " lev)"break}}}s_stats["health"] =this.obj[i].nowhealth + "/" + this.obj[i].maxhealthif (this.obj[i].shooter && !this.obj[i].shadowattack) {s_stats["arrow"] = this.obj[i].shots}if (this.obj[i].caster &&this.obj[i].caster != "" &&!this.obj[i].randomcasterd &&!this.obj[i].crystal) {s_stats["mana"] = this.obj[i].nowmanna + "/" + this.obj[i].maxmanna}if (magic[i]["rag"] && this.obj[i]["ragingblood"]) {var rlevel = Array(-10000, 200, 500, 1000)var lev = 1for (var z = 1; z <= 2; z++) {if (rlevel[z] <= magic[i]["rag"]["effect"]) lev = z + 1}var her = 0,herolevel = 0var len = this.obj_array.lengthfor (var k1 = 0; k1 < len; k1++) {var z = this.obj_array[k1]if (this.obj[z].hero && this.obj[z].owner == this.obj[i].owner)her = z}if (her > 0) herolevel = this.obj[her].maxhealths_stats["blood"] = magic[i]["rag"]["effect"] + " / " + rlevel[lev]k++}s_stats["miss"] = ""if (this.obj[i].incorporeal) {if (this.obj[i].misscount == 1) {s_stats["miss"] = "50% +"} else if (this.obj[i].misscount == 2) {s_stats["miss"] = "0%"} else if (this.obj[i].misscount == -1) {s_stats["miss"] = "50% -"} else if (this.obj[i].misscount == -2) {s_stats["miss"] = "100%"} else {s_stats["miss"] = "50%"}}}ntxt = ""set_text(mini_info_panel.name_text, ntxt)var y = 0for (var j = 0; j < stats.length; j++) {if (s_stats[stats[j]] != "") {set_visible(mini_info_panel[stats[j]], 1)set_Y(mini_info_panel[stats[j]], y - 5)set_Y(mini_info_panel[stats[j]].line, 5)set_text(mini_info_panel[stats[j]].line, s_stats[stats[j]])set_fontSize(mini_info_panel[stats[j]].line, mini_info_font_size)var k = mini_info_font_sizevar p_height = get_height(mini_info_panel[stats[j]].line)while (get_width(mini_info_panel[stats[j]].line) > 180 && k > 3) {k--set_fontSize(mini_info_panel[stats[j]].line, k)}p_height -= get_height(mini_info_panel[stats[j]].line)set_Y(mini_info_panel[stats[j]].line, 5 + Math.floor(p_height / 2))set_strokeThickness(mini_info_panel[stats[j]].line,(k / mini_info_font_size) * miniinfo_stroke_width)yplus = 40y += yplusif (y >= yplus * 3) break}}}unsafeWindow.raidsCountWaves = 0if (btype == 8) {let lastCount = 0for (i in stage.pole.obj) {if (stage.pole.obj[i].owner == 2 &&lastCount != stage.pole.obj[i].nownumber) {raidsCountWaves++lastCount = stage.pole.obj[i].nownumber}}}stage.pole.showmitnv = function (raids = 0) {if (typeof unsafeWindow.mini_info_panel === "undefined") return 0if (tnvscore == 0 && raids == 0) return 0var y = Array(-7.45, 0.5, 9.05, 18.5)var k = 0this.mini_info_panel_scale()var s_stats = Array()var stats = ["tnv", "health", "blood", "mana", "arrow"]for (var j = 0; j < stats.length; j++) {set_visible(mini_info_panel[stats[j]], 0)s_stats[stats[j]] = ""}set_visible(mini_info_panel, 1)var stats = ["tnv", "wave"]var y = 10var txt = Array()txt[0] = tnvscoreif (raids == 1) {txt[1] = raidsCurrentWave + "/" + raidsCountWaves} else if (raids == 2) {txt[1] = global_init / 100 + " time"} else {txt[1] = tnvwave}set_text(mini_info_panel.name_text, "")for (var j = Math.ceil(raids / 10); j <= 1; j++) {set_visible(mini_info_panel[stats[j]], 1)set_X(mini_info_panel[stats[j]], 5)set_Y(mini_info_panel[stats[j]], y - 5)set_Y(mini_info_panel[stats[j]].line, 5)set_text(mini_info_panel[stats[j]].line, " " + txt[j])set_fontSize(mini_info_panel[stats[j]].line, mini_info_font_size)var k = mini_info_font_sizewhile (get_width(mini_info_panel[stats[j]].line) > 175 && k > 3) {k--set_fontSize(mini_info_panel[stats[j]].line, k)}set_strokeThickness(mini_info_panel[stats[j]].line,(k / mini_info_font_size) * miniinfo_stroke_width)yplus = 60y += yplus}}document.getElementById("oneskill_button").addEventListener("mouseover", oneskill_button_release_test)document.getElementById("oneskill_button").addEventListener("mouseout", waitbutton_onRollOut)document.getElementById("oneskill_button2").addEventListener("mouseover", oneskill_button_release_test)document.getElementById("oneskill_button2").addEventListener("mouseout", waitbutton_onRollOut)stage.pole.atb_scale()unsafeWindow.timer_show_army = function () {nframe++var time_now = Date.now()if (last_timer_in == 0) last_timer_in = time_nowvar skip_frame = Math.min(1,Math.max(0,Math.floor((time_now - last_timer_in) / timer_interval) - 1))var fps_l = 1000 / (time_now - last_timer_in)if (fps_long == 0) {fps_long = fps_l} else {fps_long = Math.min(fps_l, fps_long)}if (war_scr == "") return 0if (!was_benchmark) return 0if (animspeed_def < 1 && nframe % 2 == 0 && skip_frame == 0) {next_timer()return 0}animspeed = Math.max(1, animspeed_def) * (skip_frame + 1)last_timer_in = time_nowif (skip_frame) {total_skips++total_skips2++} else {total_skips = 0}if (total_skips > 1) {skip_frame = 0total_skips = 0}was_skip_frame = skip_frametry {if (typeof unsafeWindow.stage[war_scr].animate_army === "function") {stage[war_scr].animate_army(nframe, skip_frame)updateBar(btype == 145 ? 6 : 2)if (typeof unsafeWindow.mini_info_panel !== "undefined" &&!mini_info_panel.visible) {testBlock()infoBlock()}for (k in stage.pole.obj) {if (stage.pole.obj[k].hero != undefined) continuestage.pole.luckMoraleProbability(k, "morale")if (((stage.pole.obj[k].nownumber == 0 &&stage.pole.obj[k].gate != 1) ||(stage.pole.obj[k].nowhealth == 0 &&stage.pole.obj[k].last_dead != 1 &&stage.pole.obj[k].gate == 1)) &&(inserted ||stage.pole.obj[k].owner == 2 ||btype == _QUESTWAR ||btype == _VILLAGE_EVENT) &&!stage.pole.obj[k].rock) {if (magic[k].def !== undefined) {delete magic[k].def}}}if (magicuse != "chainlighting") {for (let i in stage.pole.obj) {if (lastChain != 0 &&stage.pole.obj[lastChain].chain &&stage.pole.obj[i].needSetNumber == 1 &&stage.pole.obj[lastChain].chain.indexOf(parseInt(i)) == -1) {stage.pole.obj[i].set_number()stage.pole.obj[i].needSetNumber = 0}}}if (btime != global_init && btype == 119) {// stage.pole.showmitnv(2);btime = global_init}}} catch (e) {my_alert(e.stack + " " + war_scr)}}stage.pole.getmorale = stage.pole.getMoraleN}}if (location.pathname.indexOf("inventory.php") >= 0) {var inp = ""var bt = ""function inv_art_search_show() {let info = document.getElementById("inv_art_amount")for (let i = 0; i < info.children.length; i++) {info.children[i].style.display = "none"}if (inp == "") {inp = document.createElement("input")inp.setAttribute("placeholder", "Поиск по названию")inp.setAttribute("type", "text")inp.setAttribute("id", "inp_search")info.append(inp)inp.addEventListener("input", search)inp.style.display = "inline-block"bt = document.createElement("button")bt.innerHTML = "Скрыть поиск"bt.setAttribute("id", "bt_search")info.append(bt)bt.addEventListener("click", hide_search)bt.style.display = "inline-block"} else {bt.style.display = "inline-block"inp.style.display = "inline-block"}start_hide_hwm_hint()}function hide_search() {let info = document.getElementById("inv_art_amount")for (let i = 0; i < info.children.length; i++) {info.children[i].style.display =info.children[i].tagName == "DIV" ? "inline-block" : "none"}}function search() {let s = document.getElementById("inp_search").valuelet el = document.getElementById("inventory_block")for (let i = 0; i < el.children.length; i++) {let id = el.children[i].getAttribute("art_idx")if (id == null) {continue}el.children[i].style.display = arts[id].name.toLowerCase().includes(s.toLowerCase())? "block": "none"}}let sDiv = document.createElement("div")let sImg = document.createElement("img")sImg.setAttribute("src", "https://daily.heroeswm.ru/i/search_logo.png")sImg.setAttribute("class", "inv_100mwmh")sDiv.append(sImg)sDiv.classList.add("divs_inline_right_24")sDiv.classList.add("btn_hover")sDiv.classList.add("show_hint")sDiv.style.right = "28px"document.getElementById("inv_art_amount").append(sDiv)sDiv.setAttribute("hint", "Поиск по названию")sDiv.setAttribute("hwm_hint_added", 1)sDiv.addEventListener("mousemove", show_hwm_hint)sDiv.addEventListener("touchstart", show_hwm_hint)sDiv.addEventListener("mouseout", hide_hwm_hint)sDiv.addEventListener("touchend", hide_hwm_hint)sDiv.addEventListener("click", inv_art_search_show)}if (location.pathname.indexOf("war.php") >= 0 ||location.pathname.indexOf("warlog.php") >= 0) {let timer = setInterval(check_start, 10)function check_start() {if (unsafeWindow.gpause == false) {unsafeWindow.gpause = trueclearInterval(timer)}}var warid = location.search.match(/warid=([0-9]+)/)?.[1]var key =location.search.match(/show_for_all=([0-9a-zA-Z]+)/)?.[1] ||location.search.match(/show=([0-9a-zA-Z]+)/)?.[1] ||""var att = 0var unit = Array(8).fill("")getAtb(0)document.getElementById("confirm_ins").addEventListener("click",function () {setTimeout(getAtb(1), 4000)},false)function getAtb(r) {GM_xmlhttpRequest({method: "GET",url: "/battle.php?lastturn=-3&warid=" + warid + "&show_for_all=" + key,onload: function (res) {let info ="<style>.cont{position:relative;display:inline-block}.count {position: absolute;right: 0;bottom: 0;color: #f5c140;text-shadow: 0px 0px 3px #000, 0px 0px 3px #000, 0px 0px 3px #000, 0px 0px 3px #000;font-size: 1rem;font-weight: bold;}</style>"info += "<b>Стартовый бонус АТБ</b><BR>"if (res.responseText == "t=950turns=") {if (r == 1) {info += "Ошибка загрузки, начните бой и обновите страницу!"} else {return false}}let data = res.responseText.substring(res.responseText.indexOf(";/") + 2).split(";")for (let i = 0; i < data.length - 1; i++) {if (data[i].indexOf("|rock|") != -1) {continue}let unitNum = Number(data[i].substring(1, 3))let armyNum = Number(data[i].substring(5 + 0 * 6, 5 + 1 * 6)) - 1let count = Number(data[i].substring(5 + 12 * 6, 5 + 13 * 6))let startAtb =100 - Number(data[i].substring(5 + 9 * 6, 5 + 10 * 6))let imgif (data[i].indexOf("|hero|") == -1) {img = data[i].substring(5 + 24 * 6, data[i].indexOf("|"))} else {img = data[i].split("|")[8].substring(1)}img = img.substring(0, img.length - 3)unit[armyNum] +="<div class = 'cont'><img width = '40px' src='/i/portraits/" +img +"anip40.png'><div class = 'count'>" +startAtb +"</div></div>"}for (let i = 0; i < unit.length; i++) {if (unit[i] != "") {info += "Команда №" + (i + 1) + "<BR>" + unit[i] + "<BR>"}}let elem = []elem[0] = document.querySelector("#chat_format")elem[1] = document.querySelector("#chat_format_classic")//elem[0].innerHTML = info + elem[0].innerHTML;//elem[1].innerHTML = info + elem[1].innerHTML;elem[0].innerHTML ="<div class = 'atb-info' style = 'display:none'>" +info +"</div>" +elem[0].innerHTMLelem[1].innerHTML ="<div class = 'atb-info' style = 'display:none'>" +info +"</div>" +elem[1].innerHTML},})}}})()