The Tale Extended

Расширение базового функционала в браузерной игре Сказка

目前為 2015-05-14 提交的版本,檢視 最新版本

// ==UserScript==
// @name        The Tale Extended
// @description Расширение базового функционала в браузерной игре Сказка
// @author      standy <[email protected]>
// @version     0.4.3
// @include     http://the-tale.org/game/
// @run-at      document-end
// @license     MIT License
// @namespace   the-tale-extended
// ==/UserScript==
// @require     http://code.jquery.com/jquery-1.11.2.min.js
// @grant       GM_addStyle


/******/ !function(modules) {
    /******/
    // The require function
    /******/
    function __webpack_require__(moduleId) {
        /******/
        // Check if module is in cache
        /******/
        if (installedModules[moduleId]) {
            /******/
            return installedModules[moduleId].exports;
        }
        /******/
        // Create a new module (and put it into the cache)
        /******/
        var module = installedModules[moduleId] = {
            /******/
            exports: {},
            /******/
            id: moduleId,
            /******/
            loaded: !1
        };
        /******/
        // Return the exports of the module
        /******/
        /******/
        // Execute the module function
        /******/
        /******/
        // Flag the module as loaded
        /******/
        return modules[moduleId].call(module.exports, module, module.exports, __webpack_require__), module.loaded = !0, module.exports;
    }
    // webpackBootstrap
    /******/
    // The module cache
    /******/
    var installedModules = {};
    /******/
    // Load entry module and return exports
    /******/
    /******/
    // expose the modules object (__webpack_modules__)
    /******/
    /******/
    // expose the module cache
    /******/
    /******/
    // __webpack_public_path__
    /******/
    return __webpack_require__.m = modules, __webpack_require__.c = installedModules, __webpack_require__.p = "", __webpack_require__(0);
}([ /* 0 */
/***/
function(module, exports, __webpack_require__) {
    __webpack_require__(9), __webpack_require__(11), __webpack_require__(13), __webpack_require__(1), window.injectDone && window.injectDone();
}, /* 1 */
/***/
function(module, exports, __webpack_require__) {
    var ext = {};
    ext.utils = __webpack_require__(3), ext.parse = __webpack_require__(4), ext.trace = __webpack_require__(5), ext.draw = __webpack_require__(6), ext.notifications = __webpack_require__(7), 
    ext.auto = __webpack_require__(8), window.ext = ext, __webpack_require__(2);
    /* todo разнести эту логику */
    var utils = ext.utils, _draw = ext.draw, _trace = ext.trace, _log = utils.log, _elements = utils.elements, _stats = _draw.stats, _archive = _draw.archive;
    utils.publish("init"), _elements.getTabInner("sets").on("click", "#reset-stats", function() {
        confirm("Будет сброшена вся история\nПродолжить?") && (_log.set("messagesLog", ""), _trace.messagesLog.splice(0, _trace.messagesLog.length), _log.set("archiveGroups", ""), 
        _archive.archiveGroups.splice(0, _archive.archiveGroups.length), _stats.drawStatsSide(), _elements.getTabInner("group").html(""));
    });
}, /* 2 */
/***/
function(module, exports, __webpack_require__) {
    var $ = __webpack_require__(16);
    //console.log('tables.js')
    window.tables = function(_tables) {
        "use strict";
        function makeSortable($table) {
            var $head = $table.find("thead tr").first(), $rows = $table.find("tbody tr");
            $head.children("th").wrapInner('<span class="sort" />').each(function() {
                var $th = $(this), thIndex = $th.index();
                $th.children(".sort").click(function() {
                    $th.siblings("th").children(".sort").attr("class", "sort");
                    var inverse = $(this).hasClass("sort-up");
                    $(this).attr("class", "sort sort-" + (inverse ? "down" : "up"));
                    var arr = [];
                    $rows.each(function() {
                        var value, valueText = $.trim($(this).children("td").eq(thIndex).text());
                        value = -valueText || parseDate(valueText) || valueText, arr.push({
                            $item: this,
                            value: value
                        });
                    }), arr.sort(function(a, b) {
                        return a.value === b.value ? 0 : a.value > b.value ? inverse ? 1 : -1 : inverse ? -1 : 1;
                    }), arr.forEach(function(item) {
                        $table.append(item.$item);
                    });
                });
            });
        }
        function parseDate(str) {
            //02.04.2014 10:50
            var p = /(\d{2})\.(\d{2})\.(\d{4})\s(\d{1,2})\:(\d{2})/.exec(str);
            return p ? +new Date(p[3], p[2] - 1, p[1], p[4], p[5]) : 0;
        }
        return $(".table").each(function() {
            makeSortable($(this));
        }), $.extend(_tables, {
            makeSortable: makeSortable
        }), _tables;
    }({});
}, /* 3 */
/***/
function(module, exports, __webpack_require__) {
    var utils = module.exports = {};
    utils["const"] = __webpack_require__(31), utils.subscribeList = __webpack_require__(32).subscribeList, utils.publish = __webpack_require__(32).publish, utils.subscribe = __webpack_require__(32).subscribe, 
    utils.cacheStore = __webpack_require__(33).cacheStore, utils.cache = __webpack_require__(33).cache, utils.store = __webpack_require__(34), utils.log = __webpack_require__(35), 
    utils.settings = __webpack_require__(36), utils.utils = __webpack_require__(37), utils.elements = __webpack_require__(38), utils.isMyName = __webpack_require__(39), 
    utils.isActType = __webpack_require__(40);
    /* todo разнести эту логику */
    var $ = __webpack_require__(16);
    setTimeout(function() {
        $(document).on("ajaxSuccess.ext", function(event, XMLHttpRequest, setting, result) {
            if (0 === setting.url.indexOf("/game/api/info?api_client=")) {
                var game_data = result.data;
                try {
                    utils.heroName = game_data.account.hero.base.name, utils.map_version = game_data.map_version;
                } catch (e) {}
                utils.preloadDone || //			$(document).trigger(pgf.game.events.DATA_REFRESHED, game_data);
                utils.publish("preload", game_data), utils.preloadDone = 1, game_data.account.is_old || (utils.publish("load", game_data), $(".ext-wait").hide(), $(document).off("ajaxSuccess.ext"), 
                delete utils.preloadDone);
            }
        });
    }, 1e3);
}, /* 4 */
/***/
function(module, exports, __webpack_require__) {
    var parseShort = __webpack_require__(18), parseHighlight = __webpack_require__(19), _parse = module.exports = {};
    _parse["short"] = parseShort, _parse.highlight = parseHighlight;
}, /* 5 */
/***/
function(module, exports, __webpack_require__) {
    var $ = __webpack_require__(16), core = (__webpack_require__(17), __webpack_require__(3)), _log = core.log, _subscribe = core.subscribe, _trace = module.exports = {};
    _trace.messagesLog = __webpack_require__(23), _trace.traceInit = __webpack_require__(24), _trace.traceData = __webpack_require__(25), _trace.traceStart = __webpack_require__(26), 
    _trace.traceStop = __webpack_require__(27), _subscribe("init", function() {
        _trace.traceInit(), _trace.traceStart();
    }), _subscribe("newMessages", function(messagesNew, gameData, timestamp) {
        _log.set("game_data", gameData);
        var hero = gameData.account.hero, levelsLog = _log.get("levelsLog") || [], lastLevel = (levelsLog[levelsLog.length - 1] || [])[1];
        hero.base.level !== lastLevel && (console.info("level up!", hero.base.level), levelsLog.push([ timestamp, hero.base.level ]), _log.set("levelsLog", levelsLog));
        var powersLog = _log.get("powersLog") || [];
        powersLog = powersLog.filter(function(t) {
            return "number" == typeof t[1];
        });
        var lastPower = (powersLog[powersLog.length - 1] || [])[1], powerSum = hero.secondary.power[0] + hero.secondary.power[1];
        powerSum !== lastPower && (console.info("power up!", powerSum), powersLog.push([ timestamp, powerSum ]), _log.set("powersLog", powersLog)), _trace.lastGameData = gameData;
    }), _subscribe("init", function() {
        $("#pgf-journal-container").on("click", "[data-ts]", function() {
            var timestamp = $(this).data("ts");
            _trace.messagesLog.forEach(function(message) {
                message[0] === timestamp && console.log(message);
            });
        }).on("click", "[data-click]", function() {
            console.log($(this).data("click"));
        });
    }), _subscribe("newTurn", function() {
        window.setTimeout(function() {
            core.elements.getControl("journal-log").find(".value").text(_trace.messagesLog.length);
        }, 10);
    });
}, /* 6 */
/***/
function(module, exports, __webpack_require__) {
    var _print = module.exports = {};
    _print.towns = __webpack_require__(42), _print.shortMessages = __webpack_require__(43), _print.groupMessages = __webpack_require__(44), _print.archive = __webpack_require__(45), 
    _print.stats = __webpack_require__(46);
}, /* 7 */
/***/
function(module, exports, __webpack_require__) {
    var _notifications = module.exports = {};
    _notifications.quests = __webpack_require__(20), _notifications.hero = __webpack_require__(21), _notifications.sendNotify = __webpack_require__(22);
}, /* 8 */
/***/
function(module, exports, __webpack_require__) {
    var _auto = module.exports = {};
    _auto.initSets = __webpack_require__(28), _auto.checkHero = __webpack_require__(29), _auto.checkQuest = __webpack_require__(30);
}, /* 9 */
/***/
function(module, exports, __webpack_require__) {
    // style-loader: Adds some css to the DOM by adding a <style> tag
    // load the styles
    var content = __webpack_require__(10);
    "string" == typeof content && (content = [ [ module.id, content, "" ] ]);
    // add the styles to the DOM
    __webpack_require__(15)(content, {});
}, /* 10 */
/***/
function(module, exports, __webpack_require__) {
    exports = module.exports = __webpack_require__(41)(), exports.push([ module.id, "/*body .navbar .container { max-width: 1170px; }*/\r\n\r\n\r\n\r\n.sort { cursor: default; position: relative; }\r\n\r\n.sort-down:after,\r\n.sort-up:after {\r\n	content: '';\r\n	display: inline-block;\r\n	width: 0;\r\n	height: 0;\r\n	margin: 8px -9px 0 1px;\r\n	vertical-align: 1px;\r\n	border-right: 4px solid transparent;\r\n	border-left: 4px solid transparent;\r\n\r\n}\r\n.sort-up:after {\r\n	border-top: 4px solid #000000;\r\n}\r\n.sort-down:after {\r\n	border-bottom: 4px solid #000000;\r\n}\r\n\r\n\r\n/* forum */\r\n.caption a,\r\n.caption a:visited,\r\n.caption a:hover {\r\n	/*color: #444;*/\r\n	opacity: .5;\r\n}\r\n\r\n.caption.new-messages a,\r\n.caption.new-messages a:link,\r\n.caption.new-messages a:visited,\r\n.caption.new-messages a:hover {\r\n	/*color: #0088cc;*/\r\n	opacity: 1;\r\n}\r\n/* eo forum */", "" ]);
}, /* 11 */
/***/
function(module, exports, __webpack_require__) {
    // style-loader: Adds some css to the DOM by adding a <style> tag
    // load the styles
    var content = __webpack_require__(12);
    "string" == typeof content && (content = [ [ module.id, content, "" ] ]);
    // add the styles to the DOM
    __webpack_require__(15)(content, {});
}, /* 12 */
/***/
function(module, exports, __webpack_require__) {
    exports = module.exports = __webpack_require__(41)(), exports.push([ module.id, "@font-face {\r\n	font-family: 'Glyphicons Halflings';\r\n	src: url('data:application/octet-stream;base64,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/zr+0wXdAAEAAAAAAAAAAAAAAAAAAACfAbgAKASwAAAEsAAABLAAAASwAGQEsAAABLAAAAKMAAAFGAAAAowAAAUYAAABsgAAAUYAAADZAAAA2QAAAKMAAAEEAAAASAAAAQQAAAFGAAAEsABkBLAAyAH0AAAEsP/yBLAAAASw//MEsAAABLAADgSwABcEsABkBLD/uASw/7gEsAAABLAAAASwAAAEsAAABLAAAASwAB0EsABqBLAAFwSwABcEsAAXBLAAZASwABoEsABkBLAAAQSwAGQEsAAEBLD/nASwAAAEsAABBLAABASwAAAEsAAEBLAAFwSwABcEsABkBLAAAASwAGQEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAQSwAGQEsADIBLAAAASwAAAEsAA1BLAAZASwAMgEsP+1BLAAIQSwAAAEsAAABLAAAASwAAAEsAAABLD/mwSwAAEEsAAABLAAAASwAJQEsAABBLAAdQSwAAAEsAAABLAAAASwAAAEsADIBLAAAASwAIgEsADIBLAAyASwAMgEsAAABLAAAASwASwEsABkBLAAuQSwARAEsAADBLAAAwSwAAMEsAADBLAAAwSwAAMEsAAABLAABASwAAQEsAAEBLAAAASwAAAEsADMBLAAaASwAAAEsAAABLAAIgSwABcEsAAABLAAAASwAG8EsP/DBLD/wwSw/58EsABkBLAAAASwAAAEsAAABLAAZASw/+IEsABGBLD/OgSwABIEsAAABLAAAQSwAS4EsAAABLAAAASw/5sEsABKBLAAFQSwAAAEsAAABLAACASw/5sEsABhBLAAAgSwAAUEsAAABLAABQSwAAUEsAAFBLAAAATEAAAEsABkAAAAAAAA/9gAUAA5AMgAAAEnAGQAAgACAAIAAgACAAIAAgAAAAAAAAAAAAAA2QAAAAAABAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAGQAZAAAABAAAABkAGT/nP+c/5z/nP+c/5z/nP+cAAQAAP/y//IAZAB5AAAAKgAqACoAKgBmAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkATABSAFQAYQBqgHOAf4CNgKYAswC7gMsA0wD9ARyBWQGDgYiBkQG4gdMB7AH6AiUCTAJYAmUCgoKRAqICu4LVguQC+YMPgywDRwNdg2qDjoOYA6KDtwP2BBMEIgQ1hEOESYRlBIUEmAS2hMWE44UDBRiFLoVJhWSFmIW2hdMF4YX6Bg4GIIYvhksGZgZ/BpKGnwathrWGuQbFBswG04bhhu2G+Ab9BwOHFocpBzuHTIdwh4QHooe7B9GH6AfwB/iIAYgKiBGIG4gkCDyIWohxCJCIsgjfiOuJBQkkiTmJRQliCWcJbIl7iZaJogmviboJw4naifOKDgoZCi4KTYp1CpuKuwraCuyK/osRCyYLb4t5i5mLpIu+i86MBgwtjEmMX4x0jIIMrgzYDOQNBo0ojUENWY1vjYWNlw2tDcKN2A3rDf8OFA4tDkYOVg5ljnUOhg6XjqGOtY7LDt0O948QDxoPNw9RD2oPhA+SD68Pu4/MD+aQAJAYEC0QSJBiEHwQoJC+EOIQ/ZEPERgRJ4AAQAAANsAmwARAAAAAAACAAEAAgAWAAABAAEBAAAAAAAAAA8AugABAAAAAAATABIAAAADAAEECQAAAGoAEgADAAEECQABACgAfAADAAEECQACAA4ApAADAAEECQADAEwAsgADAAEECQAEADgA/gADAAEECQAFAHgBNgADAAEECQAGADYBrgADAAEECQAIABYB5AADAAEECQAJABYB+gADAAEECQALACQCEAADAAEECQAMACQCNAADAAEECQATACQCWAADAAEECQDIABYCfAADAAEECQDJADACknd3dy5nbHlwaGljb25zLmNvbQBDAG8AcAB5AHIAaQBnAGgAdAAgAKkAIAAyADAAMQAzACAAYgB5ACAASgBhAG4AIABLAG8AdgBhAHIAaQBrAC4AIABBAGwAbAAgAHIAaQBnAGgAdABzACAAcgBlAHMAZQByAHYAZQBkAC4ARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzAFIAZQBnAHUAbABhAHIAMQAuADAAMAAxADsAVQBLAFcATgA7AEcATABZAFAASABJAEMATwBOAFMASABhAGwAZgBsAGkAbgBnAHMALQBSAGUAZwB1AGwAYQByAEcATABZAFAASABJAEMATwBOAFMAIABIAGEAbABmAGwAaQBuAGcAcwAgAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAMQA7AFAAUwAgADAAMAAxAC4AMAAwADEAOwBoAG8AdABjAG8AbgB2ACAAMQAuADAALgA3ADAAOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADUALgA1ADgAMwAyADkARwBMAFkAUABIAEkAQwBPAE4AUwBIAGEAbABmAGwAaQBuAGcAcwAtAFIAZQBnAHUAbABhAHIASgBhAG4AIABLAG8AdgBhAHIAaQBrAEoAYQBuACAASwBvAHYAYQByAGkAawB3AHcAdwAuAGcAbAB5AHAAaABpAGMAbwBuAHMALgBjAG8AbQB3AHcAdwAuAGcAbAB5AHAAaABpAGMAbwBuAHMALgBjAG8AbQB3AHcAdwAuAGcAbAB5AHAAaABpAGMAbwBuAHMALgBjAG8AbQBXAGUAYgBmAG8AbgB0ACAAMQAuADAATQBvAG4AIABKAGEAbgAgADIANwAgADAAOAA6ADAAMQA6ADMANAAgADIAMAAxADQAAgAAAAAAAP+1ADIAAAAAAAAAAAAAAAAAAAAAAAAAAADbAAABAgEDAAMADQAOAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESAO8BEwEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAS0BLgEvATABMQEyATMBNAE1ATYBNwE4ATkBOgE7ATwBPQE+AT8BQAFBAUIBQwFEAUUBRgFHAUgBSQFKAUsBTAFNAU4BTwFQAVEBUgFTAVQBVQFWAVcBWAFZAVoBWwFcAV0BXgFfAWABYQFiAWMBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAFxAXIBcwF0AXUBdgF3AXgBeQF6AXsBfAF9AX4BfwGAAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gHXBmdseXBoMQd1bmkwMDBEB3VuaTAwQTAHdW5pMjAwMAd1bmkyMDAxB3VuaTIwMDIHdW5pMjAwMwd1bmkyMDA0B3VuaTIwMDUHdW5pMjAwNgd1bmkyMDA3B3VuaTIwMDgHdW5pMjAwOQd1bmkyMDBBB3VuaTIwMkYHdW5pMjA1RgRFdXJvB3VuaTI1RkMHdW5pMjYwMQd1bmkyNzA5B3VuaTI3MEYHdW5pRTAwMQd1bmlFMDAyB3VuaUUwMDMHdW5pRTAwNQd1bmlFMDA2B3VuaUUwMDcHdW5pRTAwOAd1bmlFMDA5B3VuaUUwMTAHdW5pRTAxMQd1bmlFMDEyB3VuaUUwMTMHdW5pRTAxNAd1bmlFMDE1B3VuaUUwMTYHdW5pRTAxNwd1bmlFMDE4B3VuaUUwMTkHdW5pRTAyMAd1bmlFMDIxB3VuaUUwMjIHdW5pRTAyMwd1bmlFMDI0B3VuaUUwMjUHdW5pRTAyNgd1bmlFMDI3B3VuaUUwMjgHdW5pRTAyOQd1bmlFMDMwB3VuaUUwMzEHdW5pRTAzMgd1bmlFMDMzB3VuaUUwMzQHdW5pRTAzNQd1bmlFMDM2B3VuaUUwMzcHdW5pRTAzOAd1bmlFMDM5B3VuaUUwNDAHdW5pRTA0MQd1bmlFMDQyB3VuaUUwNDMHdW5pRTA0NAd1bmlFMDQ1B3VuaUUwNDYHdW5pRTA0Nwd1bmlFMDQ4B3VuaUUwNDkHdW5pRTA1MAd1bmlFMDUxB3VuaUUwNTIHdW5pRTA1Mwd1bmlFMDU0B3VuaUUwNTUHdW5pRTA1Ngd1bmlFMDU3B3VuaUUwNTgHdW5pRTA1OQd1bmlFMDYwB3VuaUUwNjIHdW5pRTA2Mwd1bmlFMDY0B3VuaUUwNjUHdW5pRTA2Ngd1bmlFMDY3B3VuaUUwNjgHdW5pRTA2OQd1bmlFMDcwB3VuaUUwNzEHdW5pRTA3Mgd1bmlFMDczB3VuaUUwNzQHdW5pRTA3NQd1bmlFMDc2B3VuaUUwNzcHdW5pRTA3OAd1bmlFMDc5B3VuaUUwODAHdW5pRTA4MQd1bmlFMDgyB3VuaUUwODMHdW5pRTA4NAd1bmlFMDg1B3VuaUUwODYHdW5pRTA4Nwd1bmlFMDg4B3VuaUUwODkHdW5pRTA5MAd1bmlFMDkxB3VuaUUwOTIHdW5pRTA5Mwd1bmlFMDk0B3VuaUUwOTUHdW5pRTA5Ngd1bmlFMDk3B3VuaUUxMDEHdW5pRTEwMgd1bmlFMTAzB3VuaUUxMDQHdW5pRTEwNQd1bmlFMTA2B3VuaUUxMDcHdW5pRTEwOAd1bmlFMTA5B3VuaUUxMTAHdW5pRTExMQd1bmlFMTEyB3VuaUUxMTMHdW5pRTExNAd1bmlFMTE1B3VuaUUxMTYHdW5pRTExNwd1bmlFMTE4B3VuaUUxMTkHdW5pRTEyMAd1bmlFMTIxB3VuaUUxMjIHdW5pRTEyMwd1bmlFMTI0B3VuaUUxMjUHdW5pRTEyNgd1bmlFMTI3B3VuaUUxMjgHdW5pRTEyOQd1bmlFMTMwB3VuaUUxMzEHdW5pRTEzMgd1bmlFMTMzB3VuaUUxMzQHdW5pRTEzNQd1bmlFMTM2B3VuaUUxMzcHdW5pRTEzOAd1bmlFMTM5B3VuaUUxNDAHdW5pRTE0MQd1bmlFMTQyB3VuaUUxNDMHdW5pRTE0NAd1bmlFMTQ1B3VuaUUxNDYHdW5pRTE0OAd1bmlFMTQ5B3VuaUUxNTAHdW5pRTE1MQd1bmlFMTUyB3VuaUUxNTMHdW5pRTE1NAd1bmlFMTU1B3VuaUUxNTYHdW5pRTE1Nwd1bmlFMTU4B3VuaUUxNTkHdW5pRTE2MAd1bmlFMTYxB3VuaUUxNjIHdW5pRTE2Mwd1bmlFMTY0B3VuaUUxNjUHdW5pRTE2Ngd1bmlFMTY3B3VuaUUxNjgHdW5pRTE2OQd1bmlFMTcwB3VuaUUxNzEHdW5pRTE3Mgd1bmlFMTczB3VuaUUxNzQHdW5pRTE3NQd1bmlFMTc2B3VuaUUxNzcHdW5pRTE3OAd1bmlFMTc5B3VuaUUxODAHdW5pRTE4MQd1bmlFMTgyB3VuaUUxODMHdW5pRTE4NAd1bmlFMTg1B3VuaUUxODYHdW5pRTE4Nwd1bmlFMTg4B3VuaUUxODkHdW5pRTE5MAd1bmlFMTkxB3VuaUUxOTIHdW5pRTE5Mwd1bmlFMTk0B3VuaUUxOTUHdW5pRTE5Nwd1bmlFMTk4B3VuaUUxOTkHdW5pRTIwMLgB/4WwAY0AS7AIUFixAQGOWbFGBitYIbAQWUuwFFJYIbCAWR2wBitcWFmwFCsAAAABUuZYrgAA') format('truetype');\r\n\r\n/*	src: url('http://getbootstrap.com/dist/fonts/glyphicons-halflings-regular.eot');\r\n	src: url('http://getbootstrap.com/dist/fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),\r\n	     url('http://getbootstrap.com/dist/fonts/glyphicons-halflings-regular.woff') format('woff'),\r\n	     url('http://getbootstrap.com/dist/fonts/glyphicons-halflings-regular.ttf') format('truetype'),\r\n	     url('http://getbootstrap.com/dist/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');*/\r\n}\r\n\r\n\r\n.glyphicon {\r\n	position: relative;\r\n	top: 1px;\r\n	display: inline-block;\r\n	font-family: 'Glyphicons Halflings';\r\n	font-style: normal;\r\n	font-weight: normal;\r\n	line-height: 1;\r\n\r\n	-moz-osx-font-smoothing: grayscale;\r\n	 -webkit-font-smoothing: antialiased;\r\n}\r\n.glyphicon-asterisk:before {\r\n	content: '\\2a';\r\n}\r\n.glyphicon-plus:before {\r\n	content: '\\2b';\r\n}\r\n.glyphicon-euro:before {\r\n	content: '\\20ac';\r\n}\r\n.glyphicon-minus:before {\r\n	content: '\\2212';\r\n}\r\n.glyphicon-cloud:before {\r\n	content: '\\2601';\r\n}\r\n.glyphicon-envelope:before {\r\n	content: '\\2709';\r\n}\r\n.glyphicon-pencil:before {\r\n	content: '\\270f';\r\n}\r\n.glyphicon-glass:before {\r\n	content: '\\e001';\r\n}\r\n.glyphicon-music:before {\r\n	content: '\\e002';\r\n}\r\n.glyphicon-search:before {\r\n	content: '\\e003';\r\n}\r\n.glyphicon-heart:before {\r\n	content: '\\e005';\r\n}\r\n.glyphicon-star:before {\r\n	content: '\\e006';\r\n}\r\n.glyphicon-star-empty:before {\r\n	content: '\\e007';\r\n}\r\n.glyphicon-user:before {\r\n	content: '\\e008';\r\n}\r\n.glyphicon-film:before {\r\n	content: '\\e009';\r\n}\r\n.glyphicon-th-large:before {\r\n	content: '\\e010';\r\n}\r\n.glyphicon-th:before {\r\n	content: '\\e011';\r\n}\r\n.glyphicon-th-list:before {\r\n	content: '\\e012';\r\n}\r\n.glyphicon-ok:before {\r\n	content: '\\e013';\r\n}\r\n.glyphicon-remove:before {\r\n	content: '\\e014';\r\n}\r\n.glyphicon-zoom-in:before {\r\n	content: '\\e015';\r\n}\r\n.glyphicon-zoom-out:before {\r\n	content: '\\e016';\r\n}\r\n.glyphicon-off:before {\r\n	content: '\\e017';\r\n}\r\n.glyphicon-signal:before {\r\n	content: '\\e018';\r\n}\r\n.glyphicon-cog:before {\r\n	content: '\\e019';\r\n}\r\n.glyphicon-trash:before {\r\n	content: '\\e020';\r\n}\r\n.glyphicon-home:before {\r\n	content: '\\e021';\r\n}\r\n.glyphicon-file:before {\r\n	content: '\\e022';\r\n}\r\n.glyphicon-time:before {\r\n	content: '\\e023';\r\n}\r\n.glyphicon-road:before {\r\n	content: '\\e024';\r\n}\r\n.glyphicon-download-alt:before {\r\n	content: '\\e025';\r\n}\r\n.glyphicon-download:before {\r\n	content: '\\e026';\r\n}\r\n.glyphicon-upload:before {\r\n	content: '\\e027';\r\n}\r\n.glyphicon-inbox:before {\r\n	content: '\\e028';\r\n}\r\n.glyphicon-play-circle:before {\r\n	content: '\\e029';\r\n}\r\n.glyphicon-repeat:before {\r\n	content: '\\e030';\r\n}\r\n.glyphicon-refresh:before {\r\n	content: '\\e031';\r\n}\r\n.glyphicon-list-alt:before {\r\n	content: '\\e032';\r\n}\r\n.glyphicon-lock:before {\r\n	content: '\\e033';\r\n}\r\n.glyphicon-flag:before {\r\n	content: '\\e034';\r\n}\r\n.glyphicon-headphones:before {\r\n	content: '\\e035';\r\n}\r\n.glyphicon-volume-off:before {\r\n	content: '\\e036';\r\n}\r\n.glyphicon-volume-down:before {\r\n	content: '\\e037';\r\n}\r\n.glyphicon-volume-up:before {\r\n	content: '\\e038';\r\n}\r\n.glyphicon-qrcode:before {\r\n	content: '\\e039';\r\n}\r\n.glyphicon-barcode:before {\r\n	content: '\\e040';\r\n}\r\n.glyphicon-tag:before {\r\n	content: '\\e041';\r\n}\r\n.glyphicon-tags:before {\r\n	content: '\\e042';\r\n}\r\n.glyphicon-book:before {\r\n	content: '\\e043';\r\n}\r\n.glyphicon-bookmark:before {\r\n	content: '\\e044';\r\n}\r\n.glyphicon-print:before {\r\n	content: '\\e045';\r\n}\r\n.glyphicon-camera:before {\r\n	content: '\\e046';\r\n}\r\n.glyphicon-font:before {\r\n	content: '\\e047';\r\n}\r\n.glyphicon-bold:before {\r\n	content: '\\e048';\r\n}\r\n.glyphicon-italic:before {\r\n	content: '\\e049';\r\n}\r\n.glyphicon-text-height:before {\r\n	content: '\\e050';\r\n}\r\n.glyphicon-text-width:before {\r\n	content: '\\e051';\r\n}\r\n.glyphicon-align-left:before {\r\n	content: '\\e052';\r\n}\r\n.glyphicon-align-center:before {\r\n	content: '\\e053';\r\n}\r\n.glyphicon-align-right:before {\r\n	content: '\\e054';\r\n}\r\n.glyphicon-align-justify:before {\r\n	content: '\\e055';\r\n}\r\n.glyphicon-list:before {\r\n	content: '\\e056';\r\n}\r\n.glyphicon-indent-left:before {\r\n	content: '\\e057';\r\n}\r\n.glyphicon-indent-right:before {\r\n	content: '\\e058';\r\n}\r\n.glyphicon-facetime-video:before {\r\n	content: '\\e059';\r\n}\r\n.glyphicon-picture:before {\r\n	content: '\\e060';\r\n}\r\n.glyphicon-map-marker:before {\r\n	content: '\\e062';\r\n}\r\n.glyphicon-adjust:before {\r\n	content: '\\e063';\r\n}\r\n.glyphicon-tint:before {\r\n	content: '\\e064';\r\n}\r\n.glyphicon-edit:before {\r\n	content: '\\e065';\r\n}\r\n.glyphicon-share:before {\r\n	content: '\\e066';\r\n}\r\n.glyphicon-check:before {\r\n	content: '\\e067';\r\n}\r\n.glyphicon-move:before {\r\n	content: '\\e068';\r\n}\r\n.glyphicon-step-backward:before {\r\n	content: '\\e069';\r\n}\r\n.glyphicon-fast-backward:before {\r\n	content: '\\e070';\r\n}\r\n.glyphicon-backward:before {\r\n	content: '\\e071';\r\n}\r\n.glyphicon-play:before {\r\n	content: '\\e072';\r\n}\r\n.glyphicon-pause:before {\r\n	content: '\\e073';\r\n}\r\n.glyphicon-stop:before {\r\n	content: '\\e074';\r\n}\r\n.glyphicon-forward:before {\r\n	content: '\\e075';\r\n}\r\n.glyphicon-fast-forward:before {\r\n	content: '\\e076';\r\n}\r\n.glyphicon-step-forward:before {\r\n	content: '\\e077';\r\n}\r\n.glyphicon-eject:before {\r\n	content: '\\e078';\r\n}\r\n.glyphicon-chevron-left:before {\r\n	content: '\\e079';\r\n}\r\n.glyphicon-chevron-right:before {\r\n	content: '\\e080';\r\n}\r\n.glyphicon-plus-sign:before {\r\n	content: '\\e081';\r\n}\r\n.glyphicon-minus-sign:before {\r\n	content: '\\e082';\r\n}\r\n.glyphicon-remove-sign:before {\r\n	content: '\\e083';\r\n}\r\n.glyphicon-ok-sign:before {\r\n	content: '\\e084';\r\n}\r\n.glyphicon-question-sign:before {\r\n	content: '\\e085';\r\n}\r\n.glyphicon-info-sign:before {\r\n	content: '\\e086';\r\n}\r\n.glyphicon-screenshot:before {\r\n	content: '\\e087';\r\n}\r\n.glyphicon-remove-circle:before {\r\n	content: '\\e088';\r\n}\r\n.glyphicon-ok-circle:before {\r\n	content: '\\e089';\r\n}\r\n.glyphicon-ban-circle:before {\r\n	content: '\\e090';\r\n}\r\n.glyphicon-arrow-left:before {\r\n	content: '\\e091';\r\n}\r\n.glyphicon-arrow-right:before {\r\n	content: '\\e092';\r\n}\r\n.glyphicon-arrow-up:before {\r\n	content: '\\e093';\r\n}\r\n.glyphicon-arrow-down:before {\r\n	content: '\\e094';\r\n}\r\n.glyphicon-share-alt:before {\r\n	content: '\\e095';\r\n}\r\n.glyphicon-resize-full:before {\r\n	content: '\\e096';\r\n}\r\n.glyphicon-resize-small:before {\r\n	content: '\\e097';\r\n}\r\n.glyphicon-exclamation-sign:before {\r\n	content: '\\e101';\r\n}\r\n.glyphicon-gift:before {\r\n	content: '\\e102';\r\n}\r\n.glyphicon-leaf:before {\r\n	content: '\\e103';\r\n}\r\n.glyphicon-fire:before {\r\n	content: '\\e104';\r\n}\r\n.glyphicon-eye-open:before {\r\n	content: '\\e105';\r\n}\r\n.glyphicon-eye-close:before {\r\n	content: '\\e106';\r\n}\r\n.glyphicon-warning-sign:before {\r\n	content: '\\e107';\r\n}\r\n.glyphicon-plane:before {\r\n	content: '\\e108';\r\n}\r\n.glyphicon-calendar:before {\r\n	content: '\\e109';\r\n}\r\n.glyphicon-random:before {\r\n	content: '\\e110';\r\n}\r\n.glyphicon-comment:before {\r\n	content: '\\e111';\r\n}\r\n.glyphicon-magnet:before {\r\n	content: '\\e112';\r\n}\r\n.glyphicon-chevron-up:before {\r\n	content: '\\e113';\r\n}\r\n.glyphicon-chevron-down:before {\r\n	content: '\\e114';\r\n}\r\n.glyphicon-retweet:before {\r\n	content: '\\e115';\r\n}\r\n.glyphicon-shopping-cart:before {\r\n	content: '\\e116';\r\n}\r\n.glyphicon-folder-close:before {\r\n	content: '\\e117';\r\n}\r\n.glyphicon-folder-open:before {\r\n	content: '\\e118';\r\n}\r\n.glyphicon-resize-vertical:before {\r\n	content: '\\e119';\r\n}\r\n.glyphicon-resize-horizontal:before {\r\n	content: '\\e120';\r\n}\r\n.glyphicon-hdd:before {\r\n	content: '\\e121';\r\n}\r\n.glyphicon-bullhorn:before {\r\n	content: '\\e122';\r\n}\r\n.glyphicon-bell:before {\r\n	content: '\\e123';\r\n}\r\n.glyphicon-certificate:before {\r\n	content: '\\e124';\r\n}\r\n.glyphicon-thumbs-up:before {\r\n	content: '\\e125';\r\n}\r\n.glyphicon-thumbs-down:before {\r\n	content: '\\e126';\r\n}\r\n.glyphicon-hand-right:before {\r\n	content: '\\e127';\r\n}\r\n.glyphicon-hand-left:before {\r\n	content: '\\e128';\r\n}\r\n.glyphicon-hand-up:before {\r\n	content: '\\e129';\r\n}\r\n.glyphicon-hand-down:before {\r\n	content: '\\e130';\r\n}\r\n.glyphicon-circle-arrow-right:before {\r\n	content: '\\e131';\r\n}\r\n.glyphicon-circle-arrow-left:before {\r\n	content: '\\e132';\r\n}\r\n.glyphicon-circle-arrow-up:before {\r\n	content: '\\e133';\r\n}\r\n.glyphicon-circle-arrow-down:before {\r\n	content: '\\e134';\r\n}\r\n.glyphicon-globe:before {\r\n	content: '\\e135';\r\n}\r\n.glyphicon-wrench:before {\r\n	content: '\\e136';\r\n}\r\n.glyphicon-tasks:before {\r\n	content: '\\e137';\r\n}\r\n.glyphicon-filter:before {\r\n	content: '\\e138';\r\n}\r\n.glyphicon-briefcase:before {\r\n	content: '\\e139';\r\n}\r\n.glyphicon-fullscreen:before {\r\n	content: '\\e140';\r\n}\r\n.glyphicon-dashboard:before {\r\n	content: '\\e141';\r\n}\r\n.glyphicon-paperclip:before {\r\n	content: '\\e142';\r\n}\r\n.glyphicon-heart-empty:before {\r\n	content: '\\e143';\r\n}\r\n.glyphicon-link:before {\r\n	content: '\\e144';\r\n}\r\n.glyphicon-phone:before {\r\n	content: '\\e145';\r\n}\r\n.glyphicon-pushpin:before {\r\n	content: '\\e146';\r\n}\r\n.glyphicon-usd:before {\r\n	content: '\\e148';\r\n}\r\n.glyphicon-gbp:before {\r\n	content: '\\e149';\r\n}\r\n.glyphicon-sort:before {\r\n	content: '\\e150';\r\n}\r\n.glyphicon-sort-by-alphabet:before {\r\n	content: '\\e151';\r\n}\r\n.glyphicon-sort-by-alphabet-alt:before {\r\n	content: '\\e152';\r\n}\r\n.glyphicon-sort-by-order:before {\r\n	content: '\\e153';\r\n}\r\n.glyphicon-sort-by-order-alt:before {\r\n	content: '\\e154';\r\n}\r\n.glyphicon-sort-by-attributes:before {\r\n	content: '\\e155';\r\n}\r\n.glyphicon-sort-by-attributes-alt:before {\r\n	content: '\\e156';\r\n}\r\n.glyphicon-unchecked:before {\r\n	content: '\\e157';\r\n}\r\n.glyphicon-expand:before {\r\n	content: '\\e158';\r\n}\r\n.glyphicon-collapse-down:before {\r\n	content: '\\e159';\r\n}\r\n.glyphicon-collapse-up:before {\r\n	content: '\\e160';\r\n}\r\n.glyphicon-log-in:before {\r\n	content: '\\e161';\r\n}\r\n.glyphicon-flash:before {\r\n	content: '\\e162';\r\n}\r\n.glyphicon-log-out:before {\r\n	content: '\\e163';\r\n}\r\n.glyphicon-new-window:before {\r\n	content: '\\e164';\r\n}\r\n.glyphicon-record:before {\r\n	content: '\\e165';\r\n}\r\n.glyphicon-save:before {\r\n	content: '\\e166';\r\n}\r\n.glyphicon-open:before {\r\n	content: '\\e167';\r\n}\r\n.glyphicon-saved:before {\r\n	content: '\\e168';\r\n}\r\n.glyphicon-import:before {\r\n	content: '\\e169';\r\n}\r\n.glyphicon-export:before {\r\n	content: '\\e170';\r\n}\r\n.glyphicon-send:before {\r\n	content: '\\e171';\r\n}\r\n.glyphicon-floppy-disk:before {\r\n	content: '\\e172';\r\n}\r\n.glyphicon-floppy-saved:before {\r\n	content: '\\e173';\r\n}\r\n.glyphicon-floppy-remove:before {\r\n	content: '\\e174';\r\n}\r\n.glyphicon-floppy-save:before {\r\n	content: '\\e175';\r\n}\r\n.glyphicon-floppy-open:before {\r\n	content: '\\e176';\r\n}\r\n.glyphicon-credit-card:before {\r\n	content: '\\e177';\r\n}\r\n.glyphicon-transfer:before {\r\n	content: '\\e178';\r\n}\r\n.glyphicon-cutlery:before {\r\n	content: '\\e179';\r\n}\r\n.glyphicon-header:before {\r\n	content: '\\e180';\r\n}\r\n.glyphicon-compressed:before {\r\n	content: '\\e181';\r\n}\r\n.glyphicon-earphone:before {\r\n	content: '\\e182';\r\n}\r\n.glyphicon-phone-alt:before {\r\n	content: '\\e183';\r\n}\r\n.glyphicon-tower:before {\r\n	content: '\\e184';\r\n}\r\n.glyphicon-stats:before {\r\n	content: '\\e185';\r\n}\r\n.glyphicon-sd-video:before {\r\n	content: '\\e186';\r\n}\r\n.glyphicon-hd-video:before {\r\n	content: '\\e187';\r\n}\r\n.glyphicon-subtitles:before {\r\n	content: '\\e188';\r\n}\r\n.glyphicon-sound-stereo:before {\r\n	content: '\\e189';\r\n}\r\n.glyphicon-sound-dolby:before {\r\n	content: '\\e190';\r\n}\r\n.glyphicon-sound-5-1:before {\r\n	content: '\\e191';\r\n}\r\n.glyphicon-sound-6-1:before {\r\n	content: '\\e192';\r\n}\r\n.glyphicon-sound-7-1:before {\r\n	content: '\\e193';\r\n}\r\n.glyphicon-copyright-mark:before {\r\n	content: '\\e194';\r\n}\r\n.glyphicon-registration-mark:before {\r\n	content: '\\e195';\r\n}\r\n.glyphicon-cloud-download:before {\r\n	content: '\\e197';\r\n}\r\n.glyphicon-cloud-upload:before {\r\n	content: '\\e198';\r\n}\r\n.glyphicon-tree-conifer:before {\r\n	content: '\\e199';\r\n}\r\n.glyphicon-tree-deciduous:before {\r\n	content: '\\e200';\r\n}", "" ]);
}, /* 13 */
/***/
function(module, exports, __webpack_require__) {
    // style-loader: Adds some css to the DOM by adding a <style> tag
    // load the styles
    var content = __webpack_require__(14);
    "string" == typeof content && (content = [ [ module.id, content, "" ] ]);
    // add the styles to the DOM
    __webpack_require__(15)(content, {});
}, /* 14 */
/***/
function(module, exports, __webpack_require__) {
    exports = module.exports = __webpack_require__(41)(), exports.push([ module.id, ".link-ajax {\r\n	color: #0088cc;\r\n	cursor: default;\r\n	background-image: -webkit-linear-gradient(left, #0088cc, #0088cc 50%, transparent 50%);\r\n	background-image:    -moz-linear-gradient(left, #0088cc, #0088cc 50%, transparent 50%);\r\n	background-image:         linear-gradient(left, #0088cc, #0088cc 50%, transparent 50%);\r\n	background-size: 2px 1px;\r\n	background-position: 0 95%;\r\n	background-repeat: repeat-x;\r\n}\r\n.link-ajax:hover {\r\n	color: #005580;\r\n	background-image: -webkit-linear-gradient(left, #005580, #005580 50%, transparent 50%);\r\n	background-image:    -moz-linear-gradient(left, #005580, #005580 50%, transparent 50%);\r\n	background-image:         linear-gradient(left, #005580, #005580 50%, transparent 50%);\r\n}\r\nspan[title] { cursor: default; }\r\ninput[disabled] { cursor: default; }\r\n\r\n#abilities-block .angel-ability { width: auto !important; display: inline-block; }\r\n#abilities-block .angel-ability.pgf-ability-help { margin: 0 50px; }\r\n#abilities-block .dropdown { width: auto !important; }\r\n\r\n\r\n\r\n.ext-controls { font-size: 12px; }\r\n.ext-control { margin-right: 10px; }\r\n.ext-control.link-ajax { background: none; }\r\n\r\n\r\n.table-stats {  }\r\n.table-stats th,\r\n.table-stats td { padding: 1px 10px 1px 0; cursor: default; }\r\n.table-stats .stats-name { width: 16px; padding-right: 0; }\r\n.table-stats .stats-sum { text-align: right; }\r\n.table-stats .stats-count { text-align: right; }\r\n.table-stats .stats-average { text-align: right; }\r\n.table-stats .stats-bonus { text-align: left; padding-left: 10px; padding-right: 5px;  }\r\n.table-stats th.stats-bonus { text-align: center;  }\r\n.table-stats .stats-against { border-top: 10px solid #f5fafa; }\r\n\r\n.table-stats .stats-row-dmgSum td { font-weight: bold; }\r\n\r\n.stats-side { margin-bottom: 10px; }\r\n.stats-side.stats-loot { margin-top: 20px; padding-top: 10px; border-top: 1px solid #ccc; }\r\n\r\n\r\n.archive-log-list { margin-left: 30px; }\r\n.stats-archive { display: block; }\r\n.stats-archive-act { margin-right: 6px; }\r\n.stats-archive-me { color: #005000; }\r\n.stats-archive-enemy { color: darkred; }\r\n\r\n.stats-log {\r\n	margin-top: 10px;\r\n	max-height: 500px;\r\n	overflow-y: auto;\r\n}\r\n/*.stats-log .pgf-log-list {*/\r\n	/*padding-top: 10px;*/\r\n	/*border-top: 1px solid #ddd;*/\r\n	/*margin-bottom: 30px;*/\r\n/*}*/\r\n\r\n\r\n\r\n.log-record-short {\r\n	display: inline-block;\r\n}\r\n.log-record-short .submessage {\r\n	display: inline-block;\r\n	cursor: default;\r\n	padding: 0 2px;\r\n}\r\n.log-record-short .submessage:first-child { padding-left: 4px; }\r\n.log-record-short .submessage:last-child { padding-right: 4px; }\r\n\r\n.log-record-short:hover {\r\n	background: #ddd;\r\n}\r\n\r\n.stats-me .glyphicon { color: #005000; }\r\n.stats-loot .glyphicon { color: darkgoldenrod; }\r\n.stats-enemy .glyphicon { color: darkred; }\r\n\r\n.stats .glyphicon { font-size: 12px; opacity: .8; }\r\n.stats .glyphicon.small { font-size: 9px; }\r\n.log-block .glyphicon { font-size: 12px; opacity: .8; }\r\n.log-block .glyphicon-heart { vertical-align: -1px; }\r\n.log-block .glyphicon-heart-empty { vertical-align: -2px; }\r\n.log-block .glyphicon.small { font-size: 9px; }\r\n\r\n\r\n/* short */\r\n.act.me { color: black; }\r\n.act.me .glyphicon { color: #005000; }\r\n.act.enemy { color: #B90000; }\r\n.act.enemy .glyphicon { color: darkred; }\r\n\r\n.act-rest.me { color: #005000; }\r\n.act-heal.me { color: #005000; }\r\n.act-heal.enemy { color: darkred; }\r\n.act-godheal.act .glyphicon,\r\n.act-godheal.act { color: darkmagenta; text-decoration: underline; }\r\n\r\n.act-vamp.me .glyphicon,\r\n.act-vamp.me .vamp { color: #005000; }\r\n.act-vamp.enemy .glyphicon,\r\n.act-vamp.enemy .vamp { color: darkred; }\r\n\r\n.act-slow.me { color: #00008B; }\r\n\r\n.act-coins.me .glyphicon,\r\n.act-coins.me { color: darkgoldenrod; }\r\n.act-coins.enemy { color: darkgoldenrod; text-decoration: line-through; }\r\n.act-coins .glyphicon { font-size: 9px; }\r\n\r\n.act-pvpeff.me { color: dodgerblue; }\r\n.act-pvpeff.enemy { color: dodgerblue; text-decoration: line-through; }\r\n.act-pvpice.me,\r\n.act-pvpflame.enemy,\r\n.act-pvpfail.enemy { color: darkgreen; }\r\n.act-pvpice.enemy,\r\n.act-pvpflame.me,\r\n.act-pvpfail.me { color: darkred; }\r\n.act-pvpice .glyphicon,\r\n.act-pvpflame .glyphicon,\r\n.act-pvpfail .glyphicon { font-size: 15px; }\r\n\r\n\r\n.sub-icon {\r\n	margin-left: -2px;\r\n}\r\n.sub-icon .glyphicon {\r\n	font-size: 10px;\r\n	vertical-align: sub;\r\n	margin-left: -1px;\r\n}\r\n.act.me .sub-icon .glyphicon { color: #444; }\r\n.act.enemy .sub-icon .glyphicon { color: #005000; }\r\n/* eo short */\r\n\r\n/* highlight */\r\n.me .value { color: darkred; }\r\n.enemy .value { color: red; }\r\n\r\n.msg-dmg.me .value { color: darkred; }\r\n.msg-dmg.enemy .value { color: red; }\r\n\r\n.msg-godhit { color: darkmagenta; }\r\n.msg-pickup .item { color: darkgoldenrod; }\r\n.msg-empty { color: darkgoldenrod; text-decoration: line-through; }\r\n.msg-drop { color: darkgoldenrod; text-decoration: line-through; }\r\n.msg-death { color: darkred; text-decoration: line-through; }\r\n\r\n.submessage .energy { color: dodgerblue; }\r\n.submessage .coins { color: darkgoldenrod; }\r\n\r\n.submessage .level,\r\n.submessage .exp { color: darkviolet; text-decoration: underline; }\r\n/* eo highlight */\r\n\r\n\r\n/* group */\r\n.archive-content .level { color: darkviolet; text-decoration: underline; }\r\n.group { position: relative; margin-bottom: 2px; }\r\n.group .group-toggle { cursor: default; }\r\n.group .on-open { display: none; }\r\n.group.open .on-open { display: block; }\r\n.group.open .on-close { display: none; }\r\n\r\n.group.open { margin: 0; }\r\n\r\n.group .glyphicon-time { font-size: 9px; }\r\n\r\n.group-time {  }\r\n.group-time.average { color: #8a6d3b; text-decoration: underline; }\r\n.group-time.bad { color: #a94442; text-decoration: underline; }\r\n\r\n.group-title {\r\n	cursor: default;\r\n	margin-right: 0;\r\n	white-space: nowrap;\r\n	overflow: hidden;\r\n	text-overflow: ellipsis;\r\n}\r\n.group-title:hover { background: #ddd; }\r\n\r\n.action-icon .glyphicon { font-size: 10px; opacity: .8; }\r\n.action-icon.fight { color: darkred; }\r\n.action-icon.fight-god { color: darkviolet; }\r\n\r\n.action-icon.equip,\r\n.action-icon.trade { color: darkgoldenrod; }\r\n.action-icon.quest,\r\n.action-icon.noeffect { color: dodgerblue; }\r\n.action-icon.idle { color: dodgerblue; }\r\n.action-icon.energy { color: dodgerblue; }\r\n.action-icon.rest { color: #005000; }\r\n.action-icon.dead { color: darkred; }\r\n.action-icon.companionHeal { color: #008000; }\r\n.action-icon.broken { color: red; }\r\n\r\n.action-icon {\r\n	display: inline-block;\r\n	vertical-align: text-bottom;\r\n	width: 15px;\r\n}\r\n.group-title.god .group-time { color: darkviolet; text-decoration: underline; }\r\n.group-time { margin-right: 3px; }\r\n\r\n.group-controls { position: absolute; right: 0; top: 1px; }\r\n.group-controls .glyphicon { position: absolute; right: 0; top: 0; }\r\n.group-controls .glyphicon:hover { color: #000; }\r\n.group-stats { margin-bottom: 2px; }\r\n.group-stats .stat { margin: 0 0 0 4px;}\r\n.group-stats .stat-me + .stat-enemy { margin-left: 8px;}\r\n\r\n.group-stats .stat-me { color: #005000; }\r\n.group-stats .stat-enemy { color: darkred; }\r\n\r\n.group-stats .stat-against {\r\n	display: inline-block;\r\n	width: 35px;\r\n	white-space: nowrap;\r\n}\r\n/*.group .pgf-log-list { margin: 0; }*/\r\n/* eo group */\r\n\r\n\r\n.text-muted { color: #999; }\r\n.text-primary { color: #428bca; }\r\n.text-success { color: #3c763d; }\r\n.text-info { color: #31708f; }\r\n.text-warning { color: #8a6d3b; }\r\n.text-danger { color: #a94442; }\r\n\r\n\r\n.quest-icon-mini {\r\n	float: none;\r\n	display: inline-block;\r\n	margin: 0;\r\n	vertical-align: bottom;\r\n	width: 16px;\r\n	height: 16px;\r\n	background-size: 32px 192px;\r\n	background-image: url('http://static.the-tale.org/static/168/game/images/quests.png');\r\n}\r\n.quest-icon-mini.caravan { background-position: 0 0; }\r\n.quest-icon-mini.delivery { background-position: 0 -16px; }\r\n.quest-icon-mini.help { background-position: 0 -32px; }\r\n.quest-icon-mini.help_friend { background-position: 0 -48px; }\r\n.quest-icon-mini.hometown { background-position: 0 -64px; }\r\n.quest-icon-mini.hunt { background-position: 0 -80px; }\r\n.quest-icon-mini.interfere_enemy { background-position: 0 -96px; }\r\n.quest-icon-mini.collect_debt { background-position: 0 -112px; }\r\n.quest-icon-mini.spying { background-position: 0 -128px; }\r\n.quest-icon-mini.search_smith { background-position: 0 -144px; }\r\n.quest-icon-mini.no-quest { background-position: 0 -160px; }\r\n.quest-icon-mini.next-spending { background-position: 0 -176px; }\r\n.quest-icon-mini.pilgrimage { background-position: -16px -80px; }\r\n\r\n\r\n\r\n/*#pgf-towns-container { background: #fff; }*/\r\n#pgf-towns-container .reload {\r\n	font-size: 12px;\r\n}\r\n\r\n/* tables */\r\nbody .table-noborder tbody,\r\n.table-noborder td,\r\n.table-noborder th { border: none; }\r\n.table tbody tr.unhover:hover td,\r\n.table tbody tr.unhover:hover th { background: inherit; }\r\n.table-hover-dark tbody tr:hover td,\r\n.table-hover-dark tbody tr:hover th { background: #ddd; }\r\n\r\n.table-towns th.size,\r\n.table-towns td.size {\r\n	padding-left: 0;\r\n	padding-right: 0;\r\n}\r\n.table-towns th.size { text-align: center; }\r\n.table-towns td.size { text-align: right; }\r\n\r\n.table-towns td {\r\n	white-space: nowrap;\r\n}\r\n/* eo tables */\r\n\r\n\r\n/* settings */\r\n#log-block-sets { height: auto; }\r\n.sets-header { margin: 10px 0 5px;}\r\n.sets { margin: 5px 0 0 20px; }\r\n.sets-inline { display: inline-block; }\r\n\r\n.note-block { color: #999; }\r\ninput.input-tiny { height: 11px; width: 60px; font-size: 12px; margin: -2px 0 -3px; vertical-align: 0; }\r\ninput.input-tiny-num { width: 30px; }\r\n.input-append .add-on { height: 11px; line-height: 11px; margin-top: -2px; margin-bottom: -3px; vertical-align: -1px; }\r\n\r\n\r\n.sets label {\r\n	display: inline;\r\n	font-weight: normal;\r\n	margin-bottom: 0;\r\n}\r\n.sets .input-wrap-inline {\r\n	display: inline-block;\r\n}\r\n.sets .input-wrap {\r\n	transition: opacity .2s;\r\n}\r\n.sets .input-wrap.disabled { opacity: .7; }\r\n/* eo sets */\r\n\r\n\r\ndiv.easy-block {\r\n	clear: right;\r\n}\r\n", "" ]);
}, /* 15 */
/***/
function(module) {
    function addStylesToDom(styles, options) {
        for (var i = 0; i < styles.length; i++) {
            var item = styles[i], domStyle = stylesInDom[item.id];
            if (domStyle) {
                domStyle.refs++;
                for (var j = 0; j < domStyle.parts.length; j++) {
                    domStyle.parts[j](item.parts[j]);
                }
                for (;j < item.parts.length; j++) {
                    domStyle.parts.push(addStyle(item.parts[j], options));
                }
            } else {
                for (var parts = [], j = 0; j < item.parts.length; j++) {
                    parts.push(addStyle(item.parts[j], options));
                }
                stylesInDom[item.id] = {
                    id: item.id,
                    refs: 1,
                    parts: parts
                };
            }
        }
    }
    function listToStyles(list) {
        for (var styles = [], newStyles = {}, i = 0; i < list.length; i++) {
            var item = list[i], id = item[0], css = item[1], media = item[2], sourceMap = item[3], part = {
                css: css,
                media: media,
                sourceMap: sourceMap
            };
            newStyles[id] ? newStyles[id].parts.push(part) : styles.push(newStyles[id] = {
                id: id,
                parts: [ part ]
            });
        }
        return styles;
    }
    function createStyleElement() {
        var styleElement = document.createElement("style"), head = getHeadElement();
        return styleElement.type = "text/css", head.appendChild(styleElement), styleElement;
    }
    function addStyle(obj, options) {
        var styleElement, update, remove;
        if (options.singleton) {
            var styleIndex = singletonCounter++;
            styleElement = singletonElement || (singletonElement = createStyleElement()), update = applyToSingletonTag.bind(null, styleElement, styleIndex, !1), remove = applyToSingletonTag.bind(null, styleElement, styleIndex, !0);
        } else {
            styleElement = createStyleElement(), update = applyToTag.bind(null, styleElement), remove = function() {
                styleElement.parentNode.removeChild(styleElement);
            };
        }
        return update(obj), function(newObj) {
            if (newObj) {
                if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {
                    return;
                }
                update(obj = newObj);
            } else {
                remove();
            }
        };
    }
    function replaceText(source, id, replacement) {
        var boundaries = [ "/** >>" + id + " **/", "/** " + id + "<< **/" ], start = source.lastIndexOf(boundaries[0]), wrappedReplacement = replacement ? boundaries[0] + replacement + boundaries[1] : "";
        if (source.lastIndexOf(boundaries[0]) >= 0) {
            var end = source.lastIndexOf(boundaries[1]) + boundaries[1].length;
            return source.slice(0, start) + wrappedReplacement + source.slice(end);
        }
        return source + wrappedReplacement;
    }
    function applyToSingletonTag(styleElement, index, remove, obj) {
        var css = remove ? "" : obj.css;
        if (styleElement.styleSheet) {
            styleElement.styleSheet.cssText = replaceText(styleElement.styleSheet.cssText, index, css);
        } else {
            var cssNode = document.createTextNode(css), childNodes = styleElement.childNodes;
            childNodes[index] && styleElement.removeChild(childNodes[index]), childNodes.length ? styleElement.insertBefore(cssNode, childNodes[index]) : styleElement.appendChild(cssNode);
        }
    }
    function applyToTag(styleElement, obj) {
        var css = obj.css, media = obj.media, sourceMap = obj.sourceMap;
        if (sourceMap && "function" == typeof btoa) {
            try {
                css += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(JSON.stringify(sourceMap)) + " */", css = '@import url("data:text/css;base64,' + btoa(css) + '")';
            } catch (e) {}
        }
        if (media && styleElement.setAttribute("media", media), styleElement.styleSheet) {
            styleElement.styleSheet.cssText = css;
        } else {
            for (;styleElement.firstChild; ) {
                styleElement.removeChild(styleElement.firstChild);
            }
            styleElement.appendChild(document.createTextNode(css));
        }
    }
    /*
		MIT License http://www.opensource.org/licenses/mit-license.php
		Author Tobias Koppers @sokra
	*/
    var stylesInDom = {}, memoize = function(fn) {
        var memo;
        return function() {
            return "undefined" == typeof memo && (memo = fn.apply(this, arguments)), memo;
        };
    }, isIE9 = memoize(function() {
        return /msie 9\b/.test(window.navigator.userAgent.toLowerCase());
    }), getHeadElement = memoize(function() {
        return document.head || document.getElementsByTagName("head")[0];
    }), singletonElement = null, singletonCounter = 0;
    module.exports = function(list, options) {
        options = options || {}, // Force single-tag solution on IE9, which has a hard limit on the # of <style>
        // tags it will allow on a page
        "undefined" == typeof options.singleton && (options.singleton = isIE9());
        var styles = listToStyles(list);
        return addStylesToDom(styles, options), function(newList) {
            for (var mayRemove = [], i = 0; i < styles.length; i++) {
                var item = styles[i], domStyle = stylesInDom[item.id];
                domStyle.refs--, mayRemove.push(domStyle);
            }
            if (newList) {
                var newStyles = listToStyles(newList);
                addStylesToDom(newStyles, options);
            }
            for (var i = 0; i < mayRemove.length; i++) {
                var domStyle = mayRemove[i];
                if (0 === domStyle.refs) {
                    for (var j = 0; j < domStyle.parts.length; j++) {
                        domStyle.parts[j]();
                    }
                    delete stylesInDom[domStyle.id];
                }
            }
        };
    };
}, /* 16 */
/***/
function(module) {
    module.exports = window.jQuery;
}, /* 17 */
/***/
function(module) {
    module.exports = window.pgf;
}, /* 18 */
/***/
function(module, exports, __webpack_require__) {
    /**
	 * Метод разбирает действие из журнала
	 * @param {string} msg - строка действия в журнале
	 * @return {object} act
	 * @return {boolean} act.isMe - герой/моб
	 * @return {string} act.type - тип hit/might/...
	 * @return {string} act.sec - вторичный тип как vamp в [eva,vamp]
	 * @return {string} act.actor - значение из фигурных скобок
	 * @return {string} act.victim - значение из фигурных скобок
	 * @return {string} act.item - значение из фигурных скобок
	 * @return {string} act.value - значение из фигурных скобок
	 * */
    function parseShort(msg) {
        msg = msg.replace(/ё/g, "е").replace(/\s\s+/g, " ");
        for (var act, i = 0; i < cfgShort.length; i++) {
            var cfgParsedLine = cfgShort[i], paramNames = cfgParsedLine.params, values = cfgParsedLine.regex.exec(msg);
            if (values) {
                values = values.slice(1), act = {}, act.type = cfgParsedLine.type, cfgParsedLine.sec && (act.sec = cfgParsedLine.sec);
                for (var paramIndex = 0; paramIndex < paramNames.length; paramIndex++) {
                    var param = paramNames[paramIndex];
                    act[param] = isNaN(values[paramIndex]) ? values[paramIndex] : +values[paramIndex];
                }
                act.isMe = !!(act.actor ? utils.isMyName(act.actor) : act.victim ? !utils.isMyName(act.victim) : !0), utils.settings.settingsValues.heroNameStart || (act.isMe = 0);
            }
        }
        return act;
    }
    /**
	 * Прекомпиляция конфига фраз для разбора
	 * */
    function processShortRaw(phrases) {
        for (var ESCAPE = /[?.]/g, anyRegExp = new RegExp("({})", "g"), numbersRegExp = new RegExp("({value})", "g"), paramsRegExp = new RegExp("({[a-zA-Z]+})", "g"), namesRegExp = "([а-яА-ЯёЁa-zA-Z\\d _\\-']+)", paramReg = /{([a-zA-Z]+)}/g, result = [], typeReg = /^\[([a-zA-Z]+)(?:,([a-zA-Z]+))?\]/, i = 0; i < phrases.length; i++) {
            var cfgString = phrases[i].replace(/ё/g, "е"), parsedCfg = {}, p = typeReg.exec(cfgString);
            p && (p[1] && (parsedCfg.type = p[1]), p[2] && (parsedCfg.sec = p[2]), //				else parsedCfg.sec = 'vamp';
            cfgString = cfgString.replace(p[0], "")), "~" !== cfgString.charAt(0) && (cfgString = "^" + cfgString, cfgString += "$");
            var paramNames = [];
            do {
                p = paramReg.exec(cfgString), p && paramNames.push(p[1]);
            } while (p);
            parsedCfg.params = paramNames, cfgString = cfgString.replace(ESCAPE, "\\$&").replace(/\(/g, "(?:").replace(/\)/g, ")?").replace(anyRegExp, ".+").replace(numbersRegExp, "(\\d+)").replace(paramsRegExp, namesRegExp), 
            parsedCfg.regex = new RegExp(cfgString), result[i] = parsedCfg;
        }
        return result;
    }
    var utils = __webpack_require__(3), phrases = __webpack_require__(47), cfgShort = processShortRaw(phrases);
    module.exports = parseShort;
}, /* 19 */
/***/
function(module, exports, __webpack_require__) {
    /**
	* Метод выделяет ключевые слова в строке действия в журнале
	* */
    function parseHighlight(msg, act) {
        for (var i = 0; i < cfgHighlight.length; i++) {
            var regExp = cfgHighlight[i].regex, type = cfgHighlight[i].type || "value";
            msg = msg.replace(regExp, '<span class="' + type + '">$&</span>');
        }
        for (var cls in act) {
            if (act.hasOwnProperty(cls)) {
                var value = act[cls];
                "value" !== cls && "type" !== cls && (msg = msg.replace(value, '<span class="' + cls + '">' + value + "</span>"));
            }
        }
        return msg;
    }
    /**
	 * Прекомпилящия конфига фраз для выделения
	 * */
    function processHighlightRaw(phrasesHighlight) {
        for (var typeReg = /^\[[a-zA-Z]+\]/g, result = [], i = 0; i < phrasesHighlight.length; i++) {
            var cfgString = phrasesHighlight[i], parsedCfg = {}, p = typeReg.exec(cfgString);
            p && p[0] && (parsedCfg.type = p[0].substring(1, p[0].length - 1)), cfgString = cfgString.replace(typeReg, ""), parsedCfg.regex = new RegExp(cfgString), result.push(parsedCfg);
        }
        return result;
    }
    var phrasesHighlight = __webpack_require__(49), cfgHighlight = processHighlightRaw(phrasesHighlight);
    module.exports = parseHighlight;
}, /* 20 */
/***/
function(module, exports, __webpack_require__) {
    var utils = __webpack_require__(3), _subscribe = utils.subscribe, _quests = module.exports = {};
    _quests.checkQuests = __webpack_require__(48), _subscribe("preload", function() {
        _subscribe("newMessages", function(messagesNew, game_data) {
            var hero = game_data.account.hero, quests = hero.quests.quests;
            _quests.checkQuests(quests);
        });
    });
}, /* 21 */
/***/
function(module, exports, __webpack_require__) {
    var utils = __webpack_require__(3), _settings = utils.settings, _subscribe = utils.subscribe, sendNotify = __webpack_require__(22), lastNotifyMessagesText = "";
    _subscribe("newMessages", function(messagesNew, gameData) {
        var hero = gameData.account.hero, _settingsValues = _settings.settingsValues;
        if (_settingsValues.notify) {
            var notifyMessages = [];
            if (_settingsValues.notifyHeroHp) {
                var health = hero.base.health, minHp = _settingsValues.notifyHeroHpLowerValue;
                minHp > health && notifyMessages.push("Низкое здоровье: " + health + " HP");
            }
            if (_settingsValues.notifyHeroEnergy) {
                var energy = hero.energy.value, maxEnergy = _settingsValues.notifyHeroEnergyGreaterValue;
                energy > maxEnergy && notifyMessages.push("Энергия накопилась: " + energy);
            }
            if (_settingsValues.notifyHeroIdle) {
                var actionType = hero.action.type;
                0 === actionType && notifyMessages.push("Герой бездействует");
            }
            if (notifyMessages.length) {
                var notifyMessagesText = notifyMessages.join("\n");
                notifyMessagesText !== lastNotifyMessagesText && sendNotify("The Tale Extended - " + utils.heroName, {
                    tag: "send",
                    body: notifyMessagesText
                }), lastNotifyMessagesText = notifyMessagesText;
            }
        }
    });
}, /* 22 */
/***/
function(module, exports, __webpack_require__) {
    function request() {
        function newMessage(permission) {
            if ("granted" !== permission) {
                return !1;
            }
            new Notification("Thanks for letting notify you");
            return !0;
        }
        "granted" !== Notification.permission.toLowerCase() && Notification.requestPermission(newMessage);
    }
    function generateRandomString() {
        return Math.random().toString(36).slice(2);
    }
    function sendNotify(name, options) {
        var d = new Date(), h = d.getHours(), m = d.getMinutes(), time = h + ":" + (10 > m ? "0" + m : m), nt = new Notification(name, {
            tag: options.tag + rndStr,
            body: options.body + (options.addTime ? "\n" + time : ""),
            icon: options.icon || window.extPath + "img/128.png"
        });
        nt.onclick = nt.onclose = function() {
            rndStr = generateRandomString();
        };
    }
    var $ = __webpack_require__(16);
    $("body").one("click", request);
    var rndStr = generateRandomString();
    module.exports = sendNotify;
}, /* 23 */
/***/
function(module, exports, __webpack_require__) {
    var core = __webpack_require__(3), _log = core.log, messagesLog = _log.get("messagesLog") || [];
    module.exports = messagesLog;
}, /* 24 */
/***/
function(module, exports, __webpack_require__) {
    function traceInit() {
        for (var i = 0; i < messagesLog.length; i++) {
            var messageNew = messagesLog[i];
            messageNew[4] = _parse["short"](messageNew[2]) || !1;
        }
    }
    var _parse = __webpack_require__(4), messagesLog = __webpack_require__(23), _utils = __webpack_require__(3), _subscribe = _utils.subscribe;
    module.exports = traceInit, _subscribe("settingsChange", function(key) {
        "heroNameStart" === key && traceInit();
    });
}, /* 25 */
/***/
function(module, exports, __webpack_require__) {
    function traceData(game_data) {
        var hero = game_data.account.hero;
        if (hero) {
            var heroData = {
                action: {
                    description: hero.action.description,
                    type: hero.action.type,
                    info_link: hero.action.info_link,
                    is_boss: hero.action.is_boss,
                    percents: hero.action.percents
                },
                base: {
                    health: hero.base.health,
                    max_health: hero.base.max_health,
                    level: hero.base.level,
                    alive: hero.base.alive,
                    money: hero.base.money
                },
                energy: {
                    bonus: hero.energy.bonus,
                    max: hero.energy.max,
                    value: hero.energy.value
                },
                secondary: {
                    //			initiative: hero.secondary.initiative,
                    loot_items_count: hero.secondary.loot_items_count,
                    //			max_bag_size: hero.secondary.max_bag_size,
                    //			move_speed: hero.secondary.move_speed,
                    power: hero.secondary.power
                },
                turn: game_data.turn.number
            }, lastLog = messagesLog[messagesLog.length - 1] || [], lastTimestamp = lastLog[0], messagesPack = hero.messages;
            messagesPack[messagesPack.length - 1][3] = heroData;
            for (var messagesPackTimestamp = messagesPack[messagesPack.length - 1][0], messagesNew = [], i = 0; i < messagesPack.length; i++) {
                if (!lastTimestamp || messagesPack[i][0] > lastTimestamp) {
                    var messageNew = messagesPack[i];
                    //					if (messagesPackTimestamp === messageNew[0]) messageNew[3] = heroData;
                    messageNew[3] = messageNew[3] || !1, messageNew[4] = _parse["short"](messageNew[2]) || !1, messagesLog.push(messageNew), messagesNew.push(messageNew);
                }
            }
            _log.set("messagesLog", messagesLog.map(function(item) {
                return [ item[0], item[1], item[2], item[3] ];
            })), //	_trace.heroData = heroData;
            _publish("newTurn", messagesNew, game_data, messagesPackTimestamp), messagesNew.length && _publish("newMessages", messagesNew, game_data, messagesPackTimestamp);
        }
    }
    var utils = __webpack_require__(3), _parse = __webpack_require__(4), _publish = utils.publish, _log = (utils.subscribe, utils.log), messagesLog = (utils.settings, 
    __webpack_require__(23));
    module.exports = traceData;
}, /* 26 */
/***/
function(module, exports, __webpack_require__) {
    function traceStart() {
        $(document).bind(pgf.game.events.DATA_REFRESHED + ".ext-trace", function(e, game_data) {
            traceData(game_data);
        });
    }
    var $ = __webpack_require__(16), pgf = __webpack_require__(17), traceData = __webpack_require__(25);
    module.exports = traceStart;
}, /* 27 */
/***/
function(module, exports, __webpack_require__) {
    function traceStop() {
        $(document).unbind(pgf.game.events.DATA_REFRESHED + ".ext-trace");
    }
    var $ = __webpack_require__(16), pgf = __webpack_require__(17);
    module.exports = traceStop;
}, /* 28 */
/***/
function(module, exports, __webpack_require__) {
    function initSettings() {
        _settings.addSets(sets), _settings.drawSets(sets);
        var $sets = _elements.getTabInner("sets");
        $sets.on("click", "[data-auto]", function(e) {
            e.preventDefault();
            var type = $(this).data("auto"), types = {
                rest: {
                    autohelpIdle: 1,
                    autohelpDead: 1,
                    autohelpHp: 1,
                    autohelpHpBoss: 1,
                    autohelpEnergy: 1,
                    autohelpEnergyFight: 0,
                    autohelpEnergyRest: 0,
                    autohelpEnergyWalk: 1,
                    autohelpEnergyTradeMed: 1
                },
                fight: {
                    autohelpIdle: 0,
                    autohelpDead: 0,
                    autohelpHp: 1,
                    autohelpHpBoss: 0,
                    autohelpEnergy: 1,
                    autohelpEnergyFight: 1,
                    autohelpEnergyRest: 0,
                    autohelpEnergyWalk: 0,
                    autohelpEnergyTradeMed: 0
                }
            }, conf = types[type];
            for (var key in conf) {
                if (conf.hasOwnProperty(key)) {
                    var value = !!conf[key], $input = _settings.getSettingInput(key);
                    $input.prop("checked", value).trigger("change");
                }
            }
        });
    }
    var $ = __webpack_require__(16), utils = __webpack_require__(3), _subscribe = utils.subscribe, _elements = utils.elements, _settings = utils.settings, sets = [ {
        title: 'Помощь герою (<span class="link-ajax" data-auto="rest">миролюбие</span>/<span class="link-ajax" data-auto="fight">агрессия</span>)',
        fields: [ {
            label: "Автоматическая помощь",
            note: "Внимание! Настройки применяются в момент нажатия",
            name: "autohelp",
            isToggle: 1,
            value: !1,
            subs: [ {
                label: "Уведомлять о помощи",
                name: "autohelpNotify",
                isToggle: 1,
                value: !1
            }, {
                label: "Использовать бонусную энергию, оставить",
                note: "Указанный запас энергии тратиться не будет",
                name: "autohelpEnergyBonus",
                isToggle: 1,
                value: !1,
                inputs: [ {
                    name: "autohelpEnergyBonusMax",
                    type: "num"
                } ]
            }, {
                label: "Герой бездействует",
                name: "autohelpIdle",
                isToggle: 1,
                value: !0
            }, {
                label: "Герой воскресает",
                name: "autohelpDead",
                isToggle: 1,
                value: !0
            }, {
                label: "Здоровье в бою ниже ",
                name: "autohelpHp",
                isToggle: 1,
                value: !0,
                inputs: [ {
                    type: "num",
                    name: "autohelpHpLowerValue",
                    value: 200
                } ],
                subs: [ {
                    label: "только против босса",
                    name: "autohelpHpBoss",
                    isToggle: 1,
                    isInline: 1,
                    value: !0
                } ]
            }, {
                label: "Лечение спутника, если его здоровье меньше",
                name: "autohelpСompanion",
                isToggle: 1,
                isInline: 1,
                value: !0,
                inputs: [ {
                    type: "num",
                    name: "autohelpСompanionHp",
                    isInline: 1,
                    value: 20
                } ]
            }, {
                label: "Энергия выше ",
                name: "autohelpEnergy",
                isToggle: 1,
                value: !0,
                inputs: [ {
                    type: "num",
                    name: "autohelpEnergyGreaterValue",
                    value: 10
                } ],
                subs: [ {
                    label: "в бою",
                    name: "autohelpEnergyFight",
                    isToggle: 1,
                    isInline: 1,
                    value: !1
                }, {
                    label: "вне боя",
                    name: "autohelpEnergyRest",
                    isToggle: 1,
                    isInline: 1,
                    value: !1
                }, {
                    label: "в пути",
                    name: "autohelpEnergyWalk",
                    isToggle: 1,
                    isInline: 1,
                    value: !0
                }, {
                    label: "торг/медитация",
                    name: "autohelpEnergyTradeMed",
                    isToggle: 1,
                    isInline: 1,
                    value: !0
                } ]
            } ]
        }, {
            label: "Автоматический выбор в задании",
            name: "autoquest",
            isToggle: 1,
            value: !1,
            subs: [ {
                label: "Уведомлять о выборе",
                name: "autoquestNotify",
                isToggle: 1,
                value: !1
            }, {
                label: "Задания, влияющие на честь",
                //					note: 'Доставка, сопроводить караван, пошпионить',
                name: "autoquestHonor",
                isToggle: 1,
                value: !0,
                subs: [ {
                    label: "честно",
                    name: "autoquestHonorPlus",
                    isToggle: 1,
                    isInline: 1,
                    value: !0
                }, {
                    label: "бесчестно",
                    name: "autoquestHonorMinus",
                    isToggle: 1,
                    isInline: 1,
                    value: !1
                } ]
            }, {
                label: "Задания, влияющие на миролюбие",
                //					note: 'Выбить долг',
                name: "autoquestPeace",
                isToggle: 1,
                value: !0,
                subs: [ {
                    label: "миролюбиво",
                    name: "autoquestPeacePlus",
                    isToggle: 1,
                    isInline: 1,
                    value: !0
                }, {
                    label: "воинственно",
                    name: "autoquestPeaceMinus",
                    isToggle: 1,
                    isInline: 1,
                    value: !1
                } ]
            } ]
        }, {
            label: "Брать карты",
            name: "autocard",
            isToggle: 1,
            value: !1
        } ]
    } ];
    _subscribe("preload", function(gameData) {
        if (gameData) {
            var hero = gameData.account.hero, energyBonus = hero.energy.bonus, $inputMax = _settings.getSettingInput("autohelpEnergyBonusMax");
            isNaN($inputMax.val()) && $inputMax.val(Math.max(0, energyBonus - 10)).trigger("change");
        }
    }), module.exports = initSettings, _subscribe("init", function() {
        initSettings();
    });
}, /* 29 */
/***/
function(module, exports, __webpack_require__) {
    function checkHero(gameData) {
        function godHelp(msg, ability, getParams) {
            //				console.log('godHelp! real');
            if (ability = ability || "help", console.log("god " + ability + "!", getParams, actionName, msg, $.extend({}, hero)), _settingsValues.autohelpNotify && _notification.sendNotify("The Tale Extended - " + _heroName, {
                tag: "autohelp",
                body: "Сработала автоматическая помощь \n" + msg + "\nТекущее действие: " + _const.ACTION_TYPE_TEXTS[actionName],
                addTime: 1
            }), _settingsValues.autohelp) {
                var paramsStr = "";
                for (var key in getParams) {
                    getParams.hasOwnProperty(key) && (paramsStr += "&" + key + "=" + getParams[key]);
                }
                var url = "/game/abilities/" + ability + "/api/use?api_version=1.0&api_client=" + window.API_CLIENT + paramsStr;
                //				console.log('url: ', url)
                //				if (!_settingsValues.autohelp) return;
                hero.energy.value -= 4, $.ajax({
                    url: url,
                    dataType: "json",
                    type: "post",
                    data: {}
                });
            }
        }
        var _settingsValues = _settings.settingsValues, hero = gameData.account.hero, actionType = hero.action.type, actionPercent = hero.action.percents, actionName = _const.ACTION_TYPE_NAMES[actionType], energy = hero.energy.value, energyBonus = _settingsValues.autohelpEnergyBonus ? hero.energy.bonus - _settingsValues.autohelpEnergyBonusMax : 0;
        if (0 > energyBonus && (energyBonus = 0), !(4 > energy + energyBonus)) {
            var isFight = "fight" === actionName, isRest = 10 > actionType && "fight" !== actionName, isBoss = !!hero.action.is_boss;
            if (_settingsValues.autohelpHp && hero.base.health < _settingsValues.autohelpHpLowerValue && isFight && (!_settingsValues.autohelpHpBoss || isBoss)) {
                return void godHelp("Низкое здоровье: " + hero.base.health);
            }
            var isHeplingСompanion = "companionHeal" === actionName;
            if (_settingsValues.autohelpСompanion && isHeplingСompanion && hero.companion.health < _settingsValues.autohelpСompanionHp) {
                return void godHelp("Низкое здоровье спутника: " + hero.companion.health);
            }
            if (_settingsValues.autohelpEnergy && energy > _settingsValues.autohelpEnergyGreaterValue && (_settingsValues.autohelpEnergyFight && isFight || _settingsValues.autohelpEnergyRest && isRest || _settingsValues.autohelpEnergyWalk && "walk" === actionName || _settingsValues.autohelpEnergyTradeMed && ("trade" === actionName || "energy" === actionName))) {
                //console.log('check passed', energy, _settingsValues.autohelpEnergyGreaterValue)
                //			if (_settingsValues.autohelpEnergyRepairBuilding && _settingsValues.autohelpEnergyRepairBuildingID) {
                //				var x = _settingsValues.autohelpEnergyRepairBuildingX;
                //				var y = _settingsValues.autohelpEnergyRepairBuildingY;
                //				getBuildingState(x,y)
                //					.done(function(integrity) {
                //						if (integrity && integrity < (_settingsValues.autohelpEnergyRepairBuildingPercent/100 || 0.982)) {
                //							godHelp('repair', 'building_repair', {building: _settingsValues.autohelpEnergyRepairBuildingID});
                //						}
                //					});
                //			} else {
                return void godHelp("Накопилась энергия: " + energy);
            }
            if (_settingsValues.autohelpIdle && 0 === actionType && !isFight && actionPercent > 0 && .8 > actionPercent) {
                return void godHelp("Герой бездействует");
            }
            if (_settingsValues.autohelpDead && 4 === actionType && !isFight && actionPercent > 0 && .8 > actionPercent) {
                return void godHelp("Герой умер");
            }
            var hasCard = !$(".pgf-get-card-button").hasClass("pgf-hidden");
            return _settingsValues.autocard && hasCard ? void $(".pgf-get-card-button a").trigger("click") : !0;
        }
    }
    var $ = __webpack_require__(16), utils = __webpack_require__(3), _subscribe = utils.subscribe, _const = utils["const"], _settings = utils.settings, _notification = __webpack_require__(7), _heroName = utils.heroName;
    module.exports = checkHero, _subscribe("newTurn", function(messagesNew, gameData) {
        window.setTimeout(function() {
            checkHero(gameData);
        }, 1e3);
    });
}, /* 30 */
/***/
function(module, exports, __webpack_require__) {
    function checkQuest(gameData) {
        function chooseQuest(uid, name) {
            _settingsValues.autoquestNotify && lastquest !== name && (lastquest = name, _notification.sendNotify("The Tale Extended - " + _heroName, {
                tag: "autoquest",
                body: "Сделан выбор! \n— " + name,
                addTime: 1,
                icon: window.extPath + "img/quest/caravan.png"
            })), _settingsValues.autoquest && $.ajax({
                url: "/game/quests/api/choose?api_version=1.0&api_client=" + window.API_CLIENT + "&option_uid=" + encodeURIComponent(uid),
                dataType: "json",
                type: "post",
                data: {}
            });
        }
        var _settingsValues = _settings.settingsValues, selectChoices = {};
        _settingsValues.autoquestPeacePlus && (selectChoices.peacePlus = 1), _settingsValues.autoquestPeaceMinus && (selectChoices.peaceMinus = 1), _settingsValues.autoquestHonorPlus && (selectChoices.honorPlus = 1), 
        _settingsValues.autoquestHonorMinus && (selectChoices.honorMinus = 1);
        for (var hero = gameData.account.hero, quests = hero.quests.quests, line = quests[1].line, i = 0; i < line.length; i++) {
            for (var q = line[i], choiceIndex = 0; choiceIndex < q.choice_alternatives.length; choiceIndex++) {
                var choiceName = q.choice_alternatives[choiceIndex][1], option_uid = q.choice_alternatives[choiceIndex][0];
                for (var reward in CHOICES) {
                    CHOICES.hasOwnProperty(reward) && CHOICES[reward].indexOf(choiceName) >= 0 && selectChoices[reward] && chooseQuest(option_uid, choiceName);
                }
            }
        }
    }
    var $ = __webpack_require__(16), utils = __webpack_require__(3), _subscribe = utils.subscribe, _settings = utils.settings, _notification = __webpack_require__(7), _heroName = utils.heroName, CHOICES = {
        /* peacefullnes */
        peacePlus: [ "прибегнуть к дипломатии" ],
        peaceMinus: [ "задействовать грубую силу" ],
        honorPlus: [ "довести дело до конца", /* spying */
        "защищать торговца", /* caravan */
        "честно выполнить свои обязательства" ],
        honorMinus: [ "поддаться укорам совести и раскрыться", /* spying */
        "шантажировать самостоятельно", /* spying */
        "присвоить письмо и продать", /* delivery */
        "украсть-украсть-украсть", /* delivery */
        "подделать письмо" ]
    }, lastquest = "";
    module.exports = checkQuest, _subscribe("newMessages", function(messagesNew, gameData) {
        window.setTimeout(function() {
            checkQuest(gameData);
        }, 1e3);
    });
}, /* 31 */
/***/
function(module) {
    module.exports = {
        MAX_LOG_LENGTH: 1e3,
        MAX_ARCHIVE_LENGTH: 2e3,
        FIGHT_START: "fight".split(/,\s*/),
        FIGHT: "hit, might, fire, poisoncloud, vamp, stunHit, crit, flame, poison, slow, mush, speed, ue, eva, stun, heal".split(/,\s*/),
        FIGHT_VALUES: "hit, might, fire,              vamp, stunHit, crit, flame, poison,                                   heal".split(/,\s*/),
        FIGHT_COUNTS: "                  poisoncloud,                                     slow, mush, speed, ue, eva, stun      ".split(/,\s*/),
        DMG: "hit, might, fire, poisoncloud, vamp, stunHit, crit                                                       ".split(/,\s*/),
        DOT: "                                                    flame, poison                                        ".split(/,\s*/),
        DEBUFF: "                                                                   slow                                  ".split(/,\s*/),
        BUFF: "                                                                         mush, speed, ue                 ".split(/,\s*/),
        ACTIVE: "hit, might, fire, poisoncloud, vamp, stunHit,                            mush,        ue                 ".split(/,\s*/),
        PASSIVE: "                                              crit, flame, poison, slow,       speed,     eva, stun, heal".split(/,\s*/),
        SUM_TO_MAIN: {
            flame: "fire",
            poison: "poisoncloud",
            crit: "hit"
        },
        LOOT: [ "pickup", "empty", "drop", "death" ],
        REST: [ "rest" ],
        SHORT: [ "hit", "might", "fire", "flame", "poison", "vamp", "slow", "poisoncloud", "mush", "ue", "eva", "heal", "godheal", "rest", "coins", "speed", "stunHit", "stun", "pvpeff", "pvpice", "pvpflame", "pvpfail", "companion" ],
        ACTION_TYPE_NAMES: {
            0: "idle",
            //безделие
            1: "quest",
            //задание
            2: "walk",
            //путешествие между городами
            3: "fight",
            //сражение 1x1 с монстром
            4: "dead",
            //воскрешение
            5: "city",
            //действия в городе
            6: "rest",
            //отдых
            7: "equip",
            //экипировка
            8: "trade",
            //торговля
            9: "nearcity",
            //путешествие около города
            10: "energy",
            //восстановление энергии
            11: "noeffect",
            //действие без эффекта на игру
            12: "proxy",
            //прокси-действия для взаимодействия героев
            13: "pvp",
            //PvP 1x1
            14: "test",
            //проверочное действие
            15: "companionHeal"
        },
        ACTION_TYPE_TEXTS: {
            idle: "безделие",
            quest: "задание",
            walk: "путешествие между городами",
            fight: "сражение 1x1 с монстром",
            dead: "воскрешение",
            city: "действия в городе",
            rest: "отдых",
            equip: "экипировка",
            trade: "торговля",
            nearcity: "путешествие около города",
            energy: "восстановление энергии",
            noeffect: "действие без эффекта на игру",
            proxy: "прокси-действия для взаимодействия героев",
            pvp: "PvP 1x1",
            undefined: "неизвестное действие",
            companionHeal: "уход за спутником",
            broken: "неразобранное действие"
        },
        ACTION_TYPE_ICONS: {
            idle: '<span class="glyphicon glyphicon-home"></span>',
            quest: '<span class="glyphicon glyphicon-globe"></span>',
            walk: '<span class="glyphicon glyphicon-road"></span>',
            fight: '<span class="glyphicon glyphicon-leaf"></span>',
            dead: '<span class="glyphicon glyphicon-remove"></span>',
            city: '<span class="glyphicon glyphicon-home"></span>',
            rest: '<span class="glyphicon glyphicon-heart-empty"></span>',
            equip: '<span class="glyphicon glyphicon-collapse-down"></span>',
            trade: '<span class="glyphicon glyphicon-copyright-mark"></span>',
            nearcity: '<span class="glyphicon glyphicon-globe"></span>',
            energy: '<span class="glyphicon glyphicon-flash"></span>',
            noeffect: '<span class="glyphicon glyphicon-music"></span>',
            companionHeal: '<span class="glyphicon glyphicon-user"></span>',
            broken: '<span class="glyphicon glyphicon-ban-circle"></span>'
        },
        ERROR_CODES: {
            1: "Неполное действие",
            2: "Не найдено начало боя",
            3: "Не найден конец боя",
            4: "Дыра в середине действия",
            5: "Запись обрывается"
        },
        ICONS: {
            hit: '<span class="glyphicon glyphicon-leaf"></span>',
            crit: '<span class="glyphicon glyphicon-star"></span>',
            might: '<span class="glyphicon glyphicon-tower"></span>',
            fire: '<span class="glyphicon glyphicon-fire"></span>',
            flame: '<span class="glyphicon glyphicon-fire small"></span>',
            poisoncloud: '<span class="glyphicon glyphicon-tint"></span>',
            poison: '<span class="glyphicon glyphicon-tint small"></span>',
            vamp: '<span class="glyphicon glyphicon-cutlery"></span>',
            ue: '<span class="glyphicon glyphicon-refresh"></span> ',
            eva: '<span class="glyphicon glyphicon-transfer"></span> ',
            slow: '<span class="glyphicon glyphicon-link"></span>',
            mush: '<span class="glyphicon glyphicon-arrow-up"></span>',
            speed: '<span class="glyphicon glyphicon-forward"></span>',
            stunHit: '<span class="glyphicon glyphicon-step-forward"></span>',
            stun: '<span class="glyphicon glyphicon-bell"></span>',
            rest: '<span class="glyphicon glyphicon-heart-empty"></span>',
            heal: '<span class="glyphicon glyphicon-heart"></span>',
            dmgSum: '<span class="glyphicon glyphicon-asterisk"></span>',
            godheal: '<span class="glyphicon glyphicon-heart-empty"></span>',
            coins: '<span class="glyphicon glyphicon-copyright-mark"></span>',
            pickup: '<span class="glyphicon glyphicon-ok-circle"></span>',
            empty: '<span class="glyphicon glyphicon-remove-circle"></span>',
            drop: '<span class="glyphicon glyphicon-ban-circle"></span>',
            death: '<span class="glyphicon glyphicon-remove-sign"></span>',
            pvpeff: '<span class="glyphicon glyphicon-flash"></span>',
            pvpice: '<span class="glyphicon glyphicon-cloud-upload"></span>',
            pvpflame: '<span class="glyphicon glyphicon-cloud-download"></span>',
            pvpfail: '<span class="glyphicon glyphicon-cloud"></span>',
            companion: '<span class="glyphicon glyphicon-user"></span>'
        },
        ACTION_TRANSLATE: {
            hit: "Удар",
            crit: "Критический удар",
            stunHit: "Разбег-толчок",
            stun: "Шок",
            might: "Тяжёлый удар",
            slow: "Заморозка",
            speed: "Ускорение",
            fire: "Шар огня",
            flame: "Пламя",
            mush: "Волшебный гриб",
            ue: "Шаг в сторону",
            eva: "Увернулся",
            poisoncloud: "Ядовитое облако",
            poison: "Отравление",
            vamp: "Удар вампира",
            heal: "Регенерация",
            dmgSum: "Всего"
        },
        MOBS: [ null, "олень", "одичавшая одежда", "осы", "хищный кустик", "кабан-секач", "бродячий дуб", "волк", "дух леса", "оскорблённая эльфийка", "блюститель природы", "медведь", "аристократ", "единорог", "призрачный волк", "астральный охотник", "головастик", "домашний поползень", "одичавшие светлячки", "ползун", "пиявка", "гигантская росянка", "сбежавший эксперимент", "слизь", "гидра", "щупальце", "химический мусорник", "упырь", "кикимора", "бесхозный голем", "охотник за реагентами", "мутировавший гоблин", "василиск", "ожившее пугало", "хищный хомяк", "борец за справедливость", "саранча", "маньяк-извращенец", "карточный шулер", "богомол", "благородный разбойник", "одержимый колдун", "механический дракончик", "дварф-изгнанник", "неистовый сектант", "механический голем", "убийца", "полоумный маг", "шакал", "скорпион", "налётчик", "огненная лиса", "орк-изгнанник", "скарабей", "гремучая змея", "саламандра", "пустынный дракончик", "джинн", "берсерк", "смерч", "заблудший шаман", "шайтан", "крыса", "бандит", "призрак", "неупокоенный", "гремлин", "подыльник", "странствующий рыцарь", "нага", "охотник за головами", "суккуб", "вирика", "див", "додо", "ангиак", "бхут", "гвиллион", "вилах", "вендиго", "галд", "ачери", "земляная даппи", "огненная даппи", "анчутка", "жихарь", "йиена", "мара", "боец Серого Ордена", "спятивший лорд", "волколак", "медвелак", "аколит огня", "ламия", "баргест", "вий", "гьюнальский паук", "дэра", "гриндель", "грим", "кагир", "друджи", "даса", "стая ичетики", "кера", "куд", "ларва", "егви", "каменный великан", "каннибал", "ламашту", "лахама", "наркоман", "бывший палач", "мародёр", "страхолев", "злоцвет", "варвар", "ночная хныка", "омерзень", "смрадень", "глыдень", "песчаный холерник", "мать анаконд", "белая гиена", "мраморный бык", "язвомор", "лишайница", "жирница", "бульг", "костогрыз", "каменник", "вирница", "тигр", "барбегаз", "бродячий огонек", "скальник", "пупырник", "стогница", "куропатка гуанила", "пёстробородый", "капитан Серых Плащей", "аколит льда", "семиглаз", "гюрза", "медвежук", "снежная росомаха", "койот", "горный манул", "мастер огня", "мастер льда", "кобольд", "пожиратель плоти", "главарь пестробородых", "ученик Силы", "гомункул", "некромант", "тагар", "стрига", "приземник", "лесной тролль", "вурдалак", "болотный тролль", "бескуд", "атач" ]
    };
}, /* 32 */
/***/
function(module) {
    function publish(e) {
        for (var sp = e.split("."), event = sp[0], namespace = sp[1], ctx = this, i = 0; i < _subscribeList.length; i++) {
            var s = _subscribeList[i];
            namespace && namespace !== s.namespace || event && event !== s.event || s.fn.apply(ctx, Array.prototype.slice.call(arguments, 1));
        }
    }
    function subscribe(e, fn) {
        var events = e.split(",");
        if (events.length > 1) {
            return void events.forEach(function(ev) {
                subscribe(ev, fn);
            });
        }
        var sp = e.split("."), event = sp[0], namespace = sp[1];
        _subscribeList.push({
            event: event,
            namespace: namespace,
            fn: fn
        });
    }
    var _subscribeList = [];
    module.exports = {
        subscribeList: _subscribeList,
        publish: publish,
        subscribe: subscribe
    };
}, /* 33 */
/***/
function(module) {
    function cache(name, value, time) {
        return arguments.length > 1 ? (cacheStore[name] = value, cacheTimeId[name] && window.clearTimeout(cacheTimeId[name]), time && (cacheTimeId[name] = window.setTimeout(function() {
            delete cacheStore[name];
        }, time)), void 0) : cacheStore[name];
    }
    var cacheStore = {}, cacheTimeId = {};
    module.exports = {
        cacheStore: cacheStore,
        cache: cache
    };
}, /* 34 */
/***/
function(module) {
    function setStore(key, value) {
        localStorage.setItem(prefix + key, JSON.stringify(value));
    }
    function getStore(key) {
        return JSON.parse(localStorage.getItem(prefix + key) || localStorage.getItem(key));
    }
    var store, prefix = "ext-";
    store = "object" == typeof window && window.localStorage && window.JSON ? {
        get: getStore,
        set: setStore
    } : {
        get: function() {},
        set: function() {}
    }, module.exports = store;
}, /* 35 */
/***/
function(module, exports, __webpack_require__) {
    function setLog(name, messages) {
        try {
            if ("messagesLog" === name) {
                var max = /*_settings.settingsValues.maxLogLength || */ _const.MAX_LOG_LENGTH;
                pgf.base.settings.set(name, JSON.stringify(messages.slice(messages.length - max)));
            } else {
                pgf.base.settings.set(name, JSON.stringify(messages));
            }
        } catch (e) {
            console.warn("setLog", name, e);
        }
    }
    function getLog(name) {
        var g = pgf.base.settings.get(name);
        return g ? JSON.parse(g) : "";
    }
    function logToConsole(name) {
        var strLog = pgf.base.settings.get(name), s = strLog.replace(/\],\[/g, "],\n	[").replace(/\},{/g, "},\n	{").replace(/"(action|base|energy|habits|secondary|turn)"/g, '\n		"$1"');
        console.log(s);
    }
    function toStr(messages) {
        var strLog = JSON.stringify(messages), s = strLog.replace(/\],\[/g, "],\n	[").replace(/"(action|base|energy|habits|secondary|turn)"/g, '\n		"$1"');
        return s;
    }
    function size() {
        var t = 0;
        for (var x in localStorage) {
            localStorage.hasOwnProperty(x) && (t += 2 * localStorage[x].length);
        }
        return t;
    }
    var pgf = __webpack_require__(17), _const = __webpack_require__(31);
    module.exports = {
        toConsole: logToConsole,
        toStr: toStr,
        get: getLog,
        size: size,
        set: setLog
    };
}, /* 36 */
/***/
function(module, exports, __webpack_require__) {
    function getSettingInput(key) {
        return $('input[data-name="' + key + '"]');
    }
    function checkDependences(key, value, isDisabled) {
        deps[key] && deps[key].forEach(function(keyName) {
            keyName && getSettingInput(keyName).closest(".input-wrap").toggleClass("disabled", isDisabled || !value);
        });
    }
    function addSets(sets) {
        function settingsDefaults(fields) {
            for (var childs = [], i = 0; i < fields.length; i++) {
                var st = fields[i];
                childs.push(st.name), //					console.log('defaults', st.name);
                "undefined" == typeof settingsValues[st.name] && (settingsValues[st.name] = st.value);
                var subsChilds = [];
                st.inputs && (subsChilds = settingsDefaults(st.inputs).concat(subsChilds)), st.subs && (subsChilds = settingsDefaults(st.subs).concat(subsChilds)), st.fields && (subsChilds = settingsDefaults(st.fields).concat(subsChilds)), 
                subsChilds.length && st.name && (deps[st.name] = subsChilds, childs = subsChilds.concat(childs));
            }
            return childs;
        }
        for (var i = 0; i < sets.length; i++) {
            settingsDefaults(sets[i].fields);
        }
    }
    function drawSets(sets) {
        for (var $sets = _elements.getTabInner("sets"), html = "", i = 0; i < sets.length; i++) {
            var st = sets[i];
            html += '<div class=""><div class="sets-header">' + (st.title || "") + "</div>" + drawSetsGroup(st.fields) + "</div>";
        }
        html = '<div class="settings-form form-horizontal">' + html + "</div>", $sets.append(html), $sets.find("input").each(function() {
            var $input = $(this), name = $input.data("name"), value = $input.is('[type="checkbox"]') ? $input.prop("checked") : $input.val(), isDisabled = $input.closest(".input-wrap").hasClass("disabled");
            checkDependences(name, !isDisabled && value);
        });
    }
    function init() {
        var $sets = _elements.getTabInner("sets");
        drawSets(sets), $sets.on("change", "input", function() {
            var $input = $(this), name = $input.data("name"), value = $input.is('[type="checkbox"]') ? $input.prop("checked") : $input.val();
            "num" === $input.data("type") && (value = +value), settingsValues[name] = value;
            var isDisabled = $input.closest(".input-wrap").hasClass("disabled");
            _publish("settingsChange", name, value, isDisabled), _log.set("settings", settingsValues);
        });
    }
    function drawSetsGroup(fields) {
        function drawInput(st) {
            "undefined" == typeof settingsValues[st.name] && (settingsValues[st.name] = st.value);
            var html = "";
            return st.isToggle || "checkbox" === st.type ? html = '<input type="checkbox" data-name="' + st.name + '""' + (settingsValues[st.name] ? " checked" : "") + "> " : ("text" === st.type || "num" === st.type) && (html = '<input type="text" class="input-tiny input-tiny-' + st.type + '" data-name="' + st.name + '"' + (' data-type="' + st.type + '"') + (settingsValues[st.name] ? ' value="' + settingsValues[st.name] + '"' : "") + ">", 
            html = st.addOn ? '<div class="input-wrap input-append">' + html + '<span class="add-on">' + st.addOn + "</span></div>" : '<div class="input-wrap input-wrap-inline">' + html + "</div>"), 
            html;
        }
        for (var html = "", i = 0; i < fields.length; i++) {
            var st = fields[i], inputsHtml = "";
            st.inputs && (inputsHtml = " " + st.inputs.map(drawInput).join(""));
            var label = '<div class="input-wrap ' + (st.isToggle ? "checkbox" : "") + '"><label>' + drawInput(st) + st.label + "</label>" + inputsHtml + "</div>";
            html += '<div class="sets' + (st.isInline ? " sets-inline" : "") + '"><div class="sets-title">' + label + (st.note ? '<div class="note-block">' + st.note + "</div>" : "") + "</div>" + (st.subs ? drawSetsGroup(st.subs) : "") + "</div>";
        }
        return _log.set("settings", settingsValues), html;
    }
    var _subscribe = __webpack_require__(32).subscribe, _publish = __webpack_require__(32).publish, _const = __webpack_require__(31), $ = __webpack_require__(16), _log = __webpack_require__(35), _elements = __webpack_require__(38), sets = [ {
        title: "Персонаж",
        fields: [ {
            label: "Начало имени героя:",
            note: "Общая часть имени для всех падежей",
            inputs: [ {
                name: "heroNameStart",
                type: "text"
            } ]
        } ]
    }, {
        title: "Уведомления",
        fields: [ {
            label: "Отправлять уведомления",
            name: "notify",
            isToggle: 1,
            value: !0,
            subs: [ {
                label: "Выбор в задании",
                name: "notifyQuestChoose",
                isToggle: 1,
                value: !0
            }, {
                label: "Герой бездействует",
                name: "notifyHeroIdle",
                isToggle: 1,
                value: !0
            }, {
                label: "Здоровье ниже ",
                name: "notifyHeroHp",
                isToggle: 1,
                value: !0,
                inputs: [ {
                    type: "num",
                    name: "notifyHeroHpLowerValue",
                    value: 200
                } ]
            }, {
                label: "Энергия выше ",
                name: "notifyHeroEnergy",
                isToggle: 1,
                value: !0,
                inputs: [ {
                    type: "num",
                    name: "notifyHeroEnergyGreaterValue",
                    value: 9
                } ]
            } ]
        } ]
    }, {
        title: "Статистика",
        fields: [ {
            label: "Уровень героя: последний, или",
            name: "statsByLevel",
            isToggle: 1,
            value: !0,
            inputs: [ {
                type: "num",
                name: "statsByLevelValue"
            } ]
        }, {
            label: "Монстр: последний, или",
            name: "statsByMob",
            isToggle: 1,
            value: !0,
            inputs: [ {
                type: "num",
                name: "statsByMobId",
                addOn: "ID"
            } ],
            subs: [ {
                label: "Статистика героя против монстра",
                name: "myStatsByMob",
                isToggle: 1,
                value: !1
            } ]
        }, {
            label: "Количество действий в статистике:",
            inputs: [ {
                name: "statsActionsCount",
                type: "num"
            } ]
        } ]
    }, {
        title: "Отображение",
        fields: [ {
            label: "Выводить подробности действий",
            name: "groupOpenOnDefault",
            isToggle: 1,
            value: !0
        }, {
            label: "Показывать архив",
            name: "showArchive",
            isToggle: 1,
            value: !1
        } ]
    }, {
        title: 'Хранилище <span id="storage-size"></span>',
        fields: [ {
            label: "Сообщений в кратком журнале:",
            inputs: [ {
                name: "maxLogLength",
                type: "num",
                value: _const.MAX_LOG_LENGTH
            } ]
        }, {
            label: "Действий в архиве:",
            inputs: [ {
                name: "maxArchiveLength",
                type: "num",
                value: _const.MAX_ARCHIVE_LENGTH
            } ]
        }, {
            label: '<span class="link-ajax" id="reset-stats">Очистить хранилище</span>'
        } ]
    } ];
    _subscribe("settingsChange", checkDependences);
    var deps = {}, settingsValues = _log.get("settings") || {};
    addSets(sets);
    var _settings = {
        init: init,
        addSets: addSets,
        drawSets: drawSets,
        getSettingInput: getSettingInput,
        settingsValues: settingsValues
    };
    module.exports = _settings, _subscribe("init", function() {
        _settings.init();
    }), _subscribe("preload", function() {
        if (!_settings.settingsValues.heroNameStart) {
            /* todo is `this` correct _ext */
            var heroName = this.heroName;
            _settings.settingsValues.heroNameStart = heroName.substring(0, Math.max(3, heroName.length - 2)), _settings.getSettingInput("heroNameStart").val(_settings.settingsValues.heroNameStart).trigger("change");
        }
    }), _subscribe("settingsChange", function(key) {
        "heroNameStart" === key && /* todo is `this` correct _ext */
        this.groupMessages.drawMessages(this.groupMessages.list);
    }), _subscribe("newTurn", function() {
        window.setTimeout(function() {
            $("#storage-size").text("(занято " + Math.round(_log.size() / 1024 / 1024 * 100) / 100 + "Мб)");
        }, 10);
    });
}, /* 37 */
/***/
function(module) {
    var _utils = {};
    _utils.capitalize = function(text) {
        return text.substring(0, 1).toUpperCase() + text.substring(1);
    }, _utils.declensionByNumber = function(number, titles, addCount) {
        return (addCount ? number + " " : "") + titles[number % 100 > 4 && 20 > number % 100 ? 2 : [ 2, 0, 1, 1, 1, 2 ][5 > number % 10 ? number % 10 : 5]];
    }, _utils.timeSpan = function(timeSpan) {
        timeSpan = Math.floor(+timeSpan) || 0;
        var h = Math.floor(timeSpan / 60 / 60), m = Math.floor(timeSpan / 60) % 60, s = timeSpan % 60;
        return (h ? h + ":" : "") + (10 > m ? "0" : "") + m + ":" + (10 > s ? "0" : "") + s;
    }, module.exports = _utils;
}, /* 38 */
/***/
function(module, exports, __webpack_require__) {
    function addTab(name, opts) {
        var $content, zone = opts.zone || "main", $tabs = zones[zone].$tabs, $container = zones[zone].$container, $tab = $('<li class="pull-right"><a href="#pgf-' + name + '-container" class="pgf-' + name + '-tab-button" data-toggle="tab">' + opts.title + "</a></li>");
        $content = $("main" === zone ? '<div class="tab-pane log-block" id="pgf-' + name + '-container"></div>' : '<div class="tab-pane" id="pgf-' + name + '-container"></div>'), 
        $tabs.append($tab), $container.append($content);
        var $inner = $content;
        return opts.content && ($inner = $(opts.content).appendTo($content)), tabs[name] = {
            zone: zone,
            $tab: $tab,
            $content: $content,
            $inner: $inner
        }, $inner;
    }
    function getTabInner(name) {
        return tabs[name].$inner;
    }
    function getTab(name) {
        return tabs[name].$tab;
    }
    function activeTab() {}
    function addControl(name, opts) {
        var html = '<span class="ext-control link-ajax" id="ext-' + name + '" title="' + opts.title + '">' + (opts.content || "") + "</span>", $el = $(html).appendTo($controls);
        return controls[name] = {
            $el: $el
        }, $el;
    }
    function getControl(name) {
        return controls[name].$el;
    }
    var $ = __webpack_require__(16), _subscribe = __webpack_require__(32).subscribe, tabs = {}, $diaryRoot = $("#pgf-diary-container").parent().parent(), $diaryTabs = $diaryRoot.children(".nav-tabs"), $diaryContainer = $diaryRoot.children(".tab-content"), $equipRoot = $("#pgf-equipment-container").parent().parent(), $equipTabs = $equipRoot.children(".nav-tabs"), $equipContainer = $equipRoot.children(".tab-content"), zones = {
        main: {
            $tabs: $diaryTabs,
            $container: $diaryContainer
        },
        equip: {
            $tabs: $equipTabs,
            $container: $equipContainer
        }
    }, controls = {}, $controls = $('<div class="ext-controls pull-right"></div>').insertAfter("#current-action-block, #pvp-info-block"), _elements = {
        addTab: addTab,
        activeTab: activeTab,
        getTab: getTab,
        getTabInner: getTabInner,
        addControl: addControl,
        getControl: getControl
    };
    module.exports = _elements, _elements.addTab("sets", {
        zone: "main",
        title: '<span class="glyphicon glyphicon-cog" title="Настройки &laquo;The Tale Extended&raquo;"></span>'
    }), _elements.addTab("towns", {
        zone: "main",
        title: "города"
    }), _elements.addTab("archive", {
        zone: "main",
        title: "архив"
    }), _elements.addTab("group", {
        zone: "main",
        title: "кратко"
    }), _subscribe("init", function() {
        _elements.activeTab("group");
    }), _elements.addControl("journal-log", {
        title: "Журнал",
        content: '<span class="value"></span> <span class="glyphicon glyphicon-th-list"></span></span>'
    }), //	.on('click', function() { _log.toConsole('messagesLog'); });
    _elements.addControl("archive-log", {
        title: "Архив",
        content: '<span class="value"></span> <span class="glyphicon glyphicon-th"></span></span>'
    });
}, /* 39 */
/***/
function(module, exports, __webpack_require__) {
    var _settings = __webpack_require__(36);
    module.exports = function(str) {
        return str.indexOf(_settings.settingsValues.heroNameStart) >= 0;
    };
}, /* 40 */
/***/
function(module, exports, __webpack_require__) {
    function isActType(types, actType) {
        return _const[types].indexOf(actType) >= 0;
    }
    var _const = __webpack_require__(31);
    module.exports = isActType;
}, /* 41 */
/***/
function(module) {
    module.exports = function() {
        var list = [];
        return list.toString = function() {
            for (var result = [], i = 0; i < this.length; i++) {
                var item = this[i];
                result.push(item[2] ? "@media " + item[2] + "{" + item[1] + "}" : item[1]);
            }
            return result.join("");
        }, list;
    };
}, /* 42 */
/***/
function(module, exports, __webpack_require__) {
    var _towns = module.exports = {};
    _towns.init = __webpack_require__(53), _towns.mapDataUpdate = __webpack_require__(54), _towns.showMapDialogById = __webpack_require__(55), _towns.townQuestUpdate = __webpack_require__(56), 
    _towns.townParams = __webpack_require__(57), _towns.mapData = __webpack_require__(58);
    var $ = __webpack_require__(16), utils = (__webpack_require__(17), __webpack_require__(3)), _elements = utils.elements, _subscribe = utils.subscribe, $townsContent = _elements.getTabInner("towns");
    $("body").on("click.town", ".town", function() {
        if (console.log("click .town"), _towns.mapData) {
            var id = $(this).data("place-id");
            _towns.showMapDialogById(id);
        }
    }).on("click.town", ".reload", function() {
        var map_version = utils.map_version;
        map_version && _towns.mapDataUpdate(map_version).done(function(mapData) {
            _towns.townParams(mapData);
        });
    }), $townsContent.html('<span class="link-ajax pull-right reload glyphicon glyphicon-repeat"></span>'), _subscribe("preload", function() {
        var map_version = utils.map_version;
        map_version && _towns.mapDataUpdate(map_version).done(function() {
            _towns.init();
        });
    });
}, /* 43 */
/***/
function(module, exports, __webpack_require__) {
    var _short = module.exports = {};
    _short.htmlMessage = __webpack_require__(50), _short.htmlMessages = __webpack_require__(51), _short.htmlLongMessage = __webpack_require__(52);
}, /* 44 */
/***/
function(module, exports, __webpack_require__) {
    var _groupMessages = module.exports = {};
    _groupMessages.list = __webpack_require__(64), _groupMessages.addMessages = __webpack_require__(65), _groupMessages.drawFakeMessage = __webpack_require__(66), _groupMessages.drawMessages = __webpack_require__(67), 
    _groupMessages.redrawGroup = __webpack_require__(68);
    var $ = __webpack_require__(16), _trace = __webpack_require__(5), utils = __webpack_require__(3), _subscribe = utils.subscribe, _elements = utils.elements, _settings = utils.settings;
    _subscribe("init", function() {
        _groupMessages.addMessages(_trace.messagesLog), _groupMessages.drawMessages(_groupMessages.list), //	_subscribe('groupFinished', function(group, index) {
        //		_groupMessages.redrawGroup(index);
        //	});
        _subscribe("groupStarted", function(group, index) {
            _groupMessages.redrawGroup(index - 1);
        }), _subscribe("newTurn", function(messagesNew) {
            _groupMessages.addMessages(messagesNew), _groupMessages.redrawGroup(_groupMessages.list.length - 1);
        });
    }), _elements.getTabInner("group").on("click", ".group-title", function() {
        var $group = $(this).closest(".group"), index = $group.data("index");
        console.log("group>", _groupMessages.list[index]);
    }), _elements.addControl("group-toggle", {
        title: "Только действия / Подробности",
        content: '<span class="glyphicon glyphicon-chevron-' + (_settings.settingsValues.groupOpenOnDefault ? "down" : "up") + '"></span>'
    }).on("click", function() {
        //		_elements.activeTab('group');
        var $icon = $(this).children(".glyphicon"), isOpen = $icon.hasClass("glyphicon-chevron-up");
        _elements.getTabInner("group").children(".group").toggleClass("open", isOpen), _elements.getTabInner("archive").find(".group").toggleClass("open", isOpen), $icon.toggleClass("glyphicon-chevron-down glyphicon-chevron-up");
    }), $("body").on("click", ".group-toggle", function() {
        $(this).closest(".group").toggleClass("open");
    });
}, /* 45 */
/***/
function(module, exports, __webpack_require__) {
    /**
	 * Этот модуль сохраняет данные из сообщения в архив
	 * само сообщение не сохраняется
	 * модуль нужен для построения статистики
	 *
	 * Так же есть возможность посмотреть архив, переключатель в настройках
	 * */
    var _archive = module.exports = {};
    _archive.drawArchiveGroups = __webpack_require__(59), _archive.loadArchiveGroups = __webpack_require__(60), _archive.saveArchiveGroups = __webpack_require__(61), 
    _archive.addArchiveGroup = __webpack_require__(62), _archive.archiveGroups = __webpack_require__(63);
    var $ = __webpack_require__(16), utils = __webpack_require__(3), _subscribe = utils.subscribe, _elements = utils.elements, _groupMessages = (utils.settings, __webpack_require__(44));
    _subscribe("init", function() {
        _archive.loadArchiveGroups();
        for (var i = 1; i < _groupMessages.list.length; i++) {
            var gr = _groupMessages.list[i];
            _archive.addArchiveGroup(gr);
        }
        _archive.saveArchiveGroups(), _subscribe("newMessages", function() {
            var group = _groupMessages.list[_groupMessages.list.length - 1];
            _archive.addArchiveGroup(group);
        }), _subscribe("groupFinished", function(group) {
            _archive.addArchiveGroup(group), _archive.saveArchiveGroups();
        });
    }), _elements.getTabInner("archive").on("click", ".group-title", function() {
        var $group = $(this).closest(".group"), index = $group.data("index"), ts = _archive.archiveGroups[index].ts || [];
        console.log("archive>", _archive.archiveGroups[index], index, new Date(1e3 * ts[0]));
    }), _subscribe("newTurn", function() {
        window.setTimeout(function() {
            _elements.getControl("archive-log").find(".value").text(_archive.archiveGroups.length);
        }, 10);
    });
}, /* 46 */
/***/
function(module, exports, __webpack_require__) {
    /**
	 * Модуль нужен для отрисовки статистики
	 * статистика собирается из архива
	 * */
    var _stats = module.exports = {};
    _stats.drawStatsSide = __webpack_require__(69), _stats.countStatsTotal = __webpack_require__(70);
    var utils = __webpack_require__(3), _subscribe = utils.subscribe;
    _subscribe("settingsChange", function(key) {
        [ "statsByMob", "statsByMobId", "myStatsByMob", "statsActionsCount", "statsByLevel", "statsByLevelValue" ].indexOf(key) > 0 && _stats.drawStatsSide();
    }), _subscribe("preload", function() {
        _stats.drawStatsSide(), _subscribe("newMessages", function() {
            _stats.drawStatsSide();
        });
    });
}, /* 47 */
/***/
function(module) {
    module.exports = [ /* --pvp-- */
    "[pvpeff]Мощный поток энергии вздыбил землю вокруг {actor}. Эффективность {} увеличена на {eff} единиц(а|у|ы).", "[pvpeff]Кровь на мгновение застилает глаза {actor}. Эффективность увеличена на {eff} единиц(а|у|ы).", "[pvpeff]{actor} почувствовал(а|о|и) как (его|ее|их) мышцы крепчают, а сознание очищается. Эффективность боя увеличилась на {eff} единиц(а|у|ы).", "[pvpeff]Хранитель усилил связь с {actor} и увеличил (его|ее|их) эффективность на {eff} единиц(а|у|ы).", "[pvpice]Хранитель {actor} сконцентрировался и увеличил скорость прироста энергии.", "[pvpice]Холодная голова и кристально чистые мысли помогли хранителю {actor} увеличить скорость прироста энергии.", "[pvpflame]Хранитель {actor} нарушил(а|о|и) концентрацию противник(а|ов) и уменьшил скорость прироста (его|ее|их) энергии.", "[pvpfail]Тучи за спиной {actor} сошлись… И снова разошлись, ничего не произошло.", "[pvpfail]Хранитель {actor} не смог сконцентрироваться и потратил энергию впустую.", "[pvpfail]Хранителю не хватило концентрации для установления связи с {actor}. Энергия ушла в никуда.", /* Удар */
    "[hit]Изучив тактику {victim}, {actor} провел(а|о|и) атаку и нанес(ла|ло|ли) {value} единиц(у|а|ы) урона.", "[hit]Сосредоточившись, {actor} провел(а|о|и) атаку и лишил(а|о|и) {victim} {value} HP.", "[hit]Обманув {victim}, {actor} смог(ла|ло|ли) провести неожиданную атаку, лишив противник(а|ов) {value} HP.", "[hit]Усыпив бдительность {victim}, {actor} набросил(ся|ась|ось|ись) на противник(а|ов) и нанес(ла|ло|ли) {value} единиц(у|а|ы) урона.", "[hit]{actor} нанес(ла|ло|ли) точный удар, уменьшая здоровье {victim} на {value} HP.", "[hit]Апперкот, и вокруг {victim} взметнул(ась|ись) {value} звездоч(ка|ки|ек).", "[hit]Быстрая атака {actor} лишила {victim} {value} HP.", "[hit]{actor} виртуозно провел(а|о|и) атаку и нанес(ла|ло|ли) {victim} {value} единиц(у|а|ы) урона.", "[hit]Рассекающий удар {actor} нан(ёс|есла|есло|если) {value} единиц(у|а|ы) урона {victim}.", "[hit]Стоило только {victim} замахнуться, как {actor} резко ударил(а|о|и) (его|ее|их) по больному месту и нанес(ла|ло|ли) {value} единиц(у|а|ы) урона.", "[hit]Умелая подсечка — и придорожный камень нанёс голов(е|ам) {victim} {value} урона.", "[hit]Ловко парировав удар, {actor} провод(ит|ят) успешный контрудар, лишая {victim} {value} HP.", "[hit]{actor} поцарапал(а|о|и) {victim} на {value} HP.", "[hit]{actor} быстро прицелил(ся|ась|ось|ись), изготовил(ся|ась|ось|ись) и в стремительном рывке обрушил(а|о|и) разящий удар в {value} единиц(у|а|ы) урона на {victim}.", "[hit]{victim} пропустил(а|о|и) удар и теперь страда(ет|ют) отсутствием {value} HP.", "[hit]{victim} пропуска(ет|ют) лёгкий тычок в {value} единиц(у|ы) урона.", "[hit]Быстрота реакции {actor} помогла (ему|ей|им) нанести {victim} {value} единиц(у|а|ы) урона.", "[hit]{actor} отош(ел|ла|ло|ли) в сторону, и {victim} с разбега врезал(ся|ась|ось|ись) в стену, потеряв {value} HP.", "[hit]{actor} поднатужил(ся|ась|ось|ись) и нанес(ла|ло|ли) {value} единиц(у|а|ы) урона.", "[hit]С кошачьей грацией {actor} извернул(ся|ась|ось|ись) и нанес(ла|ло|ли) {value} единиц(у|а|ы) урона.", "[hit]{actor} точным ударом поразил(а|о|и) {victim} на {value} единиц(у|а|ы) урона.", "[hit]{victim} потерял(а|о|и) {value} HP, пропустив атаку {actor}.", "[hit]«Скрытая атака!» — заорал(а|о|и) {actor} и выбил(а|о|и) из {victim} {value} HP.", "[hit]Замахиваясь, {victim} пропустил(а|о|и) резкий и быстрый выпад {actor}, забравший {value} HP.", "[hit]Молниеносная атака {actor} нанесла {value} единиц(у|а|ы) урона.", "[hit]После обмена серией стремительных ударов с {victim}, {actor} наконец наш(ел|ла|ло|ли) брешь в защите и нанес(ла|ло|ли) {value} единиц(у|а|ы) урона.", "[hit]Кувырком уходя из-под удара и контратакуя, {actor} сумел(а|о|и) нанести {victim} {value} единиц(у|а|ы) урона.", "[hit]{victim} приготовил(ся|ась|ось|ись) парировать удар, но не ожидал(а|о|и) от {actor} такой стремительности и теря(ет|ют) {value} HP.", "[hit]{victim} не ожидал(а|о|и) такого выпада от {actor} и получа(ет|ют) {value} единиц(у|а|ы) урона.", "[hit]{actor} провод(ит|ят) сногсшибательный приём, {victim} пада(ет|ют) и теря(ет|ют) {value} HP.", "[hit]Вложив всю злость в удар, {actor} нанес(ла|ло|ли) {value} единиц(у|а|ы) урона.", "[hit]{actor} поднатужил(ся|ась|ось|ись) и нанес(а|о|и) {value} единиц(у|а|ы) урона.", "[hit]Издавая зловещие звуки, {actor} сжима(ет|ют) {} что есть силы в своих объятиях! {victim} кряхт(ит|ят) и получа(ет|ют) {value} единиц(у|а|ы) урона.", "[hit]{victim} не ожидал(а|о|и) такого выпада от {actor}, и получа(е|ю)т {value} единиц(у|а|ы) урона.", "[hit]{victim} не ожидал(а|о|и) такого выпада от {actor}, и получил(а|о|и) {value} единиц(у|ы) урона.", "[hit]Вложив всю злость в удар, {actor} нанес(ла|ло|ли) {value} единиц(у|ы) урона.", "[hit]{actor} точным ударом поразил(а|о|и) {victim} на {value} единиц(у|ы) урона.", "[hit]{actor} провел(а|о|и) сногсшибательный прием, {victim} пада(ет|ют) и теря(ет|ют) {value} HP.", "[hit]Усыпив бдительность {victim}, {actor} набросил(ся|ась|ось|ись) на противника и нанес(ла|ло|ли) {value} единиц(у|ы) урона.", "[hit]После обмена серией стремительных ударов с {victim}, {actor} наконец наш(ел|ёл|ла|ло|ли) брешь в защите и нанес(ла|ло|ли) {value} единиц(у|ы) урона.", "[hit]Рассекающий удар {actor} нанес {value} единиц(у|ы) урона {victim}.", "[hit]Кувырком уходя из-под удара и контратакуя, {actor} сумел(а|о|и) нанести {victim} {value} единиц(у|ы) урона.", "[hit]«Скрытая атака!» — заорал(а|о|и) {actor} и выбил(а|о|и) из {victim} {value} HP.", "[hit]Ловко парировав удар, {actor} провел(а|о|и) успешный контрудар, лишая {victim} {value} HP.", "[hit]Издавая зловещие звуки, {actor} сжима(ет|ют) {victim} что есть силы в своих объятиях! {victim} кряхт(ит|ят) и получа(ет|ют) {value} единиц(у|ы) урона.", "[hit]Замахиваясь, {victim} пропустил(а|о|и) резкий и быстрый выпад {actor}, забравший {value} HP.", "[hit]{victim} приготовил(ся|ась|ось|ись) парировать удар, но не ожидал(а|о|и) от {actor} такой стремительности и теря(ет|ют) {value} HP.", "[hit]Стоило только {victim} замахнуться, как {actor} резко ударил(а|о|и) {victim} по больному месту и нанес(ла|ло|ли) {value} единиц(у|ы) урона.", "[hit]{victim} пропуска(ет|ют) легкий тычок в {value} единиц(у|ы) урона.", "[hit]Сосредоточившись, {actor} провел(а|о|и) атаку и лишил(а|о|и) {victim} {value} HP.", "[hit]Быстрая атака {actor} лишила {victim} {value} HP.", "[hit]Обманув {victim}, {actor} смог(ла|ло|ли) провести неожиданную атаку, лишив {victim} {value} HP.", "[hit]{victim} потерял(а|о|и) {value} HP, пропустив атаку {actor}.", "[hit]{actor} нанес(ла|ло|ли) точный удар, уменьшая здоровье {victim} на {value} HP.", "[hit]{actor} виртуозно провел(а|о|и) атаку и нанес(ла|ло|ли) {victim} {value} единиц(у|ы) урона.", "[hit]Молниеносная атака {actor} нанесла {value} единиц(у|ы) урона.", "[hit]Быстрота реакции {actor} помогла (ему|ей|ему|им) нанести {victim} {value} единиц(у|ы) урона.", "[hit]Изучив тактику {victim}, {actor} провел(а|о|и) атаку и нанес(ла|ло|ли) {value} единиц(у|ы) урона.", "[hit]С кошачьей грацией {actor} извернул(ся|ась|ось|ись) и нанес(ла|ло|ли) {value} единиц(у|ы) урона.", "[hit]{actor} быстро прицелил(ся|ась|ось|ись), изготовил(ся|ась|ось|ись) и в стремительном рывке обрушил(а|о|и) разящий удар в {value} единиц(у|ы) урона на {victim}.", "[hit]{victim} пропустил(а|о|и) удар и теперь страда(ет|ют) отсутствием {value} HP.", "[hit]{actor} отош(ел|ёл|ла|ло|ли) в сторону, и {victim} с разбега врезал(ся|ась|ось|ись) в стену, потеряв {value} HP.", "[hit]{actor} поцарапал(а|о|и) {victim} на {value} HP.", "[hit]Апперкот, и вокруг {victim} взметнул(ась|ось|ись) {value} звездоч(ка|ки|ек).", "[hit]Умелая подсечка, и придорожный камень нанес голов(е|ам) {victim} {value} урона.", "[hit]{actor} поднатужил(ся|ась|ось|ись) и нанес(ла|ло|ли) {value} единиц(у|ы) урона.", "[hit]{actor} ударил(а|о|и) так, что {value} НР {victim} как и не бывало.", "[hit]Сотворив магический знак, {actor} потоком воздуха толкнул(а|о|и) {victim} на острые камни, поранив на {value} HP.", "[hit]Магией {actor} изменяет внутреннюю структуру противника. Перебои в работе сердца наносят {victim} урон в размере {value} HP.", "[hit]Ловкая подножка, и {victim} получа(ет|ют) {value} единиц(у|ы) урона.", "[hit]{actor} дела(е|ю)т пару обманных движений... резкий удар... И {victim} теря(е|ю)т {value} единиц(у|а|ы) жизни.", "[hit]Хрипло зарычав, {actor} вцепил(ся|ась|ось|ись) в ногу {victim}. Пытаясь стряхнуть (его|её|их), {victim} падает и теряет {value} единиц(у|ы) жизни.", "[hit]С явно враждебными намерениями {actor} кида(е|ю)тся на {victim}. Миг — и {victim} лишил(ся|ась|ось|ись) {value} единиц(у|ы) жизненной силы.", "[hit]Взмах руки — и магическая волна сбивает {victim} с ног, нанося {value} единиц(у|ы) урона.", "[hit]Точно выверенный по времени удар застаёт {victim} врасплох. {actor} на {value} HP ближе к победе.", "[hit]С горящими глазами {actor} броса(е|ю)тся на {victim}. {victim}, опешив от такого фанатизма, пропуска(е|ю)т удар и теря(е|ю)т {value} HP.", "[hit]{actor} броса(е|ю)т пыль в глаза {victim} и подло бь(ё|ю)т на {value} HP.", "[hit]{actor} замеча(е|ю)т слепую зону у {victim} и атаку(е|ю)т с этой стороны. {victim} пропуска(е|ю)т удар на {value} HP.", "[hit]{actor} удачно париру(е|ю)т удар {victim}, и он(а|о|и) ранит себя на {value} HP.", "[hit]{actor} наш(ёл|ла|ло|ли) точку опоры и перевернул(а|о|и) {victim}, нанося урона на {value} HP.", "[hit]Тщательно спланированная атака {actor} нанесла {victim} {value} единиц(у|ы) урона.", "[hit]{actor} вломил(а|о|и) {victim} по первое число, нанеся {value} единиц(у|ы) урона.", "[hit]Ловкая контратака {actor} отнимает у {victim} {value} единиц(у|ы) здоровья.", "[hit]{actor} оплета(е|ю)т корнями {victim} и пыта(е|ю)тся покалечить жертву. {} получил(а|о|и) {value} единиц(у|ы) урона.", /* Тяжёлый удар */
    "[might]Как следует размахнувшись, {actor} одним сильным ударом вынес(ла|ло|ли) из {victim} {value} HP.", "[might]Вложив всю свою силу в удар, {actor} нанес(ла|ло|ли) {victim} {value} единиц(у|а|ы) урона.", "[might]После короткого и очень сильного удара {actor} по телу {victim} прокатилась волна боли на {value} единиц(у|а|ы) урона.", "[might]Сильнейший удар обрушил(а|о|и) {actor}, выколачивая из {victim} {value} HP.", "[might]{victim} потерял(а|о|и) {value} HP от чрезвычайно сильного удара {actor}.", "[might]Собрав всю злобу и силу в один удар, {actor} уменьшил(а|о|и) здоровье {victim} на {value} HP.", "[might]{actor} размахнул(ся|ась|ось|ись) сильнее обычного и нанес(ла|ло|ли) {value} единиц(у|а|ы) урона.", "[might]Взяв размах от плеча, {actor} сокрушительным ударом выбил(а|о|и) из {victim} {value} HP.", "[might]Затаив злобу лютую, с особой жестокостью ударил {actor} {victim} на {value} единиц(у|а|ы) урона.", /* Отравление */
    "[poison]Яд тянет из {victim} силы и {value} HP.", "[poison]{victim} чувству(ет|ют) себя всё хуже. Отравление съедает {value} HP.", "[poison]Отрава вытягивает из {victim} {value} HP.", "[poison]Яд неумолимо отнимает здоровье {victim}. Еще {value} HP потрачен(о|ы) на борьбу с отравой.", "[poison]Чувствуя действие яда всё сильнее, {victim} теря(е|ю)т {value} HP.", "[poison]{victim} теря(е|ю)т {value} HP от отравления.", "[poison]Головокружение и тошнота — не самое страшное, куда серьёзнее {victim} показалась потеря {value} HP.", "[poison]Отрава вытягивает из {victim} {value} HP.", "[poison]{victim} отравлен(а|о|ы) и теря(е|ю)т {value} единиц(у|ы) здоровья.", "[poison]{victim} страда(е|ю)т от отравления, получая {value} единиц(у|ы) урона.", "[poison]Медленно убивая {victim} изнутри, отравление наносит {value} единиц(у|ы) урона.", "[poison]Сильное отравление лишает {victim} {value} HP.", "[poison]Нанося {victim} {value} единиц(у|ы) урона, отравление грозит (ему|ей|им) летальным исходом.", "[poison]Охваченн(ый|ая|ое|ые) ядовитыми парами, {victim} теряет {value} HP.", "[poison]Смерть подступает всё ближе, и {victim} теря(е|ю)т от отравления {value} HP.", "[poison]Яд растекается по венам {victim}. Он(а|о|и) теря(е|ю)т {value} HP.", "[poison]{victim} задыха(е|ю)тся и кашля(е|ю)т в созданном {actor} ядовитом облаке.", "[poison]Яд на мгновение парализует {}, и (тот|та|то|те) пропуска(ет|ют) серию быстрых ударов противника. Поборов действие отравы, {victim} обнаружил(а|о|и), что (его|её|их) здоровье уменьшилось на {value} HP.", /* Ядовитое облако */
    "[poisoncloud]{victim} оказал(ся|ась|ось|ись) в созданном {actor} облаке яда.", "[poisoncloud]Быстро создав ядовитое облако, {actor} окутал(а|о|и) им {victim}.", "[poisoncloud]{actor} создал(а|о|и) вокруг {victim} ядовитое облако.", "[poisoncloud]{victim} задыха(е|ю)тся и кашляет в созданном {actor} ядовитом облаке.", "[poisoncloud]Ядовитое облако, сотворённое {actor}, окутало {victim}.", "[poisoncloud]Ядовитое облако, созданное {actor}, обволокло {victim}.", "[poisoncloud]{actor} создал(а|о|и) странный пар вокруг {victim} и (тот|та|то|те) начал(а|о|и) задыхаться.", "[poisoncloud]{actor} создал(а|о|и) ядовитое облако вокруг {victim}.", "[poisoncloud]«Нюхни(те) газу, {victim}!» — заверша(е|ю)т своё заклинание {actor}.", /* Удар вампира */
    "[vamp]Жаждя крови {victim}, {actor} вонзил(а|о|и) зубы в (его|ее|их) тело. От такой атаки {victim} потерял(а|о|и) {value} HP, а {} приобрел(а|о|и) {vamp} HP.", "[vamp]Вконец остервенев от злости, {actor} вцепил(ся|ась|ось|ись) зубами в {victim} и нанес(ла|ло|ли) (ему|ей|им) {value} единиц(у|ы) урона, при этом восстановив {vamp} HP.", "[vamp]{actor} вспомнил(а|о|и), что из оружия у (него|нее|ней|них) есть ещё и зубы. Вцепившись ими в {victim}, он(а|о|и) восстановил(а|о|и) {vamp} HP и нанес(ла|ло|ли) противник(у|ам) {value} единиц(у|ы) урона.", "[vamp]Хорошо прицелившись, {actor} прыгнул(а|о|и) и впил(ся|ась|ось|ись) зубами в {victim}, нанеся (ему|ей|им) {value} единиц(у|ы) урона и восстановив себе {vamp} HP.", "[vamp]Выждав подходящий момент для сложной атаки, {actor} с силой грызанул(а|о|и) {victim} и, почувствовав (его|ее|их) кровь, восстановил(а|о|и) {vamp} HP. От укуса {} потерял(а|о|и) {value} HP.", "[vamp]{actor} зубами впил(ся|ась|ось|ись) в {victim}, нанес(ла|ло|ли) {value} единиц(у|а|ы) урона и восстановил(а|о|и) {vamp} HP.", "[vamp]Даже самая толстая кожа не спасла бы от укуса {actor}. {victim} проща(е|ю)тся с {value} HP, из которых {vamp} HP переход(и|я)т к {}.", "[vamp]{actor} вытянул(а|о|и) из {} {value} HP и излечил(а|о|и) свои раны на {vamp} HP.", "[vamp]Битва — битвой, а обед по расписанию. {actor} искусал(а|о|и) {victim} на {value} единиц(у|а|ы) урона, укрепив свои силы на {vamp} HP.", "[vamp]{actor}, несколько проголодавш(ий|ее|ая|ие)ся от изнурительной битвы, отведал(а|о|и) {vamp} капель кровушки {victim}, лишивш(его|ей|их)ся {value} HP.", "[vamp]Мимолётное касание, шёпотом сказанное заклинание,- и {value} единиц(у|а|ы) жизненных сил покида(е|ю)т {victim}, восстановив {actor} {vamp} HP.", /* Шаг в сторону */
    "[ue]Серией быстрых движений {actor} дезориентиру(ет|ют) {victim}.", "[ue]{actor} ловко уш(ел|ла|ло|ли) в сторону от {victim}.", "[ue]{actor} мастерски уш(ел|ла|ло|ли) от атаки {victim}.", "[ue]{actor} запутывает противника серией обманных движений и ловко заходит (ей|ему|им) за спину.", "[ue]{actor} сразу заметил(а|о|и) простую уловку {victim} и с ухмылкой на лице увернул(ся|ась|ось|ись), просто шагнув за спину и дезориентировав противника", /* Увернулся */
    "[eva]{actor} носит(ся|ась|ось|ись) кругами вокруг {victim}, вынуждая (его|ее|их) промахнуться.", "[eva]Отточенным движением {actor} уш(ел|ла|ло|ли) из-под удара.", "[eva]{actor} увернул(ся|ась|ось|ись) от {victim} и (его|ее|их) чудовищной силы удара.", "[eva]{actor} увернул(ся|ась|ось|ись) от удара.", "[eva]{actor} резко качнул(ся|ась|ось|ись) в сторону, и {victim} промахнул(ся|ась|ось|ись).", "[eva]{actor} провел(а|о|и) обманное движение — и {victim} промазал(а|о|и).", "[eva]Солнце ослепило {victim}, и (тот|та|то|те) промахнул(ся|ась|ось|ись) по {actor}.", "[eva]{victim} слишком долго собирал(ся|ась|ось|ись) с мыслями, и удар пришёлся в никуда.", "[eva]{victim} «крякнул(а|о|и)» и промахнул(ся|ась|ось|ись).", "[eva]Перемудрив с обманными движениями, {victim} промахнул(ся|ась|ось|ись).", "[eva]{victim} поднатужил(ся|ась|ось|ись)… и промахнул(ся|ась|ось|ись)…", "[eva]{victim} промахнул(ся|ась|ось|ись)! {victim} промахнул(ся|ась|ось|ись)!", "[eva]{actor} вовремя подал(ся|ась|ось|ись) назад, и {victim} промахнул(ся|ась|ось|ись).", "[eva]{actor} успел(а|о|и) отбежать подальше, пока {victim} замахивал(ся|ась|ось|ись).", "[eva]Слишком сильно размахнувшись, {victim} сбил(ся|ась|ось|ись) с темпа и не попал(а|о|и) по {actor}.", "[eva]Сильнейший удар {victim} со свистом рассёк воздух, даже не задев {actor}.", "[eva]Попавшая в глаз {victim} соринка сорвала атаку, и он(а|о|и) промахнул(ся|ась|ось|ись).", "[eva]{victim}, готовясь к сильному удару, совсем забыл(а|о|и) о точности и промахнул(ся|ась|ось|ись).", "[eva]Явно считая, что сила есть, а точности не надо, {victim} промахнул(ся|ась|ось|ись) по {actor}.", "[eva]{victim} крякнул(а|о|и) и промахнул(ся|ась|ось|ись).", "[eva]Прыжок, кувырок, перекат, снова перекат… Отскок! {actor} так верт(и|я)тся, что {victim} никак не мо(жет|гут) попасть по (нему|ней|ним).", "[eva]{victim} бь(ет|ют) не в бровь, не в глаз, а мимо цели.", "[eva]{victim} дела(е|ю)т резкий выпад, но {actor} успева(е|ю)т уйти с линии удара.", "[eva]{victim} дела(е|ю)т так много обманных движений, что сам(а|о|и) забыва(е|ю)т, куда собирал(ся|ась|ось|ись) ударить.", "[eva]{victim} поскользнул(ся|ась|ось|ись), и удар прошёл мимо {actor}.", "[eva]Пытаясь смертельно поразить {actor}, {victim} поража(е|ю)т (его|её|их) лишь своей неуклюжестью. Промах!", "[eva]{victim} исполня(е|ю)т серию эффектных ударов, но ни один из них не достигает цели. {actor} сдержано аплодиру(е|ю)т.", "[eva,might]Сильный удар нанёс(ла|ло|ли) {victim}. Сильный. Но не точный — {actor} легко уворачива(е|ю)тся.", "[eva,fire]Слишком долго готовясь к атаке, {victim} упустил(а|о|и) подходящий момент, и (его|ее|их) огненный шар не попал в цель.", "[eva,fire]{victim} запустил(а|о|и) шар огня в {}, но не тут-то было! {actor} виртуозно уклонил(ся|ась|ось|ись) от пламени.", "[eva,fire]{actor} завороженно проводил(а|о|и) взглядом пролетевший мимо огненный шар.", "[eva,fire]{actor} увернул(ся|ась|ось|ись), и огненный шар пролетел мимо н(его|её|их).", "[eva,stunHit]{victim} разбежал(ся|ась|ось|ись) и пронес(ся|лась|лось|лись) мимо {actor}.", "[eva,stunHit]{victim} бросил(ся|ась|ось|ись) в сторону {actor}, но увы, проскочил(а|о|и) мимо.", "[eva,vamp]{victim} клацнул(а|о|и) зубами рядом с {actor}, не сумев вцепиться в (него|нее|них).", "[eva,vamp]{actor} ускользнул(а|о|и) от зубов {victim}.", "[eva,vamp]{victim} укусил(а|о|и) себя вместо {actor}.", "[eva,vamp]Слишком сильно открыв рот для укуса, {victim} ощутил(а|о|и) боль в челюсти и не смог(ла|ло|ли) укусить {actor}.", "[eva,vamp]{victim} попытал(ся|ась|ось|ись) укусить {actor}, но промахнул(ся|ась|ось|ись).", "[eva,vamp]{victim} раззявил(а|о|и) рот, но подходящий для укуса момент уже был упущен.", "[eva,vamp]{victim} промахнул(ся|ась|ось|ись), бесполезно клацнув зубами.", /* Помощь компаньона, без повреждения */
    "[companion,eva]{companion} толкнул(а|о|и) {victim}, не позволив тем самым атаковать {actor}.", "[companion,eva]Удивительно ловко двигаясь, {companion} отвлек(ла|ли) внимание {victim} на себя.", "[companion,eva]{victim} уже был(а|о|и) готов(а|ы) убить {actor}, но положение спас(ла|ло|ли) {companion}, неожиданно налетев на врага откуда-то сбоку!", "[companion,eva]{victim} был(а|о|и) готов(а|ы) нанести очень опасную атаку по {actor}, но того не дал(а|о|и) сделать {companion}.", "[companion,eva]Вовремя помешав {victim}, {companion} удалось и прервать вражескую атаку, и не получить повреждений.", "[companion,eva]{companion} отвлек(ла|ло|ли) {victim}, и т(а|о|от) промахнулся.", "[companion,eva]{companion} бросается на {victim}, блокируя атаку, и {actor} не получает урон.", "[companion,eva]Не позволив {victim} провести атаку, {companion} не получает урона.", "[companion,eva]«Ха-ха! Съел(а|о|и)?» – крикнул(а|и) {actor}, когда {companion} отвлек(ла|ло|ли) {victim}, сорвав (тому|той|тем) атаку.", "[companion,eva]«Что? Не вышло!?» – крикнул(а|о|и) {actor}, когда {companion} отвлек(ла|ло|ли) {victim}, не позволив (тому|той|тем) атаковать.", "[companion,eva]Отвлекая врага, {companion} сам(а|о|и) чуть не попал(а|о|и) под удар, но обошлось!", "[companion,eva]{companion} отвлек(ла|ло|ли) {victim}, и (тот|та|то|те) промахнул(ся|ась|ось|ись).", "[companion,eva]{companion} самоотверженно бросил(ся|ась|ось|ись) на защиту. Урона он(а|о|и) нанес(ла|ло|ли) немного, но атаку {victim} таки сорвал(а|о|и).", "[companion,eva]Уклоняясь от вражеских стрел, заклинаний и меча, {companion} успешно испытывает судьбу и не даёт {victim} атаковать.", "[companion,eva]{companion} зашуршал(а|о|и) в кустах и {victim}, испугавшись засады, отступил(а|о|и).", "[companion,eva]Это же ужас, летящий на крыльях ночи! {companion} появля(е|ю)тся в самый ответственный момент и спасает {actor} от злодеяний {victim}.", "[companion,eva]{companion} незаметно подкрал(ся|ась|ось) сзади и напугал(а|о|и) {victim}, котор(ому|ой|ым) теперь не до атаки.", "[companion,eva]Вовремя помешав {}, {companion} сумел(а|о|и) прервать (его|её|их) атаку и не получить повреждений.", "[companion,eva]{companion} исполнил(а|о|и) странный, завораживающий танец, и {victim} на мгновение изумлённо замер(ла|ло|ли).", /* Помощь компаньона, с повреждением */
    "[companion,hit]Отвлекая врага от {actor}, {companion} сам(а|о|и) попал(а|о|и) под удар.", "[companion,hit]Спасая {actor}, {companion} принял(а|о|и) удар {victim} на себя.", "[companion,hit]«А за это, {victim}, придётся ответить!» – крикнула {actor}, когда {companion} отвлек(ла|ло|ли) врага на себя, получив при этом ранение.", /* Удар по компаньону */
    "[companion,mush]{actor} ранил(а|о|и) {companion}.", "[companion,mush]Кровь {companion} тугой струёй хлестнула по {victim}. Атака {actor} нашла не ту цель…", /* Заморозка */
    "[slow]Легко, почти непринуждённо, {actor} охлажда(ет|ют) воздух вокруг {victim}, сковывая (его|ее|их) движения.", "[slow]{actor}, сосредоточившись, ударил(а|о|и) {victim} потоком липкого холодного воздуха, сковав (его|ее|их) члены и замедлив движения.", "[slow]Собравшись, {actor} направля(ет|ют) инеевые искры в сторону врага. Воздух вокруг {victim} замерзает и густеет, замедляя (его|ее|их) движения.", "[slow]{actor} взывает к зимним ветрам и {victim} окутывает ужасный холод, (его|ее|их) движения замедляются.", "[slow]Призывая в помощь зимние ледяные ветра, {actor} бьет холодом, и {victim}, покрываясь инеем, замедля(ется|ются).", "[slow]{actor} встряхнул(а|о|и) кисти рук и на кончиках (его|ее|их) пальцев образовались ледяные иглы. Сконцентрировавшись, (он|она|оно|они) нанес(ла|ло|ли) удар холодом. Движения {victim} замедлились.", "[slow]Собравшись, {actor} направляет инеевые искры в сторону враг(а|ов). Воздух вокруг {victim} замерзает и густеет, замедляя (его|её|их) движения.", "[slow]{actor} сделал(а|о|и) глубокий вдох и резко выдохнул(а|о|и). {victim} ощутил(а|о|и) как идёт мороз по коже и замедляются (его|её|их) движения.", "[slow]{actor} вызыва(е|ю)т лютую стужу и направля(е|ю)т холод в сторону {victim}, замедляя (его|её|их) движения.", /* Ускорение */
    "[speed]Скорость движений {actor} сильно возросла после того как он(а|о|и) сделал(а|о|и) магический пасс.", "[speed]{actor} использу(е|ю)т скрытые резервы организма и заметно ускоря(е|ю)тся.", "[speed]{actor} перенаправля(е|ю)т свою ци в нижнее русло и начина(е|ю)т двигаться быстрее.", "[speed]{actor} замыка(е|ю)т на себе потоки магии и начина(е|ю)т двигаться значительно быстрее.", "[speed]{actor} концентриру(е|ю)тся, и скорость (его|её|их) движений возрастает.", "[speed]Обуздав стихию ветра, {actor} ускоря(е|ю)т движения.", "[speed]Воспользовавшись магией, {actor} начина(е|ю)т двигаться невероятно быстро.", "[speed]{actor} сотворя(е|ю)т сложный знак и значительно ускоря(е|ю)тся.", "[speed]Сделав сложный пасс, {actor} начина(е|ю)т двигаться быстрее.", /* Волшебный гриб */
    "[mush]«Волшебный гриб!» — воскликнул(а|о|и) {actor}, запихивая в рот мухомор.", "[mush]Откуда-то {actor} достал(а|о|и) и отправил(а|о|и) в рот волшебный синий гриб.", "[mush]{actor} случайно съел(а|о|и) обычный шампиньон, однако, благодаря самовнушению, всё равно получил(а|о|и) приток сил.", /* Шар огня */
    "[fire]{actor} броса(ет|ют) огненный шар в {victim} и сжига(ет|ют) (ему|ей|им) {value} HP.", "[fire]{actor} кида(ет|ют) огненный шар, опалив {victim} и нанеся {value} единиц(у|ы) урона (его|ее|их) здоровью.", "[fire]{actor} концентриру(ет|ют) магическую энергию и выпуска(ет|ют) пылающий огненный шар. {victim} получа(ет|ют) урон в {value} HP и сильные ожоги.", "[fire]{actor} выпустил(а|о|и) два огненных шара, но {victim} ловко увернул(ся|ась|ось|ись) и уже готовил(ся|ась|ось|ись) к удару, как оба шара, закрутившись по спирали, развернулись и врезались (ему|ей|им) в спину. Коварное самонаводящееся заклинание нанесло {value} единиц(у|ы) урона и подожгло {}.", "[fire]{actor} создал(а|о|и) огненный шар и направил(а|о|и) его прямо во врага… Есть контакт! Повреждение — {value} единиц(а|у|ы) урона.", "[fire]Выпущенный {actor} шар огня ожёг {victim} на {value} HP.", "[fire]Взывая к пламени, {actor} выпуска(ет|ют) огненный шар в ничего не подозревающ(его|ую|ее|их|ий) {victim}, уменьшая (его|ее|их) здоровье на {value} HP.", //	'[fire]{victim} не успел(а|о|и) увернуться от возникшего прямо из воздуха всполоха пламени. От ожогов (он|она|оно|они) потерял(а|о|и) {value} HP.', //err
    "[fire]{actor} не успел(а|о|и) увернуться от возникшего прямо из воздуха всполоха пламени. От ожогов (он|она|оно|они) потерял(а|о|и) {value} HP.", "[fire]{actor} выпустил(а|о|и) шар огня. Волшебное пламя нанесло {value} единиц(у|ы) урона ошарашенн(ому|ой|ым) {victim}.", "[fire]Почувствовав тепло, {actor} сформировал(а|о|и) его в огненный шар и ударил(а|о|и) им по {victim}, нанеся {value} единиц(у|ы) урона.", "[fire]{actor} взмахива(е|ю)т руками, и магическое пламя стремительно покрывает {victim}, забирая {value} HP.", "[fire]{actor} извл(ёк|екла|екло|екли) из подсумка запечатанную колбу и швырнул(а|о|и) её в противника. {victim} визж(и|а)т и пыта(е|ю)тся стряхнуть с себя алхимическое пламя, теряя {value} HP.", /* Пламя (после Шара огня) */
    "[flame]Теряя {value} HP, {victim} пыта(ется|ются) сбить с себя пламя.", "[flame]Пламя окутывает {victim}, нанося {value} единиц(у|ы) урона.", "[flame]Вместе с запахом паленого ветер уносит в сторону от {victim} {value} HP.", "[flame]Хрустящей корочки еще нет, но {value} HP у {victim} уже сгорело.", "[flame]Жаркое пламя наносит {victim} {value} единиц(у|ы) урона.", "[flame]Подожженн(ый|ая|ое|ые) {victim} теря(ет|ют) {value} HP.", "[flame]{victim} стара(ется|ются) сбить с себя пламя, но оно всё равно сжигает {value} HP.", "[flame]Весёлые языки пламени пляшут по {victim}, нанося {value} единиц(у|ы) урона.", "[flame]Пламя слизывает с {victim} {value} HP, как корова языком.", "[flame]Безжалостный огонь наносит {victim} {value} единиц(у|ы) урона.", "[flame]Пламя в недоступном месте вызвало у {victim} ужасную боль и нанесло {value} единиц(у|ы) урона.", "[flame]{victim} горит и получа(ет|ют) {value} единиц(у|ы) урона.", "[flame]Языки пламени гуляют по {victim}, и (он|она|оно|они) теря(ет|ют) {value} HP.", "[flame]Охваченн(ый|ая|ое|ые) огнём, {victim} лишил(ся|ась|ось|ись) {value} HP.", "[flame]{victim} меч(е|у)тся, охваченн(ый|ая|ое|ые) пламенем, и получа(е|ю)т {value} единиц(у|ы) урона.", "[flame]{victim} пыла(е|ю)т словно факел(ы) и получа(е|ю)т {value} единиц(у|ы) урона.", "[flame]От ожогов {victim} получа(е|ю)т {value} единиц(у|ы) урона.", "[flame]{victim} гор(и|я)т и получа(е|ю)т {value} единиц(у|ы) урона.", "[flame]Не угасшее до конца пламя на теле {victim} сжигает ещё {value} НР.", /* Разбег-толчок */
    "[stunHit]{actor} разбежал(ся|ась|ось|ись) и в прыжке, толкнув {victim}, нанес(ла|ло|ли) {value} единиц(у|ы) урона.", "[stunHit]{actor} с разбега пнул(а|о|и) {victim} и нанес(ла|ло|ли) {value} единиц(у|ы) урона.", "[stunHit]Разбежавшись, {actor} толкнул(а|о|и) {victim}, выколачивая из (него|нее|них) {value} HP.", "[stunHit]Набрав скорость, {actor} врезал(ся|ась|ось|ись) всей массой в противника. {victim} получил(а|о|и) ушибы и потерял(а|о|и) {value} HP.", "[stunHit]Немного отступив, {actor} разогнал(ся|ась|ось|ись) и толчком нанес(ла|ло|ли) {victim} {value} единиц(у|ы) урона.", "[stunHit]Дождавшись, когда {victim} окаж(е|у)тся на достаточном расстоянии, {actor} разбежал(ся|ась|ось|ись) и ударил(а|о|и), нанеся {value} единиц(у|ы) урона.", "[stunHit]Примерившись, {actor} толчком выколотил(а|о|и) {value} единиц(у|ы) урона из {victim}.", "[stunHit]Подобно дикому кабану {actor} нес(е|у)тся вперед и таран(и|я)т {victim} так, что он(а|о|и) отлета(е|ю)т на несколько метров. От удара {} потерял(а|о|и) {value} HP.", "[stunHit]{actor} разбежал(ся|ась|ось|ись) и впечатал(а|о|и) {victim} в дерево, несчастн(ый|ая|ое|ые) не досчитал(ся|ась|ось|ись) {value} HP.", "[stunHit]Стремителен бросок {actor} к противнику! {victim} на земле и лишен(а|о|ы) {value} единиц(у|ы) здоровья.", /* Шок (от Разбег-толчок)*/
    "[stun]{victim} в шоке и не мо(жет|гут) атаковать.", "[stun]{victim} пересчитыва(е|ю)т звёздочки, кружащиеся у (него|нее|них) над голов(ой|ами).", "[stun]{victim} пыта(е|ю)тся восстановить равновесие.", "[stun]{victim} было подумал(а|о|и) ударить, но оказал(ся|ась|ось|ись) не в состоянии додумать мысль.", "[stun]Оглушенн(ый|ая|ое|ые) {victim} вяло крут(и|я)т голов(ой|ами), не решаясь атаковать.", "[stun]{victim} пыта(е|ю)тся прийти в себя.", "[stun]Пропустив сильный удар, {victim} пыта(е|ю)тся устоять на ногах.", "[stun]{victim} с увлечением лов(и|я)т летающие вокруг голов(ы) звёздочки.", "[stun]У {victim} троится в глазах.", /* Регенерация */
    "[heal]Дав себе установку выздороветь, {actor} восстановил(а|о|и) {value} HP.", "[heal]Сконцентрировавшись, {actor} восстановил(а|о|и) {value} HP.", "[heal]{actor} восстановил(а|о|и) {value} HP.", "[heal]«Исцеление — это то, что сейчас важнее всего», — подумал(а|о|и) {actor} и восстановил(а|о|и) {value} HP.", "[heal]{actor} восстановил(а|о|и) {value} HP и смахнул(а|о|и) пот.", "[heal]{actor} отскакива(е|ю)т в сторону и, воспользовавшись короткой паузой, восстанавлива(е|ю)т {value} HP.", "[heal]Близость победы окрылила {actor}, и он(а|и) восстановил(а|и) {value} HP.", "[heal]Задействовав внутренние резервы организма, {actor} восстановил(а|и) {value} HP.", /* Помощь игрока */
    "[godheal]Вокруг {} засветился воздух и (его|ее|их) раны затянулись, излечив {value} HP.", "[godheal]Банка с йодом? Что мне с ней сделать, выпить?", "[godheal]Почувствовав жжение в теле, {} замечает, что (его|ее|их) раны затягиваются.", "[godheal]{} исцелен на {value} HP.", "[godheal]Зелёный луч ударил с небес, исцеляя {} на {value} HP.", //crit
    "[godheal]Снег посыпался на {}, восстанавливая {value} HP.", "[godheal]Банка с йодом? Что мне с ней сделать, выпить?", "[godheal]Ха-ха, божественная регенерация!", "[godhit]Неведомая сила подняла {} в воздух и швырнула под ноги {}.", "[godhit]Молния существенно поджарила {}.", "[godhit]Вот значит как работают вакуумные бомбы…", "[godhit]Бабочка неудачно приземлилась на {}, выведя (того|ту|то|тех) из равновесия, результат — серьёзная шишка у {}.", "[godhit]На горизонте показалась яркая точка, стремительно приближающаяся к {}. Мгновение и шар огня выжег аккуратный круг там, где находился противник.", "[godhit]«Неужели… Это… Случилось?!» — ошарашенно шепчет {}, наблюдая за тем, что подошедший отряд стражников делает с {}.", "[godhit]Неожиданно огромный перст опустился с небес прямо на {}. {} издал(а|о|и) сдавленный визг.", "[godhit]Лёгкий ветерок внезапно снёс {} с места и впечатал в скалу. {} злобно смеётся над оглушённым монстром.", "[godhit]Почувствовав приятный аромат жареного, {} замечает, что {} охватило яркое пламя. С душераздирающим визгом он(а|о|и) медленно обуглива(е|ю)тся.", "[godhit]{} оказал(ся|ась|ось|ись) не готов(а|о|ы) к падению метеорита. В образовавшемся кратере будет сложно искать добычу.", "[godhit]«Падающие наковальни — это, конечно, хорошо, но вот куда они потом пропадают?» — задался {} вопросом, созерцая то, во что превратил(ся|ась|ось|ись) {}.", "[godhit]{} еле успел(а|о|и) отскочить от взрыва шаровой молнии. {} подлетел(а|о|и) в воздух и больно упал(а|о|и) вниз.", "[godhit]{} внезапно провалива(е|ю)тся в разверзшуюся под ногами яму и получа(е|ю)т существенные повреждения.", "[godhit]Небольшой кусок скалы внезапно обрушился с огромной высоты и набрал скорость достаточную, чтобы нанести {} серьёзный урон.", /* Отдых */
    "[rest]Раны начинают затягиваться, и {actor} восстанавлива(ет|ют) {value} HP.", "[rest]Немного отдохнув и набравшись сил, {actor} восстановил(а|о|и) {value} HP.", "[rest]Увидев неподалёку небольшой кожаный мешочек, {actor} решил(а|о|и) изучить его и обнаружил(а|о|и) несколько пробирок с красной жидкостью, по запаху напоминавшей чай из целебных трав. Выпив последний сосуд, {actor} стал(а|о|и) чувствовать себя бодрее на {value} HP, а вот мешочек развеялся в прах. Увы, его с собой не забрать.", "[rest]{actor} стиснул(а|о|и) зубы и со второй попытки всё-таки вправил(а|о|и) недавно полученный вывих. Восстановлено {value} HP.", "[rest]{actor} уделил(а|о|и) внимание своему исстрадавшемуся телу: сделал(а|о|и) перевязку, промыл(а|о|и) раны, ссадины, — и облегчение не заставило себя долго ждать. Исцелено {value} HP.", "[rest]{actor} накладыва(ет|ют) повязку, как учили. Видать, не зря учили — восстанавливается {value} HP.", "[rest]{actor} прикладыва(ет|ют) прохладные примочки к ушибленному плечу, тем самым снимая отёк и успокаивая боль. Вылечено {value} HP.", "[rest]«Как приятно на время отбросить грозное оружие, вездесущий рюкзак и прилечь на землицу родную». В блаженном покое {actor} восстанавлива(ет|ют) {value} HP.", "[rest]Использовав совет одного целителя, {actor} собрал(а|о|и) немного паутины и аккуратно уложил(а|о|и) её в промытую рану. Буквально на глазах кровь свернулась, образовав защитный слой. Вылечен(о) {value} HP.", "[rest]«Эльфийских капель не найти полезней! Эльфийские капли от всех болезней!» — напева(ет|ют) {actor}, восстанавливая {value} HP.", "[rest]Обнаружив неподалёку небольшой источник, {actor} решил(а|о|и) сделать несколько глотков и промыть раны. Появилось ощущение свежести, спокойствия и уверенности. Вылечено {value} HP.", "[rest]«Эх, а водичка-то из родничка просто прелесть», — {actor} поправля(ет|ют) {value} HP.", "[rest]{actor} слегка подкрепил(ся|ась|ось|ись), вылечено {value} HP.", "[rest]Проходящий мимо монах ткнул дорожной тростью в {actor}, и на (нем|ней|нем|них) сразу начали заживляться раны. Вылечено {value} HP.", "[rest]«Как хорошо просто полежать, дав своему телу немного отдохнуть, восстановить силы и здоровье». Исцелено {value} HP.", "[rest]Проходящий мимо шаман призвал чайник и исцелил на {value} HP", "[rest]«Волшебный пластырь — действительно эффективная штука! За мгновение восстановил(а|о|и) {value} HP!»", "[rest]Растущие рядом лопухи помогли восстановить {value} HP.", "[rest]Целебные орочьи горчичники вылечили {value} HP, но оставили пару ожогов.", "[rest]Пара съеденных яблок улучшила настроение и восстановила {value} HP.", "[rest]«Наверное, стоит приложить что-нибудь холодное к ушибленной ноге и дать ей немного отдыха». Вылечено {value} HP.", "[rest]Ух ты, а подорожник помогает: вылечил(а|о|и) {value} HP", "[rest]Пожевал(а|о|и) корешок, он оказался целебным и восстановил {value} HP. «Хоть какая-то от этих диет польза».", "[rest]Крепкий отвар помог восстановить {value} HP.", "[rest]«Рана загнила. Делать нечего, чтобы зараза не пошла дальше, придётся прижигать». Вылечено {value} HP.", "[rest]Магическое зелье Й.О.Д. начинает действовать и восстанавливает {value} HP.", "[rest]«Ужас, как же раскалывается голова… Может есть смысл просто полежать ни о чём не думая?» Восстановлено {value} HP.", "[rest]Вино помогло вернуть {value} HP всего за несколько глотков.", "[rest]Пролетавшая мимо фея помогла восстановить {value} HP.", "[rest]Применил(а|о|и) магию вуду и исцелил(ся|ась|ось|ись) на {value} HP", "[rest]Удачно наложенная повязка восстановила {value} HP.", "[rest]Отвар из чистотела помог {actor} избавиться от раздражений на коже, чем сильно поднял настроение. Вылечено {value} HP.", "[rest]Втирая пиявок в кожу, {actor} восстановил(а|о|и) {value} HP.", "[rest]«Так вот от чего у меня плечо зудит!» — облегченно восклица(ет|ют) {actor}, выдирая кусок зуба из своей раны. Вылечено {value} HP.", "[rest]Отвар целебных трав возымел силу и вернул {value} HP.", "[rest]Сделав настой календулы, {actor} промыва(ет|ют) свои воспалённые и слезящиеся от пыли глаза. Вылечено {value} HP.", "[rest]Втерев в раны наскоро приготовленную мазь, {actor} сразу же почувствовал(а|о|и) себя лучше. Вылечено {value} HP.", "[rest]«Ну и гадость!» — {actor} выпивает очередную порцию запасенного когда-то лечебного отвара.", "[rest]Стиснув зубы, зашивает глубокий порез.", "[rest]Пьёт целебный отвар.", "[rest]{actor} чувствует, как лёгкие наполняются воздухом, а рассудок — ясностью.", "[rest]Война войной, а обед — по расписанию. Скушав маленько припасов, {} подлечил(ся|ась|ось|ись) на {value} HP.", "[rest]«Дела делами, а отдыхать и кушать надо — все-таки не из железа и камня я сделан(а|о)».", "[rest]«Вдали виднеется многовековой дуб. Прилягу под ним, думу подумаю…»", "[rest]Пьет целебный отвар.", "[rest]Пожевал(а|о|и) корешок, он оказался целебным и восстановил {value} HP. «Хоть какая-то от этих диет польза».", "[rest]Использовав совет одного целителя, {} собрал(а|о|и) немного паутины и аккуратно уложил(а|о|и) ее в промытую рану. Буквально на глазах кровь свернулась, образовав защитный слой. Вылечено {value} HP.", "[rest]{} споткнул(ся|ась|ось|ись) и упал(а|о|и), но сил подняться не нашлось. В таком состоянии тело не годится ни для путешествия, ни для сражения. Нужно сделать остановку и собрать всю свою волю в кулак! Ну и раны подлатать.", "[rest]«Царапина — это пустяки, ушиб — чепуха… А вот это уже серьёзно… Если не подлечиться сейчас, я до города не дотяну».", "[rest]Отправилась искать подорожник.", "[rest]«Так дело дальше не пойдет: ноги заплетаются, спина нестерпимо ноет, а в животе не на шутку разыгрался голодный бунт. Все! Хватит! Отдых!»", "[rest]Пошатываясь от усталости, {} наш(ел|ла|ло|ли) спокойное место и дал(а|о|и) себе отдохнуть.", "[rest]Йод, касторка, спирт, теперь надо все это смешать и выпить, глядишь — поможет.", "[rest]«Ох, не зря бинты эластичными зовутся... то ничего не вылечат, то {value} HP».", "[rest]«Этот подорожник просто волшебный!» {} восстанавлива(е|ю)т {value} единиц(у|ы) здоровья.", "[rest]Ёж проводит сеанс иглотерапии для {}, исцеляя {value} единиц(у|ы) здоровья.", "[rest]Медитация помогла, {} восстановил(а|о|и) {value} единиц(у|ы) здоровья.", /* Торговля */
    "[coins]Нет, таких торгашей надо вешать. {value} монет(а|у|ы) за {item}, он с ума сошёл!", "[coins]«Получил(а|о|и) {value} монет(а|у|ы) в награду за {item}».", "[coins]{value} монет(а|у|ы) за {item}. Честная сделка.", "[coins]«За {item} {value} монет(а|у|ы). Вот же ей Бо… бей лавочников, спасай Пандору!»", "[coins]«Эх, не зря я тащил(а|о|и) {item}», — решил(а|о|и) {}, пряча {value} монет(а|у|ы).", "[coins]«Мне чужого не надо, вот и продаю {item}. Тем более, {value} монет(а|у|ы) не лишн(яя|ие|их)».", "[coins]Применив пытливость и изворотливость ума, {} продал(а|о|и) {item} аж за {value} монет(а|у|ы). Перед продажей оставил(а|о|и) подпись «{}» на самом заметном месте — хоть какой-то заметный след в истории.", "[coins]«Цел(ая|ые|ых) {value} монет(а|у|ы) за {item}? В чём подвох, торговец?»", "[coins]«{value} монет(а|у|ы) за {item}? Ладно, забирай, я сегодня добр(ый|ая|ое)».", "[coins]«Что?! {value} монет(а|у|ы) за мои подвиги?! А {item} на обочине валял(ся|ась|ось|ись), по-твоему?! Ладно, не ори. По рукам. Проклятый торгаш».", "[coins]«Глупый торговец, отдал {value} монет(а|у|ы) за дешев(ый|ую|ое|ые) {item}».", "[coins]{} скептически смотр(ит|ят) на {value} монет(а|у|ы), вырученн(ую|ые|ых) за {item}, и, пожимая плечами, убира(ет|ют) деньги в карман.", "[coins]{}, остервенело торгуясь, получа(ет|ют)-таки {value} монет(а|у|ы) за {item}.", "[coins]«Отличная цена за {item}. Положил(а|о|и) {value} монет(а|у|ы) в кошелёк».", "[coins]{} грозно посмотрел(а|о|и) на спекулянта: «Ладно, давай сюда сво(ю|и|их|й) {value} монет(а|у|ы) и забирай {item}, пока я не передумал(а|о|и)».", //err
    "[coins]«Не торговцы, а жлобы! Я ему {item}, а он мне жалк(ую|ие|их) {value} монет(а|у|ы)! Небось втридорога продаст!»", "[coins]«А {value} монет(а|у|ы) за {item} гораздо лучше чем ничего…»", "[coins]«Слышь, ты, хапуга?! {value} монет(а|у|ы) за {item}?! Окстись! Давай деньги. Молчи, с тобой торг закончен…»", "[coins]«{value} монет(а|у|ы) за {item}? Да это же последний писк моды!»", "[coins]«{value} монет(а|у|ы) за {item} — это надо обмыть!»", "[coins]«{value} монет(а|у|ы) за {item}… Выйдешь ты на тракт… Нет, нет, ничего! Удачной торговли вам! И детям вашим! Крохобор…»", "[coins]С обречённым видом {} расста(ё|ю)тся с {item} всего за {value} монет(а|у|ы).", "[coins]День явно был не самым удачным. Всего {value} монет(а|у|ы) за первоклассн(ый|ую|ое|ые) {item}. Но это был единственный покупатель, и {} со смиренным лицом спрятал(а|о|и) деньги в карман.", "[coins]Торговка была хороша, даже слишком. И {} пришлось отдать {item} всего за {value} монет(а|у|ы).", "[coins]«{value} монет(а|у|ы) против плохоньк(ой|ого|их) {item}? Соглас(ен|на|но)».", "[coins]«Обманывать людей нехорошо… но так выгодно…» — думал(а|о|и) {}, пересчитывая {value} монет(а|у|ы), полученн(ую|ые|ых) за {item}.", "[coins]«{value} монет(а|у|ы) за {item} и неприятный запах — ну что за место?!»", "[coins]«{item} стоит не меньше {value} монет(а|у|ы)! Нет, так я найду другого покупателя! То-то же!»", "[coins]«Отличная сделка! {value} монет(а|у|ы) лучше, чем {item}».", "[coins]{item} остал(ся|ась|ось|ись) в лавке, а {value} монет(а|у|ы) забрал(а|о|и) {}.", "[coins]«Всего {value} монет(а|у|ы) за {item}?! Да они издеваются!»", "[coins]После долгих споров и препираний торговец все же согласился отдать {value} монет(а|у|ы) за {item}.", "[coins]«За прекрасн(ый|ую|ое|ые) {item} жалк(ую|их|ие) {value} монет(а|у|ы). Сволочи!»", "[coins]«Вынудил(а|о|и) торговца купить {item} за {value} монет(а|у|ы)».", "[coins]«Вшив(ая|ые|ых) {value} монет(а|у|ы) за {item}. Ворьё!»", "[coins]{value} монет(а|у|ы) — достойная плата за {item}.", "[coins]«Мошенники! Всего {value} монет(а|у|ы) за прекрасн(ый|ую|ое|ые) {item}!»", "[coins]«Безобразие! Жалк(ая|ие|их) {value} монет(а|у|ы) за редчайш(ий|ую|ее|ие) {item}?! Грабёж! Ох и жульё на здешнем рынке…»", //		'[coins]{} споткнул(ся|ась|ось|ись) о камень, а это оказался кошель с {value} монетами! Вот так повезло!',
    "[coins]«Городской травник, гоблин преклонных лет, долго изучал состав принесённых сухих трав, попутно рассказывая о их свойствах. Травы были оценены в {value} монет(а|у|ы)».", "[coins]Заметив у (меня|нас) в инвентаре {item}, торговец в ужасе отпрянул и заплатил {value} монет(а|у|ы) за то, чтобы (я|мы) выкинул(а|о|и) эту мерзость подальше.", "[coins]Творчески использовав классику торговли — обсчет, обвес и пересорт, продал(а|о|и) торговцу {item} за {value} монет(а|у|ы).", "[coins]Пытаясь продать {item}, {} рассказал(а|о|и) торговцу, через какие испытания прошла эта штуковина. Тот заявил, что подобной рухляди место в музее, но сюжет истории оценил в {value} монет(а|у|ы).", "[coins]«Уж лучше бы оставил(а|о|и) {item} валяться на дороге», — думал(а|о|и) {}, пряча в карман {value} монет(а|у|ы).", "[coins]«Ради этого ли (я|мы) полдня тащил(а|о|и) {item} на своём горбу?» — вопрошал(а|о|и) себя {}, кладя в кошелёк {value} монет(а|у|ы).", "[coins]«Продать {item} за {value} монет(а|у|ы)? Кого (я|мы) обманыва(ю|ем)? Ах да, торговца!»", "[coins]{} так увлек(ся|лась|лось|лись) рассказами о том, какие трудности (ему|ей|им) пришлось преодолеть, чтобы добыть {item}, что и не заметил(а|о|и), как все покупатели понемногу разошлись. {item} тоже куда-то пропал(а|о|и), а на столе лежал(а|о|и) {value} монет(а|у|ы).", "[coins]«Такое чувство, словно (я|мы) занима(юсь|емся) благотворительностью», — думал(а|о|и) {}, отдавая {item} за {value} монет(а|у|ы).", "[coins]«Опять, что ли, золотую жилу нашли? А иначе почему за невзрачн(ый|ую|ое|ые) {item} дают цел(ую|ые|ых) {value} монет(а|у|ы)?»", "[coins]Приврал(а|о|и), конечно, немного, но надо же было именно в этом городе оказаться знатоку {item}, уличившему во лжи. Больше {value} монет(а|у|ы) после этого неприятного инцидента никто не захотел платить.", "[coins]«{value} монет(а|у|ы) за {item}. Теперь буду только здесь продавать… Может и панталоны мои купишь?»", "[coins]«Всё труднее впарить торговцам {item}. Перепроизводство!» — бурч(и|а)т {}, засовывая {value} монет(а|у|ы) в кошель.", "[coins]«Дёшево и сердито продал(а|о|и) {item}», — подумал(а|о|и) {}, пряча {value} монет(а|у|ы).", "[coins]«Нет, таких торгашей надо вешать. {value} монет(а|у|ы) за {item}, он с ума сошел!»", "[coins]Сделав предложение, от которого невозможно отказаться, {} вруча(е|ю)т торговцу {item} и пряч(е|ю)т {value} монет(а|у|ы) в карман.", "[coins]«Ну зачем так кричать, уважаемый? За такую красоту, как {item}, хотел(а|о|и) с тебя в два раза больше взять, да постеснял(ся|ась|ось|ись). Отец скупости, всего {value} монет(а|у|ы) про(шу|сим), дешевле на всём базаре не найдёшь!»", "[coins]«{value} монет(а|у|ы)! Гуляем! Не зря подобрал(а|о|и) {item} из той гадости».", "[coins]«{value} монет(а|у|ы)? Точно?! Это же {item}! А, бескуд с тобой, давай деньги».", "[coins]«Отбил(а|о|и) у жадного торговца {value} монет(а|у|ы). Правда, в процессе битвы за металл потерял(а|о|и) {item}... Ну и ладно».", "[coins]{} удачно назвал(а|о|и) {item} «артефактом древних» и продал(а|о|и) (его|её|их) за {value} монет(а|у|ы).", "[coins]«Вы очень щедры! (Я|Мы) рад(а|о|ы), что избавил(ся|ась|ось|ись) от {item} аж за {value} монет(а|у|ы)!»", '[coins]«Хорош(ая|ий|ее|ие) {item}. А на плесень сбоку не смотри брезгливо — в ней химикалий полезный есть. "Пересилин" называется, болезни пересиливает — (я|мы) в книжке читал(а|о|и). Так что, давай сюда {value} монет(а|у|ы), да забирай, пока (я|мы) не передумал(а|о|и)!»', "[coins]«{value} монет(а|у|ы) за такой {item}? Да они явно сошли сума!»", "[coins]«Надеял(ся|ась|ось|ись), что за {item} получ(у|им) больше, чем {value} монет(а|у|ы). Эх… Ладно! По рукам!»", "[coins]{} состроил(а|о|и) глазки торговцу и сумел(а|о|и) продать {item} аж за цел(ую|ые|ых) {value} монет(а|у|ы). Торговец в умилении.", "[coins]«Хочешь сказать, что {item} сто(и|я)т {value} монет(а|у|ы)? Ну надо же! А ещё говорят, что (я|мы) не уме(ю|ем) торговаться!»", "[coins]«{item} нов(ый|ая|ое|ые), не бит(ый|ая|ое|ые), не крашенн(ый|ая|ое|ые)! Всего за {value} монет(а|у|ы)! Кто больше? Продано!»", '[coins]«Не тот я выбрал(а|о|и) рынок: один — жулик, у другого "сдачи нет"… А у этого… Хотя нет, {value} монет(а|у|ы) за {item}… Глупец! Это стоит гораздо дешевле!.. Нет, нет, это я о своём…»', "[coins]«{value} монет(а|у|ы) за {item}? Ладно, пойдёт, мне чужого не надо — поэтому и продаю».", "[coins]Камень неподалеку разлетелся на части, как фарфоровая копилка. Порывшись в осколках, {} с ликованием извлекает {value} монет(а|у|ы).", "[coins]«{value} монет(а|у|ы)? За {item}? Мне кажется, или вы меня где-то обма… Эй, стоять!!!, — прокричал(а|о|и) {} вслед уносящемуся на невообразимой скорости плуту. — Ну ладно, хоть что-то заплатил, но, честное слово, как обворовал».", "[coins]«Сбагрить какому-нибудь наивному богатому дурачку такой хлам, как {item}, за цел(ую|ые|ых) {value} монет(а|у|ы) — долг любого бедного героя».", "[coins]«{value} монет(а|у|ы) за {item}... На кружку эля наторговал(а|о|и), и то хорошо!»", /* Поднял */
    "[pickup]{item} лег(ла|ло|ли) в рюкзак как родн(ая|ой|ое|ые).", "[pickup]«Вроде бы всего лишь {item}, а приятно».", "[pickup]Обыскав место сражения, {} находит {item} и забирает добычу себе.", "[pickup]«{} всё равно больше не нужно, а мне {item} пригод(ится|ятся)».", "[pickup]«{item} самое место у меня в рюкзаке».", "[pickup]{}, довольн(ый|ая|ое|ые) собой, обыскав {}, убира(ет|ют) найденн(ый|ую|ое|ые) {item} к себе в сумку.", "[pickup]«Эх, с паршивой овцы хоть шерсти клок!» — думал(а|о|и) {}, пряча {item} в рюкзак.", "[pickup]«Что с {} взять, кроме {item}?»", "[pickup]Попрыгав и похлопав в ладоши от восторга, {} упаковыва(ет|ют) обнаруженн(ый|ую|ое|ые) {item} в рюкзак.", "[pickup]«Превосходно, вот и трофеями судьба не обделила», — думает {}, убирая {item} в рюкзак.", "[pickup]Битва закончена лишь тогда, когда собраны трофеи. {}, положив {item} к себе в рюкзак, продолжа(ет|ют) своё странствие.", "[pickup]Вытерев {item} о траву, {} упаковал(а|о|и) добычу в рюкзак.", "[pickup]«{}, воровато озираясь, прикарманил(а|о|и) {item}».", "[pickup]{} мертв(а|о|ы). {item} в рюкзаке. {} счастлив(а|о|ы).", "[pickup]«Нет худа без добра! Вот отличн(ый|ая|ое|ые) {item}, надо прибрать себе в рюкзак».", "[pickup]«Что тут у нас? {item}! Неплохо…»", "[pickup]«Сегодня явно мой день, столь восхитительн(ый|ую|ое|ые) {item} не каждый раз найдёшь. Надо бы (его|ее|их) к себе в рюкзак положить».", "[pickup]«Ну вот так всегда, никогда на них живого места нет: тут как-то неестественно вывернуто, там кость торчит, глаз вытек, рожа изуродована, а про шкуру так и вообще говорить нечего… Постойте-ка! А вот {item}, кажется, не очень помят(а|о|ы), да и кровью не пропитал(ся|ась|ось|ись). Решено. Беру!»", "[pickup]«{item}. А что ещё взять с(о) {}?»", "[pickup]{} перебрал(а|о|и) добычу и закинул(а|о|и) {item} к себе в сумку.", "[pickup]Присвистнув от радости, {} пряч(ет|ат) найденн(ый|ую|ое|ые) {item} в сумку.", "[pickup]Какая удача! Обшарив останки {}, {} наш(ел|ла|ло|ли) {item}!", "[pickup]«Как(ой|ая|ое|ие) замечательн(ый|ая|ое|ые) {item}, в хозяйстве пригод(ится|ятся)», — {} убира(ет|ат) добычу в рюкзак.", "[pickup]«Невесть что, но горсть монет я за это уж точно получу» — пробормотал(а|о|и) {}, убирая {item} в рюкзак.", "[pickup]Чистая победа — грязн(ый|ая|ое|ые) {item}.", "[pickup]«Древняя мудрость гласит: {item} в рюкзак — авантюристу приятней… Неее… баба с возу — авантюристу легче?…»", "[pickup]«О, {item}! Пригод(и|я)тся».", "[pickup]{item} воня(ет|ют) даже сильнее, чем грязн(ый|ая|ое|ые) {}, но {} не из брезгливых.", "[pickup]«Отлично, {item}! Доволочь до города — там можно будет продать».", "[pickup]«Вот это я понимаю! {item}! То что надо!»", "[pickup]«Ух ты, как(ой|ая|ое|ие) прекрасн(ый|ая|ое|ые) {item}!» — {} с блаженным лицом укладывает трофей к себе в сумку.", "[pickup]«Так, что тут у нас? {item}? Долж(ен|на|но|ны) пригодиться».", "[pickup]{} морщит нос, но вытира(ет|ют) дурно пахнущ(ий|ую|ее|ое|ие|их) {item} и запихива(е|ю)т (его|ее|их) в рюкзак.", "[pickup]«Не густо, всего лишь {item}, но хоть что-то».", "[pickup]«Что это тут», — думал(а|о|и) {}, выуживая {item} из того, что осталось от {}.", "[pickup]«Хлам, конечно, но может и удастся продать…» — подумал(а|о|и) {}, убирая {item} в сумку.", "[pickup]Воровато оглядываясь по сторонам, {} запихивает в рюкзак {item}.", "[pickup]«Вот в такие моменты я понимаю, что всё не зря», — думает {}, умиляясь найденн(ому|ой|ым) {item} и пряча (его|ее|их) к себе в рюкзак.", "[pickup]«Хм… Не мешок бриллиантов, но и {item} с {} тоже ничего».", "[pickup]Изумительн(ый|ая|ое|ые) {item} — достойная награда победителя.", "[pickup]«{item}? В рюкзак! В хозяйстве пригодится».", "[pickup]«Не дело трофеями пренебрегать». — пробормотал(а|о|и) {}, засовывая {item} к себе в рюкзак.", "[pickup]«Моя Прелесть», — подумал(а|о|и) {} и, оглядываясь по сторонам, бережно спрятал(а|о|и) {item} в рюкзак.", "[pickup]«Сражение превращается в бесполезный риск, если нет трофеев», — замечает про себя {}, пряча {item} в рюкзак.", "[pickup]«Приш(ел|ла|ло|ли), увидел(а|о|и), победил(а|о|и) — забрал(а|о|и) {item}!»", "[pickup]{} — смерть, победителю — {item} — вот естественный ход вещей.", "[pickup]«{item}! Всё в дом, всё в дом!»", "[pickup]Один из лучших экземпляров {item}, и победитель забирает (его|ее|их) по праву.", "[pickup]«Хороший враг — мёртвый враг, а хорош(ий|ая|ее|ие) {item} — {item} в рюкзаке».", "[pickup]«Так себе {item}, но не бросать же».", "[pickup]«Дело за малым: продать {item} и купить что-нибудь нужное».", "[pickup]«{item}… Неплохой трофей…»", "[pickup]«Мертв(ый|ая|ое|ые) {} на первое, сладкое чувство победы на второе, и {item} на десерт».", "[pickup]«Неплохая вещица, (этот|эта|это|эти) {item} — надо оставить себе».", "[pickup]«После славной битвы и трофей должен быть достойным победителя! Что тут у нас… {item}, значит. Отлично!»", "[pickup]«С паршив(ого|ой|ых) {} хоть {item} клок… А, там про овцу и шерсть…»", "[pickup]«Раны болят не так сильно, если после боя тебя ждёт достойная награда… Вот прекрасн(ый|ая|ое|ые) {item}, положим (его|ее|их) в рюкзак… Хм-м, определённо, самочувствие стало лучше».", "[pickup]«Нет лучшего места для {item}, чем мой рюкзак».", "[pickup]{item} и слава — вот награда {} за победу над {} коварн(ым|ой|ыми)!", "[pickup]Грёзы о трофеях были не напрасны. {} восхищается {item} и убирает (его|ее|их) в рюкзак.", "[pickup]Взглядом опытного мародера {} осмотрел(а|о|и) останки {} и спрятал(а|о|и) {item} в рюкзак.", "[pickup]{}, воровато озираясь, прикарманил(а|о|и) {item}.", "[pickup]«Так, {item}, положу-ка я тебя вот сюда».", "[pickup]{} подбросил(а|о|и) {item} над головой. Т(от|о|а|е) перелетел(а|о|и) за спину и упал(а|о|и) прямо в рюкзак к остальной добыче. «В яблочко!» – довольно улыбнул(ся|ась|ось) {}.", "[pickup]«Что-то упало. Я точно видел(а|о), как что-то упало с {}. Да вот только непонятно, куда? О, наш(ел|ла|ло)! {item}!»", "[pickup]Немного постояв над найденн(ым|ой|ыми) {item}, {} аккуратно (его|ее|их) поднял(а|о) и спрятал(а|о) к себе в рюкзак.", "[pickup]«{item}? Возьму. Продам кому-нибудь на рынке».", "[pickup]«Трофеев много не бывает», – улыбается {} и кладёт {item} в сумку к остальной добыче.", "[pickup]«Места для {item} в рюкзаке пока достаточно. Беру!»", "[pickup]«Интересно, как(ой|ую|ое|ие) по счету {item} я уже подбираю?»", "[pickup]«Наступит ли тот день, когда (я|мы) подним(у|ем) с тела поверженн(ого|ой|ых) {} сразу несколько {item}?»", "[pickup]«{item} мне не нуж(ен|на|но|ны), но, уверен(а|о|ы), в городе кому-нибудь да пригод(ится|ятся)».", "[pickup]Покрошив {} в мозаику, {} забрал(а|о|и) {item} за творческий труд.", "[pickup]«Хм, {item}? Дня два назад (я|мы) что-то похожее уже находил(а|о|и)!»", "[pickup]Щелкнув пальцами, {} поднял(а|о|и) с земли отличн(ый|ую|ое|ые) {item} и тут же убрал(а|о|и) (его|её|их) к себе в сумку.", "[pickup]«{} обещал(а|о|и) мне саблю, барабан и коня, а в итоге оставил(а|о|и) {item}».", "[pickup]Уставш(ий|ая|ее|ие) {} осмотрел(а|о|и) место битвы и наш(ёл|ла|ло|ли) {item}. Немного покрутив (его|её|их) в руках, {} сунул(а|о|и) {item} к себе в рюкзак.", "[pickup]«Потряс(ла|ло|ли) {} до глубины души. Удалось вытрясти {item}».", "[pickup]{} больше не буд(е|у)т беспокоить местных жителей, а {} за это разбогател(а|о|и) на {item}.", "[pickup]«Нет {}? А если найду?» И действительно, в ошмётках {} {} наш(ел|ла|ло) {item}!", "[pickup]Вихрь последних событий настолько вымотал {}, что он(а|о|и) даже не улыбнул(ся|ась|ось|ись), когда наш(ел|ла|ло) {item} и убрал(а|о|и) (его|её|их) к себе в рюкзак.", "[pickup]«Да (мне|нам) за такой бой раза в три больше полагалось!» — возмущённо восклица(е|ю)т {}, но всё же пряч(е|у)т {item} в рюкзак.", "[pickup]«Кто рано встаёт, тот у {} что-нибудь найдёт», — радостно думал(а|о|и) {}, прикарманивая {item}.", "[pickup]«Ну наконец-то, {item}!»", /* Пусто */
    "[empty]«Нет, мешок денег было бы чересчур, но хоть что-то могло достаться в награду?»", "[empty]{} склоняется над поверженн(ым|ой|ыми) {}… и ничего не находит.", "[empty]Порывшись в останках {}, {} ничего не наш(ел|ла|ло), вытер(ла|ло|ли) руки и уш(ел|ла|ло).", "[empty]«Ненавижу, когда так получается: бьёшься, жизнью рискуешь, а награды нет!»", "[empty]{} посмотрел(а|о), что осталось от {}, и с досадой отметил(а|о): «Добычи нет».", "[empty]{} не наш(ел|ла|ло) ничего полезного на тушк(е|ах) монстр(а|ов).", "[empty]«Тут брать нечего. Если так дело и дальше будет, я по миру пойду».", "[empty]«И за что было сражаться? Добычи явно нет».", "[empty]«Какая уж тут добыча? В живых остал(ся|ась|ось|ись), и то славно».", "[empty]«Нечего взять с {}… Ладно, найду ещё кого-нибудь».", "[empty]{} отдубасил(а|о) бандита так, что ничего ценного уже не осталось.", "[empty]{} с унынием смотрит на то, что осталось от {}. Совершенно очевидно, что здесь поживиться нечем.", "[empty]«И какой смысл столько времени тратить на сражение, если после этого даже взять нечего?»", "[empty]Сегодня {} без награды, но главное, что (он|она|оно) жив(а|о).", "[empty]«Что тут? Пусто…» — Пнув {}, {} продолжает свой путь.", "[empty]{} склоняется над поверженн(ым|ой|ыми) {} и… плюясь и ворча, не находит добычи.", "[empty]{} со злостью плюёт на останки {}, всё равно трофеев никаких.", "[empty]{} настолько увлек(ся|лась|лось|лись), что от {} ничего не осталось.", "[empty]{} понял(а|о|и), что поживиться тут нечем, но не унывает: «Легче сумка — шире шаг».", "[empty]«Можно было бы строго судить авантюриста, если опять нет добычи, и этот авантюрист пошёл бы грабить караваны?…»", "[empty]В этот раз {} остал(ся|ась|ось|ись) без добычи.", "[empty]Небрежно осмотрев останки {} и не найдя ничего полезного, {} отправил(ся|ась|ось|ись) дальше.", "[empty]«Тьфу ты ж! И взять с {} нечего!»", "[empty]«Трофеев нет, но будет ещё и на нашей улице праздник!»", "[empty]«{}, эй! Победили — это спасибо, конечно, но что я буду есть, если снова нет трофеев?»", "[empty]«Победа есть, а добычи нет…»", "[empty]{} отдубасил(а|о|и) {} так, что ничего ценного уже не осталось.", "[empty]«Вот же тварь какая, и взять-то нечего».", "[empty]Раздосадованн(ый|ая|ое|ые) отсутствием трофеев, {} глумится над останками {}.", "[empty]«Ну что за день сегодня такой?… Даже с {} взять нечего».", "[empty]Измотанн(ый|ая|ое|ые) битвой {} с брезгливостью смотрит на место сражения, понимая, что трофеев здесь явно нет.", "[empty]Плохо. Очень плохо. {} остал(ся|ась|ось|ись) без добычи.", "[empty]Очередн(ой|ые) монстр(ы) без добычи, куда катится этот мир?", "[empty]Останки поверженн(ого|ой|ых) {} испарились прямо на глазах. Стоп! А где трофей?", "[empty]«И снова нечего взять».", "[empty]Останки {} выглядят слишком противно, чтобы пытаться найти что-то ценное.", "[empty]Покойся с миром, несчастн(ый|ая|ое|ые) {}. Не принесла победа ни добычи, ни славы.", "[empty]«Да уж… Добычи нет, и стоило ли рисковать?»", "[empty]«Ничего ценного. В следующий раз повезёт».", "[empty]«Совсем нет добычи? Будем искать!»", "[empty]И кукиш с маслом, как награда герою.", "[empty]«Вот же твари какие, и взять-то нечего».", "[empty]«Рискуешь жизнью, терпишь лишения, сбиваешь ноги в кровь, и что в итоге? Ни-че-го!»", "[empty]После ожесточённой схватки {} оказал(ся|ась|ось|ись) настолько искромсан(а|о|ы), что о добыче можно и не думать.", "[empty]«Как-то и зимы холоднее стали, и рюкзаки делают маленькие. Тяжёлые времена ждут этот мир».", "[empty]Столько сил потрачено и все напрасно.", "[empty]{} и без добычи? Нет, это точно не лучший день {}.", "[empty]«От трудов праведных не наживёшь палат каменных», — бурч(и|а)т {}, не найдя в останках {} ничего полезного.", "[empty]«Почему из всех монстров мне попал(ся|ась|ось|ись) именно {}?.. Ни трофеев, ни монет».", "[empty]Нет добычи? Зато удалось остаться в живых.", "[empty]Обшарив останки {}, {} наш(ел|ла|ло|ли) от мёртвого осла уши. В смысле, ничего не наш(ел|ла|ло|ли).", "[empty]Гибель {} оказалась бессмысленной — никаких трофеев {} не добыл(а|о|и).", "[empty]{} выпотрошен(а|о|ы), но {} ничего не находит.", /* Бросил */
    "[drop]«Вот несправедливость какая: отличн(ый|ая|ое|ые) {drop}, а забрать не получится — рюкзак уже полный».", "[drop]«Надо что ли рюкзак побольше купить, а то такими вещами приходится разбрасываться… Неплох(ой|ая|ое|ие) был(и) {drop}».", //			'[drop]Короткая вспышка — и {} с удивлением смотр(ит|ят) на горстку пепла, оставшуюся от {drop}.', //manual drop
    "[drop]Найденн(ый|ая|ое|ые) {drop} не помеща(ется|ются) в рюкзак. «Кто ты, тот счастливчик, что получит (его|ее|их) задарма? И когда уже я найду брошенный кем-то трофей?»", "[drop]Сердце кровью обливается, когда приходится бросать {drop}. Но {} смотрит в набитый доверху рюкзак, и становится легче.", "[drop]Повертев в руках {drop}, доставш(ийся|уюся|ееся|иеся|егося) от {}, {} с сожалением выкинул(а|о|и) (его|ее|их) — в рюкзаке не осталось места.", //err
    "[drop]{} пытается запихнуть трофей в рюкзак, но, потерпев сокрушительное фиаско, решает, что {drop} ему не так уж сильно и нужен.", "[drop]{}, повертев в руках {item}, и не найдя куда (его|ее|их) засунуть, решил(а|о|и) в следующий раз купить штаны с дополнительными карманами.", "[drop]{item} остал(ся|ась|ось|ись) валяться на обочине дороги.", "[drop]В рюкзаке нет свободного места и {item} пришлось оставить.", "[drop]«Это не дело: рюкзак — битком — трофеи складывать некуда».", "[drop]«Нужен рюкзак побольше, а то в этот уже не влезает».", "[drop]«Хм… {item}. А запихнуть-то некуда — рюкзак набит — придется выкинуть».", "[drop]{} пыжится, всё вертит и пытается впихнуть {item} в рюкзак, но там слишком мало места. Вздохнув, он(а|о|и) выбрасывает {item}.", "[drop]Рюкзак полон и {} не может взять добыт(ый|ую|ое|ые) {item}.", "[drop]Хмуро глядя в набитый доверху рюкзак, {} оставляет добычу на земле.", "[drop]«Опять забыл(а|о|и) от хлама избавиться!» — ворчит {}, выбрасывая подобранн(ый|ую|ое|ые) {item}.", "[drop]«Надо срочно продать чего-нибудь, освободить место в рюкзаке. Ну жалко ж бросать {item}!»", "[drop]«Был бы рюкзак побольше… А пока {item} придется выбросить».", "[drop]Найденн(ый|ая|ое|ые) {item} не помеща(ется|ются) в рюкзак. «Кто ты, тот счастливчик, что получит (его|ее|их) задарма? И когда уже я найду брошенный кем-то трофей?»", "[drop]Оставлю я {item} здесь, может кому сгодится.", "[drop]«{item} никак не влаз(ит|ят) в рюкзак, придётся выкинуть».", "[drop]«Некуда уже пихать, ну и демон с {item}».", "[drop]{} попытал(ся|ась|ось|ись) впихнуть {item} к себе в рюкзак, но, услышав подозрительный треск швов, оставил(а|о|и) эту затею и выкинул(а|о|и) добычу.", "[drop]«Нет, всё же грех жаловаться. Вон уже и трофеи складывать некуда!»", "[drop]«Надо что ли рюкзак побольше купить, а то такими вещами приходится разбрасываться… Неплох(ой|ая|ое|ие) был(а|о|и) {item}».", "[drop]«Святой лук-порей! Опять куча хлама в инвентаре!» — со слезами на глазах, {} уходит прочь, а {item} остается одиноко лежать на земле.", "[drop]«Вот и {item} уже не влезает. Решено — пора продавать трофеи».", "[drop]В придорожные кусты лет(и|я)т {item}. В рюкзак (его|ее|их) уже не впихнуть.", "[drop]Израненн(ый|ая|ое) {} смотрит в переполненный рюкзак и понимает, что {item} туда уже не влез(е|у)т и (его|ее|её|их) придётся бросить. Знакомая каждому, извечная и обидная ситуация.", "[drop]«В рюкзаке совсем нет места. Зачем мне столько барахла?» — думает {}, выбрасывая добытый {item}.", "[drop]Рюкзак полон настолько, что чуть ли не трещит по швам. {} с грустью оставляет добыт(ый|ую|ое|ые) {item} и идёт дальше.", "[drop]Красиво жить не запретишь! Рюкзак уже битком, и неплох(ой|ая|ое|ие) {item} летит в канаву.", "[drop]Рюкзак и так слишком тяжёлый. Вздохнув, {} оставляет {item} на поле боя.", "[drop]«То совсем пусто, то так густо, что уже и в рюкзак не влезает — придется выкидывать хорош(ий|ую|ое|ие) {item}».", "[drop]{} безуспешно пытается засунуть {item} в трещащий по швам рюкзак: «Да здесь еще три артефакта влезет, глупая авоська! Где заклинание утрамбовывания?!»", "[drop]Обливаясь слезами, {} последний раз смотр(и|я)т на найденн(ый|ую|ое|ые) {item} и оставляет (его|ее|их) на обочине — в рюкзаке уже нет места.", "[drop]Неплох(ой|ая|ое|ие) {item}, но в рюкзак уже не влез(е|ю)т.", "[drop]«Так бывает», — отмеча(е|ю)т {}, глядя в доверху набитый рюкзак и выкидыва(е|ю)т {item}.", "[drop]«Если я возьму с собой ещё и {item}, то спина мне этого не простит».", "[drop]«Так не достанешься же ты никому, {item}!» — иступлённо крикнул(а|о|и) {} и выбросил(а|о|и) трофей, не поместившийся в рюкзак, в канаву.", "[drop]{} пытается запихнуть трофей в рюкзак, но, потерпев сокрушительное фиаско, решает, что {item} (ему|ей|им) не так уж сильно и нуж(ен|на|но|ны).", "[drop]{} печально понимает, что {item} не влеза(е|ю)т в рюкзак, и реша(е|ю)т зашвырнуть (его|её|их) куда подальше.", "[drop]Потратив пять минут на попытки утрамбовать содержимое рюкзака ногами, {} всё-таки понима(е|ю)т, что {item} придётся выбросить.", "[drop]После поражения {}, в высоко детализованном трупике, {} наш(ёл|ла|ло|ли) {item}. Так и не найдя куда эту дрянь запихнуть, вернул(а|о|и) её хозяину.", "[drop]«{item} не помещается в рюкзак, а в руках (я|мы) это не понес(у|ём)!»", "[drop]«Святой лук-порей! Опять куча хлама в инвентаре!» — со слезами на глазах, {} уходит прочь, а {item} оста(е|ю)тся одиноко лежать на земле.", "[drop]«О, храни (меня|нас), Хранитель! Надо было давно пришить карман к рюкзаку! Придётся оставить {item} {}».", "[drop]«Ну почему в этом мире никто так и не научился шить рюкзаки повместительнее?! Опять {item} не влеза(е|ю)т…»", "[drop]«Эх… Опять с хорошей вещицей придётся распрощаться со слезами на глазах…» — рюкзак полон, и {} оста(ё|ю)тся лежать на дороге.", /* Погиб в бою */
    "[death]«Прощай, жестокий мир», — молвил(а|о|и) {}, истекая кровью.", "[death]Удачная атака {}, и Мать Сыра Земля обнимает {}.", "[death]{} наносит сокрушительный удар, и {} падает навзничь.", "[death]«Проклятье!» — подумал(а|о|и) {}, заваливаясь на бок — победа за {}.", "[death]{} поскальзыва(е|ю)тся и пада(е|ю)т, а {} уже не да(ё|ю)т (ему|ей|им) подняться.", "[death]Последняя атака {} приносит {} бесславную смерть.", "[death]«Финт, отскок!… А-а дьявол!…» — Нога {} предательски подворачивается, и {}, отлично используя момент, нанос(и|я)т финальный удар.", /* Начало боя */
    "[fight]{} и {} сошлись на узкой дорожке.", "[fight]За спиной {} хрустнула ветка. Он(а|о|и) ме-едленно обернул(ся|ась|ось|ись), доставая оружие, и увидел(а|о|и) {}, стояв(шего|шую|шее|ших) с видом полной невинности.", "[fight]«А это ещё что за бести(я|и)? {}?»", "[fight]«Ни на минуту нельзя расслабиться!» — {} атаку(е|ю)т {}.", "[fight]Впереди {}, ищущ(ий|ая|ое|ие) неприятностей, — «Эй, я здесь!»", "[fight]{} преградил(а|о|и) дорогу. {} вынужден(а|о|и) принять сражение.", "[fight]«{}? Что ж, потанцуем!»", "[fight]{} на горизонте, в бой!", "[fight]Битвы не избежать — впереди {}.", "[fight]Как {} ни пытал(ся|ась|ось|ись) притвориться мертв(ым|ой), {} всё равно пош(ел|ла|ло|ли) в наступление.", "[fight]«Что там впереди? {}? Ближе… Сейчас я буду добывать трофеи».", "[fight]«Что-то тут не так. Не в засаду ли меня несё… Проклятье! {}!»", "[fight]«Судьба сводит меня с(о) {}? Что ж…»", "[fight]Ужасн(ый|ая|ое|ые) {} выскочил(а|о|и) из кустов.", "[fight]«Это {}! К бою!»", "[fight]«{}! Оружие наголо!»", "[fight]«Ни минуты покоя!» — на пути {}!", "[fight]«Ого, да это {}. Исчезающий вид!»", "[fight]«И так жить на свете страшно, а тут еще и {}!»", "[fight]«Проклятье! Не золотуха, так {}!»", "[fight]«Это была самая большая ошибка в твоей жизни… и последняя…» — грозно произнес(ла|ло|ли) {} и приготовил(ся|ась|ось|ись) к бою против {}.", "[fight]Обернул(ся|ась|ось|ись) на странный шум и увидел(а|о|и) {}.", "[fight]«{}, как мне вас не хватало!» — проворчал(а|о|и) {}, разминая кисти рук.", "[fight]«Неужто передо мной {}? Отлично! Будет чем пополнить мою коллекцию трофеев!»", "[fight]«Говорят, места тут спокойные. Тогда что тут дела(е|ю)т {}?!»", "[fight]«Ха-ха! Вот мы и сошлись, {}!»", "[fight]Вовремя заметив приближающ(егося|уюся|ееся|ихся|ийся) {}, {} приготовил(ся|ась|ось|ись) к бою.", "[fight]«На ловца и зверь бежит! Сегодня это {}!»", "[fight]Неожиданно перед {} появля(е|ю)тся {}, заставляя (его|ее|их) подпрыгнуть от испуга! «Никому не дозволено безнаказанно меня пугать!» — вопит {} и отчаянно бросается в бой.", "[fight]{} на пути!", "[fight]{} видит, как дорогу прегражда(е|ю)т {}.", "[fight]За очередным поворотом дороги {} сталкива(е|ю)тся с {}.", "[fight]«Подозрительно тихо, не нравится мне это… Так и есть, {}!»", "[fight]Из придорожных зарослей выскочил(а|о|и) {}!", "[fight]{}, чувствуя опасность, насторожил(ся|ась|ось|ись) и вовремя заметил(а|о|и) {}.", "[fight]{} заметил(а|о|и) впереди {} и готовится к схватке.", "[fight]«Впереди {}! Здоров(ый|ая|ое|ые), зараз(а|ы)!»", "[fight]«Вот сколько раз уже сражал(ся|ась|ось|ись) с(о) {}, а популяция их всё не убывает… О! Вот опять!»", "[fight]Из-за кустов показыва(ется|ются) {}. «Не случайно нынешней ночью тревожные сны снились».", "[fight]{} в опасности — на (его|ее|их) пути {}.", "[fight]«Я, отважн(ый|ая|ое) {}, смело принимаю бой! Никто не выстоит против меня! Даже {}!»", "[fight]{} преградил(а|о|и) дорогу. {} вынужден(а|о|и) принять сражение.", "[fight]«Хм, {}. Давно пора очистить от них Пандору!»", "[fight]«В книгах пишут, что нападение — это лучшая защита. Как бы проверить?.. Ха, {}! Как по заказу».", "[fight]{} бросил(а|о) камень в кусты, чем разозлил(а|о) {}, стоявш(его|ую|ее|их) за ними.", "[fight]«Кажется, я нарушил(а|о) границы территории {}. Сейчас меня будут прогонять».", "[fight]«Ну, кто на меня? {}!»", "[fight]«Ни проехать, ни пройти пока {} сто(ит|ят) на пути!»", "[fight]«Ни проехать по дороге, ни пройти — опять {} сто(ит|ят) на пути!»", "[fight]{actor} приглянулись доспехи {}, и он(а|о|и) решил(а|о|и) силой заполучить их себе.", "[fight]Учуяв запах припасов, {actor} подкрал(ся|ась|ось) к {} сзади, ухватил(ся|ась|ось) за рюкзак и пытается утащить его в кусты, желая завладеть аппетитным содержимым. «А ну-ка прочь от моего добра!» – прогоняет {actor} {}.", "[fight]«И да пад(ё|у)т {} в пыль к ногам моим. Ибо!… Ибо… Впрочем, неважно. Приступим».", "[fight]«Это моя дорога! Хочешь идти дальше? Плати!» – заявил(а|о|и) {actor}. «Платить {actor}? Ну уж нет», – молвил(а|о|и) {}.", "[fight]На дорогу выскочило несколько чем-то раздражённых {actor}. Один из зверей кинулся на {}.", "[fight]Дорогу перебежал(а|о|и) {}. Если верить старой геройской примете — это к деньгам! А ну-ка, иди сюда…", "[fight]«{}! Иду на Вы!»", "[fight]«Деньги или жизнь?» – крикнул(а|о|и) {actor}, выскакивая из засады. «Твоя жизнь», – ответил(а|о|и) {}, готовясь к драке.", "[fight]«Да что ж вы все такие агрессивные?..» — бурч(и|а)т {actor}, отбиваясь от {}.", "[fight]«Ну, это не серьёзно. {actor} собирается напасть на меня?!»", "[fight]«Вот так {}! На картинках он(а|о|и) гораздо меньше».", "[fight]За очередным поворотом дороги {actor} сталкивается с(о) {}.", "[fight]Пытаясь защитить своё логово с детёнышами, расположенное неподалёку, {} вынужден(а|о|ы) напасть на {actor}.", "[fight]«Вдохнул(а|о|и) полной грудью и сразу распознал(а|о|и) прятавш(егося|уюся|ихся) в кустах {} по характерному запаху. Вылезай(те), {}!»", "[fight]А вот и {}. Только {} свистнул(а|о|и), он(а|о|и) появил(ся|ась|ось|ись).", "[fight]{} набрасыва(е|ю)тся на противник(а|ов) с явным намерением разорвать (его|её|их) на сотни маленьких {}! {} с яростным рыком отдира(е|ю)т от себя {}! Битва обещает быть свирепой. Слабонервных просим отвести взгляд! Хотя, так и быть, через пальцы и им подсматривать можно.", "[fight]«Быть или не быть?.. Не к(о) (мне|нам) вопрос. Конечно бить! Что скажешь, {}?»", "[fight]Как ни пытал(ся|ась|ось|ись) {} избежать конфликта, {} не оставил(а|о|и) (ему|ей|им) выбора — драке быть!", "[fight]{} выскочил(а|о|и) прямо перед {}. Сегодня кто-то продолжит свой путь, а кто-то умрёт.", "[fight]Встретив мирно идущ(его|ую|ее|их) мимо {}, {} вспомнил(а|о|и) частушку «На сосне сидит {}». К сожалению — вслух. Драки не избежать.", "[fight]Вдруг откуда ни возьмись прямо на {} выскочил(а|о|и) {}!", "[fight]{} слыш(и|а)т шорохи за спиной и, резко повернувшись, вид(и|я)т {}.", "[fight]«Вот это действительно опасный поворот», — подумал(а|о|и) {}, столкнувшись нос к носу с(о) {}.", "[fight]{} спокойно (шёл|шла|шло|шли) по дороге, но тут (ему|ей|им) преградил(а|о|и) дорогу {}, настойчиво зазывающ(ий|ая|ее|ие) в игру «догони меня кирпич».", "[fight]«Ни шагу не пройти! Кто там следующий на очереди, {}?»", "[fight]Вдруг откуда ни возьмись прямо на {} выскочил(а|о|и) {}!", "[fight]«А вот и обед идёт!» — прогундосил(а|о|и) {}, загораживая дорогу {}.", "[fight]Вовремя заметив {victim}, {actor} подкрал(ся|ась|ось|ись) сзади и сразил(а|о|и) противник(а|ов) одним ударом.", "[fight]{actor} зловеще ухмыльнул(ся|ась|ось), когда {victim} попал(ся|ась|ось|ись) в предусмотрительно установленную на дороге ловушку." ];
}, /* 48 */
/***/
function(module, exports, __webpack_require__) {
    function checkQuests(quests) {
        for (var line = quests[1].line, lineOld = lastQuests && lastQuests[1] && lastQuests[1].line || [], newLines = [], i = 0; i < line.length; i++) {
            var q = line[i], qOld = lineOld[i];
            qOld && isSameQuest(q, qOld) || (_settings.settingsValues.notifyQuestChoose && q.choice_alternatives && q.choice_alternatives.length && _settings.settingsValues.notify && sendNotify(q.name, {
                tag: "quest",
                body: utils.heroName + " " + q.action + "!",
                icon: window.extPath + "img/quest/caravan.png",
                //window.extPath + 'img/quest/' + q.type + '.png',
                addTime: 1
            }), newLines.push(q));
        }
        newLines.length && _publish("questUpdate", line), lastQuests = quests;
    }
    function isSameQuest(q1, q2) {
        var tests = [ "action", "choice", "name", "type", "uid" ];
        for (var s in tests) {
            if (tests.hasOwnProperty(s)) {
                var key = tests[s];
                if (q1[key] !== q2[key]) {
                    return !1;
                }
            }
        }
        return !0;
    }
    var lastQuests, utils = __webpack_require__(3), _settings = utils.settings, _publish = utils.publish, sendNotify = __webpack_require__(22);
    module.exports = checkQuests;
}, /* 49 */
/***/
function(module) {
    module.exports = [ "[value]\\d+ звездоч(?:ка|ки|ек)?", "[value]\\d+ HP", "[value]\\d+ единиц(:?у|а|ы)? урона", "[value]\\d+ урона?", "[energy]\\d+ единиц(:?у|а|ы)? энергии", "[coins]\\d+ монет(?:ами|ой|а|у|ы)?", "[exp]\\d+ опыт(?:а)?", "[level]\\d+ уровень" ];
}, /* 50 */
/***/
function(module, exports, __webpack_require__) {
    function htmlMessage(message) {
        var htmlMsg, time = message[1], msg = message[2], act = message[4];
        if (!act || !act.type) {
            return "";
        }
        var isMe = act.isMe, type = act.type, sec = act.sec, t = "", val = act.value || "", icon = _icons[type];
        //	if (sec) console.log(sec, message[3], time)
        return sec && (icon += '<span class="sub-icon">' + _icons[sec] + "</span>"), "hit" === type ? t = val : "vamp" === type ? t = val + icon + '<span class="vamp">' + act.vamp + "</span>" : isActType("SHORT", type) && (t = val + icon), 
        t && (htmlMsg = '<span class="submessage act act-' + act.type + (isMe ? " me" : " enemy") + '" title="' + time + "> " + msg + '">' + t + "</span>"), htmlMsg || "";
    }
    var utils = (__webpack_require__(16), __webpack_require__(3)), _const = utils["const"], _icons = _const.ICONS, isActType = utils.isActType;
    module.exports = htmlMessage;
}, /* 51 */
/***/
function(module, exports, __webpack_require__) {
    function htmlMessages(messages) {
        for (var html = "", i = 0; i < messages.length; i++) {
            var htmlMsg, message = messages[i], htmlShortMsg = htmlMessage(message), timestamp = message[0], time = message[1];
            if (htmlShortMsg) {
                for (;messages[i + 1] && messages[i + 1][1] === time; ) {
                    var htmlShortMsg2 = htmlMessage(messages[i + 1]);
                    if (!htmlShortMsg2) {
                        break;
                    }
                    htmlShortMsg += htmlShortMsg2, i++;
                }
                htmlMsg = '<li data-ts="' + timestamp + '" class="log-record-short">' + htmlShortMsg + "</li>";
            } else {
                var htmlLongMsg = htmlLongMessage(message);
                htmlMsg = '<li data-ts="' + timestamp + '" class="log-record">' + htmlLongMsg + "</li>";
            }
            html = htmlMsg + html;
        }
        return html;
    }
    var utils = (__webpack_require__(16), __webpack_require__(3)), htmlMessage = (utils.subscribe, utils.elements, utils.settings, utils.log, __webpack_require__(50)), htmlLongMessage = __webpack_require__(52);
    module.exports = htmlMessages;
}, /* 52 */
/***/
function(module, exports, __webpack_require__) {
    function htmlLongMessage(message) {
        var time = message[1], msg = message[2], act = message[4], actType = "";
        if (act && act.type) {
            var isMe = act.isMe;
            actType = " msg msg-" + act.type + (isMe ? " me" : " enemy");
        }
        var messageHighlight = _parse.highlight(msg, act), htmlLongMsg = '<div class="pgf-time time">' + time + '</div><div class="pgf-message message"><div class="submessage' + actType + '">' + messageHighlight + "</div></div>";
        return htmlLongMsg;
    }
    var _parse = (__webpack_require__(16), __webpack_require__(3), __webpack_require__(4));
    module.exports = htmlLongMessage;
}, /* 53 */
/***/
function(module, exports, __webpack_require__) {
    var $ = __webpack_require__(16), utils = __webpack_require__(3), _elements = (utils.subscribe, utils["const"], utils.elements), mapData = (utils.log, __webpack_require__(58)), $townsContent = _elements.getTabInner("towns"), init = function() {
        var places = mapData.places, html = "";
        for (var i in places) {
            if (places.hasOwnProperty(i)) {
                var place = places[i];
                html += '<tr class="place-row" data-place-id="' + place.id + '"><td class="size"><span class="badge">' + place.size + '</span></td><td><span class="link-ajax town" data-place-id="' + place.id + '">' + place.name + '</span> <span class="quest"></span></td><td data-city-param="размер экономики"></td><td data-city-param="безопасность"></td><td data-city-param="транспорт"></td><td data-city-param="свобода"></td></tr>';
            }
        }
        html = '<table class="table table-towns table-noborder table-hover-dark table-condensed"><thead><th class="size" title="Размер города">Р</th><th>Название</th><th title="Размер экономики">Э</th><th title="Безопасность">Безоп.</th><th title="Транспорт">Транс.</th><th title="Свобода">Своб.</th></thead><tbody>' + html + "</tbody></table>";
        var $table = $(html).appendTo($townsContent);
        window.tables.makeSortable($table);
    };
    init.isInited = !0, module.exports = init;
}, /* 54 */
/***/
function(module, exports, __webpack_require__) {
    function mapDataUpdate(map_version) {
        return $.ajax({
            url: "/dcont/map/region-" + map_version + ".js",
            dataType: "json",
            type: "get"
        }).done(function(map_data) {
            for (var key in mapData) {
                mapData.hasOwnProperty(key) && delete mapData[key];
            }
            $.extend(mapData, map_data), _publish("townsInit", map_data);
        });
    }
    var $ = __webpack_require__(16), utils = __webpack_require__(3), _publish = utils.publish, mapData = __webpack_require__(58);
    module.exports = mapDataUpdate;
}, /* 55 */
/***/
function(module, exports, __webpack_require__) {
    function showMapDialogById(id) {
        var place = mapData.places[id];
        showMapDialog(place.pos.x, place.pos.y);
    }
    function showMapDialog(x, y) {
        pgf.ui.dialog.Create({
            fromUrl: pgf.urls["game:map:cell_info"](x, y),
            OnOpened: function(dialog) {
                var jQuery = $;
                pgf.base.InitializeTabs("game-map-cell-info", "map", [ [ jQuery(".pgf-cell-description-button", dialog), "description" ], [ jQuery(".pgf-cell-persons-button", dialog), "persons" ], [ jQuery(".pgf-cell-place-parameters-button", dialog), "place-parameters" ], [ jQuery(".pgf-cell-place-demographics-button", dialog), "place-demographics" ], [ jQuery(".pgf-cell-place-bills-button", dialog), "place-bills" ], [ jQuery(".pgf-cell-place-modifiers-button", dialog), "place-modifiers" ], [ jQuery(".pgf-cell-place-chronicle-button", dialog), "place-chronicle" ], [ jQuery(".pgf-cell-building-button", dialog), "building" ], [ jQuery(".pgf-cell-map-button", dialog), "map" ], [ jQuery(".pgf-cell-debug-button", dialog), "debug" ] ]), 
                jQuery('[rel="tooltip"]', dialog).tooltip(pgf.base.tooltipsArgs), widgets.abilities && (widgets.abilities.UpdateButtons(), widgets.abilities.RenderAbility(pgf.game.constants.abilities.building_repair), 
                jQuery(".angel-ability", dialog).toggleClass("pgf-hidden", !1));
            },
            OnClosed: function(dialog) {
                pgf.base.HideTooltips(dialog);
            }
        });
    }
    var $ = __webpack_require__(16), pgf = __webpack_require__(17), widgets = window.widgets, mapData = __webpack_require__(58);
    module.exports = showMapDialogById;
}, /* 56 */
/***/
function(module, exports, __webpack_require__) {
    function townQuestUpdate(quests) {
        init.isInited ? (_prevArguments.forEach(function(args) {
            doJob.apply(this, args);
        }), deleteArguments(), doJob(quests)) : saveArguments(quests);
    }
    function saveArguments() {
        _prevArguments.push(arguments);
    }
    function deleteArguments() {
        _prevArguments = [];
    }
    function doJob(quests) {
        $(".place-row .quest").html("");
        for (var questsIndex = 0; questsIndex < quests.length; questsIndex++) {
            for (var quest = quests[questsIndex], actors = quest.actors, i = 0; i < actors.length; i++) {
                var actor = actors[i], isFrom = 0 === i && actors.length > 1, actorType = actor[0], actorTypeId = +actor[1], placeId = 1 === actorTypeId ? actor[2].id : actor[2].place, $placeRow = $('.place-row[data-place-id="' + placeId + '"]'), $townQuest = $placeRow.find(".quest"), questHtml = (isFrom ? '<span class="glyphicon glyphicon-arrow-right"></span>' : '<span class="glyphicon glyphicon-arrow-left"></span>') + '<span class="quest-icon-mini pgf-quest-icon ' + quest.type + '" title="' + actorType + '"></span> ';
                $townQuest.append(questHtml);
            }
        }
    }
    var $ = __webpack_require__(16), utils = __webpack_require__(3), _subscribe = utils.subscribe, init = (utils["const"], utils.elements, utils.settings, utils.log, 
    __webpack_require__(53)), _prevArguments = [];
    _subscribe("questUpdate", function(quest) {
        townQuestUpdate(quest);
    }), module.exports = townQuestUpdate;
}, /* 57 */
/***/
function(module, exports, __webpack_require__) {
    function townParams(mapData) {
        var places = mapData.places;
        for (var i in places) {
            places.hasOwnProperty(i) && !function(placeIndex) {
                var place = places[placeIndex];
                requestPlace(place.pos.x, place.pos.y).done(function(html) {
                    var parsed = parsePlaceHtml(html), $placeRow = $('.place-row[data-place-id="' + placeIndex + '"]');
                    parsed.cityParams.forEach(function(item) {
                        var val = item.value;
                        100 > val && (val = "&nbsp;" + val), $placeRow.children('[data-city-param="' + item.name + '"]').html(val);
                    });
                });
            }(i);
        }
    }
    function parsePlaceHtml(html) {
        var $info = $(html), cityParams = [], $cityParamsRows = $info.find("#pgf-cell-place-parameters").find("tr").slice(1);
        return $cityParamsRows.each(function() {
            var $row = $(this), paramName = $.trim($row.children("th").first().text()), valueText = $row.children("td").first().text(), value = parseFloat(valueText);
            cityParams.push({
                name: paramName,
                value: value
            });
        }), {
            cityParams: cityParams
        };
    }
    function requestPlace(x, y) {
        return $.ajax({
            url: "/game/map/cell-info?x=" + x + "&y=" + y + "&_=" + +new Date(),
            method: "get",
            dataType: "html"
        });
    }
    var $ = __webpack_require__(16);
    module.exports = townParams;
}, /* 58 */
/***/
function(module) {
    /**
	 * @type {Object} mapData
	 * @type {Array} mapData.places
	 */
    module.exports = {};
}, /* 59 */
/***/
function(module, exports, __webpack_require__) {
    function drawArchiveGroups(archiveGroups) {
        for (var levelIndex = 0, levelsLog = _log.get("levelsLog") || [], i = 0; i < archiveGroups.length; i++) {
            for (var group = archiveGroups[i], ts = group.ts[1], lv = levelsLog[levelIndex] || []; ts > lv[0]; ) {
                levelIndex++;
                var lvlHtml = '<div class="level">' + lv[1] + " уровень!</div>";
                $archiveContent.prepend(lvlHtml), lv = levelsLog[levelIndex] || [];
            }
            drawArchiveGroup(archiveGroups[i], i, archiveGroups);
        }
    }
    function drawArchiveGroup(archiveGroup, index, archiveGroups) {
        var groupLink, isOpen = _settings.settingsValues.groupOpenOnDefault, groupType = archiveGroup.broken ? "broken" : archiveGroup.type;
        archiveGroup.mobId && (groupLink = "/guide/mobs/" + archiveGroup.mobId);
        var htmlGroupIcon = _const.ACTION_TYPE_ICONS[groupType] || "";
        htmlGroupIcon = groupLink ? '<a class="action-icon ' + groupType + '" href="' + groupLink + '" target="_blank">' + htmlGroupIcon + "</a>" : '<span class="action-icon ' + groupType + '">' + htmlGroupIcon + "</span>";
        var title = archiveGroup.text || "неизвестное действие", htmlTitle = '<span class="action-name">' + title + "</span>", timeStart = archiveGroup.ts[0], timeEnd = archiveGroup.ts[1], archiveGroupNext = archiveGroups[index + 1];
        if ("fight" !== groupType && archiveGroupNext && archiveGroupNext.ts) {
            var timeStartNext = archiveGroupNext.ts[0];
            120 > timeStartNext - timeEnd && (// проверка на случай сломанной группы (3)
            timeEnd = timeStartNext);
        }
        var timeSpan = timeEnd - timeStart, htmlTime = /*'<span class="glyphicon glyphicon-time"></span> ' +*/
        '<span class="group-time ' + (timeSpan > 600 ? "bad" : timeSpan > 300 ? "average" : "") + '">' + _utils.timeSpan(timeSpan) + "</span> ", htmlGroupList = "";
        if (!archiveGroup.total || "fight" !== archiveGroup.type && "fight-god" !== archiveGroup.type) {
            var actName = _const.ACTION_TYPE_TEXTS[archiveGroup.type || "undefined"];
            archiveGroup.broken && (actName = _const.ERROR_CODES[archiveGroup.broken || 1]), htmlGroupList = '<span class="stats-archive">' + actName + "</span>";
        } else {
            htmlGroupList = '<span class="stats-archive stats-archive-me">' + drawArchiveActStat(archiveGroup.total.me) + '</span><span class="stats-archive stats-archive-enemy">' + drawArchiveActStat(archiveGroup.total.enemy) + "</span>";
        }
        var html = '<div class="group-title">' + htmlGroupIcon + htmlTime + htmlTitle + '</div><div class="group-controls"><span class="group-toggle on-close text-muted glyphicon glyphicon-chevron-up"></span><span class="group-toggle on-open text-muted glyphicon glyphicon-chevron-down"></span></div><div class="archive-log-list on-open">' + htmlGroupList + "</div>";
        html = '<div class="group' + (isOpen ? " open" : "") + '" data-index="' + index + '">' + html + "</div>", $archiveContent.prepend(html);
    }
    function drawArchiveActStat(stats) {
        //			html += JSON.stringify(stats)
        for (var types = [ "dmgSum" ].concat(_const.FIGHT), html = "", i = 0; i < types.length; i++) {
            var type = types[i];
            if (stats[type]) {
                var stat = stats[type], htmlStat = "", htmlStatName = _icons[type], count = stat.count, sum = stat.sum;
                isActType("FIGHT_COUNTS", type) ? htmlStat += count + "x" + htmlStatName : "dmgSum" === type ? htmlStat += htmlStatName + "=<b>" + sum + "</b> " : (htmlStat += count + "x" + htmlStatName, 
                htmlStat += "=" + sum + " "), html += '<span class="stats-archive-act stats-archive-' + type + '">' + htmlStat + "</span>";
            }
        }
        return html;
    }
    var $ = __webpack_require__(16), utils = __webpack_require__(3), _subscribe = utils.subscribe, _const = utils["const"], _icons = _const.ICONS, _elements = utils.elements, _utils = utils.utils, _settings = utils.settings, _log = utils.log, isActType = utils.isActType, archiveGroups = __webpack_require__(63), showArchive = _settings.settingsValues.showArchive, $archiveTab = _elements.getTab("archive").toggle(showArchive), $archiveTabContent = _elements.getTabInner("archive");
    $('<span class="link-ajax archive-renew">обновить</span>').appendTo($archiveTabContent).on("click", function() {
        drawArchiveGroups(archiveGroups);
    });
    var $archiveContent = $('<div class="archive-content"></div>').appendTo($archiveTabContent);
    $archiveContent.on("click", ".group-toggle", function() {
        $(this).closest(".group").toggleClass("open");
    }), module.exports = drawArchiveGroups, _subscribe("settingsChange", function(key, value) {
        "showArchive" === key && (showArchive = value, $archiveTab.toggle(showArchive), showArchive || $archiveContent.html(""));
    });
}, /* 60 */
/***/
function(module, exports, __webpack_require__) {
    function loadArchiveGroups() {
        var _archiveGroups = _log.get("archiveGroups") || [];
        _archiveGroups.sort(function(a, b) {
            return a.ts[0] - b.ts[0];
        });
        for (var i = 0; i < _archiveGroups.length - 1; i++) {
            /* remove doubles */
            _archiveGroups[i].ts[0] === _archiveGroups[i + 1].ts[0] && (_archiveGroups.splice(i, 1), i--);
        }
        _archiveGroups.map(upgradeArchiveGroup), archiveGroups = _archiveGroups;
    }
    var utils = (__webpack_require__(16), __webpack_require__(3)), _log = utils.log, archiveGroups = __webpack_require__(63), upgradeArchiveGroup = __webpack_require__(73);
    module.exports = loadArchiveGroups;
}, /* 61 */
/***/
function(module, exports, __webpack_require__) {
    function saveArchiveGroups() {
        var max = _settings.settingsValues.maxArchiveLength || _const.MAX_ARCHIVE_LENGTH;
        archiveGroups = archiveGroups.slice(archiveGroups.length - max);
        var toSave = archiveGroups.map(downgradeArchiveGroup);
        _log.set("archiveGroups", toSave);
    }
    var archiveGroups = __webpack_require__(63), downgradeArchiveGroup = __webpack_require__(71), utils = __webpack_require__(3), _const = utils["const"], _settings = utils.settings, _log = utils.log;
    module.exports = saveArchiveGroups;
}, /* 62 */
/***/
function(module, exports, __webpack_require__) {
    function addArchiveGroup(group) {
        if (group) {
            var archiveGroup = countArchiveFromGroup(group);
            if (archiveGroup) {
                var lastStatGroup = archiveGroups[archiveGroups.length - 1];
                if (lastStatGroup && lastStatGroup.ts[0] !== archiveGroup.ts[0]) {
                    if (lastStatGroup.ts[0] < archiveGroup.ts[0]) {
                        archiveGroups.push(archiveGroup);
                    } else {
                        for (var isInArr = !1, i = 0; i < archiveGroups.length; i++) {
                            var sg = archiveGroups[i];
                            if (sg.ts[0] === archiveGroup.ts[0]) {
                                archiveGroups[i] = archiveGroup, isInArr = !0;
                                break;
                            }
                        }
                        isInArr || (archiveGroups.push(archiveGroup), archiveGroups.sort(function(a, b) {
                            return a.ts[0] - b.ts[0];
                        }));
                    }
                } else {
                    /* последняя группа обновляется каждый ход*/
                    archiveGroups[archiveGroups.length - 1] = archiveGroup;
                }
            }
        }
    }
    var archiveGroups = __webpack_require__(63), countArchiveFromGroup = __webpack_require__(75);
    module.exports = addArchiveGroup;
}, /* 63 */
/***/
function(module) {
    module.exports = [];
}, /* 64 */
/***/
function(module) {
    module.exports = [];
}, /* 65 */
/***/
function(module, exports, __webpack_require__) {
    function addMessages(messagesList) {
        for (var i = 0; i < messagesList.length; i++) {
            addMessage(messagesList[i]);
        }
        return messagesGrouped;
    }
    /*
	data: {
		actionName: "пытается одолеть волка"
		info_link: "/guide/mobs/7/info"
		type: "fight"
		typeId: 3
	}*/
    function addMessage(message) {
        function addToLastGroup(message, data) {
            var lastG = messagesGrouped[messagesGrouped.length - 1];
            if (data && (lastG.data = $.extend(data, lastG.data)), lastG.messages.length) {
                var prevMsg = lastG.messages[lastG.messages.length - 1];
                message[0] - prevMsg[0] > 1200 && (// hole in messages 20 min
                lastG.data.isBroken = 4);
            }
            return lastG.messages.push(message), lastG;
        }
        function finishGroup(data) {
            var lastG = messagesGrouped[messagesGrouped.length - 1];
            delete lastG.data.unfinished, lastG.data.fightStarted && (lastG.data.isBroken = 3), data && (lastG.data = $.extend(data, lastG.data)), _publish("groupFinished", lastG, messagesGrouped.length - 1);
        }
        function newGroup(message, data) {
            var newG = {
                data: {
                    unfinished: 1
                },
                messages: []
            };
            data && (newG.data = $.extend(data, newG.data)), message && newG.messages.push(message), messagesGrouped[messagesGrouped.length] = newG, _publish("groupStarted", newG, messagesGrouped.length - 1);
        }
        var currActionName, currType, currInfoLink, currTypeId, grData, actionName, hero = message[3], act = message[4], action = hero.action || !1, currGr = messagesGrouped[messagesGrouped.length - 1], isFirstGrouop = !currGr;
        if (isFirstGrouop ? /* самая первая группа */
        currGr = {
            data: {}
        } : (currActionName = currGr.data.actionName, currType = currGr.data.type, currInfoLink = currGr.data.info_link, currTypeId = currGr.data.typeId), action) {
            actionName = action.description;
            var actionTypeId = action.type, actionType = _const.ACTION_TYPE_NAMES[actionTypeId], actionInfoLink = action.info_link;
            currActionName || (currGr.data.actionName = currActionName = actionName), currType || (currGr.data.type = currType = actionType), currInfoLink || (currGr.data.info_link = currInfoLink = actionInfoLink), 
            currTypeId || (currGr.data.typeId = currTypeId = actionTypeId), grData = {
                actionName: actionName,
                type: actionType,
                info_link: actionInfoLink,
                typeId: actionTypeId
            }, isFirstGrouop && (grData.isBroken = 1);
        }
        if (act) {
            var actType = act.type, isFightStart = isActType("FIGHT_START", actType), isFightEnd = isActType("LOOT", actType);
            if (("godheal" === actType || "godhit" === actType) && (grData = $.extend(grData, {
                god: 1
            })), isFightStart) {
                //fight started, not finished
                return isFirstGrouop || finishGroup(), void newGroup(message, {
                    fightStarted: 1
                });
            }
            if (isFightEnd) {
                if (isFirstGrouop) {
                    newGroup(message, grData);
                } else {
                    var lastG = addToLastGroup(message, {
                        actionName: "в бою",
                        type: "fight",
                        info_link: "",
                        typeId: 3
                    });
                    lastG.data.fightStarted ? (delete lastG.data.fightStarted, 4 !== lastG.data.isBroken && 5 !== lastG.data.isBroken && delete lastG.data.isBroken) : lastG.data.isBroken = 2, 
                    finishGroup();
                }
                return void (action && actionName !== currActionName && newGroup([ message[0], message[1], actionName, !1, !1 ], grData));
            }
            currGr.messages && currGr.messages.length && !currGr.data.fightStarted && isActType("FIGHT", act.type) && (grData = $.extend(grData, {
                isBroken: 5
            }));
        }
        return action && actionName && currActionName && actionName !== currActionName ? (finishGroup(), void newGroup(message, grData)) : void (isFirstGrouop ? newGroup(message, grData) : addToLastGroup(message, grData));
    }
    var $ = __webpack_require__(16), utils = __webpack_require__(3), _const = utils["const"], _publish = utils.publish, isActType = utils.isActType, messagesGrouped = __webpack_require__(64);
    module.exports = addMessages;
}, /* 66 */
/***/
function(module, exports, __webpack_require__) {
    function drawFakeMessage(message) {
        var $lastGroup = $groupsContent.children(".group").first(), html = _shortMessages.htmlLongMessage(message);
        $lastGroup.prepend(html);
    }
    var utils = __webpack_require__(3), _elements = utils.elements, _shortMessages = __webpack_require__(43), $groupsContent = _elements.getTabInner("group");
    module.exports = drawFakeMessage;
}, /* 67 */
/***/
function(module, exports, __webpack_require__) {
    function drawMessages(messagesGrouped) {
        for (var html = "", i = 0; i < messagesGrouped.length; i++) {
            html = drawGroup(messagesGrouped[i], i) + html;
        }
        $groupsContent.html(html);
    }
    var utils = __webpack_require__(3), _elements = utils.elements, drawGroup = __webpack_require__(72), $groupsContent = _elements.getTabInner("group");
    module.exports = drawMessages;
}, /* 68 */
/***/
function(module, exports, __webpack_require__) {
    function redrawGroup(index, isOpen) {
        var $group = $groupsContent.children('.group[data-index="' + index + '"]');
        $group.length ? ("undefined" != typeof isOpen && $group.toggleClass("open", isOpen), $group.html(drawGroupInner(messagesGrouped[index], messagesGrouped[index + 1]))) : $groupsContent.prepend(drawGroup(messagesGrouped[index], index, isOpen));
    }
    var utils = __webpack_require__(3), _elements = utils.elements, messagesGrouped = __webpack_require__(64), drawGroup = __webpack_require__(72), drawGroupInner = __webpack_require__(74), $groupsContent = _elements.getTabInner("group");
    module.exports = redrawGroup;
}, /* 69 */
/***/
function(module, exports, __webpack_require__) {
    function drawStatsSide(archiveGroups) {
        archiveGroups = archiveGroups || _archive.archiveGroups;
        var htmlMe, groups = _settings.settingsValues.statsByLevel ? groupsByLevel(archiveGroups, _settings.settingsValues.statsByLevelValue) : archiveGroups, statsTotal = countStatsTotal(groups, _settings.settingsValues.statsActionsCount), mobId = _settings.settingsValues.statsByMob && (_settings.settingsValues.statsByMobId || statsTotal.lastMobId), html = "";
        htmlMe = drawStatsSideByActor(_settings.settingsValues.myStatsByMob && mobId ? statsTotal.meByMob[mobId] : statsTotal.me);
        var htmlEnemy;
        htmlEnemy = mobId ? '<tr class="unhover"><td class="stats-against" colspan="5"><a href="/guide/mobs/' + mobId + '" target="_blank">' + _const.MOBS[mobId] + "</a></td></tr>" + drawStatsSideByActor(statsTotal.enemyByMob[mobId]) : '<tr class="unhover"><td class="stats-against" colspan="5">бестии</td></tr>' + drawStatsSideByActor(statsTotal.enemy);
        for (var statsTable = '<table class="table table-condensed table-noborder table-hover-dark table-stats"><tr class="unhover"><th class="stats-name"></th><th class="stats-average" title="среднее значение">средн</th><th class="stats-count" title="количество срабатываний из 100 ударов">шанс</th><th class="stats-sum" title="доля от общего урона">урон</th><th class="stats-bonus" title="прибавка к урону от умения">эфф</th></tr><tbody class="stats-me">' + htmlMe + '</tbody><tbody class="stats-enemy">' + htmlEnemy + "</tbody></table>", loot = statsTotal.loot, htmlLoot = '<span class="stats-name" title="Поднял/Пусто/Выбросил/Умер">' + _icons.pickup + '</span> <span title="Поднял">' + loot.pickup + '</span> / <span title="Пусто">' + loot.empty + '</span> / <span title="Выбросил">' + loot.drop + '</span> / <span title="Умер">' + loot.death + "</span>", htmlTime = "<b>" + statsTotal.actionsSum + "</b> " + _utils.declensionByNumber(statsTotal.actionsSum, [ "действие", "действия", "действий" ]) + " за " + _utils.timeSpan(statsTotal.actionsTime) + "<br />", interestAverageActions = [ {
            type: "fight,rest",
            text: "бой/отдых",
            icon: '<span class="glyphicon glyphicon-flag"></span>'
        }, {
            type: "walk",
            text: "в пути"
        }, {
            type: "quest,city,nearcity,noeffect",
            text: "задания"
        }, {
            type: "idle",
            text: "безделье"
        }, {
            type: "dead",
            text: "воскресание"
        }, {
            type: "energy",
            text: "восстановление"
        }, {
            type: "companionHeal",
            text: "уход на спутником"
        }, {
            type: "trade,equip",
            text: "торговля и экипировка"
        }, {
            type: "broken,proxy,pvp,undefined",
            text: "остальное"
        }, {
            title: "<br/><b>В среднем:</b>"
        }, {
            type: "fight,rest",
            countType: "fight",
            countAverage: 1,
            icon: '<span class="glyphicon glyphicon-flag"></span>',
            text: "на бой с учетом отдыха"
        }, {
            type: "fight",
            countAverage: 1,
            text: "на бой"
        }, {
            type: "rest",
            countAverage: 1,
            text: "на отдых"
        } ], i = 0; i < interestAverageActions.length; i++) {
            var act = interestAverageActions[i];
            if (act.title) {
                htmlTime += act.title + "<br />";
            } else {
                for (var type, types = act.type.split(","), count = 0, countTotal = 0, time = 0, j = 0; j < types.length; j++) {
                    type = types[j], time += statsTotal.actionsTimes[type] || 0, countTotal += statsTotal.actionsCounts[type] || 0, act.countType || (count += statsTotal.actionsCounts[type]);
                }
                type = types[0], act.countType && (count = statsTotal.actionsCounts[act.countType]);
                var timePercent = Math.round(time / statsTotal.actionsTime * 1e3) / 10;
                act.countAverage && (time /= count), time && (htmlTime += '<span class="action-icon ' + (act.countType || type) + '" title="' + types.map(function(item) {
                    return _const.ACTION_TYPE_TEXTS[item];
                }).join(", ") + '">' + (act.icon || _const.ACTION_TYPE_ICONS[type]) + "</span>", htmlTime += act.countAverage ? _utils.timeSpan(time) : '<span title="' + _utils.timeSpan(time) + '">' + timePercent.toFixed(1) + "%</span> - ", 
                htmlTime += " " + act.text + " (" + countTotal + ")<br />");
            }
        }
        html += statsTable, html += '<div class="stats-side stats-loot">' + htmlLoot + "</div>", html += '<div class="stats-side stats-time">' + htmlTime + "</div>", $stats.html(html);
    }
    function drawStatsSideByActor(stats) {
        var html = "";
        if (!stats) {
            return html;
        }
        for (var types = [].concat(_const.ACTIVE, [ "dmgSum" ], _const.PASSIVE), i = 0; i < types.length; i++) {
            var type = types[i], isDot = isActType("DOT", type), isPassive = isActType("PASSIVE", type), sumTo = _const.SUM_TO_MAIN[type], dmgSum = stats.dmgSum || {}, hit = stats.hit || {};
            if (stats[type]) {
                var stat = stats[type], title = _const.ACTION_TRANSLATE[type] + (sumTo ? ", включено в " + _const.ACTION_TRANSLATE[sumTo] : isPassive ? ", не учитывается в сумме" : ""), htmlStat = '<td class="stats-name" title="' + title + '">' + _icons[type] + "</td> ", count = stat.count, sum = stat.sum, average = Math.round(sum / count * 100) / 100 || 0, hitCount = hit.count, hitSum = hit.sum, totalSum = dmgSum.sum, chance = "dmgSum" === type ? 100 : count / (hitCount + count) * 100, chanceText = "hit" === type ? "-" : chance >= 100 ? Math.round(10 * chance) / 10 : chance.toFixed(2), countText = "сработал " + _utils.declensionByNumber(count, [ "раз", "раза", "раз" ], 1);
                if (sum) {
                    var averagePercents = sum / count * hitCount / hitSum * 100, averagePercentsText = Math.round(100 * averagePercents) / 100 + "", dmgPercents = sum / totalSum * 100, dmgPercentsText = "" + (100 > dmgPercents ? dmgPercents.toFixed(1) : Math.round(dmgPercents)) + "%", sumText = "всего " + _utils.declensionByNumber(sum, [ "урон", "урона", "урона" ], 1), bonusPercent = Math.round((averagePercents - 100) * chance) / 100, bonusPercentText = bonusPercent && !isDot ? (bonusPercent >= 0 ? "+" : "&ndash;") + Math.abs(bonusPercent) + "%" : "", bpTranslateText = (averagePercentsText >= 100 ? "+" : "&ndash;") + Math.abs(Math.round(100 * averagePercentsText - 1e4) / 100) + "% x " + chanceText;
                    htmlStat += '<td class="stats-average" title="' + averagePercentsText + '%">' + average.toFixed(2) + "</td>", htmlStat += '<td class="stats-count" title="' + countText + '">' + chanceText + "</td>", 
                    htmlStat += '<td class="stats-sum" title="' + sumText + '">' + dmgPercentsText + "</td>", htmlStat += '<td class="stats-bonus" title="' + bpTranslateText + '">' + bonusPercentText + "</td>";
                } else {
                    htmlStat += '<td class="stats-average"></td>', htmlStat += '<td class="stats-count" title="' + countText + '">' + chanceText + "</td>", htmlStat += '<td class="stats-count"></td>', 
                    htmlStat += '<td class="stats-sum"></td>';
                }
                html += '<tr class="stats-row stats-row-' + type + '">' + htmlStat + "</tr>";
            }
        }
        return html;
    }
    function groupsByLevel(archiveGroups, level) {
        var lv1, lv2, levelsLog = _log.get("levelsLog") || [];
        level ? (lv1 = levelsLog.filter(function(item) {
            return item[1] === level;
        })[0] || [], lv2 = levelsLog.filter(function(item) {
            return item[1] === level + 1;
        })[0] || []) : (lv1 = levelsLog[levelsLog.length - 1], lv2 = []);
        for (var time1 = lv1[0], time2 = lv2[0], i1 = null, i2 = null, i = 0; i < archiveGroups.length; i++) {
            var ts1 = archiveGroups[i].ts[0], ts2 = archiveGroups[archiveGroups.length - 1 - i].ts[0];
            null === i1 && ts1 > time1 && (i1 = i), null === i2 && time2 > ts2 && (i2 = archiveGroups.length - 1 - i);
        }
        return null === i1 || time2 ? archiveGroups.slice(i1 || 0, i2 || 0) : archiveGroups.slice(i1);
    }
    var utils = (__webpack_require__(16), __webpack_require__(3)), _const = utils["const"], _icons = _const.ICONS, _elements = utils.elements, _utils = utils.utils, _settings = utils.settings, _log = utils.log, isActType = utils.isActType, _archive = __webpack_require__(45), countStatsTotal = __webpack_require__(70);
    _elements.addTab("stats-side", {
        zone: "equip",
        title: "стат",
        content: '<div class="stats" />'
    }), _elements.activeTab("stats-side");
    var $stats = _elements.getTabInner("stats-side");
    module.exports = drawStatsSide;
}, /* 70 */
/***/
function(module, exports, __webpack_require__) {
    function countStatsTotal(archiveGroups, count) {
        archiveGroups = archiveGroups || _archive.archiveGroups, count = count || archiveGroups.length;
        for (var mobId, me = {}, enemy = {}, fights = 0, loot = {
            pickup: 0,
            empty: 0,
            drop: 0,
            death: 0
        }, meByMob = {}, enemyByMob = {}, actionsTimes = {}, actionsCounts = {}, actionsSum = 0, actionsTime = 0, fightRestTime = 0, otherTime = 0, i = Math.max(archiveGroups.length - count, 0); i < archiveGroups.length; i++) {
            var fullStats = archiveGroups[i], type = fullStats.broken ? "broken" : fullStats.type;
            if (fullStats.ts && "broken" !== type) {
                if ("fight" === type) {
                    mobId = fullStats.mobId, addToStats(me, fullStats.total.me), addToStats(enemy, fullStats.total.enemy), meByMob[mobId] = meByMob[mobId] || {}, addToStats(meByMob[mobId], fullStats.total.me), 
                    enemyByMob[mobId] = enemyByMob[mobId] || {}, addToStats(enemyByMob[mobId], fullStats.total.enemy), fights++;
                    var lt = fullStats.loot;
                    lt && loot[lt]++;
                }
                var nextFullStats = archiveGroups[i + 1], timeStart = fullStats.ts[0], timeEnd = fullStats.ts[1];
                if ("fight" !== type && nextFullStats && nextFullStats.ts) {
                    var timeStartNext = nextFullStats.ts[0];
                    120 > timeStartNext - timeEnd && (// проверка на случай сломанной группы (2)
                    timeEnd = timeStartNext);
                }
                var time = timeEnd - timeStart;
                //				lastTimeEnd = fullStats.ts[1];
                "fight" === type || "rest" === type ? fightRestTime += time : otherTime += time, type = type || "undefined", actionsTimes[type] = (actionsTimes[type] || 0) + time, 
                actionsCounts[type] = (actionsCounts[type] || 0) + 1, actionsTime += time, actionsSum++;
            }
        }
        var statsTotal = {
            fights: fights,
            fightRestTime: fightRestTime,
            otherTime: otherTime,
            actionsTime: actionsTime,
            actionsTimes: actionsTimes,
            actionsCounts: actionsCounts,
            actionsSum: actionsSum,
            loot: loot,
            me: me,
            enemy: enemy,
            meByMob: meByMob,
            enemyByMob: enemyByMob
        };
        return mobId && (statsTotal.lastMobId = mobId), statsTotal;
    }
    function addToStats(addTo, addFrom) {
        for (var type in addFrom) {
            if (addFrom.hasOwnProperty(type)) {
                var st = addFrom[type];
                addTo[type] = addTo[type] || {
                    sum: 0,
                    count: 0
                }, "number" == typeof st ? addTo[type].count += st : (addTo[type].count += st.count, addTo[type].sum += st.sum);
            }
        }
    }
    var _archive = __webpack_require__(45);
    module.exports = countStatsTotal;
}, /* 71 */
/***/
function(module, exports, __webpack_require__) {
    function downgradeArchiveGroup(fullStats) {
        var archiveGroup = $.extend({}, fullStats);
        return delete archiveGroup.total, delete archiveGroup.level, archiveGroup;
    }
    var $ = __webpack_require__(16);
    module.exports = downgradeArchiveGroup;
}, /* 72 */
/***/
function(module, exports, __webpack_require__) {
    function drawGroup(group, index, isOpen) {
        isOpen = isOpen || _settings.settingsValues.groupOpenOnDefault;
        var html = '<div class="group' + (isOpen ? " open" : "") + '" data-index="' + index + '">' + drawGroupInner(group, messagesGrouped[index + 1]) + "</div>";
        return html;
    }
    var utils = __webpack_require__(3), _settings = utils.settings, drawGroupInner = __webpack_require__(74), messagesGrouped = __webpack_require__(64);
    module.exports = drawGroup;
}, /* 73 */
/***/
function(module, exports, __webpack_require__) {
    function upgradeArchiveGroup(archiveGroup) {
        /* подсчет всех сумм из архива */
        function countTotalFromArchive(archiveGroupFrom) {
            var addTo = {
                dmgSum: {
                    count: 0,
                    sum: 0
                }
            };
            for (var type in archiveGroupFrom) {
                if (archiveGroupFrom.hasOwnProperty(type)) {
                    var count, sum, vals = archiveGroupFrom[type], isPassive = isActType("PASSIVE", type), isHeal = "heal" === type;
                    "number" == typeof vals ? (count = vals, sum = 0) : (count = vals.length, sum = vals.reduce(function(pv, cv) {
                        return pv + cv;
                    }, 0) || 0);
                    var av, critMin, critVals, critCount = 0;
                    if (addTo[type] = addTo[type] || {
                        sum: 0,
                        count: 0
                    }, "hit" === type && sum && (av = sum / count, critMin = 1.35 * av, critVals = vals.filter(function(item) {
                        return item > critMin;
                    }), critCount = critVals.length), critCount) {
                        addTo.crit = addTo.crit || {
                            sum: 0,
                            count: 0
                        };
                        var critSum = critVals.reduce(function(pv, cv) {
                            return pv + cv;
                        }, 0) || 0;
                        addTo.crit.count += critCount, addTo.crit.sum += critSum;
                    }
                    addTo[type].count += count, addTo[type].sum += sum;
                    var typeSumTo = _const.SUM_TO_MAIN[type];
                    typeSumTo && (addTo[typeSumTo] = addTo[typeSumTo] || {
                        sum: 0,
                        count: 0
                    }, addTo[typeSumTo].sum += sum), isHeal || (isPassive || (addTo.dmgSum.count += count), addTo.dmgSum.sum += sum);
                }
            }
            return addTo;
        }
        return archiveGroup && archiveGroup.ts ? (archiveGroup.me && $.extend(archiveGroup, {
            total: {
                me: countTotalFromArchive(archiveGroup.me, "me"),
                enemy: countTotalFromArchive(archiveGroup.enemy, "enemy", 66 === archiveGroup.mobId)
            }
        }), archiveGroup) : archiveGroup;
    }
    /** добавляет к архивам поле total */
    var $ = __webpack_require__(16), utils = __webpack_require__(3), _const = utils["const"], isActType = (__webpack_require__(63), utils.isActType);
    module.exports = upgradeArchiveGroup;
}, /* 74 */
/***/
function(module, exports, __webpack_require__) {
    function drawGroupInner(group, groupNext) {
        if (!group || !group.messages || !group.messages.length) {
            return "";
        }
        var messages = group.messages, groupData = group.data, messageFirst = messages[0], messageLast = messages[messages.length - 1], groupType = groupData.type, groupLink = (groupData.info_link || "").replace("/info", ""), htmlGroupIcon = _const.ACTION_TYPE_ICONS[groupType] || "", iconAttr = 'class="action-icon ' + groupType + '" title="' + _const.ACTION_TYPE_TEXTS[groupType] + '"';
        if (groupData.isBroken && !groupData.unfinished) {
            htmlGroupIcon = _const.ACTION_TYPE_ICONS.broken;
            var title = _const.ERROR_CODES[groupData.isBroken || 1];
            iconAttr = 'class="action-icon broken" title="' + title + '"';
        }
        htmlGroupIcon = groupLink ? "<a " + iconAttr + ' href="' + groupLink + '" target="_blank">' + htmlGroupIcon + "</a>" : "<span " + iconAttr + '">' + htmlGroupIcon + "</span>";
        var htmlTitle = '<span class="action-name">' + (groupData.actionName || "неизвестное действие") + "</span>", timeStart = messageFirst[0], timeEnd = messageLast[0];
        if ("fight" !== groupType && groupNext && groupNext.messages[0]) {
            var timeStartNext = groupNext.messages[0] && groupNext.messages[0][0];
            120 > timeStartNext - timeEnd && (// проверка на случай сломанной группы
            timeEnd = timeStartNext);
        }
        var timeSpan = timeEnd - timeStart, htmlTime = /*'<span class="glyphicon glyphicon-time"></span> ' +*/
        '<span class="group-time ' + (timeSpan > 600 ? "bad" : timeSpan > 300 ? "average" : "") + '">' + _utils.timeSpan(timeSpan) + "</span> ", htmlGroupList = _shortMessages.htmlMessages(messages), html = '<div class="group-title on-close' + (groupData.god ? " god" : "") + '">' + htmlGroupIcon + htmlTime + htmlTitle + '</div><div class="group-controls"><span class="group-toggle on-close text-muted glyphicon glyphicon-chevron-up"></span><span class="group-toggle on-open text-muted glyphicon glyphicon-chevron-down"></span></div><ul class="unstyled pgf-log-list on-open">' + htmlGroupList + "</ul>";
        return html;
    }
    var utils = (__webpack_require__(16), __webpack_require__(3)), _const = (utils.subscribe, utils["const"]), _utils = (utils.elements, utils.settings, utils.log, 
    utils.utils), _shortMessages = __webpack_require__(43);
    module.exports = drawGroupInner;
}, /* 75 */
/***/
function(module, exports, __webpack_require__) {
    function countArchiveFromGroup(group) {
        var groupData = group.data, messages = group.messages;
        if (!messages.length) {
            return !1;
        }
        var isBroken = groupData.isBroken, dataType = groupData.type, first = messages[0], last = messages[messages.length - 1], archiveGroup = $.extend({}, {
            ts: [ first[0], last[0] ],
            type: dataType,
            text: groupData.actionName,
            broken: isBroken
        });
        if ("fight" === dataType && !isBroken) {
            if (archiveGroup.me = {}, archiveGroup.enemy = {}, groupData.info_link) {
                var mobId = groupData.info_link.replace("/guide/mobs/", "").replace("/info", "");
                +mobId && (archiveGroup.mobId = +mobId);
            }
            /* пересчет последней группы */
            for (var i = 0; i < messages.length; i++) {
                var message = messages[i], act = message[4];
                if (act) {
                    var type = act.type;
                    /* тип фразы */
                    if (isActType("FIGHT", type)) {
                        var isMe = act.isMe, addTo = archiveGroup[isMe ? "me" : "enemy"];
                        isActType("FIGHT_VALUES", type) ? (addTo[type] = addTo[type] || [], addTo[type].push(act.value)) : (addTo[type] = addTo[type] || 0, addTo[type]++);
                    } else {
                        isActType("LOOT", type) && (archiveGroup.loot = type);
                    }
                }
            }
        }
        return upgradeArchiveGroup(archiveGroup), archiveGroup;
    }
    /** пересчет группы в архив */
    var $ = __webpack_require__(16), utils = __webpack_require__(3), isActType = (utils.subscribe, utils["const"], utils.elements, utils.settings, utils.log, utils.isActType), upgradeArchiveGroup = (__webpack_require__(63), 
    __webpack_require__(73));
    module.exports = countArchiveFromGroup;
} ]);