Hero wars Sky

Try to see space!

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Hero wars Sky
// @namespace    Hero wars Sky
// @version      1.0
// @description  Try to see space!
// @author       Hamizuse
// @match        https://www.hero-wars.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=hero-wars.com
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
// Get the layout container
const layout = document.querySelector('.layout');

// Create stars container
const starsContainer = document.createElement('div');
starsContainer.style.position = 'absolute';
starsContainer.style.top = '0';
starsContainer.style.left = '0';
starsContainer.style.width = '100%';
starsContainer.style.height = '100%';
starsContainer.style.overflow = 'hidden';
starsContainer.style.zIndex = '0';
starsContainer.style.pointerEvents = 'none';

// Set layout container styles
layout.style.position = 'relative';
layout.style.backgroundColor = '#0a0e29';
layout.style.backgroundImage = 'linear-gradient(to bottom, #0a0e29, #1a1f4b, #2d2a6d)';
layout.style.minHeight = '100vh';
layout.style.color = '#ffffff';
layout.style.fontFamily = "'Arial', sans-serif";
layout.style.overflow = 'hidden';

// Create stars
function createStars() {
    const starCount = 200;

    for (let i = 0; i < starCount; i++) {
        const star = document.createElement('div');
        star.style.position = 'absolute';
        star.style.backgroundColor = '#ffffff';
        star.style.borderRadius = '50%';

        // Random position
        const left = Math.random() * 100;
        const top = Math.random() * 100;
        star.style.left = `${left}%`;
        star.style.top = `${top}%`;

        // Random size (1-3px)
        const size = Math.random() * 2 + 1;
        star.style.width = `${size}px`;
        star.style.height = `${size}px`;

        // Random opacity and animation delay
        const opacity = Math.random() * 0.8 + 0.2;
        const delay = Math.random() * 5;

        star.style.opacity = opacity;
        star.style.animation = `twinkle ${Math.random() * 3 + 2}s infinite ${delay}s`;

        starsContainer.appendChild(star);
    }
}

// Add CSS for twinkling animation
const style = document.createElement('style');
style.textContent = `
    @keyframes twinkle {
        0%, 100% {
            opacity: 0.2;
            transform: scale(1);
        }
        50% {
            opacity: 1;
            transform: scale(1.2);
        }
    }

    .layout::before {
        content: '';
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        height: 200px;
        background: linear-gradient(to bottom, rgba(10, 14, 41, 0.8), transparent);
        z-index: 1;
    }

    .layout::after {
        content: '';
        position: absolute;
        bottom: 0;
        left: 0;
        right: 0;
        height: 200px;
        background: linear-gradient(to top, rgba(10, 14, 41, 0.8), transparent);
        z-index: 1;
    }

    .layout > * {
        position: relative;
        z-index: 2;
    }
`;
document.head.appendChild(style);

// Create and add stars
createStars();
layout.appendChild(starsContainer);

// Add some shooting stars occasionally
function createShootingStar() {
    const shootingStar = document.createElement('div');
    shootingStar.style.position = 'absolute';
    shootingStar.style.backgroundColor = '#ffffff';
    shootingStar.style.height = '2px';
    shootingStar.style.width = '0px';
    shootingStar.style.boxShadow = '0 0 10px 2px rgba(255, 255, 255, 0.8)';
    shootingStar.style.borderRadius = '50%';

    const startX = Math.random() * 100;
    const startY = Math.random() * 30;
    const angle = Math.random() * 30 + 15;

    shootingStar.style.left = `${startX}%`;
    shootingStar.style.top = `${startY}%`;
    shootingStar.style.transform = `rotate(${angle}deg)`;

    starsContainer.appendChild(shootingStar);

    // Animate shooting star
    shootingStar.animate([
        {
            width: '0px',
            opacity: 0
        },
        {
            width: '100px',
            opacity: 1
        },
        {
            width: '0px',
            opacity: 0
        }
    ], {
        duration: 2000,
        easing: 'ease-out'
    }).onfinish = () => {
        starsContainer.removeChild(shootingStar);
    };
}

// Create shooting stars at random intervals
setInterval(() => {
    if (Math.random() > 0.7) {
        createShootingStar();
    }
}, 3000);

// Add some content styling for better visibility
const contentElements = layout.querySelectorAll('h1, h2, h3, h4, h5, h6, p, div, span');
contentElements.forEach(el => {
    el.style.textShadow = '0 0 10px rgba(255, 255, 255, 0.3)';
});

console.log('Night theme with twinkling stars applied to layout container!');
})();