HWM_MGQuickReturn

Быстрый возврат в сектор ГН

נכון ליום 10-06-2018. ראה הגרסה האחרונה.

// ==UserScript==
// @name         HWM_MGQuickReturn
// @namespace    Небылица
// @version      1.0
// @description  Быстрый возврат в сектор ГН
// @author       Небылица
// @include      /^https{0,1}:\/\/((www|qrator)\.heroeswm\.ru|178\.248\.235\.15)\/(map|mercenary_guild|war)\.php/
// @grant        GM_setValue
// @grant        GM_getValue
// ==/UserScript==

(function() {
    "use strict";

    switch (location.pathname){
        // При входе в бой ГН запоминаем сектор (ссылку) для возврата
        case "/map.php":
            var acceptButton = document.querySelector("a[href^='/map.php?action=accept_merc_task']");

            if (acceptButton !== null){
                acceptButton.onclick = function(event){
                    event.preventDefault();

                    // получаем код текущего района
                    var currentLocaleRegExp = /tgbut1\*cmbut1\*(.*?):/,
                        currentLocaleCodeArr = currentLocaleRegExp.exec(document.documentElement.innerHTML),
                        currentLocaleCode;

                    if (currentLocaleCodeArr !== null){
                        currentLocaleCode = currentLocaleCodeArr[1];
                    } else{
                        currentLocaleRegExp = /FlashVars(.*?):/;
                        currentLocaleCodeArr = currentLocaleRegExp.exec(document.documentElement.innerHTML);

                        if (currentLocaleCodeArr !== null){
                            currentLocaleCodeArr = currentLocaleCodeArr[1].split('*');
                            currentLocaleCode = currentLocaleCodeArr[currentLocaleCodeArr.length - 1];
                        } else {currentLocaleCode = 1;}
                    }

                    // записываем в хранилище код сектора ГН для возврата, который ближе всего к текущему (или сразу ссылку на гильдию, если идти и не нужно)
                    var localesСorrespondence = {
                        "1": "2", // Empire Capital
                        "2": "0", // East River
                        "3": "6", // Tiger Lake
                        "4": "2", // Rogues' Wood
                        "5": "2", // Wolf Dale
                        "6": "0", // Peaceful Camp
                        "7": "2", // Lizard Lowland
                        "8": "2", // Green Wood
                        "9": "6", // Eagle Nest
                        "10": "2", // Portal Ruins
                        "11": "2", // Dragons' Caves
                        "12": "6", // Shining Spring
                        "13": "6", // Sunny City
                        "14": "2", // Magma Mines
                        "15": "16", // Bear Mountain
                        "16": "0", // Fairy Trees
                        "17": "16", // Harbour City
                        "18": "16", // Mythril Coast
                        "19": "21", // Great Wall
                        "20": "21", // Titans' Valley
                        "21": "0", // Fishing Village
                        "22": "21", // Kingdom Castle
                        "23": "6", // Ungovernable Steppe
                        "24": "6", // Crystal Garden
                        "25": "", // East Island
                        "26": "2", // The Wilderness
                        "27": "6" // Sublime Arbor
                    }

                    var localeToReturn = localesСorrespondence[currentLocaleCode],
                        linkToReturn = (localeToReturn !== "0") ? ("move_sector.php?id=" + localeToReturn) : "mercenary_guild.php";
                    GM_setValue("linkToReturn", linkToReturn);

                    // идём в бой
                    window.open(event.target.href, "_self");
                }
            }
            break;

        // Записываем сдачу груза, если приняли разбойников
        case "/mercenary_guild.php":
            var documentInnerHTHL = document.documentElement.innerHTML;

            if (documentInnerHTHL.indexOf("минут") !== -1 && documentInnerHTHL.indexOf("Принять") === -1 && documentInnerHTHL.indexOf("Вы еще не приняли это задание") === -1 && documentInnerHTHL.indexOf("разбойники {") !== -1){
                GM_setValue("linkToReturn", "map.php?action=accept_merc_task3");
            }
            break;

        // Перенаправляем кнопку "Продолжить" при наличии сохранённой ссылки
        case "/war.php":
            var linkToReturn = GM_getValue("linkToReturn");

            if (linkToReturn !== ""){
                var continueButton = document.getElementById("btn_continue_WatchBattle");

                if (continueButton !== null){
                    continueButton.onclick = function(event){
                        event.preventDefault();

                        GM_setValue("linkToReturn", "");
                        window.open(linkToReturn, "_self");
                    }
                }
            }
            break;
    }
})();