StarRepublik Инструменти

Различни подобрения и инструменти за StarRepublik

От 12.06.2016. Виж последната версия.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey, Greasemonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да инсталирате разширение, като например Tampermonkey .

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Userscripts.

За да инсталирате скрипта, трябва да инсталирате разширение като Tampermonkey.

За да инсталирате този скрипт, трябва да имате инсталиран скриптов мениджър.

(Вече имам скриптов мениджър, искам да го инсталирам!)

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

(Вече имам инсталиран мениджър на стиловете, искам да го инсталирам!)

// ==UserScript==
// @name            StarRepublik Tools
// @name:bg         StarRepublik Инструменти
// @name:ro         Unelte StarRepublik
// @description     Various enhancements and tools for StarRepublik
// @description:bg  Различни подобрения и инструменти за StarRepublik
// @description:ro  Diverse îmbunătățiri și unelte pentru StarRepublik
// @namespace       http://www.linuxmint.ro/
// @version         1.2
// @license         CC BY 4.0
// @author          Nicolae Crefelean
// @include         https://www.starrepublik.com/*
// @grant           none
// ==/UserScript==

$(function() {

    var letters = [ 'α', 'β', 'γ', 'Δ', 'Ω' ];
    var congressCandidatesArticle = '';
    var effectDelay = 150;

    function clearTopMedals() {
        medals = [ '.defender-ds', '.attacker-ds', '.defender-bh', '.attacker-bh', '.defender-ace', '.attacker-ace' ];
        for (i = 0; i < 7; i++) {
        medal = medals[i];
            $(medal + ' a').removeAttr('href');
            $(medal + ' a img').removeAttr('src');
            $(medal + ' div.username').text('');
            $(medal + ' span.damage').text('');
            $(medal + ' span.shoots').text('');
        }
    }

    function addSquadronSwitcher() {
        $('.close-statistics:eq(1)').attr('class',$('.close-statistics:eq(1)').attr('class').replace(/4/g, '1'));
        squads = [];
        for (i = 1; i < 6; i++) {
            sclass = 'squadSwitch' + ($('.statistics:eq(1)').data('squadron') == i ? ' btn-primary' : '');
            squads.push("<a role='button' class='btn " + sclass + "'>" + letters[i - 1] + "</a>");
        }
        $('.close-statistics:eq(1)').before("<div class='col-lg-3 col-md-3 col-sm-3 col-xs-3'>" + squads.join('') + "</div>");
    }
    
    if (/^\/military\/battle\//.test(document.location.pathname)) {
        $('.battle-statistics').css('width', '100%');
        addSquadronSwitcher();
    }
    
    $('.squadSwitch').on("click", function() {
        clearTopMedals();
        $('.squadSwitch').removeClass('btn-primary');
        squad = letters.indexOf($(this).text());
        $('.squadSwitch:eq(' + squad + ')').addClass('btn-primary');
        $('.statistics:eq(1)').data('squadron', squad + 1).click();
    });

    if (/^\/country\/society\//.test(document.location.pathname)) {
        getCountryDetails();
    }
    
    function getCountryDetails() {
        sectors = $('.country-content .society-list:eq(1) li').length;
        $('.country-content .society-list:eq(1) > div').append(' (' + sectors + ')');
    }
    
    if (/^\/storage\/$/.test(document.location.pathname)) {
        minParts = Math.min(itemsCount('ion_ammo'), itemsCount('ion_stock'), itemsCount('ion_chip'));
        setCannonPartBalance(minParts);
        setWeaponBalance(minParts);
    }
    
    function itemsCount(img) {
        return Number($('.storage-list:eq(0) li img[src="/media/images/products/' + img + '.jpg"]').parent().next().text().trim()) || 0;
    }
    
    function setBalance(num) {
        return (num === 0 ? '' : (num > 0 ? '-' : '+')) + Math.abs(num).toString();
    }
    
    function weaponMultiplier(quality) {
        return {'q1': 10, 'q2': 8, 'q3': 6, 'q4': 4, 'q5': 2}[quality];
    }

    function setWeaponBalance(cannons) {
        for (i = 1; i < 6; i++) {
            quality = 'q' + i.toString();
            balance = setBalance(cannons * weaponMultiplier(quality) - itemsCount('weapon_' + quality));
            $('.item-creation-list li img[src="/media/images/products/weapon_' + quality + '.jpg"]').attr('alt', quality).parent().next().text(balance);
        }
    }
    
    function setCannonPartBalance(count) {
        $('.item-creation-list:eq(1) .item-to-create .quantity').text(count).prev().find('img').attr('alt', 'cannons');
        cannonParts = {1: 'ammo', 2: 'stock', 3: 'chip'};
        for (i = 1; i < 4; i++) {
            balance = setBalance(count - itemsCount('ion_' + cannonParts[i]));
            $('.item-creation-list:eq(1) img[src="/media/images/products/ion_' + cannonParts[i] + '.jpg"]').attr('alt', cannonParts[i]).parent().next().text(balance);
        }
    }

    if (/^\/politics\/congress-candidates\//.test(document.location.pathname)) {
        buildCongressCandidatesArticle();
    }

    function getCongressCandidatesList() {
        if ($('.citizens-list li').length > 0) {
            congressCandidatesList = {};
            $('.citizens-list li').each(function() {
                cit = {};
                cit.cname = $(this).find('.name').text().trim();
                cit.curl = $(this).find('.name a').attr('href').trim();
                cit.sector = '[b]' + $(this).find('.sector').text().trim() + '[/b]';
                cit.pname = $(this).find('.party').text().trim();
                cit.purl = $(this).find('.party a').attr('href').trim();
                
                if (!(cit.sector in congressCandidatesList)) {
                    congressCandidatesList[cit.sector] = {};
                }
                
                cit.bbcit = '[url=https://www.starrepublik.com' + cit.curl + ']' + cit.cname + '[/url]';
                cit.bbprt = '[url=https://www.starrepublik.com' + cit.purl + ']' + cit.pname + '[/url]';
                congressCandidatesList[cit.sector][cit.bbcit] = cit.bbprt;
            });
            return congressCandidatesList;
        }
    }
    
    function buildCongressCandidatesArticle() {
        list = getCongressCandidatesList();
        if (list) {
            $.each(list, function(index, value) {
                congressCandidatesArticle += "\n" + index + "\n";
                $.each(value, function(idx, val) {
                    congressCandidatesArticle += idx + ' - ' + val + "\n";
                });
            });
            congressCandidatesArticle = "[center]" + congressCandidatesArticle.trim() + "[/center]";
            
            $('.party-content > .section-header.politics').append(' [<span id="toggleArticle" style="cursor: pointer">+</span>]');
            $('.citizens-list').before("<div id='congressCandidatesArticle' class='col-md-12' style='display: none'><p><textarea class='form-control' style='resize: vertical'>" + congressCandidatesArticle + "</textarea></p></div>");
        }
    }
    
    $('#toggleArticle').click(function () {
        if ($('#congressCandidatesArticle').css('display') === 'none') {
            $('#congressCandidatesArticle').show(effectDelay);
            $('#toggleArticle').html('&mdash;');
        } else {
            $('#congressCandidatesArticle').hide(effectDelay);
            $('#toggleArticle').html('+');
        }
    });

});