APB вики
Регистрация
Advertisement
APB вики
674
страницы

Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.

  • Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl+F5 или Ctrl+R (⌘+R на Mac)
  • Google Chrome: Нажмите Ctrl+Shift+R (⌘+Shift+R на Mac)
  • Internet Explorer / Edge: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl+F5
  • Opera: Нажмите Ctrl+F5.
;(function($, mw) {
    if (!$('#weaponCalc').length) { return; }

    APB = {
        init: function() {
            obj_data = {
                mod: {},
                food: {}
            };

            $.get('/wiki/Модификации:Данные', {action: 'raw', cb: Math.ceil(Math.random() * 1000)}, function(d) {
                $('#weaponCalc').html(
                    '<table class="weaponCalc wikitable" style="min-width:500px;">' +
                        '<tbody>' +
                            '<tr>' +
                                '<th colspan="5">' +
                                    '<select class="mod" />' +
                                '</th>' +
                            '</tr>' +
                            '<tr>' +
                                '<th colspan="2">' +
                                    'Уровень <input class="level" type="number" min="1" max="1094" maxlength="4" value="1" style="width:3em">' +
                                '</th>' +
                                '<th>' +
                                    '<img src="http://images2.wikia.nocookie.net/ark-survival-evolved/ru/images/thumb/2/29/Narcoberry.png/30px-Narcoberry.png" width="30" height="30">' +
                                '</th>' +
                                '<th>' +
                                    '<img src="http://images1.wikia.nocookie.net/ark-survival-evolved/ru/images/thumb/e/e6/Narcotic.png/30px-Narcotic.png" width="30" height="30">' +
                                '</th>' +
                                '<th>' +
                                    'Время' +
                                '</th>' +
                            '</tr>' +
                            '<tr class="ko">' +
                                '<td colspan="5" style="text-align: center;">' +
                                    '<span style="cursor: help; border-bottom: 1px dotted #397d75;" title="Предпологая, что лук полностью заряженный, и цель без брони и урон ближнего боя 100%">KO:</span> ' +
                                    // Дубина
                                    '<a href="/wiki/%D0%94%D0%B5%D1%80%D0%B5%D0%B2%D1%8F%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B4%D1%83%D0%B1%D0%B8%D0%BD%D0%BA%D0%B0" title="Деревянная дубинка">' +
                                        '<img src="http://images4.wikia.nocookie.net/ark-survival-evolved/ru/images/thumb/c/c8/Wooden_Club.png/30px-Wooden_Club.png" width="30" height="30">' +
                                    '</a> × <span class="dubina">0</span>;' +
                                    // Рогатка
                                    '<a href="/wiki/%D0%A0%D0%BE%D0%B3%D0%B0%D1%82%D0%BA%D0%B0" title="Рогатка">' +
                                        '<img src="http://images4.wikia.nocookie.net/ark-survival-evolved/ru/images/thumb/3/3f/Slingshot.png/30px-Slingshot.png" width="30" height="30">' +
                                    '</a> × <span class="rogatka">0</span>;' +
                                    // Транк. лук
                                    '<a href="/wiki/%D0%A2%D1%80%D0%B0%D0%BD%D0%BA%D0%B2%D0%B8%D0%BB%D0%B8%D0%B7%D0%B8%D1%80%D1%83%D1%8E%D1%89%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B5%D0%BB%D0%B0" title="Транк. стрела из лука">' +
                                        '<img src="http://images2.wikia.nocookie.net/ark-survival-evolved/ru/images/thumb/5/50/TranqArrowBow.png/30px-TranqArrowBow.png" width="30" height="30">' +
                                    '</a> × <span class="trank_luk">0</span>;' + 
                                    // Транк. арбалет
                                    '<a href="/wiki/%D0%A2%D1%80%D0%B0%D0%BD%D0%BA%D0%B2%D0%B8%D0%BB%D0%B8%D0%B7%D0%B8%D1%80%D1%83%D1%8E%D1%89%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B5%D0%BB%D0%B0" title="Транк. стрела из арбалета">' +
                                        '<img src="http://images1.wikia.nocookie.net/ark-survival-evolved/ru/images/thumb/c/c0/TranqArrowCrossbow.png/30px-TranqArrowCrossbow.png" width="30" height="30">' +
                                    '</a> × <span class="trank_arb">0</span>;' +
                                    // Дротик
                                    '<a href="/wiki/%D0%A2%D1%80%D0%B0%D0%BD%D0%BA%D0%B2%D0%B8%D0%BB%D0%B8%D0%B7%D0%B8%D1%80%D1%83%D1%8E%D1%89%D0%B8%D0%B9_%D0%B4%D1%80%D0%BE%D1%82%D0%B8%D0%BA" title="Транк. дротик">' +
                                        '<img src="http://images1.wikia.nocookie.net/ark-survival-evolved/ru/images/thumb/5/56/Tranquilizer_Dart.png/30px-Tranquilizer_Dart.png" width="30" height="30">' +
                                    '</a> × <span class="drotik">0</span>' +
                                '</td>' +
                            '</tr>' +
                        '</tbody>' +
                    '</table>'
                );

                $.each(d.split(';@'), function(num, val) {
                    if (val === '') { return; }
                    var type = (/^Модификации/.test(val)) ? 'mod' : 'food';

                    $.each(val.replace(/^(Модификации|Еда)\n/, '').split('*@'), function(i, v) {
                        APB.buildObj(i, v, type);
                    });
                });
                
                var def_crt = $('#weaponCalc').attr('data-crt');
                if (typeof(obj_data.mod[def_crt]) === 'undefined') {
                    def_crt = 'Нет';
                }
                
                $('.mod option[value="' + def_crt + '"]').attr('selected', 'selected');
                APB.count(def_crt, 0);

                $('.mod').before(
                    $('<img class="crt_img" style="margin-right:5px;" />')
                        .attr('src', obj_data.mod[def_crt].icon)
                        .prop('outerHTML')
                );

                $('.mod, .level').on('change', function() {
                    var crt = $('.mod option:selected').val(),
                        lvl = parseInt($('.level').val(), 10);

                    $('.crt_img').attr('src', obj_data.mod[crt].icon);
                    APB.count(crt, lvl);
                });
            });
        },

        buildObj: function(i, v, type) {
            if (v === '') { return; }
            v = v.split('\n');

            var name = v[0].replace(/\n/g, '');
            obj_data[type][name] = {};

            if (type === 'mod') {
                $('.mod').append('<option value="' + name + '">' + name + '</option>');
            }

            $.each(v, function(i, val) {
                if (i === 0 || val === '') { return; }

                val = val.replace(/(\*\*|\n)/g, '').split(': ');

                if (val[0] === 'eats' && type === 'mod') {
                    obj_data[type][name][val[0]] = val[1].split(', ');
                    return;
                }

                obj_data[type][name][val[0]] = val[1];
            });
        },

        count: function(mod, level) {
            $('.eats').remove();

            var mod = obj_data.mod[mod],
                affinityNeeded = parseFloat(mod.affinityNeeded0, 10) + parseFloat(mod.affinityIncrease, 10) * level,
                totalTorpor = parseFloat(mod.torpor1, 10) + parseFloat(mod.torporIncrease, 10) * (level - 1),
                torporDeplPS = parseFloat(mod.torporDepletionPS0, 10) * (1 + 0.01819 * level);

            /*//+не насильственное приручение
            if (mod.nonViolent === nil && mod.nonViolentTame == 1) {
                if (mod.wakeAffinityMult === nil) {
                    var wakeAffinityMult = mod.wakeAffinityMult;
                }
                if (mod.wakeFoodDeplMult === nil) {
                    var wakeFoodDeplMult = mod.wakeFoodDeplMult
                }
            }
            //-не насильственное приручение*/

            $.each(mod.eats, function(i, v) {
                var foodname = v.replace(/\d$/g, ''),
                    food = obj_data.food[v],
                    foodPiecesNeeded = Math.ceil(affinityNeeded / parseFloat(food.affinity, 10)),
                    seconds = Math.ceil(foodPiecesNeeded * parseFloat(food.foodValue, 10) / (parseFloat(mod.foodConsumptionBase, 10) * parseFloat(mod.foodConsumptionMult, 10))),
                    torporNeeded = Math.ceil(torporDeplPS * seconds - totalTorpor),
                    time = ~~(seconds/3600) + ":" + ~~((seconds%3600)/60) + ":" + seconds%3600%60;

                if (torporNeeded < 0) { torporNeeded = 0; }

                if (foodname == 'Корм') { foodname = "Корм (Яйцо " + mod.favoriteKibble + ")"; }

                APB.addBody(foodname, foodPiecesNeeded, torporNeeded, torporDeplPS, time, food.image);
            });
 
            APB.addToKO(totalTorpor);
        },

        addBody: function(foodname, foodPiecesNeeded, torporNeeded, torporDeplPS, time, link) {
            $('.ko').before(
                '<tr class="eats">' +
                    '<td>' +
                        $('<img style="margin-right:5px;" />').attr('src', link).prop('outerHTML') +
                        $('<a />').attr({href: foodname, title: foodname}).text(foodname).prop('outerHTML') +
                    '</td>' +
                    '<td style="text-align: right; width:2.8em">' + 
                        Math.ceil(foodPiecesNeeded) +
                    '</td>' +
                    '<td style="text-align: right; width:2.8em">' + 
                        Math.ceil(torporNeeded / (7.5+3*torporDeplPS)) +
                    '</td>' +
                    '<td style="text-align: right; width:2.8em">' + 
                        Math.ceil(torporNeeded / (40+5*torporDeplPS)) +
                    '</td>' +
                    '<td style="text-align: right; width:2.8em">' + 
                        time +
                    '</td>' +
                '</tr>'
            );
        },

        addToKO: function(t) {
            $('.dubina').text(Math.ceil(t / 10));
            $('.rogatka').text(Math.ceil(t / 24.5));
            $('.trank_luk').text(Math.ceil(t / 90));
            $('.trank_arb').text(Math.ceil(t / 157.5));
            $('.drotik').text(Math.ceil(t / 221));
        }
    };

    try {
        $(APB.init);
    }
    catch(e) {
        $('#weaponCalc').text('Ошибка! Проверьте консоль.');
        console.log(e);
    }
})(this.jQuery, this.mediaWiki);
Advertisement