(function () { function $6a49e4c969cec444$export$2e2bcd8739ae039(obj, key, value) { if (key in obj) Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); else obj[key] = value; return obj; } function $f1e9793517c51c58$export$2e2bcd8739ae039(target) { for(var i = 1; i < arguments.length; i++){ var source = arguments[i] != null ? arguments[i] : { }; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); ownKeys.forEach(function(key) { $6a49e4c969cec444$export$2e2bcd8739ae039(target, key, source[key]); }); } return target; } function $b1520df0e3a4699c$export$2e2bcd8739ae039(source, excluded) { if (source == null) return { }; var target = { }; var sourceKeys = Object.keys(source); var key, i; for(i = 0; i < sourceKeys.length; i++){ key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } function $f26b272b176e5476$export$2e2bcd8739ae039(source, excluded) { if (source == null) return { }; var target = $b1520df0e3a4699c$export$2e2bcd8739ae039(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for(i = 0; i < sourceSymbolKeys.length; i++){ key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } const $902f167bfdc7b30b$export$fb18762d0c18fa09 = 'https://api.tribalwarshelp.com/graphql'; var $902f167bfdc7b30b$export$2e2bcd8739ae039 = ({ query: query , variables: variables = { } } = { })=>{ return fetch($902f167bfdc7b30b$export$fb18762d0c18fa09, { method: 'POST', body: JSON.stringify({ query: query, variables: variables }), headers: { 'Content-Type': 'application/json' } }).then((res)=>{ return res.json(); }).then(({ data: data , errors: errors })=>{ if (errors && Array.isArray(errors) && errors.length > 0) throw new Error(errors[0].message); return new Promise((resolve)=>resolve(data) ); }); }; const $71f792443ec67043$var$translations = { pl_PL: { actualCoords: 'Aktualne koordynaty', searchBonusBarbarianVillages: 'Wyszukaj koczownicze', village: 'Wioska', distance: 'Dystans', action: 'Akcja', center: 'Wycentruj' }, en_DK: { actualCoords: 'Actual coords', searchBonusBarbarianVillages: 'Search bonus barbarian villages', village: 'Village', distance: 'Distance', action: 'Action', center: 'Center' }, de_DE: { actualCoords: 'Aktuelle Koordinaten', searchBonusBarbarianVillages: 'Suche Bonus-Barbarendörfer', village: 'Dorf', distance: 'Distanz', action: 'Aktion', center: 'Center' } }; var $71f792443ec67043$export$2e2bcd8739ae039 = ()=>$71f792443ec67043$var$translations[window.game_data.locale] || $71f792443ec67043$var$translations.en_DK ; var $9412d55e353d4b8b$export$2e2bcd8739ae039 = ()=>window.location.host.split('.')[0] ; const $db1dd60e5389e0c9$export$7345792e21cfc457 = (id)=>{ return window.location.origin + TribalWars.buildURL('', { screen: 'info_ally', id: id }); }; const $db1dd60e5389e0c9$export$3df7b9b48f38839e = (id)=>{ return window.location.origin + TribalWars.buildURL('', { screen: 'info_player', id: id }); }; const $db1dd60e5389e0c9$export$e537a41a0fc85cc5 = (id)=>{ return window.location.origin + TribalWars.buildURL('', { screen: 'info_village', id: id }); }; const $db1dd60e5389e0c9$export$c6f77ec2633c38b1 = (n = '', x = 500, y = 500)=>{ const continent = 'K' + String(y)[0] + String(x)[0]; return `${n} (${x}|${y}) ${continent}`; }; const $db1dd60e5389e0c9$export$893530ca1c0f63a2 = (distance, baseSpeed)=>{ return Math.round(distance * baseSpeed); }; const $db1dd60e5389e0c9$export$8b4b6650247854da = (img)=>{ return image_base + img; }; const $8f952366ce71d0fe$export$6e378131ceaf17af = (x1, y1, x2, y2)=>{ const a = x1 - x2; const b = y1 - y2; return Math.sqrt(a * a + b * b); }; // ==UserScript== // @name Bonus barbarian village finder // @namespace https://github.com/tribalwarshelp/scripts // @updateURL https://raw.githubusercontent.com/tribalwarshelp/scripts/master/dist/bonusBarbarianVillageFinder.js // @downloadURL https://raw.githubusercontent.com/tribalwarshelp/scripts/master/dist/bonusBarbarianVillageFinder.js // @version 0.4.7 // @description Bonus barbarian village finder // @author Kichiyaki https://dwysokinski.me/ // @match *://*/game.php*screen=map* // @grant none // ==/UserScript== const $0e40ff93e5ed20a5$var$SERVER = $9412d55e353d4b8b$export$2e2bcd8739ae039(); const $0e40ff93e5ed20a5$var$QUERY = ` query villages($server: String!, $filter: VillageFilter, $sort: [String!], $offset: Int) { villages(server: $server, filter: $filter, offset: $offset, sort: $sort) { total items { id name bonus x y } } } `; const $0e40ff93e5ed20a5$var$TABLE_ID = 'bonusBarbarianVillageFinderTable'; const $0e40ff93e5ed20a5$var$ACTUAL_COORDS_ID = 'actualCoords'; const $0e40ff93e5ed20a5$var$translations = $71f792443ec67043$export$2e2bcd8739ae039(); let $0e40ff93e5ed20a5$var$container = undefined; const $0e40ff93e5ed20a5$var$buildReqOptions = (bonus, offset)=>{ return { query: $0e40ff93e5ed20a5$var$QUERY, variables: { server: $0e40ff93e5ed20a5$var$SERVER, sort: [ 'id DESC' ], filter: { bonus: bonus, playerID: [ 0 ] }, offset: offset } }; }; const $0e40ff93e5ed20a5$var$loadBonusVillages = async (bonus)=>{ const { villages: villages } = await $902f167bfdc7b30b$export$2e2bcd8739ae039($0e40ff93e5ed20a5$var$buildReqOptions(bonus, 0)); for(let i = villages.length; i < villages.total; i += 1000){ const data = await $902f167bfdc7b30b$export$2e2bcd8739ae039($0e40ff93e5ed20a5$var$buildReqOptions(bonus, 0)); villages.items = [ ...villages.items, ...data.villages.items ]; } return villages; }; const $0e40ff93e5ed20a5$var$searchBonusBarbarianVillages = async (e)=>{ e.preventDefault(); const villages = await $0e40ff93e5ed20a5$var$loadBonusVillages(parseInt(e.target[0].value)); const coords = TWMap.pos; villages.items = villages.items.map((item)=>{ return $f1e9793517c51c58$export$2e2bcd8739ae039({ }, item, { distance: $8f952366ce71d0fe$export$6e378131ceaf17af(coords[0], coords[1], item.x, item.y) }); }).sort((a, b)=>a.distance - b.distance ); document.querySelector('#' + $0e40ff93e5ed20a5$var$TABLE_ID).innerHTML = $0e40ff93e5ed20a5$var$buildTableBodyHTML(villages.items); }; const $0e40ff93e5ed20a5$var$getBonuses = ()=>{ let bonuses = []; for(let i in TWMap.bonus_data)bonuses.push({ value: i, text: TWMap.bonus_data[i].text }); return bonuses; }; const $0e40ff93e5ed20a5$var$buildTableBodyHTML = (villages)=>{ return ` ${$0e40ff93e5ed20a5$var$translations.village} ${$0e40ff93e5ed20a5$var$translations.distance} ${$0e40ff93e5ed20a5$var$translations.action} ${Array.isArray(villages) ? villages.map((village)=>` ${$db1dd60e5389e0c9$export$c6f77ec2633c38b1(village.name, village.x, village.y)} ${village.distance.toFixed(1)} ${$0e40ff93e5ed20a5$var$translations.center} ` ).join('') : ''} `; }; const $0e40ff93e5ed20a5$var$updateActualCoords = ()=>{ document.querySelector('#' + $0e40ff93e5ed20a5$var$ACTUAL_COORDS_ID).innerHTML = `${$0e40ff93e5ed20a5$var$translations.actualCoords}: ${TWMap.pos.join('|')}`; }; const $0e40ff93e5ed20a5$var$renderUI = ()=>{ const html = `

${$0e40ff93e5ed20a5$var$buildTableBodyHTML()}
`; if (!$0e40ff93e5ed20a5$var$container) { $0e40ff93e5ed20a5$var$container = document.createElement('div'); $0e40ff93e5ed20a5$var$container.classList.add('containerBorder'); $0e40ff93e5ed20a5$var$container.style.clear = 'both'; document.querySelector('#map_big').appendChild($0e40ff93e5ed20a5$var$container); } $0e40ff93e5ed20a5$var$container.innerHTML = html; $0e40ff93e5ed20a5$var$container.querySelector('form').addEventListener('submit', $0e40ff93e5ed20a5$var$searchBonusBarbarianVillages); $0e40ff93e5ed20a5$var$updateActualCoords(); setInterval($0e40ff93e5ed20a5$var$updateActualCoords, 1000); }; (function() { $0e40ff93e5ed20a5$var$renderUI(); })(); })();