您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Исправленный и рабочий battleHelper
- // ==UserScript==
- // @name battleHelper (fixed)
- // @author Neleus
- // @namespace Neleus
- // @description Исправленный и рабочий battleHelper
- // @version 0.47
- // @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 = 0
- let hp = 0
- let f = true
- for (let j = 0; j < cre.length; j++) {
- let id = cre[j].innerHTML.match(/name=([^\"]+)/)[1]
- let count = cre[j].querySelector("#add_now_count").innerHTML
- checkSum += turnId[id].id * count
- hp += 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",
- resurrection2: "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 = 0
- if (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 : 6
- var cm = magicbookspells_new.length
- let count = 0
- for (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 : 0
- if (!android) {
- spell_per_page = actMiniSpells ? 16 : 6
- } else {
- spell_per_page = 4
- }
- var k = 0,
- j = 0,
- s = "",
- so = "",
- book_txt = "",
- was_spell = 0
- lastpage = page
- if (iszak != 1) zakarrow = false
- function proccedinbook(so, powered, showed_cnt) {
- if (
- so == "zakarrow" &&
- (zakarrow == true ||
- (magic[activeobj]["za2"] &&
- magic[activeobj]["za2"]["effect"] > 0))
- )
- return 0
- j = k % spell_per_page
- var cost = stage[war_scr].obj[activeobj][s + "cost"]
- if (powered) {
- cost *= 2
- }
- kz = 1
- var kz2 = 1
- if (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.03
- if (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 = false
- was_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 += " Усиленное"
- break
- case 1:
- nametxt += " (empowered)"
- s_name += "(emp)"
- break
- }
- }
- if (s == "angerofhorde") {
- eff = 0
- var len = stage[war_scr].obj_array.length
- for (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 = 0
- if (
- 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 = eff
- if (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"] = eff
- if (
- 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] = so
- spell_powered[showed_cnt] = powered
- let 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_page
- var eco = 1
- if (this.obj[activeobj]["hero"]) {
- var len = this.obj_array.length
- for (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.length
- var max = 0
- for (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.length
- for (zz = 0; zz <= 1; zz++) {
- var showed_cnt = 0
- k = 0
- for (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"] * 2
- this.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) break
- else {
- page = 0
- bookpage = 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_txt
- document.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
- : false
- localStorage.setItem(name, checkTrue(name) ? false : true)
- hwm_set[name] = checkTrue(name) ? false : true
- if (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 = 0
- unsafeWindow.firsTurnShow =
- tointeger(command.substr(1, command.indexOf(":") - 1)) <= 1
- ? true
- : false
- unsafeWindow.btime = false
- unsafeWindow.fireInfo = false
- unsafeWindow.skillProbability = ""
- unsafeWindow.luckProbability = 0
- unsafeWindow.curAbil = ""
- unsafeWindow.last_line3 = ""
- unsafeWindow.phm = {}
- unsafeWindow.psc = {}
- unsafeWindow.psa = {}
- unsafeWindow.sHP = [0, 0]
- unsafeWindow.nHP = [0, 0]
- //unsafeWindow.gate = {};
- unsafeWindow.lastChain = 0
- unsafeWindow.damageTable = ""
- unsafeWindow.damage = [[], []]
- unsafeWindow.targetMagicdamage = 0
- unsafeWindow.targetMagickills = 0
- unsafeWindow.test_temp = 0
- unsafeWindow.addSpeedLastTurn = 0
- unsafeWindow.addIniLastTurn = 0
- unsafeWindow.lastRaidsCount = 0
- unsafeWindow.raidsCurrentWave = 0
- damageTableStyle = document.createElement("style")
- damageTableStyle.innerHTML =
- "#win_BattleResult{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 = 0
- document.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 = i
- fireInfo = true
- } else if (firewall == false) {
- fireInfo = false
- if (
- i == 0 ||
- stage.pole.showmagicinfo(i, 1).indexOf("Эффекты отсутствуют") != -1
- ) {
- div.innerHTML = ""
- div.style.height = "0"
- lastFire = 0
- return 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 - 1
- if (
- stage.pole.obj[k].hero != undefined ||
- stage.pole.obj[k].warmachine != undefined ||
- stage.pole.obj[k].building != undefined
- )
- continue
- sHP[ow] += stage.pole.obj[k].maxnumber * stage.pole.obj[k].realhealth
- nHP[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]) * 100
- document.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'> " +
- 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'> " +
- 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 = effectDisplay
- document.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 = effectDisplay
- document.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_BattleResult")
- .querySelector("table").style.display = damageTableDisplay
- spanHTML = damageTableDisplay == "table" ? "(скрыть)" : "(показать)"
- updateDamageData()
- }
- unsafeWindow.updateDamageData = function () {
- if (damageTable == "") {
- damageTable = document.createElement("div")
- damageTable.setAttribute("id", "damageTable")
- document
- .getElementById("win_BattleResult")
- .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 = 0
- if (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].owner
- let side = (this.obj[id].owner % 2) * -1 + 1
- let name = this.obj[id].nametxt
- let f = false
- for (let j = 0; j < damage[side].length; j++) {
- if (
- damage[side][j]["name"] == name &&
- damage[side][j]["owner"] == owner
- ) {
- f = true
- damage[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 = 0
- if (realDamage >= this.obj[i].nowhealth) {
- s += this.obj[i].level
- if (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"] = 0
- stage.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 = true
- someactive = true
- }
- }
- this.obj[i]["needSetNumber"] = 0
- this.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")
- break
- case 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")
- break
- case 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"] = 0
- stage.pole.obj[current]["luckcount"] = 0
- }
- stage.pole.obj[current]["luckcount"] += 1
- switch (lang) {
- case 0:
- htmllog +=
- "" +
- this.html("name", current) +
- " посетила удача!" +
- this.html("end")
- break
- case 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")
- break
- case 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")
- break
- case 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")
- break
- case 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 = 0
- if (!firsTurnShow) {
- return 0
- }
- let cre = stage.pole.obj[i]
- if (cre === undefined) {
- return 0
- }
- let allCount = ""
- let yesCount = ""
- let lastValue = ""
- let luck = 0
- if (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] = luck
- luck = 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 = n
- if (n > 0) {
- for (let i = 3; i >= 1; i--) {
- while (possible[i] > 5 && n > 0) {
- possible[0] += 5
- possible[i] -= 5
- n -= 1
- }
- }
- }
- if (n < 0) {
- for (let i = 0; i <= 2; i++) {
- while (possible[i] > 5 && n < 0) {
- possible[3] += 5
- possible[i] -= 5
- n += 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].nowhealth
- let hpd =
- (this.obj[defender].nownumber - 1) * this.obj[defender].maxhealth +
- this.obj[defender].nowhealth
- let soldiersLuck = 0
- if (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 - len
- skillProbability = 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 = 0
- if (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 = ttext
- Make_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 = option
- set_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 = 0
- var line2 = 0
- var 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 = targetMagicdamage
- line1 = targetMagickills
- } else {
- line2 = Totalmagicdamage
- line1 = Totalmagickills
- }
- } else {
- if (ctrldown) {
- line1 = Uronkills
- if (Uronkills != Uronkills2) line1 += " - " + Uronkills2
- line2 = PhysicalDamage
- if (PhysicalDamage != PhysicalDamage2)
- line2 += " - " + PhysicalDamage2
- } else {
- line1 = tUronkills
- if (tUronkills != tUronkills2) {
- line1 += " - " + tUronkills2
- }
- line2 = tPhysicalDamage
- if (tPhysicalDamage != tPhysicalDamage2) {
- line2 += " - " + tPhysicalDamage2
- }
- if (skillProbability != "") {
- line2 += " (" + skillProbability + "%)"
- }
- }
- }
- var scale =
- Math.max(min_uron_scale, stage[war_scr].scaling_ratio) *
- MainPixelRatio
- set_scaleX(myuron2, scale)
- set_scaleY(myuron2, scale)
- if (last_line1 != line1 || last_line2 != line2 || last_line3 != line3) {
- last_line1 = line1
- last_line2 = line2
- last_line3 = line3
- set_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 = 0
- myuron.line3.visible = 0
- } else {
- myuron2.children[4].visible = 1
- myuron.line3.visible = 1
- set_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 = 1
- var ratio = getDevicePixelRatio()
- // if (android)
- // {
- var sc = stage[war_scr].scaling * ratio
- // }
- var rect = get_clientRect(myuron)
- if (currentTip == 1) {
- rect.width *= scale
- rect.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].scaling
- rect.height =
- Math.min(100, myuron.line1.height * 2 + 5) * stage[war_scr].scaling
- }
- var gscaling = stage[war_scr].scaling
- var xx2 = scr_xmouse
- var max_x = original_width
- if (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 = xx2
- var yy = scr_ymouse
- if (!android) {
- xx -= cursor_width * scale
- yy += cursor_height * 1.5 * scale
- } else {
- xx -= cursor_width * scale
- yy -= cursor_height * 4 * scale
- if (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 = 0
- attack_yr = 0
- targetMagicdamage = 0
- targetMagickills = 0
- if (buttons_visible["win_dialog"]) return 0
- if (buttons_visible["scroll_runes"]) return 0
- if (buttons_visible["magic_book"]) return 0
- if (buttons_visible["win_SeparateArmy"]) return 0
- if (buttons_visible["win_Mission"]) return 0
- if (buttons_visible["win_Settings"]) return 0
- if (total_delta > 20) return 0
- if (typeof unsafeWindow.csword === "undefined") return 0
- shiftdown = false
- ctrldown = false
- if (!android) {
- var isRightMB = false
- var e = 0
- if ((typeof event !== "undefined" && event) || from_event) {
- var e = from_event
- if (typeof event !== "undefined" && event) e = event
- if (e.which) {
- if (e.which == 2 || e.which == 3) {
- isRightMB = 1
- }
- } else if (e.button) isRightMB = e.button >= 2
- }
- if (KeyisDown(16)) shiftdown = true
- else shiftdown = false
- if (KeyisDown(17) || isRightMB) ctrldown = true
- else ctrldown = false
- }
- shiftdown = (shiftdown || shift_button) && shift_ok
- ctrldown = ctrldown || info_button
- if (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 = false
- if (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 = 0
- return 0
- }
- if (itrunepanel()) {
- return 0
- }
- attackx = 0
- attacky = 0
- movex = 0
- movey = 0
- magicx = -1
- magicy = 0
- scr_ymouse = ymouse
- scr_xmouse = xmouse
- if (lastcoords == true) {
- scr_ymouse = scr_ymouselast
- scr_xmouse = scr_xmouselast
- }
- scr_ymouselast = scr_ymouse
- scr_xmouselast = scr_xmouse
- var r = getxa_from(scr_xmouse, scr_ymouse)
- x = r.x + 1
- y = r.y + 1
- xr = 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].x
- yr = this.obj[interactive_obj].y
- }
- }
- xr_last = xr
- yr_last = yr
- xr_z = scr_xmouse
- yr_z = scr_ymouse
- if (reset) {
- xr_z = -100
- yr_z = -100
- xr = -5
- yr = -5
- }
- if (buttons_visible["win_InfoCreatureEffect"]) return 0
- if (buttons_visible["win_InfoHero"]) return 0
- if (buttons_visible["win_InfoHero2"]) return 0
- if (buttons_visible["win_InfoCreature"]) return 0
- if (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 = -5
- yr = -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 * defxn
- if (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 = 0
- t2 = 0
- t11 = 0
- t21 = 0
- k = playero
- k1 = playero1
- if (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 = 0
- t2 = 0
- k = playero
- if (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 = 1
- y2 = 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 = 1
- if (this.obj[activestek]["bigy"]) bigy = 1
- var cnt = 0
- var xp = Array(0, -1, 0, -1)
- var yp = Array(0, 0, -1, -1)
- var xro = xr,
- yro = yr
- if (this.obj[activestek]["big"]) cnt = 3
- for (k = 0; k <= cnt; k++) {
- ok = true
- xr = xro + xp[k]
- yr = yro + yp[k]
- xr_last = xr
- yr_last = yr
- for (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 * defxn
- setstekx = xr
- setsteky = yr
- set_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 = -1
- setsteky = -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 = 0
- lastpole = 0
- if (this.shadows)
- for (x = 0; x <= defxn + 1; x++) {
- if (!this.shadows.shad1[x]) continue
- for (y = 1; y <= defyn; y++) {
- if (!this.shadows.shad1[x][y]) continue
- m = 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) continue
- if (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 = true
- if (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 - 1
- for (var kk = 0; kk <= atb_cnt; kk++) {
- if (kk != k) {
- if (
- typeof this.p_array === "undefined" ||
- !this.portraits[this.p_array[kk]]
- )
- continue
- showshadow(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 = 1
- this.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.length
- for (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 = 0
- this.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 = k
- if (inserted) {
- set_cursor(0)
- if (myuron) set_visible(myuron, 0)
- if (csword) set_visible(csword, 0)
- clearshado()
- clearshadway()
- }
- return 0
- }
- lastk = -1
- if (reset) {
- xr = -5
- yr = -5
- }
- mishowed = false
- var i = mapobj[yr * defxn + xr]
- var nowi = 0
- if (lasti > 0 && lasti != i && this.obj[lasti].shadowed) {
- i = lasti
- lasti = 0
- for (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 = 0
- this.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 = false
- if (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 = i
- if (!this.obj[i].shadowed && this.obj[i].inited_show) {
- if (!this.obj[i].stone && !this.obj[i].portal) {
- this.obj[i].ontop = 1
- this.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 = true
- this.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 = i
- else lasti = 0
- crun_visible2 = true
- if (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 = 210
- if (magicuse == "layhands") enemy = 211
- if (magicuse == "orderofchief") enemy = 211
- switch (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 = 0
- break
- }
- lastshad = xr + yr * defxn
- setshad(0, 0, 0, 0, true)
- res = "magicfist"
- magicx = xr
- magicy = yr
- this.calcmagic(activeobj, xr, yr, magicuse)
- break
- case "lighting":
- set_cursor(6)
- if (xr + yr * defxn != lastshad) {
- if (lastshad > 0) {
- setshad(0, 0, 0, 0, false)
- }
- }
- if (getmap(xr, yr) != 210) {
- res = 0
- break
- }
- lastshad = xr + yr * defxn
- setshad(0, 0, 0, 0, true)
- res = "lighting"
- magicx = xr
- magicy = yr
- this.calcmagic(activeobj, xr, yr, magicuse)
- break
- case "chainlighting":
- set_cursor(6)
- if (xr + yr * defxn != lastshad) {
- if (lastshad > 0) {
- setshad(0, 0, 0, 0, false)
- lastshad = -2
- clearshado()
- var len = this.obj_array.length
- for (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 = 0
- break
- }
- lastshad = xr + yr * defxn
- setshad(0, 0, 0, 0, true)
- res = "chainlighting"
- magicx = xr
- magicy = yr
- this.calcchainlighting(activeobj, xr, yr, magicuse)
- lastChain = activeobj
- break
- case "knightmark":
- set_cursor(6)
- if (xr + yr * defxn != lastshad) {
- if (lastshad > 0) {
- setshad(0, 0, 0, 0, false)
- }
- }
- ok = false
- var len = this.obj_array.length
- for (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 = true
- break
- }
- }
- if (!ok) {
- res = 0
- break
- }
- lastshad = xr + yr * defxn
- setshad(0, 0, 0, 0, true)
- res = "fast"
- magicx = xr
- magicy = yr
- break
- case "dispel":
- set_cursor(6)
- if (xr + yr * defxn != lastshad) {
- if (lastshad > 0) {
- setshad(0, 0, 0, 0, false)
- }
- }
- ok = false
- var len = this.obj_array.length
- for (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 = true
- break
- }
- }
- if (!ok) {
- res = 0
- break
- }
- lastshad = xr + yr * defxn
- setshad(0, 0, 0, 0, true)
- res = "fast"
- magicx = xr
- magicy = yr
- break
- case "mfast":
- set_cursor(6)
- var p = 2
- if (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 * defxn
- setshad(-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 = xr
- magicy = yr
- break
- case "mslow":
- set_cursor(6)
- var p = 2
- if (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 * defxn
- setshad(-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 = xr
- magicy = yr
- break
- case "mpoison":
- set_cursor(6)
- var p = 1
- if (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 * defxn
- setshad(-1, -1, p, p, true)
- res = "mfast"
- magicx = xr
- magicy = yr
- this.calcmagic(activeobj, xr, yr, magicuse)
- break
- case "phantom_forces":
- set_cursor(6)
- if (xr + yr * defxn != lastshad) {
- if (lastshad > 0) {
- setshad(0, 0, 0, 0, false)
- }
- }
- ok = false
- var len = this.obj_array.length
- for (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 = i
- ok = true
- break
- }
- }
- if (!ok) {
- res = 0
- break
- }
- xo = this.obj[j].x
- yo = this.obj[j].y
- b = 0
- var bigx = this.obj[j]["big"]
- var bigy = this.obj[j]["big"]
- if (this.obj[j]["bigx"]) bigx = 1
- if (this.obj[j]["bigy"]) bigy = 1
- ok = false
- i = activeobj
- setmap(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 = true
- for (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 = activeobj
- setmap(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 = 0
- break
- }
- lastshad = xr + yr * defxn
- setshad(0, 0, 0, 0, true)
- res = "phantom_forces"
- magicx = xr
- magicy = yr
- break
- case "bless":
- set_cursor(6)
- if (xr + yr * defxn != lastshad) {
- if (lastshad > 0) {
- setshad(0, 0, 0, 0, false)
- }
- }
- ok = false
- var len = this.obj_array.length
- for (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 = true
- break
- }
- }
- if (!ok) {
- res = 0
- break
- }
- lastshad = xr + yr * defxn
- setshad(0, 0, 0, 0, true)
- res = "bless"
- magicx = xr
- magicy = yr
- break
- case "divine_guidance":
- set_cursor(6)
- if (xr + yr * defxn != lastshad) {
- if (lastshad > 0) {
- setshad(0, 0, 0, 0, false)
- }
- }
- ok = false
- var len = this.obj_array.length
- for (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 = true
- objset = i
- break
- }
- }
- if (!ok) {
- res = 0
- this.reset_temp_magic()
- this.showatb()
- break
- }
- lastshad = xr + yr * defxn
- setshad(0, 0, 0, 0, true)
- res = "divine_guidance"
- magicx = xr
- magicy = yr
- this.reset_temp_magic()
- var init = this.obj[activeobj]["divine_guidanceeffmain"]
- var init = 33
- var 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"] = -init
- this.showatb()
- break
- case "stoneskin":
- set_cursor(6)
- if (xr + yr * defxn != lastshad) {
- if (lastshad > 0) {
- setshad(0, 0, 0, 0, false)
- }
- }
- ok = false
- var len = this.obj_array.length
- for (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 = true
- break
- }
- }
- if (!ok) {
- res = 0
- break
- }
- lastshad = xr + yr * defxn
- setshad(0, 0, 0, 0, true)
- res = "stoneskin"
- magicx = xr
- magicy = yr
- break
- case "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 = 0
- break
- }
- ok = true
- var len = this.obj_array.length
- for (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 = false
- break
- }
- }
- if (
- ok &&
- btype == _PVP_DIAGONAL_EVENT &&
- checkwall2(
- this.obj[activeobj]["x"],
- this.obj[activeobj]["y"],
- xr,
- yr,
- activeobj
- )
- ) {
- ok = false
- break
- }
- if (!ok) {
- res = 0
- break
- }
- this.reset_temp_magic()
- var uo = mapobj[lastshad]
- setn_temp_magic(uo, "bld")
- this.showatb()
- lastshad = xr + yr * defxn
- setshad(0, 0, 0, 0, true)
- res = "blind"
- magicx = xr
- magicy = yr
- break
- case "seduction":
- set_cursor(6)
- if (xr + yr * defxn != lastshad) {
- if (lastshad > 0) {
- setshad(0, 0, 0, 0, false)
- }
- }
- if (getmap(xr, yr) != 210) {
- res = 0
- break
- }
- ok = true
- if (
- (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 = false
- break
- }
- 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 = false
- break
- }
- if (
- ok &&
- btype == _PVP_DIAGONAL_EVENT &&
- checkwall2(
- this.obj[activeobj]["x"],
- this.obj[activeobj]["y"],
- xr,
- yr,
- activeobj
- )
- ) {
- ok = false
- break
- }
- if (!ok) {
- res = 0
- break
- }
- lastshad = xr + yr * defxn
- setshad(0, 0, 0, 0, true)
- res = "seduction"
- magicx = xr
- magicy = yr
- showuron(
- 1,
- Math.min((2 + Math.log(hpa) / Math.log(2)).toFixed(2), 4)
- )
- break
- case "randl":
- set_cursor(6)
- if (xr + yr * defxn != lastshad) {
- if (lastshad > 0) {
- setshad(0, 0, 0, 0, false)
- }
- }
- ok = false
- var len = this.obj_array.length
- for (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 = true
- break
- }
- }
- if (!ok) {
- res = 0
- break
- }
- lastshad = xr + yr * defxn
- setshad(0, 0, 0, 0, true)
- res = "randl"
- magicx = xr
- magicy = yr
- break
- case "flamestrike":
- set_cursor(6)
- if (xr + yr * defxn != lastshad) {
- if (lastshad > 0) {
- setshad(0, 0, 0, 0, false)
- }
- }
- if (getmap(xr, yr) != 210) {
- res = 0
- break
- }
- ok = true
- var len = this.obj_array.length
- for (var k1 = 0; k1 < len; k1++) {
- i = this.obj_array[k1]
- if (this.obj[i].hero && i == mapobj[xr + yr * defxn]) {
- ok = false
- break
- }
- }
- if (!ok) {
- res = 0
- break
- }
- lastshad = xr + yr * defxn
- setshad(0, 0, 0, 0, true)
- res = "stormbolt"
- magicx = xr
- magicy = yr
- this.calcflamestrike(activeobj, xr, yr, "flamestrike", 1.2)
- break
- case "stormbolt":
- set_cursor(6)
- if (xr + yr * defxn != lastshad) {
- if (lastshad > 0) {
- setshad(0, 0, 0, 0, false)
- }
- }
- if (getmap(xr, yr) != 210) {
- res = 0
- break
- }
- ok = true
- var len = this.obj_array.length
- for (var k1 = 0; k1 < len; k1++) {
- i = this.obj_array[k1]
- if (this.obj[i].hero && i == mapobj[xr + yr * defxn]) {
- ok = false
- break
- }
- }
- if (!ok) {
- res = 0
- break
- }
- lastshad = xr + yr * defxn
- setshad(0, 0, 0, 0, true)
- res = "stormbolt"
- magicx = xr
- magicy = yr
- this.calcflamestrike(activeobj, xr, yr, "stormbolt", 0.5)
- break
- case "randd":
- set_cursor(6)
- if (xr + yr * defxn != lastshad) {
- if (lastshad > 0) {
- setshad(0, 0, 0, 0, false)
- }
- }
- if (getmap(xr, yr) != 210) {
- res = 0
- break
- }
- ok = true
- var len = this.obj_array.length
- for (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 = false
- break
- }
- }
- if (!ok) {
- res = 0
- break
- }
- lastshad = xr + yr * defxn
- setshad(0, 0, 0, 0, true)
- res = "randd"
- magicx = xr
- magicy = yr
- break
- case "poison":
- set_cursor(6)
- if (xr + yr * defxn != lastshad) {
- if (lastshad > 0) {
- setshad(0, 0, 0, 0, false)
- }
- }
- if (getmap(xr, yr) != 210) {
- res = 0
- break
- }
- ok = true
- var len = this.obj_array.length
- for (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 = false
- break
- }
- }
- if (!ok) {
- res = 0
- break
- }
- lastshad = xr + yr * defxn
- setshad(0, 0, 0, 0, true)
- res = "poison"
- magicx = xr
- magicy = yr
- this.calcmagic(activeobj, xr, yr, magicuse)
- break
- case "magicarrow":
- set_cursor(6)
- if (xr + yr * defxn != lastshad) {
- if (lastshad > 0) {
- setshad(0, 0, 0, 0, false)
- }
- }
- if (getmap(xr, yr) != 210) {
- res = 0
- break
- }
- lastshad = xr + yr * defxn
- setshad(0, 0, 0, 0, true)
- res = "magicarrow"
- magicx = xr
- magicy = yr
- this.calcmagic(activeobj, xr, yr, magicuse)
- break
- case "firearrow":
- set_cursor(6)
- if (xr + yr * defxn != lastshad) {
- if (lastshad > 0) {
- setshad(0, 0, 0, 0, false)
- }
- }
- if (getmap(xr, yr) != 210) {
- res = 0
- break
- }
- lastshad = xr + yr * defxn
- setshad(0, 0, 0, 0, true)
- res = "firearrow"
- magicx = xr
- magicy = yr
- this.calcmagic(activeobj, xr, yr, magicuse)
- break
- case "icebolt":
- set_cursor(6)
- if (xr + yr * defxn != lastshad) {
- if (lastshad > 0) {
- setshad(0, 0, 0, 0, false)
- }
- }
- if (getmap(xr, yr) != 210) {
- res = 0
- break
- }
- lastshad = xr + yr * defxn
- setshad(0, 0, 0, 0, true)
- res = "icebolt"
- magicx = xr
- magicy = yr
- this.calcmagic(activeobj, xr, yr, magicuse)
- break
- case "dray":
- set_cursor(6)
- if (xr + yr * defxn != lastshad) {
- if (lastshad > 0) {
- setshad(0, 0, 0, 0, false)
- }
- }
- if (getmap(xr, yr) != 210) {
- res = 0
- break
- }
- ok = true
- var len = this.obj_array.length
- for (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 = false
- break
- }
- }
- if (!ok) {
- res = 0
- break
- }
- lastshad = xr + yr * defxn
- setshad(0, 0, 0, 0, true)
- res = "dray"
- magicx = xr
- magicy = yr
- break
- case "raisedead":
- set_cursor(6)
- if (xr + yr * defxn != lastshad) {
- if (lastshad > 0) {
- setshad(0, 0, 0, 0, false)
- }
- }
- ok = false
- big = false
- bigf = false
- var len = this.obj_array.length
- for (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 = false
- if (this.obj[i].big && this.obj[i].nownumber == 0) {
- big = true
- }
- bigf = false
- if (this.obj[i].nownumber) {
- bigf = true
- }
- ok2 = true
- if (big && !bigf) {
- var x1 = this.obj[i].x
- var y1 = this.obj[i].y
- if (
- (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 = false
- bigf = false
- }
- }
- if (!ok) {
- if (xr + yr * defxn != lastshad) this.showatb()
- res = 0
- break
- }
- lastshad = xr + yr * defxn
- this.show_atb_raisedead(xr, yr)
- setshad(0, 0, 0, 0, true)
- res = "raisedead"
- magicx = xr
- magicy = yr
- break
- case "heal":
- set_cursor(6)
- if (xr + yr * defxn != lastshad) {
- if (lastshad > 0) {
- setshad(0, 0, 0, 0, false)
- }
- }
- ok = false
- big = false
- bigf = false
- var len = this.obj_array.length
- for (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 = true
- if (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 = false
- bigf = false
- }
- }
- if (!ok) {
- res = 0
- break
- }
- lastshad = xr + yr * defxn
- setshad(0, 0, 0, 0, true)
- res = "heal"
- magicx = xr
- magicy = yr
- break
- case "summonpit":
- set_cursor(6)
- if (xr + yr * defxn != lastshad) {
- if (lastshad > 0) {
- setshad(0, 0, 0, 0, false)
- }
- }
- ok = false
- big = false
- bigf = false
- var len = this.obj_array.length
- for (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 = true
- if (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 = false
- if (!ok) {
- ok = ok2
- }
- big = false
- bigf = false
- }
- }
- if (!ok) {
- res = 0
- break
- }
- lastshad = xr + yr * defxn
- setshad(0, 0, 0, 0, true)
- res = "summonpit"
- magicx = xr
- magicy = yr
- break
- case "gating":
- set_cursor(6)
- var bigx = this.obj[activeobj]["big"]
- var bigy = this.obj[activeobj]["big"]
- if (this.obj[activeobj]["bigx"]) bigx = 1
- if (this.obj[activeobj]["bigy"]) bigy = 1
- if (xr + yr * defxn != lastshad) {
- if (lastshad > 0) {
- setshad(0, 0, bigx, bigy, false)
- }
- }
- ok = false
- ok = true
- for (x = 0; x <= bigx; x++) {
- for (y = 0; y <= bigy; y++) {
- if (mapg[xr + x + (yr + y) * defxn] != 0) {
- ok = false
- }
- }
- }
- if (!ok) {
- res = 0
- break
- }
- lastshad = xr + yr * defxn
- setshad(0, 0, bigx, bigy, true)
- res = "gating"
- magicx = xr
- magicy = yr
- break
- case "repair":
- set_cursor(6)
- if (xr + yr * defxn != lastshad) {
- if (lastshad > 0) {
- setshad(0, 0, 0, 0, false)
- }
- }
- ok = false
- var len = this.obj_array.length
- for (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 = 0
- break
- }
- lastshad = xr + yr * defxn
- setshad(0, 0, 0, 0, true)
- res = "repair"
- magicx = xr
- magicy = yr
- break
- case "firstaid":
- set_cursor(6)
- if (xr + yr * defxn != lastshad) {
- if (lastshad > 0) {
- setshad(0, 0, 0, 0, false)
- }
- }
- ok = false
- var len = this.obj_array.length
- for (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 = 0
- break
- }
- lastshad = xr + yr * defxn
- setshad(0, 0, 0, 0, true)
- res = "firstaid"
- magicx = xr
- magicy = yr
- break
- case "teleport":
- if (carryo == -1) {
- var s = "teleport"
- if (xr <= 0 || yr <= 0 || xr > defxn - 2 || yr > defyn) {
- res = 0
- break
- }
- var len = this.obj_array.length
- for (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 = 0
- if (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 = 1
- if (this.obj[carryo]["bigy"]) bigy = 1
- ok = true
- for (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 = false
- break
- }
- }
- }
- var s = "teleport"
- if (carryo <= 0) {
- var r = 0
- var 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 * defxn
- setshad(0, 0, bigx, bigy, true)
- }
- magicx = xr
- magicy = yr
- res = "teleport"
- } else {
- res = 0
- if (lastshad > 0) {
- setshad(0, 0, bigx, bigy, false)
- }
- lastshad = -1
- }
- var lastshadt = lastshad
- if (carryo > 0) {
- lastshad = this.obj[carryo].x + this.obj[carryo].y * defxn
- setshad(0, 0, bigx, bigy, true)
- lastshad = lastshadt
- if (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)
- }
- }
- }
- break
- case "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 = xr
- yr1 = yr
- if (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 = 0
- break
- }
- if (carryo == -1) {
- if (xr <= 0 || yr <= 0 || xr > defxn - 2 || yr > defyn) {
- res = 0
- break
- }
- var len = this.obj_array.length
- for (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 * defxn
- setshad(0, 0, 0, 0, true)
- }
- magicx = xr
- magicy = yr
- res = "carry"
- }
- }
- break
- case "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 = 0
- break
- }
- lastshad = xr + yr * defxn
- setshad(-1, -1, 1, 1, true)
- }
- magicx = xr
- magicy = yr
- res = "fireball"
- this.calcmagic(activeobj, xr, yr, magicuse)
- break
- }
- if (k == 250) {
- ok = true
- if (
- 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 = -1
- yrr = -1
- len = 100
- movex = xr
- movey = yr
- if (activeobj > 0 && this.obj[activeobj].big) {
- if (wmap2[xr + yr * defxn] >= 0 && !this.obj[activeobj].flyer) {
- } else {
- if (this.obj[activeobj].flyer) {
- i = activeobj
- setmap(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 = xk
- yrr = yk
- len = (xr - xk) * (xr - xk) + (yr - yk) * (yr - yk)
- }
- }
- }
- }
- if (xrr != -1) {
- xr = xrr
- yr = yrr
- xr_last = xr
- yr_last = yr
- movex = xr
- movey = yr
- if (
- this.obj[activeobj].x == xr &&
- this.obj[activeobj].y == yr &&
- !android
- ) {
- movex = 0
- movey = 0
- res = 0
- ok = false
- }
- } else {
- movex = 0
- movey = 0
- res = 0
- ok = 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 = activeobj
- setmap(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 = xk
- yrr = yk
- len = (xr - xk) * (xr - xk) + (yr - yk) * (yr - yk)
- }
- }
- }
- }
- }
- if (xrr != -1) {
- xr = xrr
- yr = yrr
- xr_last = xr
- yr_last = yr
- movex = xr
- movey = yr
- if (
- this.obj[activeobj].x == xr &&
- this.obj[activeobj].y == yr
- ) {
- movex = 0
- movey = 0
- res = 0
- ok = false
- }
- } else {
- movex = 0
- movey = 0
- res = 0
- ok = 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 = activeobj
- setmap(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 = xk
- yrr = yk
- len = (xr - xk) * (xr - xk) + (yr - yk) * (yr - yk)
- }
- }
- }
- }
- }
- if (xrr != -1) {
- xr = xrr
- yr = yrr
- xr_last = xr
- yr_last = yr
- movex = xr
- movey = yr
- if (
- this.obj[activeobj].x == xr &&
- this.obj[activeobj].y == yr
- ) {
- movex = 0
- movey = 0
- res = 0
- ok = false
- }
- } else {
- movex = 0
- movey = 0
- res = 0
- ok = false
- }
- }
- }
- }
- if (ok && activeobj > 0) {
- if (magicuse == "leap" || magicuse == "leap6") {
- res = 0
- ok = false
- }
- if (ok) {
- set_cursor(1)
- xr_go = xr
- yr_go = yr
- if (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 * defxn
- set_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 = true
- set_cursor(6)
- if (xr + yr * defxn != lastshad) {
- if (lastshad > 0) {
- setshad(0, 0, 0, 0, false)
- }
- }
- if (getmap(xr, yr) != 210) {
- res = 0
- ok = 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 = 0
- if (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]].nowhealth
- var 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 = false
- if (!ok) {
- res = 0
- } else {
- lastshad = xr + yr * defxn
- setshad(0, 0, 0, 0, true)
- res = "frenzy"
- magicx = xr
- magicy = yr
- }
- }
- }
- if (!ok) res = 0
- }
- if (k == "battledive") {
- set_cursor(8)
- ok = true
- if (xr + yr * defxn != lastshad) {
- if (lastshad > 0) {
- setshad(0, 0, 0, 0, false)
- }
- if (xr <= 0 || yr <= 0 || xr > defxn - 2 || yr > defyn) {
- res = 0
- ok = false
- }
- if (ok) {
- lastshad = xr + yr * defxn
- setshad(0, 0, 0, 0, true)
- }
- }
- if (ok) {
- magicx = xr
- magicy = yr
- res = "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 = true
- 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 = 0
- ok = false
- }
- if (ok) {
- lastshad = xr + yr * defxn
- setshad(-1, -1, 1, 1, true)
- setshad(0, 0, 0, 0, false)
- }
- }
- if (ok) {
- magicx = xr
- magicy = yr
- res = "circle_of_winter"
- this.calcmagic(activeobj, xr, yr, magicuse)
- }
- }
- if (k == "stonespikes") {
- set_cursor(6)
- ok = true
- if (xr + yr * defxn != lastshad) {
- if (lastshad > 0) {
- setshad(0, 0, 0, 0, false)
- lastshad--
- setshad(0, 0, 0, 0, false)
- lastshad += 2
- setshad(0, 0, 0, 0, false)
- lastshad--
- lastshad -= defxn
- setshad(0, 0, 0, 0, false)
- lastshad += 2 * defxn
- setshad(0, 0, 0, 0, false)
- lastshad -= defxn
- }
- if (xr <= 0 || yr <= 0 || xr > defxn - 2 || yr > defyn) {
- res = 0
- ok = false
- }
- lastshad = xr + yr * defxn
- setshad(0, 0, 0, 0, true)
- lastshad--
- setshad(0, 0, 0, 0, true)
- lastshad += 2
- setshad(0, 0, 0, 0, true)
- lastshad--
- lastshad -= defxn
- setshad(0, 0, 0, 0, true)
- lastshad += 2 * defxn
- setshad(0, 0, 0, 0, true)
- lastshad -= defxn
- }
- if (ok) {
- magicx = xr
- magicy = yr
- res = "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 = false
- var len = this.obj_array.length
- for (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 = true
- break
- }
- }
- if (!ok) {
- res = 0
- this.reset_temp_magic()
- this.showatb()
- } else {
- lastshad = xr + yr * defxn
- setshad(0, 0, 0, 0, true)
- res = "wordofchief"
- magicx = xr
- magicy = yr
- var eff = this.obj[activeobj][magicuse + "effmain"]
- var init = eff * 100
- var 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"] = -init
- this.showatb()
- }
- }
- if (k == "wheeloffortune") {
- set_cursor(6)
- if (xr + yr * defxn != lastshad) {
- if (lastshad > 0) {
- setshad(0, 0, 0, 0, false)
- }
- }
- ok = false
- var len = this.obj_array.length
- for (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 * defxn
- setshad(0, 0, 0, 0, true)
- res = "wheeloffortune"
- magicx = xr
- magicy = 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 = 0
- if (this.obj[activeobj].big) big2 = 1
- var ok1 = false
- if (nowh < maxh) {
- var len = this.obj_array.length
- for (var k1 = 0; k1 < len; k1++) {
- var k = this.obj_array[k1]
- var big = 0
- if (this.obj[k]["big"]) big = 1
- if (
- 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 = false
- for (
- 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 = true
- break
- }
- }
- if (ok) break
- }
- if (!ok) continue
- var ok1 = true
- for (
- 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 * defxn
- setshad(0, 0, 0, 0, true)
- res = "corpseeater"
- magicx = xr
- magicy = yr
- }
- }
- if (k == "wavesofrenewal") {
- set_cursor(6)
- if (xr + yr * defxn != lastshad) {
- if (lastshad > 0) {
- setshad(0, 0, 0, 0, false)
- }
- }
- ok = false
- var len = this.obj_array.length
- for (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 * defxn
- setshad(0, 0, 0, 0, true)
- res = "wavesofrenewal"
- magicx = xr
- magicy = 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 * defxn
- setshad(0, 0, 0, 0, true)
- res = "angerofhorde"
- magicx = xr
- magicy = yr
- if (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 = false
- var len = this.obj_array.length
- for (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 = true
- break
- }
- }
- if (!ok) {
- res = 0
- } else {
- lastshad = xr + yr * defxn
- setshad(0, 0, 0, 0, true)
- res = "spiritlink"
- magicx = xr
- magicy = yr
- }
- }
- if (k == "setsnares") {
- set_cursor(6)
- ok = true
- if (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 = 0
- ok = false
- if (getmap(xr, yr) == 210) {
- showuron(
- 1,
- snaresPossible(
- this.obj[activeobj],
- this.obj[mapobj[yr * defxn + xr]]
- )
- )
- }
- } else {
- lastshad = xr + yr * defxn
- setshad(0, 0, 0, 0, true)
- }
- }
- if (ok) {
- magicx = xr
- magicy = yr
- res = "setsnares"
- }
- }
- if (k == "setmagicmine") {
- set_cursor(6)
- ok = true
- if (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 = 0
- ok = false
- } else {
- lastshad = xr + yr * defxn
- setshad(0, 0, 0, 0, true)
- }
- }
- if (ok) {
- magicx = xr
- magicy = yr
- res = "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 = true
- var len = this.obj_array.length
- for (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 = false
- break
- }
- 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 = false
- break
- }
- }
- if (!ok) {
- res = 0
- } else {
- lastshad = xr + yr * defxn
- var defender = mapobj[lastshad]
- if (this.obj[defender]["nowinit"] < 100) {
- var init = 100
- 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"] = init
- this.showatb()
- }
- setshad(0, 0, 0, 0, true)
- res = "curse"
- magicx = xr
- magicy = yr
- }
- }
- }
- tUronkills = 0
- tUronkills2 = 0
- tPhysicalDamage = 0
- tPhysicalDamage2 = 0
- res = this.checkcast(k, res, xr, yr)
- if (
- magicuse != "" &&
- this.obj[activeobj]["hero"] &&
- magicuse != "raisedead" &&
- magicuse != "resurrection"
- ) {
- var plus = 100
- if (isperk(activeobj, 105)) plus = 90
- if (isperk(activeobj, 106)) plus = 80
- if (isperk(activeobj, 107)) plus = 70
- if (
- 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"] = 0
- this.obj[activeobj]["plus_init"] = plus
- this.showatb(activeobj)
- this.obj[activeobj]["was_atb"] = 1
- }
- }
- var a = 1
- switch (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 = 200
- return 0
- }
- if (
- activeobj > 0 &&
- this.obj[activeobj].shooter &&
- this.obj[activeobj].shots > 0 &&
- ((!shiftdown && likeshift <= shiftcount) ||
- this.obj[activeobj].hero)
- ) {
- xaa = this.obj[activeobj].x
- yaa = this.obj[activeobj].y
- xaa1 = xaa
- yaa1 = yaa
- b = 0
- if (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 = 1
- if (this.obj[activeobj]["bigy"]) bigy = 1
- range = (xaa - xr) * (xaa - xr) + (yaa - yr) * (yaa - yr)
- ok = true
- for (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 * defxn
- lastshad = -2
- this.magshot(xr, yr)
- }
- attackx = xaa1
- attacky = yaa1
- res = 210.5
- if (magicuse == "harpoonstrike") {
- set_cursor(8)
- magicx = attackx
- magicy = attacky
- }
- if (cur_cursor == 2 || cur_cursor == 4 || cur_cursor == 3) {
- if (
- this.obj[activeobj]["hero"] &&
- magic[activeobj]["brb"]
- ) {
- var init = 20
- var 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"] = init
- this.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 0
- if (def <= 0 || !this.obj[def]) return 0
- if (activeobj > 0 && this.obj[activeobj].shootonly) {
- set_visible(csword, 0)
- set_cursor(5)
- res = 200
- return 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 = false
- clearshadway()
- return 0
- }
- set_cursor(2)
- if (
- activeobj > 0 &&
- this.obj[activeobj].strikeandreturn &&
- (shiftdown || likeshift > shiftcount)
- ) {
- set_cursor(7)
- }
- var xo = this.obj[def].x
- var yo = this.obj[def].y
- var xp = 0,
- yp = 0,
- xpp = 0,
- ypp = 0,
- dd = 0,
- bdd = 100000,
- bxp = 0,
- byp = 0
- var bigx = 0,
- bigy = 0,
- bxr = 0,
- byr = 0
- if (this.obj[def].bigx || this.obj[def].big) bigx = 1
- if (this.obj[def].bigy || this.obj[def].big) bigy = 1
- var one_place = 0
- if (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 = -1
- yr_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)
- )
- continue
- xpp =
- (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)
- )
- continue
- if (dd < bdd) {
- bdd = dd
- bxp = xp
- byp = yp
- bxr = xt + xpp
- byr = yt + ypp
- }
- }
- }
- } else {
- break
- }
- ac = 200
- set_visible(csword, 1)
- if (bdd < 100000) {
- ac = 0
- xr = Math.floor(bxr)
- yr = Math.floor(byr)
- xr_last = xr
- yr_last = yr
- xb = bxp - xr
- yb = byp - yr
- xt = xr
- yt = yr
- xt2 = r.x + 1
- yt2 = r.y + 1
- xt2 = bxr
- yt2 = byr
- ac =
- (Math.atan((yt + 0.5 - yt2) / (xt + 0.5 - xt2)) * 180) /
- Math.PI
- if (xt + 0.5 - xt2 >= 0) ac = 180 + ac
- }
- if (ac == 200) {
- set_visible(csword, 0)
- set_cursor(5)
- res = 200
- break
- }
- a = ac
- if (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) * defxn
- set_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 = xr
- attack_yr = yr
- xr_last = xr
- yr_last = yr
- attackx = xr + xb
- attacky = yr + yb
- if (
- 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 = attackx
- magicy = attacky
- set_visible(csword, 0)
- }
- if (magicuse == "hailstorm") {
- magicx = attackx
- magicy = 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 = 0
- tUronkills2 = 0
- tPhysicalDamage = 0
- tPhysicalDamage2 = 0
- var 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"] += monatt
- setmap(this.obj[activeobj].x, this.obj[activeobj].y, 1, false)
- this.attackmonster(activeobj, xr, yr, attackx, attacky, def, 0)
- this.obj[activeobj]["attackaddon"] -= monatt
- showuron()
- }
- if (magicuse == "leap6") {
- tUronkills = 0
- tUronkills2 = 0
- tPhysicalDamage = 0
- tPhysicalDamage2 = 0
- var 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.05
- setmap(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.scaling
- set_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 = false
- xr_go = -1
- yr_go = -1
- set_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 = 0
- if (KeyisDown(16)) shiftdown = true
- else shiftdown = false
- if (KeyisDown(17)) {
- ctrldown = true
- this.onMouseMoveFlash(false, mousePos.x, mousePos.y, 1)
- } else {
- ctrldown = false
- }
- if (lastshiftdown != shiftdown) {
- lastshiftdown = shiftdown
- movecounter = 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] = 1
- hide_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] = 1
- hide_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 results 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 = false
- for (i = 1; i <= magicscount; i++) {
- if (
- ((magics[i].doing != "" && magics[i].doing != undefined) ||
- (magics[i].cmd != "" && magics[i].cmd != undefined)) &&
- magics[i] != undefined
- ) {
- ok = true
- break
- }
- }
- var len = this.obj_array.length
- for (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) continue
- ok = true
- break
- }
- }
- someactive = ok
- }
- if (!someactive) {
- this["nowhit"] = -1
- }
- if (command != "") {
- k = tointeger(command.substr(1, 3))
- current = k
- cmd = command.substr(0, 1)
- if (cmd == "S" && !someactive) {
- tmp = command.substr(1, 18)
- curAbil = tmp
- }
- }
- let command_copy = command
- if (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"] = 0
- cre["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 false
- if (magic[i][mname]) {
- if (mname != "brf") {
- stage[war_scr].dispelmagic(i, mname, magic[i][mname]["effect"])
- }
- }
- magic[i][mname] = Array()
- magic[i][mname]["nowinit"] = init
- magic[i][mname]["effect"] = eff
- if (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 = 0
- mcount = -1
- ;(mname = []),
- (minit = []),
- (meffect = []),
- (mcast = []),
- (mdo = []),
- (mtype = []),
- (mperc = []),
- (out = "")
- var showeff = 1
- mcount = -1
- var tmp = i
- convertfromselfmagic2(i)
- var len = this.obj_array.length
- if (!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 = k
- convertfromselfmagic2(i)
- break
- }
- }
- var plus = "",
- color = 0
- var dat = "<table>"
- i = tmp
- var enter = false
- if (!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 = true
- plus = ""
- 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 = t
- if (mname[k] == "wof") {
- d = 0
- }
- dat +=
- (d != 1 ? mdo[k] : "") + " " + 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 = dat
- document.getElementById("effects_info_head").innerHTML =
- this.get_name_html(i)
- return dat
- }
- stage.pole.calcdivinev = unsafeWindow.calcdivinev = function (i, xr, yr) {
- Totalmagicdamage = 0
- Totalmagickills = 0
- var ok = false
- var xx = 0,
- yy = 0,
- xp = 0,
- yp = 0
- mul = 1
- var len = this.obj_array.length
- for (var k1 = 0; k1 < len; k1++) {
- var j = this.obj_array[k1]
- this.obj[j]["attacked"] = 1
- this.obj[j]["attacked2"] = 1
- }
- var separhsum = this.obj[mapobj[xr + yr * defxn]].separhsum ?? 0
- var 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 = 0
- Totalmagickills = 0
- var ok = false
- var xx = 0,
- yy = 0,
- xp = 0,
- yp = 0
- mul = 1
- var len = this.obj_array.length
- for (var k1 = 0; k1 < len; k1++) {
- var j = this.obj_array[k1]
- this.obj[j]["attacked"] = 1
- this.obj[j]["attacked2"] = 1
- }
- var herd = 0
- var hera = 0
- for (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 = k
- if (this.obj[k].hero && this.obj[k].owner == this.obj[i].owner)
- hera = k
- }
- let b = 0
- if (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 = 0
- Totalmagickills = 0
- var ok = false
- var xx = 0,
- yy = 0,
- xp = 0,
- yp = 0
- mul = 1
- if (magicpower == true) mul = 1.5
- var len = this.obj_array.length
- for (var k1 = 0; k1 < len; k1++) {
- var j = this.obj_array[k1]
- this.obj[j]["attacked"] = 1
- this.obj[j]["attacked2"] = 1
- }
- var xx = 0,
- yy = 0,
- xp = 0,
- yp = 0
- if (magicuse == "chainlighting") {
- var lasto = mapobj[xr + yr * defxn]
- var j = lasto
- this.obj[j]["attacked2"] = 0
- var 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#" + 1
- this.obj[j].set_number()
- this.obj[j]["nownumber"] = b
- let bDamage = Totalmagicdamage
- targetMagicdamage = Totalmagicdamage
- let 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"] = b
- var penalty = Array(1, 0.5, 0.25, 0.125)
- let ambiguity = []
- let f = true
- for (var zz = 1; zz <= 3; zz++) {
- this.obj[lasto]["attacked"] = 0
- br = 0
- bj = 0
- var len = this.obj_array.length
- for (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 = rr
- bj = j
- }
- }
- if (zz == 1) {
- console.log(ambiguity)
- console.log(br)
- }
- if (bj > 0) {
- lasto = bj
- x1 = this.obj[bj]["x"]
- y1 = this.obj[bj]["y"]
- j = bj
- this.obj[j]["attacked2"] = 0
- this.attackmagic(
- i,
- j,
- Math.floor(Math.round(eff * mul) * penalty[zz]),
- "air",
- "lighting",
- 0,
- 0,
- 0
- )
- let b = this.obj[j]["nownumber"]
- bDamage = Totalmagicdamage
- if (!f) {
- continue
- }
- if (ambiguity.length > 1) {
- f = false
- for (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"] = b1
- setshadAbs(
- 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 0
- if (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 *= 2
- stage[war_scr].showatb(activeobj, 100)
- stage.pole.obj[activeobj].maxinit /= 2
- }
- }
- stage.pole.calcComs_new = function () {
- command_new = command
- var b = 0,
- i = 0,
- j = 0,
- x = 0,
- y = 0,
- k = 0,
- ok = false,
- time = 0,
- ii = false
- var cmd = ""
- if (Date.now() < waittimer && !finished) return 0
- if (!initialized) return 0
- if (someactive) {
- ok = false
- for (i = 1; i <= magicscount; i++) {
- if (
- ((magics[i].doing != "" && magics[i].doing != undefined) ||
- (magics[i].cmd != "" && magics[i].cmd != undefined)) &&
- magics[i] != undefined
- ) {
- ok = true
- break
- }
- }
- var len = this.obj_array.length
- for (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 = 0
- this.obj[i].donow2c = 0
- this.obj[i].set_pole_pos(this.obj[i].x, this.obj[i].y)
- }
- }
- if (this.obj[i].bomb) continue
- ok = true
- break
- }
- }
- someactive = ok
- }
- if (command_new == "") return 0
- k = tointeger(command_new.substr(1, 3))
- current = k
- cmd = command_new.substr(0, 1)
- if (loading) return 0
- while (
- 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) {
- //gating
- if (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 = 1
- atby = 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 0
- if (!this.showed_atb) return 0
- this.atbg.x1 = Math.floor(atbx)
- this.atbg.y1 = Math.floor(atby)
- var sc = atb_cnt
- if (!inserted) {
- sc = stackcount - 1
- atb_n_x =
- atbx +
- (((atb_count - stackcount) * atb_width * atb_scaling) / 2) *
- cur_scaling *
- this.scaling
- this.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 * 90
- if (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 = true
- let dop = 40
- for (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_scaling
- if (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 0
- var festering = false
- var deathstare = false
- let mimmune = false
- if (inserted) {
- mimmune = false
- if (magic[i] && magic[i]["wfr"] && magic[i]["wfr"]["effect"] == 1)
- mimmune = true
- if (this.obj[i]["twistedmind"] == 1) mimmune = true
- var k = 0
- var x = 0,
- y = 0,
- b = 0,
- x2 = 0,
- y2 = 0,
- b2 = 0
- var len = this.obj_array.length
- for (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 = 1
- if (this.obj[i]["bigy"]) bigy = 1
- var bigkx = this.obj[k]["big"]
- var bigky = this.obj[k]["big"]
- if (this.obj[k]["bigx"]) bigkx = 1
- if (this.obj[k]["bigy"]) bigky = 1
- for (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 = false
- if (magic[i] && magic[i]["wfr"] && magic[i]["wfr"]["effect"] == 1)
- mimmune = true
- if (this.obj[i]["twistedmind"] == 1) mimmune = true
- }
- var morale = 0
- var day = 0
- if (
- 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 = 0
- if (this.obj[i].moraleaddon) ma = this.obj[i].moraleaddon
- var m = ma
- if (this.obj[i].packpower) {
- var len = this.obj_array.length
- for (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 = 0
- var x = 0,
- y = 0,
- b = 0,
- x2 = 0,
- y2 = 0,
- b2 = 0
- var frig = false
- var brave = false
- var deathstare = false
- var set_zero_morale = false
- var len = this.obj_array.length
- for (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 = true
- if (
- 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 = 1
- if (this.obj[i]["bigy"]) bigy = 1
- var bigkx = this.obj[k]["big"]
- var bigky = this.obj[k]["big"]
- if (this.obj[k]["bigx"]) bigkx = 1
- if (this.obj[k]["bigy"]) bigky = 1
- for (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 = 1
- if (this.obj[i]["bigy"]) bigy = 1
- var bigkx = this.obj[k]["big"]
- var bigky = this.obj[k]["big"]
- if (this.obj[k]["bigx"]) bigkx = 1
- if (this.obj[k]["bigy"]) bigky = 1
- for (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 = 1
- if (this.obj[i]["bigy"]) bigy = 1
- var bigkx = this.obj[k]["big"]
- var bigky = this.obj[k]["big"]
- if (this.obj[k]["bigx"]) bigkx = 1
- if (this.obj[k]["bigy"]) bigky = 1
- for (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 = 0
- set_zero_morale = true
- }
- }
- }
- }
- }
- }
- }
- if (frig) {
- m -= 3
- this.clearPar(i, "morale")
- }
- }
- if (!mimmune && festering) {
- //+
- m -= 2
- this.clearPar(i, "morale")
- }
- if (!mimmune && deathstare) {
- m -= 1
- }
- morale = this.obj[i].morale + m
- if (set_zero_morale) {
- morale = 0
- brave = 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 = 0
- this.obj[i].turnCount = 0
- }
- if (name == "luck") {
- this.obj[i].luckcount = 0
- this.obj[i].hitcount = 0
- }
- }
- stage.pole.showmi = unsafeWindow.showmi = function (i) {
- if (typeof unsafeWindow.mini_info_panel === "undefined") return 0
- if (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 = true
- temp.r = 0
- temp.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] = temp
- var 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 = ttext
- Make_addChild(temp, ttext)
- Make_addChild(mini_info_panel, temp)
- }
- var y = Array(-7.45, 0.5, 9.05, 18.5)
- var k = 0
- if (
- !this.obj[i].mvisible ||
- this.obj[i].nownumber <= 0 /*||(this.obj[i]._x<0)*/
- )
- return 0
- var 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 + " ур.]"
- break
- case 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 + " ур.]"
- break
- case 1:
- ntxt = this.obj[i].nametxt + " [" + this.obj[i].boss + " lev.]"
- break
- }
- } else {
- ntxt = this.obj[i].nametxt
- if (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"] + " ур)"
- break
- case 1:
- ntxt += "(" + magic[i]["lev"]["effect"] + " lev)"
- break
- }
- }
- }
- s_stats["health"] =
- this.obj[i].nowhealth + "/" + this.obj[i].maxhealth
- if (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 = 1
- for (var z = 1; z <= 2; z++) {
- if (rlevel[z] <= magic[i]["rag"]["effect"]) lev = z + 1
- }
- var her = 0,
- herolevel = 0
- var len = this.obj_array.length
- for (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].maxhealth
- s_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 = 0
- for (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_size
- var 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 = 40
- y += yplus
- if (y >= yplus * 3) break
- }
- }
- }
- unsafeWindow.raidsCountWaves = 0
- if (btype == 8) {
- let lastCount = 0
- for (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 0
- if (tnvscore == 0 && raids == 0) return 0
- var y = Array(-7.45, 0.5, 9.05, 18.5)
- var k = 0
- this.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 = 10
- var txt = Array()
- txt[0] = tnvscore
- if (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_size
- while (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 = 60
- y += 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_now
- var 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 0
- if (!was_benchmark) return 0
- if (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_now
- if (skip_frame) {
- total_skips++
- total_skips2++
- } else {
- total_skips = 0
- }
- if (total_skips > 1) {
- skip_frame = 0
- total_skips = 0
- }
- was_skip_frame = skip_frame
- try {
- 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) continue
- stage.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").value
- let 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 = true
- clearInterval(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 = 0
- var 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)) - 1
- let 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 img
- if (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].innerHTML
- elem[1].innerHTML =
- "<div class = 'atb-info' style = 'display:none'>" +
- info +
- "</div>" +
- elem[1].innerHTML
- },
- })
- }
- }
- })()
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址