<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://dungeoncrusher.ru/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AHerostatscalc.js</id>
	<title>MediaWiki:Herostatscalc.js - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://dungeoncrusher.ru/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AHerostatscalc.js"/>
	<link rel="alternate" type="text/html" href="https://dungeoncrusher.ru/w/index.php?title=MediaWiki:Herostatscalc.js&amp;action=history"/>
	<updated>2026-06-01T20:10:40Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://dungeoncrusher.ru/w/index.php?title=MediaWiki:Herostatscalc.js&amp;diff=43630&amp;oldid=prev</id>
		<title>MrGorun: Полностью удалено содержимое страницы</title>
		<link rel="alternate" type="text/html" href="https://dungeoncrusher.ru/w/index.php?title=MediaWiki:Herostatscalc.js&amp;diff=43630&amp;oldid=prev"/>
		<updated>2023-03-20T23:33:03Z</updated>

		<summary type="html">&lt;p&gt;Полностью удалено содержимое страницы&lt;/p&gt;
&lt;a href=&quot;https://dungeoncrusher.ru/w/index.php?title=MediaWiki:Herostatscalc.js&amp;amp;diff=43630&amp;amp;oldid=10262&quot;&gt;Внесённые изменения&lt;/a&gt;</summary>
		<author><name>MrGorun</name></author>
	</entry>
	<entry>
		<id>https://dungeoncrusher.ru/w/index.php?title=MediaWiki:Herostatscalc.js&amp;diff=10262&amp;oldid=prev</id>
		<title>Sadist007: Откат правок Sadist007 (обсуждение) к версии MrGorun</title>
		<link rel="alternate" type="text/html" href="https://dungeoncrusher.ru/w/index.php?title=MediaWiki:Herostatscalc.js&amp;diff=10262&amp;oldid=prev"/>
		<updated>2020-11-18T21:44:12Z</updated>

		<summary type="html">&lt;p&gt;Откат правок &lt;a href=&quot;/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Sadist007&quot; title=&quot;Служебная:Вклад/Sadist007&quot;&gt;Sadist007&lt;/a&gt; (&lt;a href=&quot;/w/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:Sadist007&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Обсуждение участника:Sadist007 (страница не существует)&quot;&gt;обсуждение&lt;/a&gt;) к версии &lt;a href=&quot;/%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:MrGorun&quot; title=&quot;Участник:MrGorun&quot;&gt;MrGorun&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/* Скрипт импортируется через [[MediaWiki:ImportJS]] */&lt;br /&gt;
/*         Автор: АбырвалГ#3393 (Discord)         */&lt;br /&gt;
/*          Калькулятор характеристик героя        */&lt;br /&gt;
&lt;br /&gt;
var statsTable, hero, heroStats, insertRangeSlider, arrRares, listRares,&lt;br /&gt;
    rankCnt, rankDiv, rankLabel, rankInput, rankLabelCnt,&lt;br /&gt;
    doblCnt, doblDiv, doblLabel, doblInput, doblLabelCnt,&lt;br /&gt;
    selectRare, doblCss, doblImg, siegeDiv, siegeCnt;&lt;br /&gt;
 &lt;br /&gt;
function init() {&lt;br /&gt;
    hero = {};&lt;br /&gt;
    heroStats = document.querySelectorAll(&amp;quot;#parent .hero-block-icons&amp;quot;);&lt;br /&gt;
    hero.baseRareName = document.querySelector(&amp;quot;#parent [class^='hero-border']&amp;quot;).className;&lt;br /&gt;
 &lt;br /&gt;
    statsTable = document.querySelectorAll(&amp;quot;#calc_table_out tbody&amp;quot;)[1];&lt;br /&gt;
 &lt;br /&gt;
    targetHeroRare = document.getElementById(&amp;quot;brdHero&amp;quot;);&lt;br /&gt;
    targetHeroRank = document.querySelector(&amp;quot;#calc_table_out b&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
    selectRare = document.getElementById(&amp;quot;slider_stats_ppls_out&amp;quot;);&lt;br /&gt;
    rankDiv = document.getElementById(&amp;quot;slider_stats_rangs_out&amp;quot;);&lt;br /&gt;
    doblDiv = document.getElementById(&amp;quot;slider_stats_dobl_out&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
    doblCss = &amp;quot;hero-border-dobl&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
    doblImg = document.createElement('img');&lt;br /&gt;
    doblImg.src = &amp;quot;https://vignette.wikia.nocookie.net/dungeoncrusher/images/1/14/Доблесть_рамка.png/revision/latest?cb=20200316195856&amp;amp;format=original&amp;amp;path-prefix=ru&amp;quot;;&lt;br /&gt;
    doblImg.className = doblCss;&lt;br /&gt;
    doblImg.hidden = true;&lt;br /&gt;
    targetHeroRare.prepend(doblImg);&lt;br /&gt;
 &lt;br /&gt;
    hero.sum = Number.parseInt(heroStats[0].innerText);&lt;br /&gt;
    hero.hp = Number.parseInt(heroStats[1].innerText);&lt;br /&gt;
    hero.atk = Number.parseInt(heroStats[2].innerText);&lt;br /&gt;
    hero.def = Number.parseInt(heroStats[3].innerText);&lt;br /&gt;
    hero.wis = Number.parseInt(heroStats[4].innerText);&lt;br /&gt;
    hero.agi = Number.parseInt(heroStats[5].innerText);&lt;br /&gt;
    hero.rank = 5500;&lt;br /&gt;
    hero.rare = 25;&lt;br /&gt;
    hero.dobl = 0;&lt;br /&gt;
    &lt;br /&gt;
    siegeDiv = document.getElementById(&amp;quot;switchSiegeTypes&amp;quot;);&lt;br /&gt;
    siegeCnt = 1;&lt;br /&gt;
&lt;br /&gt;
    if (siegeDiv) {&lt;br /&gt;
        for (var i = 0; i &amp;lt; siegeDiv.children.length; i++) {&lt;br /&gt;
            siegeDiv.children[i].setAttribute(&amp;quot;onclick&amp;quot;, &amp;quot;updateSiege(this)&amp;quot;);&lt;br /&gt;
         }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    arrRares = [&lt;br /&gt;
        { key: &amp;quot;ob&amp;quot;, cnt: 1, name: &amp;quot;Обычный&amp;quot;, css: &amp;quot;hero-border-ob&amp;quot;, rank: 10},&lt;br /&gt;
        { key: &amp;quot;neob&amp;quot;, cnt: 1, name: &amp;quot;Необычный&amp;quot;, css: &amp;quot;hero-border-neob&amp;quot;, rank: 25},&lt;br /&gt;
        { key: &amp;quot;redkiy&amp;quot;, cnt: 2, name: &amp;quot;Редкий&amp;quot;, css: &amp;quot;hero-border-redkiy&amp;quot;, rank: 50},&lt;br /&gt;
        { key: &amp;quot;redkiy2&amp;quot;, cnt: 3, name: &amp;quot;Редчайший&amp;quot;, css: &amp;quot;hero-border-redkiy2&amp;quot;, rank: 100},&lt;br /&gt;
        { key: &amp;quot;epic&amp;quot;, cnt: 3, name: &amp;quot;Эпический&amp;quot;, css: &amp;quot;hero-border-epic&amp;quot;, rank: 250},&lt;br /&gt;
        { key: &amp;quot;lega&amp;quot;, cnt: 5, name: &amp;quot;Легендарный&amp;quot;, css: &amp;quot;hero-border-lega&amp;quot;, rank: 500},&lt;br /&gt;
        { key: &amp;quot;mifik&amp;quot;, cnt: 7, name: &amp;quot;Мифический&amp;quot;, css: &amp;quot;hero-border-mifik&amp;quot;, rank: 2500},&lt;br /&gt;
        { key: &amp;quot;bozh&amp;quot;, cnt: 8, name: &amp;quot;Божественный&amp;quot;, css: &amp;quot;hero-border-bozh&amp;quot;, rank: 3250},&lt;br /&gt;
        { key: &amp;quot;bozh2&amp;quot;, cnt: 13, name: &amp;quot;Богоподобный&amp;quot;, css: &amp;quot;hero-border-bozh2&amp;quot;, rank: 4000},&lt;br /&gt;
        { key: &amp;quot;vechn&amp;quot;, cnt: 17, name: &amp;quot;Вечный&amp;quot;, css: &amp;quot;hero-border-vechn&amp;quot;, rank: 4750},&lt;br /&gt;
        { key: &amp;quot;gal&amp;quot;, cnt: 25, name: &amp;quot;Галактический&amp;quot;, css: &amp;quot;hero-border-gal&amp;quot;, rank: 5500}&lt;br /&gt;
    ];&lt;br /&gt;
 &lt;br /&gt;
    listRares = new Map();&lt;br /&gt;
 &lt;br /&gt;
    for (var i in arrRares) {&lt;br /&gt;
        listRares.set(arrRares[i].key, arrRares[i]);&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    selectRare.classList.add(&amp;quot;selectRare&amp;quot;);&lt;br /&gt;
    selectRare.style.display = &amp;quot;flex&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
    rankCnt = document.createElement('input');&lt;br /&gt;
    rankCnt.type = &amp;quot;range&amp;quot;;&lt;br /&gt;
    rankCnt.id = &amp;quot;rankCnt&amp;quot;;&lt;br /&gt;
    rankCnt.min = 0;&lt;br /&gt;
    rankCnt.max = 5500;&lt;br /&gt;
    rankCnt.value = 5500;&lt;br /&gt;
    rankCnt.step = 25;&lt;br /&gt;
    rankCnt.setAttribute(&amp;quot;oninput&amp;quot;, &amp;quot;changeRankCnt()&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
    rankInput = document.createElement('input');&lt;br /&gt;
    rankInput.type = &amp;quot;number&amp;quot;;&lt;br /&gt;
    rankInput.value = rankCnt.value;&lt;br /&gt;
    rankInput.min = rankCnt.min;&lt;br /&gt;
    rankInput.max = rankCnt.max;&lt;br /&gt;
    rankInput.step = rankCnt.step;&lt;br /&gt;
    rankInput.setAttribute(&amp;quot;oninput&amp;quot;, &amp;quot;changeRankInput()&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
    rankDiv.classList.add(&amp;quot;rankRangeSelector&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
    rankLabel = document.createElement('div');&lt;br /&gt;
    rankLabel.innerHTML = 'Кол-во рангов: ';&lt;br /&gt;
 &lt;br /&gt;
    rankDiv.append(rankLabel);&lt;br /&gt;
    rankDiv.append(rankInput);&lt;br /&gt;
    rankDiv.append(rankCnt);&lt;br /&gt;
 &lt;br /&gt;
    doblDiv.classList.add(&amp;quot;doblRangeSelector&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
    doblCnt = document.createElement('input');&lt;br /&gt;
    doblCnt.type = &amp;quot;range&amp;quot;;&lt;br /&gt;
    doblCnt.id = &amp;quot;doblCnt&amp;quot;;&lt;br /&gt;
    doblCnt.min = 0;&lt;br /&gt;
    doblCnt.max = 35;&lt;br /&gt;
    doblCnt.value = 0;&lt;br /&gt;
    doblCnt.setAttribute(&amp;quot;oninput&amp;quot;, &amp;quot;changeDoblCnt()&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
    doblInput = document.createElement('input');&lt;br /&gt;
    doblInput.type = &amp;quot;number&amp;quot;;&lt;br /&gt;
    doblInput.value = doblCnt.value;&lt;br /&gt;
    doblInput.min = doblCnt.min;&lt;br /&gt;
    doblInput.max = doblCnt.max;&lt;br /&gt;
    doblInput.setAttribute(&amp;quot;oninput&amp;quot;, &amp;quot;changeDoblInput()&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
    doblLabel = document.createElement('div');&lt;br /&gt;
    doblLabel.innerHTML = 'Кол-во доблестей: ';&lt;br /&gt;
 &lt;br /&gt;
    doblDiv.append(doblLabel);&lt;br /&gt;
    doblDiv.append(doblInput);&lt;br /&gt;
    doblDiv.append(doblCnt);&lt;br /&gt;
 &lt;br /&gt;
    setBaseRare();&lt;br /&gt;
    addListOfRares();&lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
function formatSum(s, k, i) {&lt;br /&gt;
    return Number.parseInt(s / hero.baseRareCnt * k * &lt;br /&gt;
    (1 + 0.2 * i)).toString().replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ');&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
function updateHeroStats() {&lt;br /&gt;
    var koef = hero.rare *  //редкость текущая&lt;br /&gt;
     siegeCnt * // осадный коэффициент&lt;br /&gt;
        (1 + hero.rank * 0.001) * //ранги&lt;br /&gt;
        (1 + 0.2 * hero.dobl); //доблесть&lt;br /&gt;
    // hero.baseRareCnt базовая редкость&lt;br /&gt;
 &lt;br /&gt;
    // SUM HP ATK DEF WIS AGI&lt;br /&gt;
    for (var i = 1; i &amp;lt;= 8; i++) {&lt;br /&gt;
        statsTable.children[i].children[1].innerHTML = formatSum(hero.sum, koef, i);&lt;br /&gt;
        statsTable.children[i].children[2].innerHTML = formatSum(hero.hp, koef, i);&lt;br /&gt;
        statsTable.children[i].children[3].innerHTML = formatSum(hero.atk, koef, i);&lt;br /&gt;
        statsTable.children[i].children[4].innerHTML = formatSum(hero.def, koef, i);&lt;br /&gt;
        statsTable.children[i].children[5].innerHTML = formatSum(hero.wis, koef, i);&lt;br /&gt;
        statsTable.children[i].children[6].innerHTML = formatSum(hero.agi, koef, i);&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
function setBaseRare() {&lt;br /&gt;
    for (var i in arrRares) {&lt;br /&gt;
        if (arrRares[i].css == hero.baseRareName) {&lt;br /&gt;
            hero.baseRareId = arrRares[i].key;&lt;br /&gt;
            hero.baseRareCnt = arrRares[i].cnt;&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
function changeRankCnt() {&lt;br /&gt;
    hero.rank = Number.parseInt(rankCnt.value);&lt;br /&gt;
    targetHeroRank.innerHTML = rankCnt.value;&lt;br /&gt;
    rankInput.value = Number.parseInt(rankCnt.value);&lt;br /&gt;
 &lt;br /&gt;
    updateHeroStats();&lt;br /&gt;
}&lt;br /&gt;
function changeRankInput() {&lt;br /&gt;
    hero.rank = Number.parseInt(rankInput.value);&lt;br /&gt;
    targetHeroRank.innerHTML = rankInput.value;&lt;br /&gt;
    rankCnt.value = rankInput.value;&lt;br /&gt;
 &lt;br /&gt;
    updateHeroStats();&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
function changeDoblCnt() {&lt;br /&gt;
    hero.dobl = Number.parseInt(doblCnt.value);&lt;br /&gt;
    doblInput.value = doblCnt.value;&lt;br /&gt;
 &lt;br /&gt;
    if (doblInput.value == 0 &amp;amp;&amp;amp; !doblImg.hidden) {&lt;br /&gt;
        doblImg.hidden = true;&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    if (doblInput.value &amp;gt; 0 &amp;amp;&amp;amp; doblImg.hidden) {&lt;br /&gt;
        doblImg.hidden = false;&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    updateHeroStats();&lt;br /&gt;
}&lt;br /&gt;
function changeDoblInput() {&lt;br /&gt;
    hero.dobl = Number.parseInt(doblInput.value);&lt;br /&gt;
    doblCnt.value = doblInput.value;&lt;br /&gt;
 &lt;br /&gt;
    if (doblCnt.value == 0 &amp;amp;&amp;amp; !doblImg.hidden) {&lt;br /&gt;
        doblImg.hidden = true;&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    if (doblCnt.value &amp;gt; 0 &amp;amp;&amp;amp; doblImg.hidden) {&lt;br /&gt;
        doblImg.hidden = false;&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    updateHeroStats();&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
function addListOfRares() {&lt;br /&gt;
    for (var i in arrRares) {&lt;br /&gt;
        var div = document.createElement('div');&lt;br /&gt;
        div.setAttribute(&amp;quot;onclick&amp;quot;, &amp;quot;updateHeroRare(this)&amp;quot;);&lt;br /&gt;
        div.setAttribute(&amp;quot;name&amp;quot;, arrRares[i].key);&lt;br /&gt;
        div.setAttribute(&amp;quot;title&amp;quot;, arrRares[i].name);&lt;br /&gt;
        div.classList.add(arrRares[i].css+&amp;quot;_mini&amp;quot;);&lt;br /&gt;
         div.classList.add(&amp;quot;hero-border-mini&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
        if (arrRares[i].cnt == 25) {&lt;br /&gt;
             div.classList.add(&amp;quot;checked&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        var img = document.createElement('img');&lt;br /&gt;
        img.src = targetHeroRare.children[1].src;&lt;br /&gt;
 &lt;br /&gt;
        div.append(img);&lt;br /&gt;
        selectRare.append(div);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
function updateHeroRare(t) {&lt;br /&gt;
    var newRare = listRares.get(t.getAttribute(&amp;quot;name&amp;quot;));&lt;br /&gt;
    var maxRank = false;&lt;br /&gt;
   &lt;br /&gt;
    targetHeroRare.className = newRare.css;&lt;br /&gt;
    hero.rare = newRare.cnt;&lt;br /&gt;
&lt;br /&gt;
    selectRare.getElementsByClassName(&amp;quot;checked&amp;quot;)[0].classList.remove(&amp;quot;checked&amp;quot;);&lt;br /&gt;
    t.classList.add(&amp;quot;checked&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    if (rankCnt.value == rankCnt.max) {&lt;br /&gt;
        maxRank = true;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (newRare.rank &amp;lt;= 25 &amp;amp;&amp;amp; rankCnt.step !== 5) {&lt;br /&gt;
        rankCnt.step = 5;&lt;br /&gt;
        rankInput.step = 5;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (newRare.rank &amp;gt; 25 &amp;amp;&amp;amp; rankCnt.step == 5) {&lt;br /&gt;
        if (rankCnt.value &amp;lt; 25) {&lt;br /&gt;
            rankCnt.value = 25;&lt;br /&gt;
            rankInput.value = 25;&lt;br /&gt;
        }&lt;br /&gt;
        rankCnt.step = 25;&lt;br /&gt;
        rankInput.step = 25;&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    rankCnt.max = newRare.rank;&lt;br /&gt;
    rankInput.max = newRare.rank;&lt;br /&gt;
    &lt;br /&gt;
    if (maxRank) {&lt;br /&gt;
        rankInput.value = rankCnt.max;&lt;br /&gt;
        rankCnt.value = rankCnt.max;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    targetHeroRank.innerHTML = rankCnt.value;&lt;br /&gt;
    hero.rank = Number.parseInt(rankCnt.value);&lt;br /&gt;
 &lt;br /&gt;
    updateHeroStats();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function updateSiege(t) {&lt;br /&gt;
    siegeCnt = Number.parseInt(t.dataset.id);&lt;br /&gt;
&lt;br /&gt;
    for (var i = 0; i &amp;lt; siegeDiv.children.length; i++) {&lt;br /&gt;
        siegeDiv.children[i].classList.remove(&amp;quot;checked&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    t.classList.add(&amp;quot;checked&amp;quot;);&lt;br /&gt;
    updateHeroStats();&lt;br /&gt;
  }&lt;/div&gt;</summary>
		<author><name>Sadist007</name></author>
	</entry>
</feed>