Trimps tools

Trimps tools (visual)

目前為 2017-03-16 提交的版本,檢視 最新版本

// ==UserScript==
// @name         Trimps tools
// @namespace    trimps.github.io
// @version      1.022
// @description  Trimps tools (visual)
// @author       Anton
// @match        https://trimps.github.io
// @require      http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
// ==/UserScript==

(function() {
    'use strict';

    var tMain, tAutoBuy, tStyleFix, $ = jQuery;

    var _getBarWidthPercent = function(barSelector) {
        return jQuery(barSelector).width() / jQuery(barSelector).parent().width() * 100;
    }

    var _log = function(mes, type) {
        if (typeof type === 'undefined') type = "Story";
        message("BOT: " + mes, type);
    }

    var _checkProgress = function() {
        var maxProgress = 0, maxResource = '';
        var food = _getBarWidthPercent('#foodBar');
        var wood = _getBarWidthPercent('#woodBar');
        var metal = _getBarWidthPercent('#metalBar');
        if (food > maxProgress) {maxProgress = food; maxResource = 'food';}
        if (wood > maxProgress) {maxProgress = wood; maxResource = 'wood';}
        if (metal > maxProgress) {maxProgress = metal; maxResource = 'metal';}
        document.title = '' + Math.floor(maxProgress) + '% ' + maxResource;
    };

    var _styleUpdate = function() {
        // remove counts
        $('head').append('<style type="text/css">.queueItem,.btn{padding:0}.thingColorCanNotAfford.upgradeThing{background-color:#530053;}</style>');
        // remove tabs
        $('#buyTabs').hide();
        filterTabs('all');
        // remove captions
        $('#buildingsTitleDiv,#upgradesTitleDiv,#equipmentTitleDiv').hide();
        // fix height
        $('#topRow,#queueContainer').css('margin-bottom', '0');
        $('#jobsTitleDiv').css('padding', '0').css('font-size', 'smaller');
        $('#buyHere').css('margin', '0').css('padding', '0').css('overflow-x', 'hidden');
        $('#queueContainer').css('height', '70px');
        $('#numTabs').css('margin', '0');
        $('#buyContainer').css('height', 'calc(99vh - 20vw - 96px)');
        //
        _log('Started!');
    }

    var _autoUpgrade = function() {
        var $item = $('#upgradesHere').find('.thingColorCanAfford').first();
        if ($item.length > 0) {
            $item.trigger( "click" );
            _log('Upgrading ' + $item.attr('id'));
            return 1;
        } else {
            return 0;
        }
    }

    var _autoBuy = function() {
        var $item = $('#buildingsHere').find('.thingColorCanAfford').last();
        if ($item.length > 0 && $item.attr('id') != 'Trap') {
            $item.trigger("click");
            _log('Building ' + $item.attr('id'));
            return 1;
        } else {
            return 0;
        }
    }

    var _autoJobs = function() {
        var cnt = 0;
        var $trainer = $('#jobsHere').find('.thingColorCanAfford[id=Trainer]');
        if ($trainer.length > 0) {
            $trainer.trigger("click");
            _log('New trainer');
            cnt++;
        }
        var $explorer = $('#jobsHere').find('.thingColorCanAfford[id=Explorer]');
        if ($explorer.length > 0) {
            $explorer.trigger("click");
            _log('New explorer');
            cnt++;
        }
        
        var farmer = parseInt($('#jobsHere').find('#FarmerOwned').text());
        var lumber = parseInt($('#jobsHere').find('#LumberjackOwned').text());
        var miner = parseInt($('#jobsHere').find('#MinerOwned').text());
        var science = parseInt($('#jobsHere').find('#ScientistOwned').text());
        var jobsTotal = farmer + lumber + miner + science;
        if (science < (jobsTotal / 62)) {
            var $science = $('#jobsHere').find('.thingColorCanAfford[id=Scientist]');
            if ($science.length > 0) {
                $science.trigger("click");
                _log('New scientist', 'Combat');
                cnt++;
            }
        }
        if (miner < (jobsTotal / 3.05)) {
            var $miner = $('#jobsHere').find('.thingColorCanAfford[id=Miner]');
            if ($miner.length > 0) {
                $miner.trigger("click");
                _log('New miner', 'Combat');
                cnt++;
            }
        }
        if (lumber < (jobsTotal / 3.05)) {
            var $lumber = $('#jobsHere').find('.thingColorCanAfford[id=Lumberjack]');
            if ($lumber.length > 0) {
                $lumber.trigger("click");
                _log('New lumberjack', 'Combat');
                cnt++;
            }
        }
        if (farmer < (jobsTotal / 3.05)) {
            var $farmer = $('#jobsHere').find('.thingColorCanAfford[id=Farmer]');
            if ($farmer.length > 0) {
                $farmer.trigger("click");
                _log('New farmer', 'Combat');
                cnt++
            }
        }
        
        var unemployed = parseInt($('#jobsTitleUnemployed').text());
        if (unemployed > 0 && cnt === 0) {
            $farmer = $('#jobsHere').find('.thingColorCanAfford[id=Farmer]');
            if ($farmer.length > 0) {
                $farmer.trigger("click");
                _log('New farmer', 'Combat');
                cnt++
            }
        }

        return cnt;
    }

    var _styleFix = function() {
        $('.buyBox').find('.thing').find('br').remove();
        $('.buyBox').find('.thing').find('.thingOwned').css('margin-left','4px');
        $('#upgradesHere').find('.alert.badge').text('');
    }

    setTimeout(function() {
        tMain = setInterval(_checkProgress, 500);
        
        tAutoBuy = setInterval(function() {
            var cnt = _autoUpgrade() + _autoBuy() + _autoJobs();
            if (cnt > 0) {
                tooltip('hide');
            }
        }, 1000);
        
        tStyleFix = setInterval(_styleFix, 2000);
        
        _styleUpdate();
        _styleFix();
    }, 1000);

})();