// ==UserScript==
// @name Antamar Erweiterungen
// @namespace http://tampermonkey.net/
// @version 0.3.16
// @description try to take over the world!
// @author DBa
// @match https://www.barski.org/anta/router.php
// @match https://eisentrutz.antamar.eu/*
// @exclude https://eisentrutz.antamar.eu/rp.php
// @grant unsafeWindow
// @grant GM.addStyle
// @grant GM.setValue
// @grant GM_getValue
// @grant GM.getValue
// @grant GM.notification
// @grant GM.deleteValue
// @grant GM.xmlHttpRequest
// @grant GM_openInTab
// @grant GM_info
// @noframes
// @require https://releases.jquery.com/git/jquery-3.x-git.min.js
// @require https://code.jquery.com/ui/1.13.1/jquery-ui.min.js
// @updateURL https://www.barski.org/anta/anta-erweiterungen.user.js
// @downloadURL https://www.barski.org/anta/anta-erweiterungen.user.js
//
// ==/UserScript==
const configitems = {
ajaxify: "Laden der Inhalte per AJAX beschleunigen
(evtl. Probleme bei Tempeln etc.)
",
herofastswitch: "Schnelle Heldumschaltung",
zbs_speichern: "ZBs einklappen und speichern",
karte_verstecken: "Reisekarte verstecken",
minirouter: "Integrierter Router",
zeigeZustand: "Zeige Waffenzustand",
displayWK: "Warenkorb anzeigen",
}
var $ = window.jQuery, semaphores = JSON.parse(await GM.getValue("semaphores","{}")), jsp = 0, jss = 0, jspt = 0, jsst = 0,
sonderWaehrungen = ["Holzpl.*ttchen", "Drachenschuppe", "Eine alte M.*nze", "Orkhauer", "Feder vom Adler", "Faustgro.*er Disareg-Stein"],
swRE = new RegExp(sonderWaehrungen.map(w => "("+w+")").join("|"), "g"),
dngZBs = ["Da ihr einem Kampf nicht abgeneigt seid","Ihr seit eine Weile in eure"],
dngZBre = new RegExp(dngZBs.map(w => "("+w+")").join("|")), aeVersion = GM_info.script.version;
var heldid = $("a#menu_held").length > 0 ? $("a#menu_held").attr("onclick").replace(/.*?([0-9]+).*/, "$1") : "---", config = await restoreVal(`config_${heldid}`, "{}"),
held_ort = $(".held_ort").length > 0 && $(".held_ort").text() != "Auf Reisen..." ? $(".held_ort").text() : ($("#CountDownBoxRU strong").length > 1 ? $("#CountDownBoxRU strong").last().text() : "---"), held_name = $("h2#held_name").text();
$.fn.delayLeaveHide = function(toHide, delay = 500, cb = null) {
return this.each(function(i,e) {
// Do something to each element here.
$(e).mouseleave(() => {
$(e).attr("data-destroying", setTimeout(() => {
if(toHide != null) {
$(toHide).detach();
} else {
$(e).detach();
}
if(cb != null) {
cb();
};
}, delay));
$(e).mouseenter(() => clearTimeout($(e).attr("data-destroying")));
});
});
};
const warenBilder = [
["Faustgro.*er Disareg-Stein", "534"],
["Drachenschuppe", "407"],
["Eine alte M.*nze", "6190"],
["Feder vom Adler", "6134"],
["Orkhauer", "2553"]
];
function makeid(length) {
var result = '';
var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
var charactersLength = characters.length;
for ( var i = 0; i < length; i++ ) {
result += characters.charAt(Math.floor(Math.random() * charactersLength));
}
return result;
}
function load_game_content(url,selector = "#gameContent", cb = null) {
var ajaxParams = {
url: url,
success: async(data) => {
console.log(`Loaded ${url}`);
var newGC = $(data).find(selector).html();
$(selector).html(newGC);
if(cb != null) {
await cb();
}
}
};
console.log(`Ajaxing ${url}`);
if(unsafeWindow.aoqmlInputVars.length > 0) {
for(let varName of unsafeWindow.aoqmlInputVars) {
var wert = $(`#aoqmlVar_${varName}`).val().trim();
if(wert == "") {
alert("Bitte Eingabe im Feld vornehmen!");
$(`#aoqmlVar_${varName}`).focus();
return;
}
$.post(
"ajax/quest.php",
`storeVar=${varName}&wert=${wert}`,
(res) => {
if (res == 'true') {
setTimeout(() => $.ajax(ajaxParams), 300);
}
}
);
}
}
$.ajax(ajaxParams);
};
async function ajaxify(selector = "#gameContent :not(#globchat) a:not(:has(.zielortname),:contains(alles einlagern),[href*='holeAnwe'],[onclick*='gruppe_austritt']),area", cb = null) {
if(false) {
console.log("Ajaxifying...");
unsafeWindow.setTimeout(() => {
unsafeWindow.load_game_content = (url,selector = "#gameContent") => {
console.log(`Ajaxing ${url}`);
unsafeWindow.jQuery.ajax({
url: url,
success: data => {
var newGC = unsafeWindow.jQuery(data).find(selector).html();
unsafeWindow.jQuery(selector).html(newGC);
}
});
};
unsafeWindow.click_quest_link = (a,c,d) => {
if(c>0){
unsafeWindow.click_group_quest_link(c,a,d)
}else{
var b=$(a).getProperty("href")+(d?"¶m="+d:"");
console.log("Ajaxing ",b);
//new URI(b).go()
unsafeWindow.load_game_content(b);
}
};
unsafeWindow.click_group_quest_link = (c, a, d) => {
var b = $(a);
unsafeWindow.jQuery.ajax({
url: 'ajax/gruppe2.php',
method: 'post',
data: 'isGrpLeader=' + c,
success: (f) => {
if (f == 'false' || f == false) {
var g = new Element('div');
g.setStyle('font-size', '80%;');
g.set('class', 'warning');
g.set('html', 'Nur der Gruppenleiter kann Entscheidungen treffen.');
g.inject(b, 'after');
b.fade.delay(4000, g, 'out');
b.destroy.delay(5000, g)
} else {
var e = b.getProperty('href') + (d ? '¶m=' + d : '');
console.log("Ajaxing ",b);
new unsafeWindow.URI(e).go();
}
},
onFailure: function() {
alert('Fehler beim Versenden des Ajax-Requests')
}
}).post()
};
});
}
$(selector).not((i,e) => $(e).closest("#globchat").length > 0).each((i,e) => $(e).attr("data-onclick", $(e).attr("onclick")) && $(e).attr("data-ajaxified", 1)).attr("onclick", null); // onclick ausschalten...
$(selector).not((i,e) => $(e).closest("#globchat").length > 0).click(e => {
e.preventDefault();
$(".tip-text").hide();
var newLoc = e.currentTarget.getAttribute("href");
console.log(e, newLoc);
load_game_content(newLoc, "#gameContent", main);
});
if(cb != null) {
await cb();
}
}
async function checkVersion() {
if(localStorage.lastCheckedVersion == null || parseInt(localStorage.lastCheckedVersion < (new Date())-1000*300)) {
localStorage.lastCheckedVersion = (new Date())-0;
var updateUrl = GM_info.script.updateURL;
await GM.xmlHttpRequest({
url: updateUrl.replace(/(.*)\/(.*?)$/, "$1/ver.php?file=$2"),
onload: async(rsp_wrap) => {
var serverVersion = rsp_wrap.response.split("."), localVersion = GM_info.script.version.split(".");
console.log(serverVersion, localVersion);
for(var i in serverVersion) {
if(parseInt(serverVersion[i]) > parseInt(localVersion[i])) {
await GM_openInTab(GM_info.script.updateURL, {active: true, insert: true, setParent: true});
}
}
}
});
}
}
await checkVersion();
function jsparse(s) {
const start = performance.now();
var o = JSON.parse(s);
jspt += performance.now()-start;
//console.log("jsparse", ++jsp, jspt);
return o;
}
function jsstring(o) {
const start = performance.now();
var s = JSON.stringify(o);
jsst += performance.now()-start;
//console.log("jsstring", ++jss,jsst);
return s;
}
async function when_seen(sel, cb, delay = 1000) {
if($(sel).length > 0) {
await cb(sel);
} else {
setTimeout(async () => when_seen(sel, cb, delay), delay * (1.1 - Math.random()*0.2));
}
return;
}
async function when_disappears(sel, cb, delay = 500) {
if($(sel).length == 0) {
setTimeout(async() => await cb(), delay * (1.1 - Math.random()*0.2));
} else {
setTimeout(async () => when_disappears(sel, cb, delay), delay * (1.1 - Math.random()*0.2));
}
return;
}
async function when(pars) {
if(pars.cb == null) {
return;
}
var seen = pars.seen == null || typeof(pars.seen) == "string" && $(pars.seen).length > 0 || typeof(pars.seen) == "object" && pars.seen.every(s => $(s).length > 0),
cond = pars.cond == null || await pars.cond() == true,
not_seen = pars.not_seen == null || typeof(pars.not_seen) == "string" && $(pars.not_seen).length == 0 || typeof(pars.not_seen) == "object" && pars.not_seen.every(s => $(s).length == 0);
if(seen && not_seen && cond) {
setTimeout(async() =>await pars.cb(pars), 500 * (1.1 - Math.random()*0.2));
} else {
setTimeout(async() => await when(pars), 1000 * (1.1 - Math.random()*0.2));
}
}
async function whenever(pars) {
if(pars.cb == null) {
console.log("CB null bei whenever", pars);
return;
}
var seen = (pars.seen == null || typeof(pars.seen) == "string" && $(pars.seen).length > 0 || typeof(pars.seen) == "object" && pars.seen.every(s => $(s).length > 0)),
not_seen = (pars.not_seen == null || typeof(pars.not_seen) == "string" && $(pars.not_seen).length == 0 || typeof(pars.not_seen) == "object" && pars.not_seen.every(s => $(s).length == 0));
if(seen && not_seen) {
setTimeout(async() => {
await pars.cb(pars);
await whenever(pars);
}, (pars.timeout == null ? 500 : pars.timeout) * (1.1 - Math.random()*0.2));
} else {
setTimeout(async() => await whenever(pars), 1000 * (1.1 - Math.random()*0.2));
}
}
async function restoreVal(s, dflt = "{}") {
return jsparse(await GM.getValue(s, dflt));
}
async function storeVal(k, v) {
await GM.setValue(k, jsstring(v));
return;
}
async function saveZB(zbs) {
let fd = new FormData();
fd.append("getdata", "storezbs");
fd.append("heldid", heldid);
fd.append("heldname", held_name);
fd.append("zbs", JSON.stringify(zbs));
await GM.xmlHttpRequest({
url: `https://www.barski.org/anta/router.php`,
method: "POST",
data: fd
});
}
async function zbCount(callback, filter = ".*") {
await GM.xmlHttpRequest({
url: `https://www.barski.org/anta/router.php?getdata=zbs&ret=cnt&heldid=${heldid}&filter=${encodeURIComponent(filter)}`,
onload: async(rsp_wrap) => await callback(rsp_wrap.response)
});
}
async function zbGet(callback, num = 0, filter = ".*") {
var url = `https://www.barski.org/anta/router.php?getdata=zbs&ret=${num}&heldid=${heldid}&filter=${encodeURIComponent(filter)}`;
await GM.xmlHttpRequest({
url: url,
responseType: "json",
onload: async(rsp_wrap) => {
console.log(url, rsp_wrap);
await callback(rsp_wrap.response.inhalt);
}
});
}
async function loadHeroes(cb) {
var options = {
url: "/einstellungen.php?kategorie=heldenwahl",
success: async (rsp) => {
var $_ = $, $ = s => window.jQuery(rsp).find(s), _ = window.jQuery, heroes = [];
$(".heldenwechsel tr").each((i,e) => {
var hero = {
img: _(e).find("img").attr("src"),
name: _(e).find("td:nth(1)").text().trim(),
pos: _(e).find("td:nth(2)").text().trim(),
waehlen: _(e).find("td:nth(3) a").attr("href"),
hat_post: _(e).find("td:nth(1) img").length
};
heroes.push(hero);
});
await storeVal("heroes", heroes);
unsafeWindow.herolist = heroes;
$ = window.jQuery;
await cb(heroes);
}
};
$.get(options);
}
async function displayHeroList(heroes) {
if($("#heroChoice").length == 0) {
$(".heroPics").append(``);
var hn = 0;
for(var hero of heroes) {
if(hero.name != held_name && hero.name != "") {
var waehlen = `/einstellungen.php?kategorie=heldenwahl&num=${hn}&aktion=waehlen`,
post = hero.hat_post > 0 ? `` : "";
$("#heroes").append(` | ${hero.name.split(" ")[0]}${post} | ${hero.pos} |
`);
}
hn++;
}
//$(".heroPics").mouseleave((e) => $("#heroChoice").detach());
$(".heroPics").delayLeaveHide("#heroChoice");
};
}
async function addHeroPicPerks() {
$(".heroPics").hover(async () => {
if(unsafeWindow.herolist != null) {
await displayHeroList(unsafeWindow.herolist);
} else {
await loadHeroes(displayHeroList);
}
});
}
const getExhaust = () => parseInt($("strong").filter((i,e)=> $(e).text().match(/Ersch.+pfung:/)).siblings().first().text().replace(/[()]/g,'').split("/")[0]);
function prepZB(zb) {
var res = $(zb);
res.find(".ooc.tip2[rel][title='']").each((i,e) => $(e).attr("title", $(e).attr("rel")));
res.find(".ooc.tip2[rel][title='']").tooltip();
res.find(".tag").not((i,e) => $(e).closest("#zbcurr").length > 0).contents().filter((i,e) => e.nodeType == 3 && e.nodeValue.trim() !== '').wrap("");
res.find("div.tag .tag_ooc:contains(Reisetag)").not((i,e) => $(e).closest("#zbcurr").length > 0).mouseenter(e => $(e.currentTarget).siblings(":not(.tag_ooc,.zb_protokoll_held,.zb_protokoll_clear,.tag_clear)").show());
res.find("div.tag").not((i,e) => $(e).closest("#zbcurr").length > 0).mouseleave(e => $(e.currentTarget).children(":not(.tag_ooc,.zb_protokoll_held,.zb_protokoll_clear,.tag_clear)").hide());
res.find("div.tag").not((i,e) => $(e).closest("#zbcurr").length > 0).children(":not(.tag_ooc,.zb_protokoll_held,.zb_protokoll_clear,.tag_clear)").hide();
return res;
}
async function filter_zbs(num = 0) {
await GM.setValue(`zbfilter_${heldid}`, $("#zbfilter").val());
//window.rb = (await restoreVal(`reiseBerichte_${heldid}`, "[]")).filter(z => z.match($("#zbfilter").val()));
var filterVal = $("#zbfilter").val() == "" ? ".*" : $("#zbfilter").val();
await zbGet(zb => {
console.log(zb);
$("#zbcurr").html(prepZB(zb));
$("#zbcurr :not(:visible)").show();
}, num, filterVal);
$("#zbNum").text(num+1);
await zbCount(cnt => {
$("#zbGes").text(cnt);
$("#zbSlider").attr("max", cnt).val(num+1);
}, filterVal);
}
async function showZB() {
$("#zbtbl").detach();
$("#game").prepend(`");
let prefilter = [
["Sonderwährungen", swRE.source],
["Holzplättchen", "Holzpl.*ttchen"],
["Elfenbogen", "1x Besonderer Elfenbogen"],
["7er Aivas", "abgeneigt" ],
["Misslungene Proben", "Probe [+-]*[0-9]* misslungen"],
["Drache", "(Steppendrache)|(EIN DRACHE, IM HIMMEL)"],
["Verl. Kämpfe", "Du bist (aufgrund zahlreicher Wunden )?zu Boden gegangen"],
["Alles", ".*"]
];
$("#zbfilter").val(await GM.getValue(`zbfilter_${heldid}`, ""));
await filter_zbs();
$("#zbSlider").change(async() => {
await filter_zbs(parseInt($("#zbNum").text())-1);
}).on("input", () => {
$("#zbNum").text($("#zbSlider").val());
});
$("#zbb_td .button_prefilter").detach();
for(let pf of prefilter) {
let id = `btn_${pf[0].replace(/[^a-z0-9_]+/ig, "_")}`;
$("#zbb_td").append(``);
$(`#${id}`).click(async () => {
console.log(pf);
$("#zbfilter").val(pf[1]);
await filter_zbs();
});
}
$("#zbfilter").change(async (e) => {
await filter_zbs();
});
$(".scrollzb").click(async (e) => {
console.log("FIXME scrollzb click");
return;
//alert($(e.target).attr("data-zbdir"));
window.rb = (await restoreVal(`reiseBerichte_${heldid}`, "[]")).filter( z => z.match($("#zbfilter").val()));
let dir = parseInt($(e.target).attr("data-zbdir")), curr = parseInt($("#zbNum").text())-1, nxt = curr + dir;
if(nxt == -1) {
nxt = window.rb.length-1;
} else if(nxt == window.rb.length) {
nxt = 0;
}
console.log("showing ",curr,nxt,window.rb.length);
if(nxt >= 0 && nxt < window.rb.length) {
$("#zbcurr").html(prepZB(window.rb[nxt]));
$("#zbGes").text(window.rb.length);
$("#zbSlider").attr("max", window.rb.length).val(1);
$("#zbNum").text(nxt+1);
}
});
$("#delZB").click(async (e) =>{
console.log("FIXME delzb click");
return;
window.rb = await restoreVal(`reiseBerichte_${heldid}`, "[]");
window.rb.splice(parseInt($("#zbNum").text())-1,1);
await storeVal(`reiseBerichte_${heldid}`, window.rb);
if(parseInt($("#zbNum").text())-1 > window.rb.length - 1) {
$("#zbNum").text(parseInt($("#zbNum").text())-1);
}
$("#zbcurr").html(prepZB(window.rb[parseInt($("#zbNum").text())-1]));
});
$("#delAllZB").click(async (e) => {
console.log("FIXME delAllZB click");
return;
await GM.setValue(`reiseBerichte_${heldid}`,"[]");
unsafeWindow.reiseBerichte = [];
$("#zbtbl").detach();
});
//$("#zbtbl").mouseleave((e) => $("#zbtbl").detach());
$("#zbtbl").delayLeaveHide("#zbtbl", 1000);
}
async function displayconfigMini() {
if(location.href.match(/router.php/)) {
return;
}
await GM.addStyle(".config { position:absolute;top:0px;left:0px;font-family:Montserrat, sans-serif !important;font-weight: bold;}");
await GM.addStyle(".config td { background-color:#333333;font-family:Montserrat, sans-serif !important;font-weight: bold;}");
$("body[id!='tinymce']").first().prepend("🛠");
await zbCount(c => {
if(c > 0) {
$("#configMini").append(`${c}`);
}
});
$("#configMini").mouseenter(displayConfigMaxi);
$("#cfgLabel").effect( "pulsate", {times:500}, 3000000 );
}
async function displayConfigMaxi() {
$(".config").css({ "background-color": "#333333"});
$("#configTable").detach();
$("#configMini").append("");
for(var cfgItem in configitems) {
if($(`#${cfgItem}`).length == 0) {
$("#configTable").append(`${configitems[cfgItem]} | |
`);
if(config[cfgItem] != false) {
$(`#${cfgItem}`).prop("checked", true);
}
}
}
$("#configTable").append(" |
");
$(".configCheckBox").change(async (e) => { await updateConfig($(e.target).attr("id"),$(e.target).prop("checked"));});
$("#showzb").mouseenter(showZB);
/*$("#configMini").mouseleave((e) => {
$("#configTable").detach();
$(".config").css({ "background-color": ""});
}); */
$("#configTable").append(`${GM.info.script.name} v${GM.info.script.version} |
`);
$("#configMini").delayLeaveHide("#configTable", 500, () => $(".config").css({ "background-color": ""}));
}
async function updateConfig(item,value) {
console.log(config, item, "=>", value);
config[item] = value;
await storeVal(`config_${heldid}`, config);
}
async function processZB() {
$("div.tag:not(:has(.zb_protokoll_held,.scene_protocol))").detach();
$("div.tag:not([data-processed])").each(async (i,e) => {
if($(e).closest("#zbcurr").length == 0) { // die "echte" ZB
$(e).find(".tag_ooc").first().append(" - " + (new Date()).toString().replace(/ G.*/,''));
await when({
cond: () => $("#CountDownBoxRU strong").length > 0,
cb: () => $(e).find(".tag_ooc").first().append(" | " + $("#CountDownBoxRU strong:nth(0)").text() + " -> " + $("#CountDownBoxRU strong:nth(1)").text()+"")
});
$(e).attr("data-processed", "1");
if($(e).find(".tag_ooc").length > 1) {
if($(e).find(".kampfTabelle").length > 0) {
var helden = $(e).find("span.held").length / 2,
gegner = $(e).find("span.gegner").length / 2;
$(e).find(".tag_ooc").first().append(`${helden} ⚔ ${gegner}`);
}
await when({
cond: () => $(e).find(".zb_strecke").length > 0,
cb: async () => await saveZB([$(e).prop("outerHTML")])
});
}
var aid = makeid(20);
$(e).prepend(` `);
if($(e).html().match(swRE)) {
var bild = "407";
for(var sw of warenBilder) {
if($(e).html().match(sw[0])) {
bild = sw[1];
break;
}
}
$(".heroShortInfo").append(``);
} else if($(e).html().match(/Steppendrache/)) {
// 🐉
$(".heroShortInfo").append(`🐉`);
}
if($(e).html().match(dngZBre)) {
$(".heroShortInfo").append(`⚔`);
}
$('a.zbjumper:not([data-hashandler])').attr("data-hashandler", 1).on('click', function (e) {
e.preventDefault();
var targetEle = this.hash;
var $targetEle = $(targetEle);
$('html, body').stop().animate({
'scrollTop': $targetEle.offset().top
}, 800, 'swing', function () {
window.location.hash = targetEle;
});
});
}
});
$(".tag").not((i,e) => $(e).closest("#zbcurr").length > 0).contents().filter((i,e) => e.nodeType == 3 && e.nodeValue.trim() !== '').wrap("");
$("div.tag .tag_ooc:contains(Reisetag)").not((i,e) => $(e).closest("#zbcurr").length > 0).mouseenter(e => $(e.currentTarget).siblings(":not(.tag_ooc,.zb_protokoll_held,.zb_protokoll_clear,.tag_clear)").show());
$("div.tag").not((i,e) => $(e).closest("#zbcurr").length > 0).mouseleave(e => $(e.currentTarget).children(":not(.tag_ooc,.zb_protokoll_held,.zb_protokoll_clear,.tag_clear)").hide());
$("div.tag").not((i,e) => $(e).closest("#zbcurr").length > 0).children(":not(.tag_ooc,.zb_protokoll_held,.zb_protokoll_clear,.tag_clear)").hide();
}
async function sucheEinrichten(term, url, selector, transformer = v => [v.name, v.staedte], cb = async (l) => "") {
const pop_list = (l,lsel) => $(lsel).html([["-","---"]].concat(l).map(v => ``).join("\n"));
const too_old = async (s, n = 7) => (new Date(parseInt(await restoreVal(`${s}_datum`, "0")))-0) <= (new Date()-0) - 1000*3600*24*n;
console.log(`Suche-Select ${term} einrichten`);
if(await too_old(`${term}`)) {
console.log(term+" too old");
await GM.xmlHttpRequest({
url: url,
responseType: "json",
onload: async (rsp_wrap) => {
console.log("Fetched data for "+term);
var rsp = rsp_wrap.response,
list = rsp.map(transformer);
unsafeWindow[`${term}_content`] = list;
await storeVal(`${term}_datum`, (new Date()-0));
await storeVal(`${term}_content`, list);
pop_list(list, selector);
await cb(list);
}
});
} else {
console.log("Loaded data for "+term);
var list = await restoreVal(`${term}_content`, "[]");
pop_list(list, selector);
await cb(list);
}
}
async function minirouter() {
$("#heldeninfoInnerBox").append("⤧");
$("#routerei").append("");
$("#routerei").append("");
$(".persistent").each(async (i,e) => {
$(e).prop("checked", (await GM.getValue($(e).attr("id")+"_persisted", "0")) == "1");
$(e).change(async() => {
await GM.setValue($(e).attr("id")+"_persisted", $(e).prop("checked") ? "1" : 0);
$("select.routeSelector").filter((i,s) => $(s).val() != "---").trigger("change");
});
});
$("#routerei").append("");
$("#routerei").append("");
$("#routerei").append("");
$("#routing_on").click(async () => {
if($("#routerei:visible").length > 0) {
$("#routerei").hide();
return;
}
console.log("Ortssuche einrichten");
await sucheEinrichten("ort", "https://www.barski.org/anta/router.php?getdata=orte", "#orte_list", o => [o.name, o.id], async (orte) => {
let rz = await GM.getValue(`routenZiel_${heldid}`, "");
if(rz != "") {
$("#routenZiel").html(orte.filter(async(o) => o.id == parseInt(rz))[0].name);
}
});
await sucheEinrichten("haendler", "https://www.barski.org/anta/router.php?getdata=haendler", "#vendor_list", o => [o.bezeichnung, o.staedte]);
await sucheEinrichten("sfs", "https://www.barski.org/anta/router.php?getdata=sfs", "#sf_list", v => [v.name, v.staedte]);
$("#routerei").show();
$("#sf_list,#vendor_list,#orte_list").change(async(e) => {
if(held_ort.match(/(Auf Reisen)|(---)/)) {
held_ort = $("#CountDownBoxRU strong").last().text();
}
$("#ziel_route").detach();
$("#routerei").append(`Loading...0/${$(e.target).val().replace(/;;+/,";").split(";").length}
`);
window.rqresults = [];
console.log(held_ort);
var targets = $(e.target).val().replace(/;;+/,";").split(";"),
routeDatas = targets.map(t => [
["start", held_ort],
["ziel", [t]],
//["umgehen_reiche","9,7,6"],
["schiff", $("#rschiff").prop("checked")],
["kutsche", $("#rkutsche").prop("checked")],
["wegpunktkosten","0"],
["geldkosten","100000"]
]), rqdatas = routeDatas.map(rd => ({
url: "https://www.barski.org/anta/astar.php?"+rd.map(r => `${r[0]}=${encodeURIComponent(r[1])}`).join("&"),
responseType: "json",
onload: rsp_routen => {
window.rqresults.push(rsp_routen);
$("#lstatus").text(window.rqresults.length);
}
})), requests = rqdatas.map(rqd => GM.xmlHttpRequest(rqd)),
promises = await Promise.all(requests),
result = window.rqresults.map(r => r.response).reduce((a,b) => a.concat(b), []);
await pop_route(result, "#routerei");
});
});
return;
}
const pop_route = async (rsp_routen, container) => {
const kosten = a => a.total_anta_days + (unsafeWindow.heller_faktor == null ? 10000 : unsafeWindow.heller_faktor) * a.total_heller;
var rt = (rsp_routen.response == null ? rsp_routen : rsp_routen.response ).filter(r => "total_anta_days" in r).sort((a,b) => kosten(a)-kosten(b))[0];
unsafeWindow.rsp_routen = rsp_routen;
$("#ziel_route").detach();
$(container).append("");
var vroute = `${rt.route[0][1]} | -> | ${rt.route.slice(-1)[0][1]} |
`;
vroute += `${rt.total_rl_minutes} Minuten |
`;
for(var i = 0; i < rt.route.length - 2; i += 2) {
vroute += `${rt.route[i][1]} | -> | ${rt.route[i+1][2]} | -> | ${rt.route[i+2][1]} | `;
}
$("#ziel_route").html(vroute);
}
const quali = [
"Murks",
"fast Murks",
"kaum verwendbar",
"mangelhaft",
"brauchbar",
"solide",
"gut",
"nahezu perfekt",
"Superior"
];
async function zeige_Zustand(z) {
var zustand = $(z).attr("rel").replace(/.*Zustand: */,""), zstnum = quali.indexOf(zustand)+1, colorOffset = 255/(quali.length)*(zstnum-1), color = `rgb(${255-colorOffset},${colorOffset},0)`;
$(z).append(`${"█".repeat(zstnum)+" ".repeat(10-zstnum)}${zustand}
`);
await when_seen("#waffenzustand", async () => {
await when_disappears("#waffenzustand", async () => zeigeZustand(z),500);
});
return;
}
async function herofastswitch() {
await when_seen(".heroPics", addHeroPicPerks);
}
async function zbs_speichern() {
await whenever({
seen: ["div.tag:not([data-processed])"],
cb: processZB
});
}
async function karte_verstecken() {
await whenever({
seen: ["tr td #wegweiserMapContainer:visible"],
cb: () => $("#wegweiserMapContainer").hide()
});
}
async function zeigeZustand() {
await when_seen("#treffer_zone_und_waffen .heldeninfo_waffen span[rel*='Zustand:']", zeige_Zustand);
}
function groschen2price(g) {
var s = "", p = g;
if(p >= 100) {
s = `${~~(p/100)} `;
p %= 100;
}
if(p >= 10) {
s += `${~~(p/10)} `;
p %= 10;
}
if(p >= 1) {
s += `${p} `;
}
return s;
}
async function displayWK() {
if($("input.button[type='submit'][value='Kaufen']").length == 0) {
return;
}
if($("#warenkorb").length == 0) {
$("#gameInnerBox").prepend("");
$("#warenkorb").css({
position: "fixed",
top: $("#game").offset().top,
left: $("#game").offset().left
}).append("");
$("#wktbl").css({
"font-size": "small",
"top": $("input[type='submit'][value='Kaufen']").css("height"),
"position": "relative"
});
}
$("tr[article] input.input_zahl").change(async() => await updateWK());
}
async function updateWK() {
var wk = $("tr[article] input.input_zahl").filter((i,e) => $(e).val() != "" && parseInt($(e).val()) !== 0).toArray().map(e => {
return `
`
+` | ${$(e).val()}x | `
+`${groschen2price(parseInt($(e).closest("tr").attr("price")))} | `
//+`${groschen2price(parseInt($(e).closest("tr").attr("price"))*parseInt($(e).val()))} | `
+`
`;
}), sum = $("tr[article] input.input_zahl").filter((i,e) => $(e).val() != "" && parseInt($(e).val()) !== 0).toArray().map(e => parseInt("0"+$(e).val()) * parseInt("0"+$(e).closest("tr").attr("price"))).reduce((a,b) => a+b,0);
console.log(wk);
$("#wktbl").html(wk.join(" "));
if(sum > 0) {
$("#wktbl").append(` |
|
| ${groschen2price(sum)} |
`);
}
}
async function main() {
$("#ae_erinnerung").detach();
if(config.ajaxify != false) {
await ajaxify();
}
if(config.displayWK != false) {
await displayWK();
}
}
(async () => {
setTimeout(async () => await displayconfigMini());
if(config.herofastswitch != false) {
await herofastswitch();
}
if(config.zbs_speichern != false) {
await zbs_speichern();
}
if(config.karte_verstecken != false) {
await karte_verstecken();
}
if(config.minirouter != false) {
await minirouter();
}
if(config.zeigeZustand != false) {
await zeigeZustand();
}
await main();
})();