Facebook
From twuj stary, 9 Months ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 89
  1. // ==UserScript==
  2. // @name         Bot na exp
  3. // @match        *://*/
  4. // @grant        none
  5. // ==/UserScript==
  6. window.bot = new function() {
  7.     function b(K, L) {
  8.         return Math.abs(K.x - L.x) + Math.abs(K.y - L.y)
  9.     }
  10.  
  11.     function d(K, L) {
  12.         return new s(map.col, map.x, map.y, {
  13.             x: hero.x,
  14.             y: hero.y
  15.         }, {
  16.             x: K,
  17.             y: L
  18.         }, g.npccol).anotherFindPath()
  19.     }
  20.  
  21.     function e(K, L) {
  22.         let M = d(K, L);
  23.         Array.isArray(M) && (window.road = M)
  24.     }
  25.  
  26.     function f(K) {
  27.         let L = g.npc[K];
  28.         if (L.grp)
  29.             for (let M in g.npc) g.npc[M].grp != L.grp || I.includes(g.npc[M].id) || I.push(g.npc[M].id);
  30.         else I.includes(K) || I.push(K)
  31.     }
  32.  
  33.     function k() {
  34.         for (let K in g.npc) {
  35.             let L = g.npc[K];
  36.             if ((2 == L.type || 3 == L.type) && 19 > L.wt && o(L.id) && hero.lvl + 30 >= L.lvl && 2 > Math.abs(hero.x - L.x) && 2 > Math.abs(hero.y - L.y) && q()) return _g(`fight&a=attack&ff=1&id=-${L.id}`)
  37.         }
  38.     }
  39.  
  40.     function l(K) {
  41.         let L = 'https://discordapp.com/api/webhooks/622458575326937091/tqeLwzej638EUfw8wAFHz-6Kz2qz0atlg4Po6uxhDLoce5dSduDtivC3bnckD05bo5iz';
  42.         $.ajax({
  43.             url: L,
  44.             type: "POST",
  45.             data: JSON.stringify({
  46.                 content: K,
  47.                 username: hero.nick,
  48.                 avatar_url: `http://margonem.pl/obrazki/itemy/upg/upg01.gif`
  49.             }),
  50.             contentType: "application/json; charset=utf-8",
  51.             dataType: "json",
  52.             async: !1
  53.         })
  54.     }
  55.  
  56.     function m() {
  57.         let K = new Date,
  58.             L = K.getHours(),
  59.             M = K.getSeconds(),
  60.             N = K.getMinutes();
  61.         return 10 > L && (L = `0${L}`), 10 > N && (N = `0${N}`), 10 > M && (M = `0${M}`), `${L}:${N}:${M}`
  62.     }
  63.  
  64.     function o(K) {
  65.         return g.npc[K].grp && (!p(g.npc[K].grp) || r[localStorage.getItem(`bot_expowiska`)].ignore_grp && r[localStorage.getItem(`bot_expowiska`)].ignore_grp.includes(g.npc[K].grp)) ? !1 : !0
  66.     }
  67.  
  68.     function p(K) {
  69.         for (let L in g.npc)
  70.             if (g.npc[L].grp == K && 19 < g.npc[L].wt) return !1;
  71.         return !0
  72.     }
  73.  
  74.     function q() {
  75.         return !!(70 < 100 * (hero.hp / hero.maxhp))
  76.     }
  77.     mAlert = function() {}, "undefined" == typeof g && -1 < document.location.href.indexOf("margonem.pl") && document.location.reload();
  78.     let r = {
  79.         "Pizzeria(wszystkie poziomy)": {
  80.             map: "Podziemia - p.1, Podziemia - p.2, Odnoga kana┼éu, Podziemia - p.1, Podziemia - p.3, Podziemia - p.1, Odnoga kana┼éu, Podziemia - p.2"
  81.         },
  82.         "Zamek": {
  83.             map:  "Przekl─Öty Zamek - wej┼Ťcie wschodnie, Przekl─Öty Zamek - sala zgromadze┼ä, Przekl─Öty Zamek p.1, Przekl─Öty Zamek p.2, Przekl─Öty Zamek - komnata, Przekl─Öty Zamek - zbrojownia"
  84.         },
  85.         "Szczury w Ithan": {
  86.             map: "Archiwa, Zaplecze, Sk┼éady, Przej┼Ťcie p├│┼énocno-wschodnie, Wschodnie skrzyd┼éo mur├│w, Przej┼Ťcie po┼éudniowo-wschodnie, Wschodnie skrzyd┼éo mur├│w, Przej┼Ťcie p├│┼énocno-wschodnie, Sk┼éady, Zaplecze"
  87.         },
  88.         "Nekropolia": {
  89.             map: "Grobowiec Rodziny Tywelta p.1, Grobowiec Rodziny Tywelta p.2"
  90.         },
  91.         "Demony": {
  92.             map: "Podziemia Siedziby Maga p.3 - sala 1, Podziemia Siedziby Maga p.3 - sala 2"
  93.         },
  94.         "Gacki szare": {
  95.             map: "Siedlisko Nietoperzy p.5, Siedlisko Nietoperzy p.4, Siedlisko Nietoperzy p.3, Siedlisko Nietoperzy p.2, Siedlisko Nietoperzy p.1, Siedlisko Nietoperzy p.2, Siedlisko Nietoperzy p.3, Siedlisko Nietoperzy p.4"
  96.         },
  97.         "Mr├│wki": {
  98.             map: "Mrowisko p.1, Mrowisko p.2, Kopiec Mr├│wek, Kopiec Mr├│wek p.1, Kopiec Mr├│wek p.2"
  99.         },
  100.         "Ghule": {
  101.             map: "Polana ┼Ťcierwojad├│w, Wioska Ghuli"
  102.         },
  103.         "Zulusy": {
  104.             map: "Osada Zulus├│w, Siedziba Zulus├│w, Lokum Mulu, Lokum Gula"
  105.         },
  106.         "Zbiry": {
  107.             map: "Pag├│rki ┼üupie┼╝c├│w, Kamienna Kryj├│wka, Schowek na ┼üupy, Sk┼éad Grabie┼╝c├│w"
  108.         },
  109.         "Wilcze plemi─Ö": {
  110.             map: "Warcz─ůce Osuwiska, Wilcza Nora p.1, Wilcza Nora p.2, Wilcza Nora p.1",
  111.             mobs_id: [71698]
  112.         },
  113.         "Orki": {
  114.             map: "Opuszczony Bastion, Zburzona Twierdza"
  115.         },
  116.         "Paj─ůki": {
  117.             map: "Rachminowa Jaskinia p.5, Rachminowa Jaskinia p.6 - rozlewisko, Rachminowa Jaskinia p.7 - bezdenna g┼é─Öbia, Rachminowa Jaskinia p.6 - rozlewisko"
  118.         },
  119.         "Koboldy": {
  120.             map: "Lazurytowa Grota p.1, Lazurytowa Grota p.2, Lazurytowa Grota p.3, Lazurytowa Grota p.2"
  121.         },
  122.         "Galaretki(te za pszczo┼éami)": {
  123.             map: "Prastara Kopalnia Eroch p.4 - sala 1, Prastara Kopalnia Eroch p.5"
  124.         },
  125.         "Szlak Thorpa": {
  126.             map: "Szlak Thorpa p.1, Szlak Thorpa p.2, Szlak Thorpa p.3, Szlak Thorpa p.4, Szlak Thorpa p.5, Szlak Thorpa p.6, Szlak Thorpa p.5, Szlak Thorpa p.4, Szlak Thorpa p.3, Szlak Thorpa p.2"
  127.         },
  128.         "Bia┼ée mr├│wki": {
  129.             map: "Szumi─ůca G─Östwina, Grota Bia┼éych Ko┼Ťci p.1 - sala 2, Grota Bia┼éych Ko┼Ťci p.2 - sala 2, Grota Bia┼éych Ko┼Ťci p.3 - sala 2, Grota Bia┼éych Ko┼Ťci p.4, Grota Bia┼éych Ko┼Ťci p.3 - sala 1, Grota Bia┼éych Ko┼Ťci p.4, Grota Bia┼éych Ko┼Ťci p.3 - sala 2, Grota Bia┼éych Ko┼Ťci p.2 - sala 2, Grota Bia┼éych Ko┼Ťci p.1 - sala 2"
  130.         },
  131.         "Demilisze-s┼éabe": {
  132.             map: "Rachminowa Jaskinia p.3, Rachminowa Jaskinia p.4, Rachminowa Jaskinia p.4 - przepa┼Ťcie, W─ůski chodnik p.4, Chodniki Erebeth p.4 - sala 1, Chodniki Erebeth p.4 - sala 2, Chodniki Erebeth p.4 - sala 1, W─ůski chodnik p.4, Rachminowa Jaskinia p.4 - przepa┼Ťcie, Rachminowa Jaskinia p.4"
  133.         },
  134.         "Demilisze-dobre": {
  135.             map: "Rachminowa Jaskinia p.4 - przepa┼Ťcie, W─ůski chodnik p.4, Chodniki Erebeth p.4 - sala 1, Chodniki Erebeth p.4 - sala 2, Kopalnia Thudul-ultok p.4 - sala 2, Kopalnia Thudul-ultok p.4 - sala 1, Kopalnia Thudul-ultok p.4 - sala 2, Chodniki Erebeth p.4 - sala 1, W─ůski chodnik p.4"
  136.         },
  137.         "Minosy": {
  138.             map: "Labirynt Wykl─Ötych p.2 - sala 1, Labirynt Wykl─Ötych p.1, Labirynt Wykl─Ötych p.2 - sala 2, Labirynt Wykl─Ötych p.1"
  139.         },
  140.         "Erem p├│┼énoc-po┼éudnie": {
  141.             map: "Erem Czarnego S┼éo┼äca - sala wej┼Ťciowa, Erem Czarnego S┼éo┼äca p.1 s.1, Erem Czarnego S┼éo┼äca - sala wej┼Ťciowa, Erem Czarnego S┼éo┼äca p.2 s.1, Erem Czarnego S┼éo┼äca p.2 s.2, Erem Czarnego S┼éo┼äca - sala wej┼Ťciowa, Erem Czarnego S┼éo┼äca p.1 s.2, Erem Czarnego S┼éo┼äca - sala wej┼Ťciowa, Ska┼éy Mro┼║nych Spiew├│w, Erem Czarnego S┼éo┼äca - po┼éudnie, Erem Czarnego S┼éo┼äca - lochy, Erem Czarnego S┼éo┼äca - p├│┼énoc, Ska┼éy Mro┼║nych Spiew├│w",
  142.             mobs_id: [34826]
  143.         },
  144.         "Grexy": {
  145.             map: "Grota Samotnych Dusz p.1, Grota Samotnych Dusz p.2, Grota Samotnych Dusz p.3, Grota Samotnych Dusz p.4, Grota Samotnych Dusz p.5, Grota Samotnych Dusz p.4, Grota Samotnych Dusz p.3, Grota Samotnych Dusz p.2"
  146.         },
  147.         "Mi┼Ťki-s┼éabe": {
  148.             map: "Firnowa Grota p.1, Firnowa Grota p.2, Firnowa Grota p.2 s.1, Firnowa Grota p.2, Ska┼éy Mro┼║nych Spiew├│w, Lodowa Wyrwa p.2, Lodowa Wyrwa p.1 s.1, Ska┼éy Mro┼║nych Spiew├│w",
  149.             mobs_id: [34843, 34826]
  150.         },
  151.         "Mi┼Ťki-dobre": {
  152.             map: "Firnowa Grota p.1, Firnowa Grota p.2, Firnowa Grota p.2 s.1, Firnowa Grota p.2, Ska┼éy Mro┼║nych ┼Üpiew├│w, Lodowa Wyrwa p.2, Lodowa Wyrwa p.1 s.1, Lodowa Wyrwa p.1 s.2, Sala Lodowych Iglic, Lodowa Wyrwa p.1 s.2, Lodowa Wyrwa p.1 s.1, Ska┼éy Mro┼║nych ┼Üpiew├│w",
  153.             mobs_id: [34843, 34826]
  154.         },
  155.         "Piraci - dwie jaskinie": {
  156.             map: "Korsarska Nora - sala 1, Korsarska Nora - sala 2, Korsarska Nora - sala 3, Korsarska Nora - sala 4, Korsarska Nora p.1, Korsarska Nora - przej┼Ťcie 2, Korsarska Nora - przej┼Ťcie 3, Korsarska Nora p.2, Korsarska Nora - przej┼Ťcie 3, Korsarska Nora - przej┼Ťcie 2, Korsarska Nora - przej┼Ťcie 1, Korsarska Nora p.2, Korsarska Nora - przej┼Ťcie 1, Korsarska Nora - przej┼Ťcie 2, Korsarska Nora p.2, Korsarska Nora - przej┼Ťcie 2, Korsarska Nora p.1, Korsarska Nora - sala 4, Korsarska Nora - sala 3, Korsarska Nora - sala 2, Korsarska Nora - sala 1, Latarniane Wybrze┼╝e, Ukryta Grota Morskich Diab┼é├│w, Ukryta Grota Morskich Diab┼é├│w - arsena┼é, Ukryta Grota Morskich Diab┼é├│w, Ukryta Grota Morskich Diab┼é├│w - siedziba, Ukryta Grota Morskich Diab┼é├│w, Ukryta Grota Morskich Diab┼é├│w - magazyn, Ukryta Grota Morskich Diab┼é├│w, Ukryta Grota Morskich Diab┼é├│w - skarbiec, Ukryta Grota Morskich Diab┼é├│w, Latarniane Wybrze┼╝e"
  157.         },
  158.         "Mumie": {
  159.             map: "Oaza Siedmiu Wichr├│w, Ciche Rumowiska, Oaza Siedmiu Wichr├│w, Ruiny Pustynnych Burz"
  160.         },
  161.         "Magradit-s┼éabe": {
  162.             map: "Magradit, Magradit - G├│ra Ognia, Wulkan Politraki p.4, Wulkan Politraki p.3 - sala 1, Wulkan Politraki p.3 - sala 2, Wulkan Politraki p.3 - sala 1, Wulkan Politraki p.4, Magradit - G├│ra Ognia"
  163.         },
  164.         "Magradit-dobre": {
  165.             map: "Magradit, Magradit - G├│ra Ognia, Wulkan Politraki p.4, Wulkan Politraki p.3 - sala 1, Wulkan Politraki p.3 - sala 2, Wulkan Politraki p.2, Wulkan Politraki p.1, Wulkan Politraki p.2, Wulkan Politraki p.3 - sala 2, Wulkan Politraki p.3 - sala 1, Wulkan Politraki p.4, Magradit - G├│ra Ognia"
  166.         },
  167.         "Ku┼║nia Worundriela": {
  168.             map: "Ku┼║nia Worundriela p.7 - sala 3, Ku┼║nia Worundriela p.7 - sala 4"
  169.         },
  170.         "Berserkerzy": {
  171.             map: "Grobowiec Przodk├│w, Cenotaf Berserker├│w p.1, Grobowiec Przodk├│w, Czarcie Oparzeliska, Pustelnia Wojownika p.2, Pustelnia Wojownika p.1, Czarcie Oparzeliska, Szuwarowe Trz─Ösawisko, Opuszczona Twierdza, Szuwarowe Trz─Ösawisko, Czarcie Oparzeliska, Pustelnia Wojownika p.1, Pustelnia Wojownika p.2, Czarcie Oparzeliska, Grobowiec Przodk├│w, Cenotaf Berserker├│w p.1"
  172.         },
  173.         "Gobliny": {
  174.             map: "Przedsionek Z┼éych Goblin├│w, Gobli┼äskie Lokum, Przedsionek Z┼éych Goblin├│w, Lokum Z┼éych Goblin├│w"
  175.         },
  176.         "Kazamaty": {
  177.             map: "Nawiedzone Kazamaty p.1, Nawiedzone Kazamaty p.2, Nawiedzone Kazamaty p.3, Nawiedzone Kazamaty p.4, Nawiedzone Kazamaty p.5, Nawiedzone Kazamaty p.6, Nawiedzone Kazamaty p.5, Nawiedzone Kazamaty p.4, Nawiedzone Kazamaty p.3, Nawiedzone Kazamaty p.2"
  178.         },
  179.         "Duchy-s┼éabe": {
  180.             map: "Ruiny Tass Zhil, Przedsionek Grobowca, Ruiny Tass Zhil, B┼éota Sham Al",
  181.             ignore_grp: [18]
  182.         },
  183.         "Patrycjusze": {
  184.             map: "Krypty Bezsennych p .1, Krypty Bezsennych p .2, Krypty Bezsennych p .2 - przej┼Ťcie - sala 1, Krypty Bezsennych p .2 - przej┼Ťcie - sala 2, Krypty Bezsennych p .2, Krypty Bezsennych p .3, Krypty Bezsennych p .2, Krypty Bezsennych p .2 - przej┼Ťcie - sala 2, Krypty Bezsennych p .2 - przej┼Ťcie - sala 1, Krypty Bezsennych p .2"
  185.         },
  186.         "Sekta": {
  187.             map: "Przedsionek Kultu, Tajemnicza Siedziba, Mroczne Komnaty, Przera┼╝aj─ůce Sypialnie, Mroczne Komnaty, Tajemnicza Siedziba, Sala Tysi─ůca ┼Üwiec, Tajemnicza Siedziba, Lochy Kultu, Sale Rozdzierania, Lochy Kultu, Tajemnicza Siedziba"
  188.         },
  189.         Paj─ůki: {
  190.             map: "Dolina Paj─Öczych Korytarzy, Arachnitopia p.1, Arachnitopia p.2, Arachnitopia p.3, Arachnitopia p.4, Arachnitopia p.5, Arachnitopia p.4, Arachnitopia p.3, Arachnitopia p.2, Arachnitopia p.1"
  191.         },
  192.         "Zakorzeniony Lud": {
  193.             map: "Urwisko Zdrewnia┼éych, W─ůw├│z Zakorzenionych Dusz, Krzaczasta Grota p.2 - sala 2, Krzaczasta Grota p.2 - sala 3, Krzaczasta Grota p.2 - sala 1, Krzaczasta Grota p.2 - sala 3, Krzaczasta Grota p.1 - sala 3, Krzaczasta Grota p.1 - sala 2, Krzaczasta Grota p.1 - sala 1, W─ůw├│z Zakorzenionych Dusz, Regiel Zab┼é─ůkanych, ┼╣r├│d┼éo Zakorzenionego Ludu, Regiel Zab┼é─ůkanych, W─ůw├│z Zakorzenionych Dusz"
  194.         },
  195.         "Maddoki-ca┼ée": {
  196.             map: "Zawodz─ůce Kaskady, Skryty Azyl, Z┼éota D─ůbrowa, Ob┼Ťlizg┼ée Przej┼Ťcie - sala 1, Ob┼Ťlizg┼ée Przej┼Ťcie - sala 2, Z┼éota D─ůbrowa, Mglisty Las, Grota poro┼Ťni─Ötych Stalagmit├│w - sala wyj┼Ťciowa, Grota poro┼Ťni─Ötych Stalagmit├│w - przej┼Ťcie, Grota poro┼Ťni─Ötych Stalagmit├│w - sala boczna, Grota poro┼Ťni─Ötych, Stalagmit├│w - przej┼Ťcie, Grota poro┼Ťni─Ötych Stalagmit├│w - sala g┼é├│wna, Grota poro┼Ťni─Ötych Stalagmit├│w - przej┼Ťcie, Grota poro┼Ťni─Ötych Stalagmit├│w - sala wyj┼Ťciowa, Mglisty Las, Z┼éota D─ůbrowa, Dolina Pe┼ézn─ůcego Krzyku, Grz─Özawisko Rozpaczy, Zatrute Torfowiska, Gnij─ůce Topielisko, Bagna Umar┼éych, Gnij─ůce Topielisko, Zatrute Torfowiska, Grz─Özawisko Rozpaczy, Dolina Pe┼ézn─ůcego Krzyku, Z┼éota D─ůbrowa, Mglisty Las, Grota poro┼Ťni─Ötych Stalagmit├│w - sala wyj┼Ťciowa, Grota poro┼Ťni─Ötych Stalagmit├│w - przej┼Ťcie, Grota poro┼Ťni─Ötych Stalagmit├│w - sala g┼é├│wna, Grota poro┼Ťni─Ötych Stalagmit├│w - przej┼Ťcie, Grota poro┼Ťni─Ötych Stalagmit├│w - sala boczna, Grota poro┼Ťni─Ötych Stalagmit├│w - przej┼Ťcie, Grota poro┼Ťni─Ötych Stalagmit├│w - sala wyj┼Ťciowa, Mglisty Las, Z┼éota D─ůbrowa, Ob┼Ťlizg┼ée Przej┼Ťcie - sala 2, Ob┼Ťlizg┼ée Przej┼Ťcie - sala 1, Z┼éota D─ůbrowa, Skryty Azyl"
  197.         },
  198.         "Mahopteki-s┼éabe": {
  199.             map: "Altepetl Mahoptekan, Niecka Xiuh Atl, Dolina Chmur, Niecka Xiuh Atl, Altepetl Mahoptekan, Dolina Chmur, Z┼éota G├│ra p.1, Z┼éota G├│ra p.2, Z┼éota G├│ra p.3, Z┼éota G├│ra p.2, Z┼éota G├│ra p.1, Dolina Chmur, Altepetl Mahoptekan, Mictlan p.1, Mictlan p.2, Mictlan p.3, Mictlan p.4, Mictlan p.5, Mictlan p.4, Mictlan p.3, Mictlan p.2, Mictlan p.1"
  200.         },
  201.         "Mahopteki-dobre": {
  202.             map: "Altepetl Mahoptekan, Niecka Xiuh Atl, Dolina Chmur, Niecka Xiuh Atl, Altepetl Mahoptekan, Dolina Chmur, Z┼éota G├│ra p.1, Z┼éota G├│ra p.2, Z┼éota G├│ra p.3, Z┼éota G├│ra p.2, Z┼éota G├│ra p.1, Dolina Chmur, Altepetl Mahoptekan, Mictlan p.1, Mictlan p.2, Mictlan p.3, Mictlan p.4, Mictlan p.5, Mictlan p.6, Mictlan p.7, Mictlan p.8, Mictlan p.7, Mictlan p.6, Mictlan p.5, Mictlan p.4, Mictlan p.3, Mictlan p.2, Mictlan p.1"
  203.         },
  204.         "Pustynia Shaiharrud": {
  205.             map: "Pustynia Shaiharrud - wsch├│d, Jurta Nomadzka, Pustynia Shaiharrud - wsch├│d, Grota Po┼Ťwi─Öcenia, Pustynia Shaiharrud - wsch├│d, Namiot Pustynnych Smok├│w, Pustynia Shaiharrud - wsch├│d, Pustynia Shaiharrud - zach├│d, Jaskinia Piaskowej Burzy s.1, Jaskinia Piaskowej Burzy s.2, Namiot Naznaczonych, Pustynia Shaiharrud - zach├│d, Namiot Piechoty Pi┼éowej, Pustynia Shaiharrud - zach├│d, Jaskinia Szcz─Ök, Jurta Czcicieli, Pustynia Shaiharrud - zach├│d, Namiot Gwardii Smokoszcz─Ökich, Pustynia Shaiharrud - zach├│d, S─Öpiarnia, Pustynia Shaiharrud - zach├│d, Jaskinia Smoczej Paszczy p.1, Jaskinia Smoczej Paszczy p.2, Jaskinia Smoczej Paszczy p.1, Jurta Chaegda, Pustynia Shaiharrud - zach├│d, Smocze Skalisko, Jaskinia Odwagi, Smocze Skalisko, Urwisko Vapora, Smocze Skalisko, Pustynia Shaiharrud - zach├│d"
  206.         },
  207.         "Wodniki": {
  208.             map: "Moczary Rybiego Oka, Uroczysko Wodnika, ┼╣r├│d┼éo Narumi"
  209.         },
  210.         "Z┼éodziej": {
  211.             map: "Tuzmer, Dom Losso Minewita, Pok├│j Grety, Dom Losso Minewita, Tuzmer, Dom Seridiusza, Dom Seridiusza - piwnica, Dom Seridiusza, Tuzmer, Dom Aurusa, Tuzmer, Dom Horsfei, Tuzmer, Dom Telsara, Dom Telsara p.1, Dom Telsara, Tuzmer, Dom Mei Shang Lii, Dom Mei Shang Lii p.1, Dom Mei Shang Lii, Tuzmer, Tawerna pod Beczk─ů ┼Üledzi, Tawerna pod Beczk─ů ┼Üledzi p.1, Tawerna pod Beczk─ů ┼Üledzi - mieszkanie, Tawerna pod Beczk─ů ┼Üledzi p.1, Tawerna pod Beczk─ů ┼Üledzi, Tuzmer, Dom Erkora, Dom Erkora - piwnica, Dom Erkora, Tuzmer, Dom Senekjusza, Tuzmer, Kamienica Wernaidy, Tuzmer, Zajazd pod R├│┼╝─ů Wiatr├│w, Zajazd pod R├│┼╝─ů Wiatr├│w p.1, Zajazd pod R├│┼╝─ů Wiatr├│w p.2, Zajazd pod R├│┼╝─ů Wiatr├│w p.1, Zajazd pod R├│┼╝─ů Wiatr├│w, Tuzmer, Port Tuzmer, Gildia kupiecka, Gildia kupiecka - piwnica, Gildia kupiecka, Port Tuzmer, Dom Samiry, Dom Samiry - piwnica, Dom Samiry, Port Tuzmer, Dom Sinis p.1, Dom Sinis, Dom Sinis p.1, Port Tuzmer, Wioska Rybacka, Chata Kr├│la Rybaka, Chata Kr├│la Rybaka - piwnica, Chata Kr├│la Rybaka, Wioska Rybacka, Dom Rongo, Wioska Rybacka, Pusty dom, Wioska Rybacka, Port Tuzmer, Chata Ficjusza, Port Tuzmer, Chata Ficjusza, Port Tuzmer, Dom Parmina, Port Tuzmer, Dom Alfreda, Dom Alfreda p.1, Dom Alfreda, Port Tuzmer, Latarniane Wybrze┼╝e, Dom stajennego, Dom stajennego p.1, Dom stajennego, Latarniane Wybrze┼╝e, Stajnia, Latarniane Wybrze┼╝e, Port Tuzmer"
  212.         }
  213.     };
  214.     class s {
  215.         constructor(K, L, M, N, O, P) {
  216.             this.width = L, this.height = M, this.collisions = this.parseCollisions(K, L, M), this.additionalCollisions = P || {}, this.start = this.collisions[N.x][N.y], this.end = this.collisions[O.x][O.y], this.start.beginning = !0, this.start.g = 0, this.start.f = b(this.start, this.end), this.end.target = !0, this.end.g = 0, this.addNeighbours(), this.openSet = [], this.closedSet = [], this.openSet.push(this.start)
  217.         }
  218.         parseCollisions(K, L, M) {
  219.             const N = Array(L);
  220.             for (let O = 0; O < L; O++) {
  221.                 N[O] = Array(M);
  222.                 for (let P = 0; P < M; P++) N[O][P] = new t(O, P, "1" === K.charAt(O + P * L))
  223.             }
  224.             return N
  225.         }
  226.         addNeighbours() {
  227.             for (let K = 0; K < this.width; K++)
  228.                 for (let L = 0; L < this.height; L++) this.addPointNeighbours(this.collisions[K][L])
  229.         }
  230.         addPointNeighbours(K) {
  231.             const L = K.x,
  232.                 M = K.y,
  233.                 N = [];
  234.             0 < L && N.push(this.collisions[L - 1][M]), 0 < M && N.push(this.collisions[L][M - 1]), L < this.width - 1 && N.push(this.collisions[L + 1][M]), M < this.height - 1 && N.push(this.collisions[L][M + 1]), K.neighbours = N
  235.         }
  236.         anotherFindPath() {
  237.             for (; 0 < this.openSet.length;) {
  238.                 let K = this.getLowestF(),
  239.                     L = this.openSet[K];
  240.                 if (L === this.end) return this.reconstructPath();
  241.                 this.openSet.splice(K, 1), this.closedSet.push(L);
  242.                 for (const M of L.neighbours)
  243.                     if (this.closedSet.includes(M)) continue;
  244.                     else {
  245.                         const N = L.g + 1;
  246.                         let O = !1;
  247.                         this.end != this.collisions[M.x][M.y] && (this.openSet.includes(M) || M.collision || this.additionalCollisions[M.x + 256 * M.y]) ? N < M.g && !M.collision && (O = !0) : (this.openSet.push(M), M.h = b(M, this.end), O = !0), O && (M.previous = L, M.g = N, M.f = M.g + M.h)
  248.                     }
  249.             }
  250.         }
  251.         getLowestF() {
  252.             let K = 0;
  253.             for (let L = 0; L < this.openSet.length; L++) this.openSet[L].f < this.openSet[K].f && (K = L);
  254.             return K
  255.         }
  256.         reconstructPath() {
  257.             const K = [];
  258.             for (let L = this.end; L !== this.start;) K.push(L), L = L.previous;
  259.             return K
  260.         }
  261.     }
  262.     class t {
  263.         constructor(K, L, M) {
  264.             this.x = K, this.y = L, this.collision = M, this.g = 1e7, this.f = 1e7, this.neighbours = [], this.beginning = !1, this.target = !1, this.previous = void 0
  265.         }
  266.     }
  267.     localStorage.getItem(`bot_lastmaps`) || localStorage.setItem(`bot_lastmaps`, JSON.stringify([]));
  268.     let v = this,
  269.         z = !1,
  270.         A = !1,
  271.         B, C, D, E = 0,
  272.         F = !1,
  273.         G = !1;
  274.     g.loadQueue.push({
  275.         fun: () => {
  276.             G = !0
  277.         }
  278.     });
  279.     let H = !0,
  280.         I = [];
  281.     setInterval(function() {
  282.         B && (B = void 0)
  283.     }, 4e3);
  284.     let J;
  285.     this.PI = parseInput, parseInput = function(K) {
  286.         let L = v.PI.apply(this, arguments);
  287.         if (!g.battle && !g.dead && G) {
  288.             if (!B && !F) {
  289.                 if (B = v.findBestMob(), !B && localStorage.getItem(`bot_expowiska`)) {
  290.                     let M, N = 9999;
  291.                     if (r[localStorage.getItem(`bot_expowiska`)].mobs_id) {
  292.                         let O = r[localStorage.getItem(`bot_expowiska`)].mobs_id;
  293.                         for (let P in O) g.npc[O[P]] && (M = d(g.npc[O[P]].x, g.npc[O[P]].y).length, M < N && (N = M, B = O[P]))
  294.                     }
  295.                 }
  296.                 A = !1, z = !1
  297.             }
  298.             if (B) {
  299.                 let M = g.npc[B];
  300.                 if (!M) return B = void 0, L;
  301.                 2 > Math.abs(hero.x - M.x) && 2 > Math.abs(hero.y - M.y) && !z ? (z = !0, _g(`fight&a=attack&ff=1&id=-${M.id}`, function(N) {
  302.                     N.alert && `Przeciwnik walczy ju┼╝ z kim┼Ť innym` == N.alert && (f(M.id), B = void 0)
  303.                 }), setTimeout(function() {
  304.                     B = void 0
  305.                 }, 500)) : !A && !z && (e(M.x, M.y), A = !0)
  306.             } else 0 < document.querySelector(`#bot_maps`).value.length && (J = v.findBestGw(), J && !F && (hero.x == J.x && hero.y == J.y ? _g(`walk`) : (e(J.x, J.y), F = !0, setTimeout(function() {
  307.                 F = !1
  308.             }, 2e3))));
  309.             D == hero.y && C == C ? (E++, 4 < E && (k(), E = 0, B = void 0, J = void 0, F = !1)) : (D = hero.y, C = hero.x, E = 0)
  310.         }
  311.         if (g.dead && H && (H = !1, l(`Pad┼éem na ${hero.lvl}${hero.prof} - ${m()}`), document.location.href = `http://margonem.pl`), K.hasOwnProperty("f") && 1 == K.f.init && 0 < hero.clan && !Object.keys(K.f.w).some(M => 0 > M)) {
  312.             const M = [],
  313.                 N = [];
  314.             for (let O of Object.values(K.f.w)) 1 == O.team && M.push(`${O.name} ${O.lvl}${O.prof}`) || N.push(`${O.name} ${O.lvl}${O.prof} `);
  315.             if (2 == K.f.myteam && -1 < document.querySelector(`#bot_maps`).value.indexOf(map.name)) {
  316.                 const O = `Zosta┼éem zaatakowany na mapie ${map.name} o godzinie ${m()}.\n${M.join(", ")} vs ${N.join(", ")}`;
  317.                 l(O)
  318.             }
  319.         }
  320.         return L
  321.     }, this.findBestMob = function() {
  322.         let K, M, L = 9999;
  323.         for (let N in g.npc) {
  324.             let P, Q, R, O = g.npc[N];
  325.             if (-1 < document.querySelector(`#bot_mobs`).value.indexOf(`-`) && (P = document.querySelector(`#bot_mobs`).value.split(`-`), Q = parseInt(P[0]), R = parseInt(P[1])), (2 == O.type || 3 == O.type) && P && O.lvl <= R && O.lvl >= Q && o(O.id) && !I.includes(O.id) && 20 > O.wt) {
  326.                 if (K = d(O.x, O.y), void 0 == K) continue;
  327.                 K.length < L && (L = K.length, M = O.id)
  328.             }
  329.         }
  330.         return M
  331.     }, localStorage.getItem(`alksjd`) || localStorage.setItem(`alksjd`, 0), this.findBestGw = function() {
  332.         let K, L = document.querySelector(`#bot_maps`).value.split(`, `),
  333.             M = parseInt(localStorage.getItem(`alksjd`));
  334.         for (let N in g.townname)
  335.             if (L[M] == g.townname[N]) {
  336.                 let O = g.gwIds[N].split(`.`);
  337.                 return K = {
  338.                     x: O[0],
  339.                     y: O[1]
  340.                 }, K
  341.             } M++, M > L.length && (M = 0), localStorage.setItem(`alksjd`, parseInt(M))
  342.     }, this.initHTML = function() {
  343.         if (!localStorage.getItem(`bot_position`)) {
  344.             localStorage.setItem(`bot_position`, JSON.stringify({
  345.                 x: 0,
  346.                 y: 0
  347.             }))
  348.         }
  349.         let K = JSON.parse(localStorage.getItem(`bot_position`)),
  350.             L = document.createElement(`div`);
  351.         L.id = `bot_box`, L.setAttribute(`tip`, `Z┼éap i przenie┼Ť :)`);
  352.         let M = document.createElement(`input`);
  353.         M.type = `text`, M.id = `bot_mobs`, M.classList.add(`bot_inputs`), M.setAttribute(`tip`, `Wprowad┼║ lvl mobk├│w w postaci np. '50-70'`), L.appendChild(M);
  354.         let N = document.createElement(`input`);
  355.         N.type = `text`, N.id = `bot_maps`, N.classList.add(`bot_inputs`), N.setAttribute(`tip`, `Wprowad┼║ nazwy map`), L.appendChild(N);
  356.         let O = document.createElement(`select`);
  357.         O.id = `bot_list`, O.classList.add(`bot_inputs`), O.setAttribute(`tip`, `Wybierz expowisko, aby dodatek wpisa┼é mapy za Ciebie`);
  358.         for (let S, R = 0; R < Object.keys(r).length; R++) S = document.createElement(`option`), S.setAttribute(`value`, Object.keys(r)[R]), S.text = Object.keys(r)[R], O.appendChild(S);
  359.         L.appendChild(O), document.body.appendChild(L);
  360.         let P = document.createElement(`style`);
  361.         P.type = `text/css`;
  362.         let Q = `
  363.             #bot_box {
  364.                position: absolute;
  365.                border: 4px solid blue;
  366.               padding: 5px;
  367.               text-align: center;
  368.                background: black;
  369.                cursor: grab;
  370.                left: ${K.x}px;
  371.                top: ${K.y}px;
  372.               width: auto;
  373.                height: auto;
  374.                z-index: 390;
  375.              }
  376.             .bot_inputs {
  377.                 -webkit-box-sizing: content-box;
  378.                 -moz-box-sizing: content-box;
  379.                 box-sizing: content-box;
  380.                 margin: 0 auto;
  381.                 margin-bottom: 3px;
  382.                 padding: 2px;
  383.                 cursor: pointer;
  384.                 border: 4px solid #f76f6f;
  385.                 -webkit-border-radius: 5px;
  386.                 border-radius: 5px;
  387.                 font: normal 16px/normal "Times New Roman", Times, serif;
  388.                 color: rgba(0,142,198,1);
  389.                 -o-text-overflow: clip;
  390.                 text-overflow: clip;
  391.                 background: rgba(234,227,227,1);
  392.                 -webkit-box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.2) inset;
  393.                 box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.2) inset;
  394.                 text-shadow: 1px 1px 0 rgba(255,255,255,0.66) ;
  395.                 display: block;
  396.               }
  397.               input[id=bot_mobs] {
  398.                   text-align: center;
  399.               }
  400.               #bot_blessingbox {
  401.                   border: 1px solid red;
  402.                   background: gray;
  403.                   height: 32px;
  404.                   width: 32px;
  405.                   margin: 0 auto;
  406.               }
  407.         `;
  408.         P.appendChild(document.createTextNode(Q)), document.head.appendChild(P), localStorage.getItem(`bot_mobs`) && (M.value = localStorage.getItem(`bot_mobs`)), localStorage.getItem(`bot_maps`) && (N.value = localStorage.getItem(`bot_maps`)), localStorage.getItem(`bot_expowiska`) && r[localStorage.getItem(`bot_expowiska`)] && (O.value = localStorage.getItem(`bot_expowiska`)), M.addEventListener(`keyup`, () => {
  409.             localStorage.setItem(`bot_mobs`, M.value)
  410.         }), N.addEventListener(`keyup`, () => {
  411.             localStorage.setItem(`bot_maps`, N.value)
  412.         }), O.addEventListener(`change`, () => {
  413.             localStorage.setItem(`bot_expowiska`, O.value), N.value = r[O.value].map, localStorage.setItem(`bot_maps`, N.value), localStorage.setItem(`alksjd`, 0), message(`Zapisano expowisko "${O.value}"`)
  414.         }), $(`#bot_box`).draggable({
  415.             stop: () => {
  416.                 let R = {
  417.                     x: parseInt(document.querySelector(`#bot_box`).style.left),
  418.                     y: parseInt(document.querySelector(`#bot_box`).style.top)
  419.                 };
  420.                 localStorage.setItem(`bot_position`, JSON.stringify(R)), message(`Zapisano pozycj─Ö`)
  421.             }
  422.         })
  423.     }, this.initHTML()
  424. };