Greasy Fork is available in English.

hitchance in combat

lol7

// ==UserScript==
// @name         hitchance in combat
// @namespace    FileFace
// @version      0.1.2
// @description  lol7
// @author       shtos
// @match        dh3.diamondhunt.co
// @grant        none
// ==/UserScript==
/*jshint multistr: true */
/*jslint es5: true */


(function() {
    'use strict';

    const fightScreen = document.getElementById('navigation-right-combat-fighting')
    const combatTables = document.querySelectorAll('.fighting-section-stats-and-hp-area')
    const accHeroElement = combatTables[0].children[0].children[0].children[1]
    const accMonsterElement = combatTables[1].children[0].children[0].children[1]
    const heroAcc = document.querySelectorAll('item-accuracy')[1]
    const heroDef = document.querySelectorAll('item-defence')[1]
    const monsterAcc = document.querySelector('item-monsteraccuracy')
    const magicMonsters = ['fireMage', 'spider', 'yeti', 'dungeonSpider', 'skeletonMonks']
    var tempMonsterName = ''
    function linkuStarto(){
        if (window.var_username){
            addColumns()
            setTimeout(notifObserver, 2000)
        }else{
            setTimeout(linkuStarto, 1000)
        }
    }
    linkuStarto()
    function notifObserver(){
        const observer = new MutationObserver(mutation => {
            let monsterHitChance
            let playerHitChance
            if (magicMonsters.includes(window.var_monsterName)){
                monsterHitChance = '100%'
            }else{
                monsterHitChance = (hitChance(parseInt(window.var_monsterAccuracy), parseInt(window.var_defence))*100).toFixed(0) + '%'
            }
            playerHitChance = (hitChance(parseInt(window.var_accuracy), parseInt(window.var_monsterDefence))*100).toFixed(0) + '%'
            playerHitChance === '100%' ? document.querySelector('#hitchance-span').style.color = 'green' : document.querySelector('#hitchance-span').style.color = 'red'
            monsterHitChance === '100%' ? document.querySelector('#hitchance-monster-span').style.color = 'red' : document.querySelector('#hitchance-monster-span').style.color = 'green'
            document.querySelector('#hitchance-span').textContent = playerHitChance
            document.querySelector('#hitchance-monster-span').textContent = monsterHitChance
        })
        const config = { attributes: true, characterData: true, subtree: true, childList: true }
        observer.observe(heroAcc, config)
        observer.observe(heroDef, config)
        observer.observe(monsterAcc, config)
    }
    function addColumns(){
        let td = document.createElement('td')
        td.innerHTML = `<img src="images/accuracy.png" class="img-30"> <span id="hitchance-span">0</span>`
        accHeroElement.style.display = 'none'
        $(accHeroElement).after(td)
        td = document.createElement('td')
        td.innerHTML = `<img src="images/accuracy.png" class="img-30"> <span id="hitchance-monster-span">0</span>`
        $(accMonsterElement).after(td)
        accMonsterElement.style.display = 'none'
    }
    function hitChance(accuracy, defence) {
        if (defence % 2 == 0){
            return 1 / Math.max(1, defence/2 - accuracy + 1);
        }
        else {
            return ( hitChance(accuracy, defence-1) + hitChance(accuracy, defence+1) ) / 2;
        }
    }
})();