The All Mighty

Wave builder for Travian Legends and Travian Codex Victoria

目前为 2020-05-13 提交的版本,查看 最新版本

// ==UserScript==
// @name           The All Mighty
// @namespace      https://greasyfork.org/en/users/560174-adir-avisar
// @description    Wave builder for Travian Legends and Travian Codex Victoria
// @author         Mr Cheeses' team
// @include        *://*.travian.*/*
// @include        *://*.travian.*.*/*
// @include        *://*/*.travian.*/*
// @include        *://*/*.travian.*.*/*

// @version        1.4
// ==/UserScript==

function OneCodeToRuleThemAll () {
    'use strict';
    var vergsion = '1.4';
    var scriptURL = 'https://greasyfork.org/en/scripts/403175-the-all-mighty';
    var OVER_VIEW_COLUMNS = ['tro', 'bui', 'att']
    var OVER_VIEW_COLORS = ['Blue', 'Black', 'Red']
    var OPTIONS = {
        "dorf3.php" : OVER_VIEW_COLUMNS.forEach(OverViewGenrCol), // Over view
        "dorf3.php?s=0" : OVER_VIEW_COLUMNS.forEach(OverViewGenrCol), // Over view second option
        "build.php?tt=99&id=39" : RobberyPrecenage() // Farm List
    }

    // This function changes the images to the onhover text in the over view.
    // Over View - Start //
    function OverViewGenrCol(name) {
        var counter = 0;
        for(var village = 0; village < document.getElementsByTagName('tbody')[0].getElementsByClassName(name).length; village++){
            // Variable reset
            counter = 1;
            if(document.getElementsByTagName('tbody')[0].getElementsByClassName(name).item(village).getElementsByTagName('img')[0]){
                for(var element = 0; element < document.getElementsByTagName('tbody')[0].getElementsByClassName(name).item(village).getElementsByTagName('a').length;element++){
                    // Change text value
                    document.getElementsByTagName('tbody')[0].getElementsByClassName(name)
                            .item(village).getElementsByTagName('a')[element].innerHTML = document.getElementsByTagName('tbody')[0].getElementsByClassName(name).
                            item(village).getElementsByTagName('img')[0].alt + '</br>'

                    // Change text size
                    document.getElementsByTagName('tbody')[0].getElementsByClassName(name)
                            .item(village).getElementsByTagName('a')[element].style.fontSize = '85%'

                    // Change text color
                    document.getElementsByTagName('tbody')[0].getElementsByClassName(name)
                            .item(village).getElementsByTagName('a')[element].style.color = OVER_VIEW_COLORS[counter % 3]
                     
                    // Add to counter to change the color of the next element
                    counter++
                }
            }
        }
    }
    // Over View - End //

    //****************//
    /******************/
    /******Buffer******/
    /******************/
    //****************//

    // Farm List - Start //
    function RobberyPrecenage() {
        var RaidLists = document.getElementsByClassName('listEntry')

        for (var RaidList = 0; RaidList < document.getElementsByClassName('listEntry').length; RaidList++) {
            for (var Raid = 0; Raid < document.getElementsByClassName('listEntry').item(RaidList).getElementsByClassName('slotRow').length; Raid++) {
                // Robbed something
                if (document.getElementsByClassName('listEntry').item(RaidList).getElementsByClassName('slotRow').item(Raid).getElementsByClassName("carry half")[0] != undefined){
                    var str = document.getElementsByClassName('listEntry').item(RaidList).getElementsByClassName('slotRow').item(Raid).getElementsByClassName("carry half")[0].alt
                    var PercentageEl = document.createElement('a')
                    PercentageEl.innerHTML = CalculatePercentage(getValues(str)) + "%"
                    PercentageEl.style.color = "Black"
                    document.getElementsByClassName('listEntry').item(RaidList).getElementsByClassName('slotRow').item(Raid).getElementsByClassName("lastRaid")[0].appendChild(PercentageEl)
                }
                // Didn't robbed anything
                else if (document.getElementsByClassName('listEntry').item(RaidList).getElementsByClassName('slotRow').item(Raid).getElementsByClassName("carry empty")[0] != undefined){
                    var str = document.getElementsByClassName('listEntry').item(RaidList).getElementsByClassName('slotRow').item(Raid).getElementsByClassName("carry empty")[0].alt
                    var PercentageEl = document.createElement('a')
                    PercentageEl.innerHTML = CalculatePercentage(getValues(str)) + "%"
                    PercentageEl.style.color = "Black"
                    document.getElementsByClassName('listEntry').item(RaidList).getElementsByClassName('slotRow').item(Raid).getElementsByClassName("lastRaid")[0].appendChild(PercentageEl)
                }
                // Carried a full bag
                else if (document.getElementsByClassName('listEntry').item(RaidList).getElementsByClassName('slotRow').item(Raid).getElementsByClassName("carry full")[0] != undefined){
                    var str = document.getElementsByClassName('listEntry').item(RaidList).getElementsByClassName('slotRow').item(Raid).getElementsByClassName("carry full")[0].alt
                    var PercentageEl = document.createElement('a')
                    PercentageEl.innerHTML = CalculatePercentage(getValues(str)) + "%"
                    PercentageEl.style.color = "Black"
                    document.getElementsByClassName('listEntry').item(RaidList).getElementsByClassName('slotRow').item(Raid).getElementsByClassName("lastRaid")[0].appendChild(PercentageEl)
                }
            }
        }
    }

    function getValues(str) {
        return str.replace(/\D/g, " ").replace(/\s+/g,' ').trim()
    }

    // Calculate the precenage
    function CalculatePercentage(values) {
        var value = values.split(' ')
        return (value[0] / value[1] * 100).toFixed(2)
    }
    // Farm List - End //

    /********** begin of main code block ************/
    var URL = window.location.href // Get URL
    var URL_SPLITED = URL.split('/') // Split the URL
    var page = URL_SPLITED[URL_SPLITED.length -1] // Get the page

    OPTIONS[page] // Run the function for the page.
    /********** end of main code block ************/
}

OneCodeToRuleThemAll();