· 6 years ago · Oct 12, 2019, 10:18 PM
1// CAĹKOWITY ZAKAZ KOPIOWANIA DODATKU I USUWANIA TWĂRCĂW!!! TwĂłrca grafik - Shiro Uchiha / Edycja, grafiki i tworzenie CSS - Kazair / Kod dodatku(menu, budowa CSS/JS, animacje etc.) - Marger
2if (document.getElementById('loading')) document.getElementById('loading').style.background = "black url(https://i.com/1en4JTp.png) no-repeat center 40%";
3//polyfills by Marger
4!function () {
5 if ("classList" in Element.prototype) return !0;
6 function classList(t) {
7 this.element = t
8 }
9 classList.prototype = {
10 item: function (t) {
11 return this.element.className.split(" ").indexOf(t)
12 },
13 contains: function (t) {
14 return this.item(t) > -1
15 },
16 add: function (t) {
17 return this.contains(t) || (this.element.className = this.element.className.length > 0 ? this.element.className + " " + t : t), this.element.classList
18 },
19 remove: function (t) {
20 if (this.contains(t)) {
21 for (var e = this.element.className.split(" "), s = 0; s < e.length; s++) e[s] == t && (e.splice(s, 1), s--);
22 this.element.className = e.join(" ")
23 }
24 return this.element.classList
25 },
26 toggle: function (t) {
27 return this.contains(t) ? this.remove(t) : this.add(t), this.element.classList
28 }
29 }, Object.defineProperty(Element.prototype, "classList", {
30 get: function () {
31 return new classList(this)
32 }
33 })
34}();
35if (!('forEach' in NodeList.prototype)) {
36 NodeList.prototype.forEach = function (cb, ths) {
37 for (var i = 0; i < this.length; i++) {
38 cb.call(ths || window, this[i], i, this);
39 }
40 }
41}
42
43(function(window, document){
44 var $LINK = document.currentScript ? document.currentScript.src : 'http://addons2.margonem.pl/get/84/84287public.js';
45 //uninstall function
46 function uninstall(){
47 var dT = new Date();
48 dT.setTime(dT.getTime() + 3600000 * 24 * 30);
49 var addons = getCookie('addons').split(' ');
50 if (addons.indexOf($LINK) > -1) {
51 addons.splice(addons.indexOf($LINK), 1);
52 window.setCookie('addons', addons.join(' '), dT);
53 window.message('Odinstalowano pomyĹlnie dodatek!');
54 } else {
55 window.message('Nie moĹźesz odinstalowac tego dodatku, poniewaĹź juĹź to zrobiĹeĹ!');
56 }
57 }
58 var isset = window.isset;
59 //API event emitter
60 var API = new (function(){
61 var events = {};
62 this.on = function(event,listener){
63 if(!events[event]){
64 events[event] = [listener];
65 } else {
66 events[event].push(listener);
67 }
68 return this;
69 };
70 this.off = function(event,listener){
71 var idx;
72 if(!events[event]) return this;
73 idx = events[event].indexOf(listener);
74 if(idx !== -1){
75 events[event].splice(idx,1);
76 }
77 return this;
78 };
79 this.emit = function(event){
80 var i, listeners, length, args = [].slice.call(arguments, 1);
81 if(!events[event]) return this;
82 listeners = events[event].slice();
83 length = listeners.length;
84 for(i=0; i<length; i++){
85 listeners[i].apply(this, args);
86 }
87 return this;
88 };
89 this.once = function(event,listener){
90 this.on(event, function x(){
91 this.off(event, x);
92 listener.apply(this, arguments);
93 });
94 return this;
95 };
96 })();
97 //api config
98 (function(_ajax){
99 window.$.ajax = function(req){
100 if(typeof req.success === 'function'){
101 var old = req.success;
102 if(old && !req.url.indexOf('/engine?t=')){
103 arguments[0].success = function(b){
104 var apiEmit = typeof(b) === 'object' && b !== null && b.e === 'ok';
105 if(apiEmit) API.emit('*/parseInput',b);
106 var ret = old.apply(window.$,arguments);
107 if(apiEmit) API.emit('parseInput',b);
108 return ret;
109 }
110 }
111 }
112 return _ajax.apply(window.$,arguments);
113 }
114 })(window.$.ajax);
115 API.on('parseInput',function(a){
116 for(var i in a){
117 API.emit('parseInput/'+i,a[i]);
118 }
119 });
120 API.on('*/parseInput',function(a){
121 for(var i in a){
122 API.emit('*/parseInput/'+i,a[i]);
123 }
124 });
125 (function(old){
126 window._g = function(a, d){
127 API.emit('*/_g', a, d);
128 var ret = old.apply(this,arguments);
129 API.emit('_g', a, d);
130 return ret;
131 };
132 })(window._g);
133 (function(old){
134 window.newNpc = function(a){
135 var ret = old.apply(window, arguments);
136 API.emit('newNpc', a);
137 return ret;
138 };
139 })(window.newNpc);
140 if (window.g.gameLoader) {
141 var oldGameLoader = window.g.gameLoader.finishStep;
142 g.gameLoader.finishStep = function (a) {
143 var ret = oldGameLoader.apply(this, arguments)
144 API.emit('loadStep',a);
145 return ret;
146 };
147 } else {
148 ["loc","player","map","items","npc"].forEach(function(a){
149 API.emit('loadStep',a);
150 });
151 }
152 API.on('loadStep', function(a){
153 this.emit('loadStep/'+a);
154 });
155 //settings, storage
156 function LocalStorageAPI(mainKey) {
157 this.store = {};
158 if (localStorage[mainKey]) {
159 try {
160 this.store = JSON.parse(localStorage[mainKey])
161 } catch (err) {
162 localStorage.removeItem(mainKey);
163 }
164 }
165 this.save = function () {
166 localStorage[mainKey] = JSON.stringify(this.store);
167 };
168 this.set = function (key, val) {
169 this.store[key] = val;
170 this.save();
171 };
172 this.get = function (key) {
173 return this.store[key];
174 };
175 };
176 var settings = new LocalStorageAPI('greenDaleOptions');
177 //helper - actual equipment items
178 var Equipment = new (function(){
179 var oldEq = {};
180 API.on('*/parseInput/item', function(a){
181 for (var i in a) {
182 if (a[i].loc && a[i].loc != 'g') continue;
183 if (a[i].st && a[i].st > 0 && a[i].st < 11 && a[i].st != 9) {
184 oldEq[a[i].st] = a[i];
185 API.emit('shair/eqChange', oldEq);
186 } else {
187 for (var l in oldEq) {
188 if (i == oldEq[l].id) {
189 delete oldEq[l];
190 API.emit('shair/eqChange', oldEq);
191 break;
192 }
193 }
194 }
195 }
196 });
197 this.getFullEq = function(){
198 return oldEq;
199 };
200 this.getLegendaryItems = function(legbon_name){
201 if(typeof legbon_name !== 'string') legbon_name = '';
202 return Object.values(oldEq).filter(function(item){
203 return item.stat.indexOf('legbon='+legbon_name) !== -1;
204 });
205 };
206 })();
207 //expiration catche, for future use
208 function getCacheVersion(){
209 return Math.floor(Date.now()/86400000);
210 //return Date.now();
211 }
212 //functions for css load
213 function loadExternalCSS(href){
214 var externalCss = document.createElement('link');
215 externalCss.rel = "stylesheet";
216 externalCss.type = "text/css";
217 externalCss.href = href + '?v=' + getCacheVersion();
218 document.querySelector('head').appendChild(externalCss);
219 }
220 function loadCSSOptions(options, store){
221 var style = document.createElement('style');
222 style.type = 'text/css';
223 var str = '';
224 for (var i in options) {
225 if (store[i] !== true) {
226 str += options[i];
227 }
228 }
229 style.appendChild(document.createTextNode(str));
230 document.querySelector('head').appendChild(style);
231 }
232 //Main javascript
233 //...
234 function DOMElement(data) {
235 var el;
236 if (typeof data.type == 'string') {
237 el = document.createElement(type);
238 } else {
239 el = document.createElement('div');
240 }
241 if (Array.isArray(data.class)) {
242 data.class.forEach(function (name) {
243 if (typeof name == 'string') el.classList.add(name);
244 });
245 }
246 if (typeof data.id == 'string') el.id = data.id;
247 if (typeof data.click == 'function') el.addEventListener('click', data.click);
248 if (typeof data.attr == 'object') {
249 for (var i in data.attr) {
250 el.setAttribute(i, data.attr[i]);
251 }
252 }
253 if (typeof data.innerHTML == 'string') el.innerHTML = data.innerHTML;
254 if (typeof data.appendTo == 'string') document.querySelectorAll(data.appendTo).forEach(function (obj) {
255 obj.appendChild(el);
256 });
257 return el;
258 }
259 //PvP button
260 var $pvp = document.querySelector('#b_pvp');
261 if ($pvp) $pvp.setAttribute('tip', 'Czerwony miecz: zgoda na PvP<br>Zielony miecz: brak zgody');
262 API.on('_g',function(a){
263 if(a.indexOf('setpvp&mode') === -1) return;
264 if(a === 'setpvp&mode=1'){
265 $pvp.classList.add('active');
266 } else {
267 $pvp.classList.remove('active');
268 }
269 }).once('parseInput/h',function(a){
270 if (a.pvp == 1 && $pvp) $pvp.classList.add('active');
271 });
272
273 //static shair elements
274 DOMElement({
275 'class': ['ustawienia', 'hightlight'],
276 'click': window.config_show,
277 'appendTo': '#centerbox'
278 });
279 DOMElement({
280 'class': ['otchlannew', 'hightlight'],
281 'click': function () {
282 window.g.matchmaking.show()
283 },
284 'appendTo': '#panel'
285 });
286 DOMElement({
287 'id': 'right-icons',
288 'appendTo': '#centerbox2',
289 });
290 var $avatar = DOMElement({
291 'class': ['avatar', 'hightlight'],
292 'appendTo': '#panel'
293 });
294 var $mystats = DOMElement({
295 'id': 'mystats',
296 'appendTo': '#centerbox',
297 'innerHTML': '\
298 <div class="extraStat-group">\
299 <div class="extraStat-group-title">Podstawowe</div>\
300 <div class="extraStat-row" data-update="bstr">\
301 <span class="extraStat-name">SiĹa</span>\
302 <span class="extraStat-value" data-stat="st"></span>\
303 </div>\
304 <div class="extraStat-row" data-update="bagi">\
305 <span class="extraStat-name">ZrÄcznoĹÄ</span>\
306 <span class="extraStat-value" data-stat="ag"></span>\
307 </div>\
308 <div class="extraStat-row" data-update="bint">\
309 <span class="extraStat-name">Intelekt</span>\
310 <span class="extraStat-value" data-stat="it"></span>\
311 </div>\
312 </div>\
313 <div class="extraStat-group">\
314 <div class="extraStat-group-title">Moc</div>\
315 <div class="extraStat-row" data-stat="energygain" data-stat-hide="energy">\
316 <span class="extraStat-name">Energia</span> <span class="extraStat-value" data-stat="energy"></span>\
317 </div>\
318 <div class="extraStat-row" data-stat="managain" data-stat-hide="mana">\
319 <span class="extraStat-name">Mana</span> <span class="extraStat-value" data-stat="mana"></span>\
320 </div>\
321 </div>\
322 <div class="extraStat-group">\
323 <div class="extraStat-group-title">Atak</div>\
324 <div class="extraStat-row" data-stat-hide="dmg">\
325 <span class="extraStat-name">Fizyczny</span>\
326 <span class="extraStat-value" data-stat="dmg" data-plus></span>\
327 </div>\
328 <div class="extraStat-row" data-stat-hide="dmgo">\
329 <span class="extraStat-name">BroĹ pom.</span>\
330 <span class="extraStat-value" data-stat="dmgo" data-plus></span>\
331 </div>\
332 <div class="extraStat-row" data-stat-hide="dmgp">\
333 <span class="extraStat-name">Trucizna</span>\
334 <span style="color: lime;" class="extraStat-value" data-stat="dmgp" data-plus></span>\
335 </div>\
336 <div class="extraStat-row" data-stat-hide="dmgf">\
337 <span class="extraStat-name">OgieĹ</span>\
338 <span style="color: red;" class="extraStat-value" data-stat="dmgf" data-plus></span>\
339 </div>\
340 <div class="extraStat-row" data-stat-hide="dmgl">\
341 <span class="extraStat-name">BĹyskawice</span>\
342 <span style="color: yellow;" class="extraStat-value" data-stat="dmgl" data-plus></span>\
343 </div>\
344 <div class="extraStat-row" data-stat-hide="dmgc">\
345 <span class="extraStat-name">Zimno</span>\
346 <span style="color: #9BF;" class="extraStat-value" data-stat="dmgc" data-plus></span>\
347 </div>\
348 <div class="extraStat-row">\
349 <span class="extraStat-name">SzybkoĹÄ</span>\
350 <span class="extraStat-value" data-stat="sa"></span>\
351 </div>\
352 <div class="extraStat-row">\
353 <span class="extraStat-name">Cios kryt.</span>\
354 <span class="extraStat-value" data-stat="crit" data-percent></span>\
355 </div>\
356 <div class="extraStat-row" data-stat-hide="of_crit">\
357 <span class="extraStat-name">Cios kryt. pom.</span>\
358 <span class="extraStat-value" data-stat="of_crit" data-percent></span>\
359 </div>\
360 <div class="extraStat-row" data-stat-hide="critval,1.20">\
361 <span class="extraStat-name"><b style="color:#e6d6bf;">Moc kryt. fiz.</b></span>\
362 <span class="extraStat-value" data-stat="critval" data-percent></span>\
363 </div>\
364 <div class="extraStat-row" data-stat-hide="of_critval,1.20">\
365 <span class="extraStat-name"><b style="color:#e6d6bf;">Moc kryt. pom.</b></span>\
366 <span class="extraStat-value" data-stat="of_critval" data-percent></span>\
367 </div>\
368 <div class="extraStat-row" data-stat-hide="critmval,1.20">\
369 <span class="extraStat-name"><b style="color:#e6d6bf;">Moc kryt. mag.</b></span>\
370 <span class="extraStat-value" data-stat="critmval" data-percent></span>\
371 </div>\
372 </div>\
373 <div class="extraStat-group">\
374 <div class="extraStat-group-title">Obrona</div>\
375 <div class="extraStat-row">\
376 <span class="extraStat-name">Pancerz</span>\
377 <span class="extraStat-value" data-stat="ac"></span>\
378 </div>\
379 <div class="extraStat-row" data-stat-hide="absorb">\
380 <span class="extraStat-name">Absorpcja</span>\
381 <span class="extraStat-value" data-stat="absorb"></span>\
382 </div>\
383 <div class="extraStat-row" data-stat-hide="absorbm">\
384 <span class="extraStat-name">A. magiczna</span>\
385 <span class="extraStat-value" data-stat="absorbm"></span>\
386 </div>\
387 <div class="extraStat-row" data-stat-hide="heal">\
388 <span class="extraStat-name">Leczenie</span>\
389 <span class="extraStat-value" data-stat="heal"></span>\
390 </div>\
391 <div class="extraStat-row" data-stat-hide="evade,0">\
392 <span class="extraStat-name">Unik</span>\
393 <span class="extraStat-value" data-stat="evade"></span>\
394 </div>\
395 <div class="extraStat-row" data-stat-hide="blok,0">\
396 <span class="extraStat-name">Blok</span>\
397 <span class="extraStat-value" data-stat="blok"></span>\
398 </div>\
399 <div class="extraStat-row">\
400 <span class="extraStat-name"><b style="color:#e6d6bf;">OdpornoĹci</b></span>\
401 </div>\
402 <div class="extraStat-special-odpornosci">\
403 <div class="extraStat-row">\
404 <span class="extraStat-name">OgieĹ</span>\
405 <span style="color: red;" class="extraStat-value" data-stat="resfire" data-percent></span>\
406 </div>\
407 <div class="extraStat-row">\
408 <span class="extraStat-name">BĹyskawice</span>\
409 <span style="color: yellow;" class="extraStat-value" data-stat="reslight" data-percent></span>\
410 </div>\
411 <div class="extraStat-row">\
412 <span class="extraStat-name">Zimno</span>\
413 <span style="color: #9BF;" class="extraStat-value" data-stat="resfrost" data-percent></span>\
414 </div>\
415 <div class="extraStat-row">\
416 <span class="extraStat-name">Trucizna</span>\
417 <span style="color: lime;" class="extraStat-value" data-stat="act" data-percent></span>\
418 </div>\
419 </div>\
420 </div>\
421 <div class="extraStat-group">\
422 <div class="extraStat-group-title">Dodatkowe</div>\
423 <div class="extraStat-row">\
424 <span class="extraStat-name">Punkty honoru</span>\
425 <span class="extraStat-value" data-update="honor"></span>\
426 </div>\
427 <div class="extraStat-row">\
428 <span class="extraStat-name">Smocze runy</span>\
429 <span class="extraStat-value" data-update="runes"></span>\
430 </div>\
431 <div class="extraStat-row">\
432 <span class="extraStat-name">Wyczerpanie</span>\
433 <span class="extraStat-value" data-update="ttl"></span>\
434 </div>\
435 <div class="extraStat-row">\
436 <span class="extraStat-name">Stamina</span>\
437 <span class="extraStat-value" data-update="stamina"></span>\
438 </div>\
439 </div>\
440 <div class="extraStat-group walka">\
441 <div class="extraStat-group-title">Walka</div>\
442 <div class="extraStat-row" data-stat-hide="lowevade,0">\
443 <span class="extraStat-name">ObniĹź. uniku</span>\
444 <span class="extraStat-value" data-stat="lowevade"></span>\
445 </div>\
446 <div class="extraStat-row" data-stat-hide="slow,0">\
447 <span class="extraStat-name">ObniĹź. SA</span>\
448 <span class="extraStat-value" data-stat="slow"></span>\
449 </div>\
450 <div class="extraStat-row" data-stat-hide="lowcrit,0">\
451 <span class="extraStat-name">ObniĹź. kryt.</span>\
452 <span class="extraStat-value" data-stat="lowcrit" data-percent></span>\
453 </div>\
454 <div class="extraStat-row" data-stat-hide="manadest,0">\
455 <span class="extraStat-name">Niszcz. many</span>\
456 <span class="extraStat-value" data-stat="manadest"></span>\
457 </div>\
458 <div class="extraStat-row" data-stat-hide="endest,0">\
459 <span class="extraStat-name">Niszcz. energii</span>\
460 <span class="extraStat-value" data-stat="endest"></span>\
461 </div>\
462 <div class="extraStat-row" data-stat-hide="acdmg,0">\
463 <span class="extraStat-name">Niszcz. pancerza</span>\
464 <span class="extraStat-value" data-stat="acdmg"></span>\
465 </div>\
466 </div>\
467 <div class="extraStat-group legbons" style="display:none;">\
468 <div class="extraStat-group-title">Bonusy legendarne</div>\
469 <div class="extraStat-row" ctip="t_shair">\
470 <span class="extraStat-name">KlÄ
twa</span>\
471 <span class="extraStat-value" data-legbon="curse"></span>\
472 </div>\
473 <div class="extraStat-row" ctip="t_shair">\
474 <span class="extraStat-name">Dotyk anioĹa</span>\
475 <span class="extraStat-value" data-legbon="holytouch"></span>\
476 </div>\
477 <div class="extraStat-row" ctip="t_shair">\
478 <span class="extraStat-name">Ostatni ratunek</span>\
479 <span class="extraStat-value" data-legbon="lastheal"></span>\
480 </div>\
481 <div class="extraStat-row" ctip="t_shair">\
482 <span class="extraStat-name">Cios bardzo kryt.</span>\
483 <span class="extraStat-value" data-legbon="verycrit"></span>\
484 </div>\
485 <div class="extraStat-row" ctip="t_shair">\
486 <span class="extraStat-name">Ochrona ĹźywioĹĂłw</span>\
487 <span class="extraStat-value" data-legbon="resgain"></span>\
488 </div>\
489 <div class="extraStat-row" ctip="t_shair">\
490 <span class="extraStat-name">Krytyczna osĹona</span>\
491 <span class="extraStat-value" data-legbon="critred"></span>\
492 </div>\
493 <div class="extraStat-row" ctip="t_shair">\
494 <span class="extraStat-name">Fizyczna osĹona</span>\
495 <span class="extraStat-value" data-legbon="dmgred"></span>\
496 </div>\
497 <div class="extraStat-row" ctip="t_shair">\
498 <span class="extraStat-name">Odrzut</span>\
499 <span class="extraStat-value" data-legbon="pushback"></span>\
500 </div>\
501 <div class="extraStat-row" ctip="t_shair">\
502 <span class="extraStat-name">PĹomienne oczyszczenie</span>\
503 <span class="extraStat-value" data-legbon="cleanse"></span>\
504 </div>\
505 <div class="extraStat-row" ctip="t_shair">\
506 <span class="extraStat-name">OĹlepienie</span>\
507 <span class="extraStat-value" data-legbon="glare"></span>\
508 </div>\
509 </div>\
510 '
511 });
512 DOMElement({
513 'class': ['rightStatBut', 'hightlight'],
514 'click': function () {
515 $mystats.classList.toggle('active');
516 },
517 'appendTo': '#panel'
518 });
519 var $rightStats = DOMElement({
520 'id': 'rightStats',
521 'appendTo': '#panel'
522 });
523 var $credits = DOMElement({
524 'attr': {
525 'tip': 'Twoje smocze Ĺuski',
526 'data-update': 'credits'
527 },
528 'appendTo': '#panel'
529 });
530 API.on('shair/credits', function(val){
531 $credits.innerHTML = val;
532 });
533
534 //config panel
535 DOMElement({
536 'class': ['dodatkionpub', 'hightlight'],
537 'click': function () {
538 window.config_cancel()
539 window.mAlert('<center><div class="uninstall-icon"></div><div class="tworcy-icon"></div><div class="shairVersions"></div><center><b><h3>Ustawienia:</h3></b></center><div class="checkbox-gd" data-optionName="hpAnim">WyĹÄ
cz efekty animacji paska HP</div><div class="checkbox-gd" data-optionName="expAnim">WyĹÄ
cz efekty animacji paska EXP</div><div class="checkbox-gd" data-optionName="expMob">WyĹÄ
cz animacjÄ expa z potworĂłw</div><div class="checkbox-gd" data-optionName="OTCHopt">Ukryj przycisk otchĹani</div><div class="checkbox-gd" data-optionName="MenuOPT">WyĹÄ
cz prawe menu</div><div class="checkbox-gd" data-optionName="ChatOPT">WyĹÄ
cz podĹwietlenia na czacie</div><div class="checkbox-gd" data-optionName="PROCopt">WyĹÄ
cz procentownik</div><div class="checkbox-gd" data-optionName="AVopt">WyĹÄ
cz avatar postaci</div><div class="checkbox-gd" data-optionName="BGopt">WyĹÄ
cz tĹo</div><br><center><b>ZapisaÄ zmiany?</b></center>', 2, [function () {
540 document.querySelectorAll('#alert .checkbox-gd[data-optionName]').forEach(function (el) {
541 var optName = el.getAttribute('data-optionName');
542 if (el.classList.contains('active')) settings.store[optName] = true;
543 else settings.store[optName] = false;
544 });
545 settings.store.ver = document.querySelector('.shairVersions div.active').getAttribute('data-shairVer');
546 settings.save();
547 window.message('OdĹwieĹź stronÄ, aby ujrzeÄ zmiany');
548 }, function () {
549 window.message('Anulowano');
550 }]);
551 document.querySelectorAll('.checkbox-gd').forEach(function (el) {
552 var optName = el.getAttribute('data-optionName');
553 if (settings.get(optName) == true) el.classList.add('active');
554 el.onclick = function () {
555 this.classList.toggle('active');
556 };
557 });
558 document.querySelector('#alert .tworcy-icon').onclick = function () {
559 window.mAlert('<center><font color="#5B7019"><b>TWĂRCY:</b><br><br><img src="https://i.iur.com/XkJ02pq.png"/> <b>Kazair:</b><br>(PomysĹodawca, twĂłrca kodu)<br> <u>Profil</u>: <a target="_blank" style="color:white"; href="https://www.margonem.pl/?task=profile&id=3590390">link</a><br><u>KanaĹ Youtube</u>: <a target="_blank" style="color:white"; href="https://www.youtube.com/channel/UC8cI-CDmYs0Y3FK0IxYNV4w">link</a><br><br><img src="https://i.img.com/kq0ZwAA.png"/> <b>Shiro Uchiha:</b><br>(PomysĹodawca, twĂłrca grafik)<br><u>Profil</u>: <a target="_blank" style="color:white"; href="https://www.margonem.pl/?task=profile&id=3784731">link</a><br><u>KanaĹ Youtube</u>: <a target="_blank" style="color:white"; href="https://www.youtube.com/channel/UCrLT1ypYqu4bI6fz9YpsjMw">link</a><br><br><img src="https://i..com/a0fmKvs.png"/><b>Marger:</b><br>(Naprawa, tworzenie kodu)<br><u>Profil</u>: <a target="_blank" style="color:white"; href="https://www.margonem.pl/?task=profile&id=3021915">link</a><br><u>Autorskie dodatki</u>: <a target="_blank" style="color:white"; href="https://www.margonem.pl/?task=forum&show=posts&id=490775">link</a><br><br></font>');
560 };
561 document.querySelector('#alert .uninstall-icon').onclick = function () {
562 window.mAlert('JesteĹ tego pewien?', 2, [function () {
563 uninstall();
564 }, function () {
565 window.message('Dobra decyzja :)');
566 }]);
567 };
568 var shairVerContainer = document.querySelector('.shairVersions');
569 for (var i in SHAIR) {
570 var obj = document.createElement('div');
571 obj.setAttribute('data-shairVer', i);
572 if (settings.get('ver') == i || (settings.get('ver') == undefined && i === 'green')) obj.classList.add('active');
573 if (SHAIR[i].icon.tip) {
574 obj.setAttribute('tip', SHAIR[i].icon.tip);
575 }
576 Object.assign(obj.style, SHAIR[i].icon.styles);
577 shairVerContainer.appendChild(obj);
578 }
579 shairVerContainer.onclick = function (e) {
580 var ver = e.target.getAttribute('data-shairVer');
581 if (ver !== null && SHAIR[ver]) {
582 var $active = shairVerContainer.querySelector('.active');
583 if($active) $active.classList.remove('active');
584 e.target.classList.add('active');
585 }
586 };
587 },
588 'appendTo': '#config',
589 'attr': {
590 'tip': 'Ustawienia motywu'
591 }
592 });
593
594 //...
595 //Better battle log panel
596 __translations['default']['msg_-pierceb'] = "<font color='#A9A9A9'><b>-Blok przebicia</b></font>";
597 __translations['default']['msg_woundfrost %val%'] = "<font color='99FF00'><i><b>+GĹÄboka rana</font> (-%val%% osĹabiona <font color='aqua'>magiÄ
zimna</font>)</b></i>";
598 __translations['default']['msg_+legbon_holytouch %val%'] = "<font color='FF00FF'><i><b>+Dotyk anioĹa, Ĺźycie +%val%</b></i></font>";
599 __translations['default']['msg_-blok %val%'] = "<font color='#A9A9A9'><b>-Zablokowanie %val% obraĹźeĹ</b></font>";
600 __translations['default']['msg_+pierce'] = "<font color='99FF00'><i>+Przebicie</i></font>";
601 __translations['default']['msg_+of_crit'] = "<font color='FFD700'><i><b>+Cios krytyczny broni pomocniczej</b></i></font>";
602 __translations['default']['msg_+of_wound'] = "<font color='99FF00'><i><b>+GĹÄboka rana pomocnicza</b></i></font>";
603 __translations['default']['msg_+fastarrow'] = "<font color='99FF00'><i>+Szybka strzaĹa</i></font>";
604 __translations['default']['+third_strike'] = "<font color='white'><b>+Trzeci cios</b></font>";
605 __translations['default']['msg_-parry'] = "<font color='white'><b>+Parowanie</b></font>";
606 __translations['default']['msg_-evade'] = "<font color='white'><b>+Unik</b></font>";
607 __translations['default']['msg_+freeze'] = "<font color='aqua'><i>+ZamroĹźenie</i></font>";
608 __translations['default']['msg_+wound'] = "<font color='99FF00'><i>+GĹÄboka rana</i></font>";
609 __translations['default']['msg_+hithurt %val%'] = "<font color='FFD700'><i>+Bolesny cios, spowolnienie o %val%% SA</i></font>";
610 __translations['default']['msg_+crit'] = "<font color='FFD700'><i><b>+Cios krytyczny</b></i></font>";
611 __translations['default']['msg_+legbon_verycrit'] = "<i><font color='FFD700'><b>+CIOS BARDZO KRYTYCZNY</i></b></font>";
612 __translations['default']['msg_+verycrit'] = "<i><b>+CIOS BARDZO KRYTYCZNY</i></b>";
613 __translations['default']['msg_+legbon_curse'] = "<font color='red'><b>+KLÄTWA</b></font>";
614 __translations['battle']['your_move %sec%'] = "<font color='white'><b>TwĂłj ruch - pozostaĹo %sec%s</b></font>";
615 __translations['battle']['someoneelse_move'] = "<font color='white'><b>Ruch kogoĹ innego</b></font>";
616 //chat commands for future use
617 /*
618 !function(_old, data){
619 chatSendMsg = function (a) {
620 if (a.charAt(0) == '/' && isset(data[a.substr(1)])) {
621 data[a.substr(1)](a.substr(1));
622 }
623 _old(a);
624 }
625 }(chatSendMsg, {
626 'komendy': function (arg) {
627 mAlert('<center><b>MoĹźe kiedyĹ...<br>');
628 }
629 });
630 */
631 //newNpc
632 API.on('newNpc', function(a){
633 for (var i in a) {
634 if (a[i].del == 1) continue;
635 if (a[i].type == 0 || a[i].type == 5 || a[i].type == 6 || a[i].type == 7) document.querySelector("#npc" + i).classList.add('cursor-npc');
636 if (a[i].type == 2 || a[i].type == 3) document.querySelector("#npc" + i).classList.add('cursor-attack');
637 }
638 });
639 //update system
640 API.on('shair/life', function(){
641 document.querySelector("#life1").innerHTML = Math.round((hero.hp / hero.maxhp) * 1000) / 10 + "%"
642 var prevexp = hero.lvl === 1 ? 0 : Math.round(Math.pow(hero.lvl-1,4)+10);
643 var exp = Math.min(Math.max((hero.exp-prevexp)/(Math.round(Math.pow(hero.lvl,4)+10)-prevexp),0),1);
644 document.querySelector("#exp1").innerHTML = Math.floor(exp * 1000) / 10 + '%';
645});
646 API.on('shair/img', function(data){
647 if (data) {
648 if (hero.fw == 32) {
649 $avatar.style.backgroundImage = 'url(' + g.opath + "postacie" + data + ')';
650 } else {
651 $avatar.style.backgroundImage = '';
652 }
653 }
654 });
655 API.on('shair/bstr', function(data){
656 $mystats.querySelector('[data-update="bstr"]').setAttribute('tip', 'SiĹa bazowa: ' + data + '<br>(bez ekwipunku)');
657 });
658 API.on('shair/bagi', function(data){
659 $mystats.querySelector('[data-update="bagi"]').setAttribute('tip', 'ZrÄcznoĹÄ bazowa: ' + data + '<br>(bez ekwipunku)');
660 });
661 API.on('shair/bint', function(data){
662 $mystats.querySelector('[data-update="bint"]').setAttribute('tip', 'Intelekt bazowy: ' + data + '<br>(bez ekwipunku)');
663 });
664 API.on('shair/ttl', function(data){
665 $mystats.querySelector('[data-update="ttl"]').innerHTML = Math.max(0, data);
666 $avatar.setAttribute('tip', 'PozostaĹo wyczerpania: ' + Math.max(0, data));
667 if (data > 0) document.querySelector('#exp2').classList.remove('noexp');
668 else document.querySelector('#exp2').classList.add('noexp');
669 });
670 API.on('shair/pttl', function(data){
671 $mystats.querySelector('[data-update="ttl"]').parentNode.setAttribute('tip', data);
672 });
673 API.on('shair/runes', function(data){
674 $mystats.querySelector('[data-update="runes"]').innerHTML = data;
675 });
676 API.on('shair/honor', function(data){
677 $mystats.querySelector('[data-update="honor"]').innerHTML = data;
678 });
679 API.on('shair/warrior_stats/blok', function(data){
680 $mystats.querySelector('[data-stat="blok"]').innerHTML = data;
681 $mystats.querySelector('[data-stat="blok"]').parentNode.setAttribute('tip', '<center>W walce z przeciwnikiem<br>o rĂłwnym poziomie:<br>' + Math.min((Math.round((data * 20 / hero.lvl) * 100) / 100), 50) + '%</center>');
682 });
683 API.on('shair/warrior_stats/evade', function(data){
684 $mystats.querySelector('[data-stat="evade"]').innerHTML = data[0];
685 $mystats.querySelector('[data-stat="evade"]').parentNode.setAttribute('tip', '<center>W walce z przeciwnikiem<br>o rĂłwnym poziomie:<br>' + data[1] + '%</center>');
686 });
687 API.on('shair/warrior_stats/energygain', function(data){
688 $mystats.querySelector('[data-stat="energygain"]').setAttribute('tip', 'Energia co turÄ: ' + data);
689 });
690 API.on('shair/warrior_stats/managain', function(data){
691 $mystats.querySelector('[data-stat="managain"]').setAttribute('tip', 'Mana co turÄ: ' + data);
692 });
693 API.on('shair/warrior_stats/critval', function(data){
694 $mystats.querySelector('[data-stat="critval"]').innerHTML = (data * 100).toFixed();
695 });
696 API.on('shair/warrior_stats/of_critval', function(data){
697 $mystats.querySelector('[data-stat="of_critval"]').innerHTML = (data * 100).toFixed();
698 });
699 API.on('shair/warrior_stats/critmval', function(data){
700 var $critval_m = $mystats.querySelector('[data-stat="critmval"]');
701 $critval_m.innerHTML = (data * 100).toFixed();
702 $critval_m.setAttribute('tip', 'Moc krytyka magii ognia: <strong style="color:red">x' + hero.warrior_stats.critmval_f + '</strong><br />Moc krytyka magii zimna: <strong style="color: #9BF;">x' + hero.warrior_stats.critmval_c + '</strong><br />Moc krytyka magii bĹyskawic: <strong style="color: yellow;">x' + hero.warrior_stats.critmval_l + '</strong>');
703 });
704 API.on('shair/warrior_stats/slow', function(data){
705 $mystats.querySelector('[data-stat="slow"]').innerHTML = data / 100;
706 });
707
708 var exceptions = ["blok","evade","energygain","managain","critval","of_critval","critmval","slow"];
709 API.on('shair/warrior_stats', function(data){
710 Object.keys(data).forEach(function(key){
711 if(exceptions.indexOf(key) !== -1){
712 API.emit('shair/warrior_stats/' + key, data[key]);
713 } else {
714 $mystats.querySelectorAll('[data-stat="' + key + '"]').forEach(function (el) {
715 el.innerHTML = data[key];
716 });
717 }
718 });
719 $rightStats.innerHTML = hero.fulldmg + '<br>' + data.ac + '<br>' + data.sa;
720 $mystats.querySelectorAll('[data-stat-hide]').forEach(function (el) {
721 var hide = el.getAttribute('data-stat-hide').split(',');
722 if (!isset(data[hide[0]])) {
723 el.style.display = 'none';
724 } else if (hide[1] && data[hide[0]] <= parseFloat(hide[1])) {
725 el.style.display = 'none';
726 } else {
727 el.style.display = 'block';
728 }
729 });
730 if (["lowevade", "slow", "lowcrit", "manadest", "endest", "acdmg"].some(function (key) {
731 return Object.keys(data).indexOf(key) > -1
732 })) $mystats.querySelector('.extraStat-group.walka').style.display = 'block';
733 else $mystats.querySelector('.extraStat-group.walka').style.display = 'none';
734 });
735
736 var updateEvents = ['img','bstr','bagi','bint','ttl','pttl','runes','honor'];
737 var legbons_first_loaded = false;
738 API.on('parseInput/h', function(d){
739 if (isset(d.warrior_stats) || isset(d.exp) || isset(d.hp) || isset(d.maxhp)) {
740 API.emit('shair/life');
741 }
742 if(isset(d.credits)){
743 API.emit('shair/credits', d.credits);
744 }
745 if(isset(d.warrior_stats)){
746 API.emit('shair/warrior_stats', d.warrior_stats);
747 if(legbons_first_loaded) API.emit('shair/legbons', d.warrior_stats);
748 }
749 updateEvents.forEach(function(ev){
750 if(isset(d[ev])) API.emit('shair/'+ev, d[ev]);
751 });
752 }).once('parseInput/item', function(){
753 legbons_first_loaded = true;
754 API.emit('shair/legbons', hero.warrior_stats);
755 });
756
757 API.on('shair/stamina', function(){
758 var data = Math.min(50, Math.floor(((Date.now() / 1000) - hero.stamina_ts) / 60 + hero.stamina));
759 document.querySelector('[data-update="stamina"]').innerHTML = data;
760 document.querySelector('[data-update="stamina"]').parentNode.setAttribute('tip', 'Wyczerpanie Margonem Mini ' + data + '/50');
761 });
762 API.on('loadStep/player', function(){
763 this.emit('shair/stamina');
764 });
765 window.setInterval(function(){
766 API.emit('shair/stamina');
767 }, 60000);
768 //legbons
769 function objFromArr(arr){
770 var ret = {};
771 for(var i=0; i<arr.length; i++){
772 ret['%val'+i+'%'] = arr[i];
773 }
774 return ret;
775 }
776 function getLegbonDescription(name,arr){
777 return _t(legbons[name], objFromArr(arr), 'legendary_stats');
778 }
779 var legbons = {
780 'cleanse': 'legbon_cleanse %val0%',
781 'critred': 'legbon_critred %val0%',
782 'curse': 'legbon_curse %val0%',
783 'dmgred': 'legbon_dmgred %val0%',
784 'glare': 'legbon_glare %val0%',
785 'holytouch': 'legbon_holytouch %val0% %val1%',
786 'lastheal': 'legbon_lastheal %val0% %val1%',
787 'resgain': 'legbon_resgain %val0%',
788 'verycrit': 'legbon_verycrit %val0%'
789 };
790 API.on('shair/legbons', function(data){
791 var bons = Object.keys(data).filter(function(a){
792 return a.indexOf('legbon_') === 0;
793 });
794 if(bons.length === 0){
795 $mystats.querySelector('.extraStat-group.legbons').style.display = 'none';
796 } else {
797 $mystats.querySelector('.extraStat-group.legbons').style.display = 'block';
798 $mystats.querySelectorAll('[data-legbon]').forEach(function (el) {
799 var name = el.getAttribute('data-legbon');
800 var legends = Equipment.getLegendaryItems(name);
801 var icons = legends.map(function(item){
802 return item.icon;
803 });
804 if (legends.length > 0) {
805 el.innerHTML = legends.length;
806 el.parentNode.setAttribute('tip', "<center><div class=sepia><img src=/obrazki/itemy/" + icons.join("></div><div class=sepia><img src=/obrazki/itemy/") + "></div></center><i>" + getLegbonDescription(name, [].concat(data['legbon_'+name])) + "</i>");
807 el.parentNode.style.display = 'block';
808 } else {
809 el.parentNode.style.display = 'none';
810 }
811 });
812 }
813 });
814 //fight animation
815 (function (createExpAnimation, createFullAnimation, data) {
816 if (settings.get('expMob') === true) return;
817 API.on('parseInput/f', function (h) {
818 if (h.m && h.m.join().indexOf('exp=') > -1) {
819 setTimeout(function () {
820 document.querySelectorAll('#battle .troop[ctip="t_troop2"]').forEach(function (node) {
821 createFullAnimation(createExpAnimation, node, data);
822 });
823 }, 20);
824 }
825 });
826 })(function (el, data) {
827 var randomPos = 4;
828 if (data.options.random === true) randomPos = Math.round(Math.random() * 8);
829 else if (!isNaN(Number(data.options.random)) && data.options.random > 0) randomPos = Math.floor(Math.random() * data.options.random * 2 + 1) - data.options.random + 4;
830
831 var xpos = {
832 left: parseInt(el.style.left) + randomPos,
833 top: parseInt(el.style.top) + randomPos
834 };
835
836 if (isNaN(xpos.left) || isNaN(xpos.top)) return;
837
838 var expAnim = document.createElement('div');
839 expAnim.style.left = xpos.left + 'px';
840 expAnim.style.top = xpos.top + 'px';
841 expAnim.classList.add('expAnimation');
842 document.querySelector('#centerbox').appendChild(expAnim);
843 var width = (function (pl) {
844 var h = Math.round(Math.pow(pl.lvl - 1, 4) + 10);
845 var u = Math.min(Math.max((pl.exp - h) / (pl.nextexp - h), 0.001), 1);
846 return Math.round(1 + 106 * u);
847 })(hero);
848 window.getComputedStyle(expAnim).transform; //force window to update css
849 expAnim.style.transform = 'translate(' + (662 - xpos.left + width - 7) + 'px,' + (102 - xpos.top) + 'px) scale(0.5)';
850 data.options.removeAfter = Number(data.options.removeAfter) > 100 ? Number(data.options.removeAfter) : 1100;
851 setTimeout(function () {
852 document.querySelector('#centerbox').removeChild(expAnim);
853 }, data.options.removeAfter);
854 }, function (createExpAnimation, node, data) {
855 data.options.interval = Number(data.options.interval) > 0 ? Number(data.options.interval) : 150;
856 data.options.amout = Number(data.options.amout) > 0 ? Number(data.options.amout) : 1;
857 createExpAnimation(node, data);
858 for (var i = 1; i < data.options.amout; i++) {
859 setTimeout(function () {
860 createExpAnimation(node, data);
861 }, data.options.interval * i);
862 }
863 }, {
864 options: {
865 interval: 100,
866 amout: 3,
867 random: 32,
868 removeAfter: 1100
869 }
870 });
871
872 //right quick icons panel
873 (function (data) {
874 var rightIcons = document.getElementById('right-icons');
875 var create = function (info, index) {
876 var newEl = document.createElement('a');
877 newEl.classList.add('hightlight');
878 if (!info.href.indexOf('javascript:')) {
879 newEl.setAttribute('onclick', info.href.replace('javascript:',''));}
880 else {
881 newEl.href = info.href;
882 newEl.target = '_blank';
883 }
884 newEl.setAttribute('data-icon', index)
885 if (info.tip) newEl.setAttribute('tip', info.tip);
886 rightIcons.appendChild(newEl);
887 };
888 for (var i = 0; i < data.length; i++) {
889 create(data[i], i);
890 }
891 })([{
892 href: 'http://margonem.pl/',
893 tip: 'Strona gĹĂłwna'
894 }, {
895 href: 'https://www.margonem.pl/?task=forum&show=posts&id=453382',
896 tip: 'ABC QuestĂłw'
897 }, {
898 href: 'https://www.margonem.pl/?task=forum&show=posts&id=316673',
899 tip: 'Gdzie expiÄ?'
900 }, {
901 href: 'https://www.margonem.pl/?task=forum&show=posts&id=504381',
902 tip: 'Elity I i II'
903 }, {
904 href: 'https://www.margonem.pl/?task=forum&show=posts&id=498034',
905 tip: 'Herosi & Tytani'
906 }, {
907 href: 'https://www.margonem.pl/?task=forum&show=posts&id=96201',
908 tip: 'RoĹlinki, owoce i grzyby'
909 }, {
910 href: 'https://www.margonem.pl/?task=forum&show=posts&id=496021',
911 tip: 'Temat motywu na Forum'
912 }, {
913 href: "javascript:_g('rewards_calendar&action=show')",
914 tip: 'Kalendarz'
915 }]);
916 //slots for items
917 (function(){
918 var options = new LocalStorageAPI('KeyItemSlots');
919 //change strategy in new version
920 if(options.get('slots')) options.set('slots', undefined);
921 var slots = [0,0,0,0];
922 var codes = ["Digit1","Digit2","Digit3","Digit4","Digit5","Digit6"];
923
924 var $slots = document.createElement('div');
925 $slots.id = 'slotsForItems';
926 document.getElementById('right-icons').appendChild($slots);
927
928 //use slot
929 var lastPress = {
930 ts: 0,
931 code: null
932 };
933 function press(e) {
934 if(e.target.tagName=='INPUT' || e.target.tagName=='TEXTAREA') return;
935 var idx = codes.indexOf(e.code);
936 if (idx < 0) return;
937 if (e.code != lastPress.code || Date.now() - lastPress.ts > 500) {
938 lastPress.ts = Date.now();
939 lastPress.code = e.code;
940 return;
941 }
942 useSlot(idx);
943 lastPress.ts = 0;
944 lastPress.code = null;
945 };
946 document.addEventListener('keyup', press);
947 function useSlot(nr) {
948 var id = slots[nr];
949 if (!id) return;
950 window.moveItemSafe(id, 'st=1');
951 var slot = $slots.querySelector('.shair-item-slot[data-slot="' + nr + '"]');
952 slot.style.boxShadow = 'inset 0 0 20px 3px #ff0000e0';
953 setTimeout(function () {
954 slot.style.boxShadow = '';
955 }, 400);
956 }
957 function saveOptions(){
958 options.set('slot/' + window.hero.id, slots);
959 }
960 function clear(nr){
961 if (nr.target && nr.type == 'click') {
962 nr = nr.target.getAttribute('data-slot');
963 }
964 if (slots[nr] == 0) return;
965 slots[nr] = 0;
966 var element = $slots.querySelector('.shair-item-slot[data-slot="' + nr + '"]');
967 element.setAttribute('tip', '<b>Slot numer ' + (Number(nr) + 1) + '</b><i class=dmgf>Przypisany klawisz: ' + codes[nr] + '</i>');
968 element.querySelector('img').src = '';
969 element.querySelector('small').innerHTML = "";
970 saveOptions();
971 }
972 function findAmmo(stats) {
973 var findAmmo = /ammo=(\d+)/.exec(stats);
974 if (findAmmo != null) return findAmmo[1];
975 var findAmout = /amount=(\d+)/.exec(stats);
976 if (findAmout != null) return findAmout[1];
977 return false;
978 }
979 function validItem(id, data){
980 if(typeof data === 'undefined') data = g.item;
981 if (data[id] == undefined) return true;
982 var idx = slots.indexOf(id);
983 if (idx > -1) {
984 window.message('Ten przedmiot jest juĹź w slocie numer ' + (idx + 1));
985 return true;
986 }
987 if ([15, 17, 18, 19, 22, 24, 26].indexOf(data[id].cl) > -1) {
988 window.message('Tego typu przedmiotu nie moĹźesz przypisaÄ do slotu!');
989 return true;
990 }
991 return false;
992 }
993 API.once('parseInput/item', function(data){
994 var result = options.get('slot/'+window.hero.id);
995 if(!result) return;
996 for (var i = 0; i < result.length; i++) {
997 if (result[i] == 0) continue;
998 if (validItem(result[i], data) === false) {
999 update(i, data[result[i]]);
1000 }
1001 }
1002 }).on('parseInput/item', function(a){
1003 for (var i = 0; i < slots.length; i++) {
1004 if (!slots[i]) continue;
1005 if (a[slots[i]] == undefined) continue;
1006 if (a[slots[i]].del == '1' || a[slots[i]].loc != 'g') {
1007 clear(i);
1008 continue;
1009 }
1010 update(i, a[slots[i]]);
1011 }
1012 });
1013
1014 var update = function (nr, item) {
1015 var element = $slots.querySelector('.shair-item-slot[data-slot="' + nr + '"]');
1016 if (element == null) return;
1017 element.querySelector('img').src = '/obrazki/itemy/' + item.icon;
1018 var smallEl = element.querySelector('small');
1019 smallEl.innerHTML = "";
1020
1021 var text = findAmmo(item.stat);
1022 if (text != false) smallEl.appendChild(document.createTextNode(text));
1023
1024 element.setAttribute('tip', item.tip + '<br><br><b>Slot numer ' + (Number(nr) + 1) + '</b><i class=dmgf>Przypisany klawisz: ' + codes[nr] + '</i>');
1025
1026 var letSave = false;
1027 if (slots[nr] != item.id) letSave = true;
1028 slots[nr] = item.id;
1029 if (letSave) saveOptions();
1030 };
1031
1032 function init(){
1033 var events = {
1034 drop: function (e, b) {
1035 this.style.boxShadow = "";
1036 if (b.draggable[0].className.indexOf('item') < 0 || b.draggable[0].className.indexOf('ui-draggable') < 0) return;
1037
1038 var slotId = this.getAttribute('data-slot');
1039 var itemId = b.draggable[0].id.replace('item', '');
1040 if (validItem(itemId)) return;
1041 update(slotId, window.g.item[itemId]);
1042 },
1043 over: function (a, b) {
1044 if (b.draggable[0].className.indexOf('item') > -1 && b.draggable[0].className.indexOf('ui-draggable') > -1) {
1045 this.style.boxShadow = "inset 0 0 16px 1px #40ad4d";
1046 }
1047 },
1048 out: function () {
1049 this.style.boxShadow = "";
1050 }
1051 };
1052 for (var i = 0; i < slots.length; i++) {
1053 var newObject = document.createElement('div');
1054 newObject.className = "shair-item-slot";
1055 newObject.setAttribute('data-slot', i);
1056 newObject.setAttribute('tip', '<b>Slot numer ' + (i + 1) + '</b><i class=dmgf>Przypisany klawisz: ' + codes[i] + '</i>');
1057 newObject.setAttribute('ctip', 't_item');
1058 newObject.addEventListener('click', clear);
1059 newObject.addEventListener('contextmenu', function(e){
1060 e.preventDefault();
1061 });
1062 newObject.appendChild(document.createElement('img'));
1063 newObject.appendChild(document.createElement('small'));
1064 $slots.appendChild(newObject);
1065 $(newObject).droppable({
1066 drop: events.drop,
1067 over: events.over,
1068 out: events.out
1069 });
1070 }
1071 }
1072 init();
1073 })();
1074
1075 //END
1076 //shair main variable
1077 var SHAIR = {
1078 'green': {
1079 'link': 'https://kazair.github.io/shair/shairgreen.css',
1080 'icon': {
1081 'styles': {
1082 'background': 'url(https://i.imgr.com/Mv6opJI.png)'
1083 },
1084 'tip': '<b>Green</b>'
1085 }
1086 },
1087 'frozen': {
1088 'link': 'https://kazair.github.io/shair/shaircold.css',
1089 'icon': {
1090 'styles': {
1091 'background': 'url(https://igur.com/0RuX9DZ.png)',
1092 'backgroundPosition': '0 -33px'
1093 },
1094 'tip': '<b>Frozen</b>'
1095 }
1096 },
1097 };
1098 window.shairModuleLoader = function(id, data, fn){
1099 if(typeof id !== 'string') throw new Error('Ogarnij siÄ, podaj tekst a nie ' + typeof data);
1100 if(typeof data !== 'object') throw new Error('Ogarnij siÄ, podaj obiekt a nie ' + typeof data);
1101 if(typeof fn !== 'function' && typeof fn !== 'undefined') throw new Error('Ogarnij siÄ, podaj obiekt a nie ' + typeof data);
1102 if(SHAIR[id]) throw new Error('id '+ id + ' zajÄte, wymyĹl coĹ innego');
1103 if(!isset(data.link) || typeof data.icon !== 'object' || !isset(data.icon.tip) || !isset(data.icon.styles) || !isset(data.icon.styles.background)) throw new Error('Niepoprawny obiekt [data]');
1104 SHAIR[id] = {
1105 'link': data.link,
1106 'icon': {
1107 'tip': data.icon.tip,
1108 'styles': data.icon.styles
1109 }
1110 };
1111 if(typeof fn !== 'undefined') fn(API, settings, Equipment, DOMElement);
1112 };
1113 //load CSS
1114 var version = settings.get('ver');
1115 //loadExternalCSS((version && SHAIR[version]) ? SHAIR[version].link : SHAIR['green'].link);
1116 API.on('loadStep/map', function(){
1117 loadExternalCSS((version && SHAIR[version]) ? SHAIR[version].link : SHAIR['green'].link);
1118 loadCSSOptions({
1119 'expAnim': '#exp2{-webkit-transition: width 1000ms ease-out;-moz-transition: width 1000ms ease-out;ms-transition: width 1000ms ease-out;-o-transition: width 1000ms ease-out;transition: width 1000ms ease-out;}',
1120 'hpAnim': '#life2{-webkit-transition: width 1000ms ease-out;-moz-transition: width 1000ms ease-out;ms-transition: width 1000ms ease-out;-o-transition: width 1000ms ease-out;transition: width 1000ms ease-out;}',
1121 'BGopt': 'html:before{display: block;}',
1122 'AVopt': '.avatar{display:block;}',
1123 'PROCopt': '#exp1,#life1{ color: ghostwhite; }',
1124 'MenuOPT': '#right-icons{display:block; }',
1125 'ChatOPT': '#chattxt .chnick, #chattxt U {text-shadow: 0px 0px 8px #006400, 0px 0px 8px #006400, 0px 0px 8px #006400;}',
1126 'OTCHopt': '.otchlannew{display:block;}'
1127 }, settings.store);
1128 });
1129 //dispatch event
1130 var shairEvent = new CustomEvent('shairLoaded', { shair: SHAIR });
1131 window.dispatchEvent(shairEvent);
1132 API.emit('shair/loaded');
1133 //log copyright to console
1134 window.log('<a style="color:gold; text-decoration:blink" target="_blank"">Motyw <b><u>Shair</b></u> <b>Kazair & Shiro Uchiha</b> <br>Serdeczne podziÄkowania dla <b>Margera</b> za ogromnÄ
pomoc z kodem! <br>Kopiowanie jakichkolwiek treĹci <u>ZABRONIONE!</u></a>');
1135 window.newChatMsg([{
1136 i: "",
1137 k: 0,
1138 n: "",
1139 n2: "",
1140 s: 'sys_red',
1141 t: '',
1142 ts: g.chat.ts + 1
1143 }]);
1144})(window, document);
1145
1146
1147
1148/*
1149//Module load example
1150(function(id, data, fn){
1151 function loadModule(){window.shairModuleLoader(id, data, fn)}
1152 if(typeof window.shairModuleLoader === 'function') loadModule();
1153 else window.addEventListener('shairLoaded', loadModule);
1154})('Zimno tu', {
1155 'link': 'https://kazair.github.io/shair/shaircold.css',
1156 'icon': {
1157 'styles': {
1158 'background': 'url(https://i.mgur.com/0RuX9DZ.png)',
1159 'backgroundPosition': '0 -33px'
1160 },
1161 'tip': '<b>Zimno tu v2</b>'
1162 }
1163}, function(API, settings, Equipment, DOMElement){
1164 //code
1165});
1166*/