jeb_

Changes avatar appearance based on Minecraft Easter eggs.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, Greasemonkey alebo Violentmonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, % alebo Violentmonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey alebo Userscripts.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie správcu používateľských skriptov.

(Už mám správcu používateľských skriptov, nechajte ma ho nainštalovať!)

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

(Už mám správcu používateľských štýlov, nechajte ma ho nainštalovať!)

// ==UserScript==
// @name         jeb_
// @namespace    http://tampermonkey.net/
// @version      1.5
// @description  Changes avatar appearance based on Minecraft Easter eggs.
// @author       Alpha
// @match        https://skribbl.io/*
// @grant        none
// @icon         https://imgur.com/rVFiCSD.gif
// @license      MIT
// ==/UserScript==

(function () {
    'use strict';

    const colorSteps = 8;
    const cycleSpeedMs = 250;
    const lookupIntervalMs = 500;

    let cycleInterval = null;
    let currentStep = 0;

    function cleanName(rawName) {
        return rawName.replace(' (You)', '').trim();
    }

    function applyEffectsToAllPlayers() {
        const playerNameElems = document.querySelectorAll('.player-name');

        playerNameElems.forEach(playerNameElem => {
            const rawName = playerNameElem.textContent.trim();
            const name = cleanName(rawName);

            const container = playerNameElem.closest('div.player');
            if (!container) return;

            const colorElem = container.querySelector('div.player-avatar-container > div > div.color');
            const specialElem = container.querySelector('div.player-avatar-container > div > div.special');
            const avatarContainer = container.querySelector('.player-avatar-container');

            if (name === 'jeb_' && colorElem) {
                const xPosition = -100 * currentStep;
                colorElem.style.backgroundPosition = `${xPosition}% 0%`;
                specialElem.style.display = `block`;
                specialElem.style.backgroundPosition = `-900% 0%`;
            }

            if ((name === 'Dinnerbone' || name === 'Grumm') && avatarContainer) {
                avatarContainer.style.transform = 'rotateX(180deg)';
                avatarContainer.style.top = '2px';
                container.style.zIndex = '999';
            }

            if (name === 'Toast' && specialElem) {
                specialElem.style.display = `block`;
                specialElem.style.backgroundPosition = `-800% 0%`;
            }
        });

        currentStep = (currentStep + 1) % colorSteps;
    }

    function startCycling() {
        if (!cycleInterval) {
            cycleInterval = setInterval(applyEffectsToAllPlayers, cycleSpeedMs);
        }
    }

    function waitForPlayers() {
        const check = setInterval(() => {
            if (document.querySelector('.player-name')) {
                startCycling();
                clearInterval(check);
            }
        }, lookupIntervalMs);
    }

    window.addEventListener('load', waitForPlayers);
})();