Elden Ring Gmail YOU DIED FX

"YOU DIED" Elden Ring при отправке письма Gmail

// ==UserScript==
// @name         Elden Ring Gmail YOU DIED FX
// @namespace    http://tampermonkey.net/
// @version      1.5
// @description  "YOU DIED" Elden Ring при отправке письма Gmail
// @match        https://mail.google.com/*
// @grant        none
// @license      MIT 
// ==/UserScript==

(function () {
    'use strict';

    console.log('[Elden Ring Gmail] Скрипт запущен');

    let effectTriggered = false;
    let isEffectPlaying = false; // флаг для предотвращения дублирования
    let lastTriggerTime = 0; // время последнего срабатывания

    const audio = new Audio('https://www.myinstants.com/media/sounds/elden-ring-death.mp3');
    audio.preload = 'auto'; // предзагрузка аудио

    function showOverlay() {
        // Дополнительная проверка
        if (document.getElementById('elden-ring-overlay') || isEffectPlaying) {
            console.log('[Elden Ring Gmail] Эффект уже активен, пропускаем');
            return;
        }

        isEffectPlaying = true;

        // размытия фона
        document.body.classList.add('elden-ring-blur');

        const overlay = document.createElement('div');
        overlay.id = 'elden-ring-overlay';

        const bar = document.createElement('div');
        bar.id = 'elden-ring-bar';

        const message = document.createElement('div');
        message.id = 'elden-ring-message';
        message.textContent = 'YOU DIED';

        overlay.appendChild(bar);
        overlay.appendChild(message);
        document.body.appendChild(overlay);

        // очистка после анимации
        setTimeout(() => {
            const overlayElement = document.getElementById('elden-ring-overlay');
            if (overlayElement) {
                overlayElement.remove();
            }
            document.body.classList.remove('elden-ring-blur');
            isEffectPlaying = false;
        }, 3000);
    }

    const style = document.createElement('style');
    style.textContent = `
        @import url('https://fonts.googleapis.com/css2?family=Libre+Baskerville:wght@700&display=swap');

        #elden-ring-overlay {
            position: fixed;
            top: 0; left: 0;
            width: 100%; height: 100%;
            background-color: rgba(0, 0, 0, 0.85);
            z-index: 9999;
            display: flex;
            justify-content: center;
            align-items: center;
            animation: fadeOut 3s forwards;
            overflow: visible;
            pointer-events: none; /* Не блокируем клики */
        }

        #elden-ring-bar {
            position: absolute;
            top: 50%;
            left: 0;
            width: 100%;
            height: 80px;
            background-color: rgba(0, 0, 0, 0.2);
            transform: translateY(-50%);
            z-index: 1;
            pointer-events: none;
        }

        #elden-ring-message {
            position: relative;
            z-index: 2;
            color: #8B0000;
            font-size: min(72px, 12vw); /* Адаптивный размер */
            font-family: 'Libre Baskerville', serif;
            font-weight: 700;
            letter-spacing: 2px;
            text-shadow: 0 0 10px #500000, 0 0 20px #300000;
            user-select: none;
            transform: translateY(-20%);
            animation: textGlow 3s ease-in-out;
        }

        .elden-ring-blur > *:not(#elden-ring-overlay) {
            filter: blur(5px);
            transition: filter 0.3s ease;
        }

        @keyframes fadeOut {
            0% { opacity: 1; }
            80% { opacity: 1; }
            100% { opacity: 0; visibility: hidden; }
        }

        @keyframes textGlow {
            0% { text-shadow: 0 0 10px #500000; }
            50% { text-shadow: 0 0 20px #8B0000, 0 0 30px #500000; }
            100% { text-shadow: 0 0 10px #500000; }
        }
    `;
    document.head.appendChild(style);

    function triggerEmailSent() {
        const currentTime = Date.now();

        // не срабатывал ли эффект недавно
        if (currentTime - lastTriggerTime < 3000) {
            console.log('[Elden Ring Gmail] Эффект недавно срабатывал, пропускаем');
            return;
        }

        lastTriggerTime = currentTime;

        console.log('[Elden Ring Gmail] YOU DIED ⚔️');

        // воспроизводим звук
        audio.currentTime = 0; // сбрасываем
        audio.play().catch(e => console.warn('[Elden Ring Gmail] Audio play error:', e));

        showOverlay();
    }

    function observeDOM() {
        console.log('[Elden Ring Gmail] 🔍 Начинаем наблюдение за DOM');

        const observer = new MutationObserver((mutationsList) => {
            for (const mutation of mutationsList) {
                if (mutation.type === 'childList') {
                    for (const node of mutation.addedNodes) {
                        if (node.nodeType === Node.ELEMENT_NODE || node.nodeType === Node.TEXT_NODE) {
                            const text = node.textContent || '';

                            // проверка текста уведомления
                            if (text.includes('Сообщение отправлено') ||
                                text.includes('Message sent') ||
                                text.includes('Sent')) {

                                console.log('[Elden Ring Gmail] ✅ Обнаружено уведомление:', text.trim());

                                // задержка для предотвращения дублирования
                                setTimeout(() => {
                                    triggerEmailSent();
                                }, 100);

                                return;
                            }
                        }
                    }
                }
            }
        });

        observer.observe(document.body, {
            childList: true,
            subtree: true,
            characterData: true
        });
    }

    // Дожидаемся загрузки страницы
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', observeDOM);
    } else {
        // Небольшая задержка
        setTimeout(observeDOM, 1000);
    }

})();