(function () { // === UTILITY FUNCTIONS === const createElement = (tag, className, styles = {}) => { const element = document.createElement(tag); if (className) element.className = className; Object.assign(element.style, styles); return element; }; // === STYLES === const applyStyles = () => { const style = createElement('style'); style.textContent = ` /* Crosshair Styles */ .kour-crosshair { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); pointer-events: none; z-index: 99999; } .crosshair-1, .crosshair-2, .crosshair-3, .crosshair-custom, .crosshair-4, .crosshair-5, .crosshair-6, .crosshair-7, .crosshair-8, .crosshair-9, .crosshair-10, .crosshair-11, .crosshair-12, .crosshair-13, .crosshair-14, .crosshair-15, .crosshair-16 { width: 80px; height: 80px; transition: width 0.3s ease, height 0.3s ease; } .crosshair-1::before, .crosshair-2::before, .crosshair-4::before, .crosshair-5::before, .crosshair-6::before, .crosshair-15::before { content: ''; position: absolute; top: 50%; left: 50%; width: 100%; height: 100%; border-radius: 50%; transform: translate(-50%, -50%); animation: pulse 2s infinite ease-in-out; } .crosshair-1::before { box-shadow: 0 0 10px 4px red, 0 0 20px 10px orange inset; } .crosshair-2::before { box-shadow: 0 0 8px 3px blue, 0 0 14px 7px cyan inset; } .crosshair-3 { background: transparent; box-sizing: border-box; } .crosshair-3::before, .crosshair-3::after { content: ''; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 100%; height: 100%; } .crosshair-3::before { border: 2px solid black; border-radius: 50%; box-shadow: 0 0 5px rgba(0, 0, 0, 0.5); } .crosshair-3::after { width: 75%; height: 75%; border: 1px solid black; border-radius: 50%; } .crosshair-3 .plus-v, .crosshair-3 .plus-h, .crosshair-3 .tick-n, .crosshair-3 .tick-s, .crosshair-3 .tick-e, .crosshair-3 .tick-w { position: absolute; background: black; box-shadow: 0 0 3px rgba(0, 0, 0, 0.3); } .crosshair-3 .plus-v { width: 2px; height: 20%; left: 50%; top: 50%; transform: translate(-50%, -50%); } .crosshair-3 .plus-h { width: 20%; height: 2px; left: 50%; top: 50%; transform: translate(-50%, -50%); } .crosshair-3 .tick-n { width: 2px; height: 10%; left: 50%; top: 10%; transform: translateX(-50%); } .crosshair-3 .tick-s { width: 2px; height: 10%; left: 50%; bottom: 10%; transform: translateX(-50%); } .crosshair-3 .tick-e { width: 10%; height: 2px; right: 10%; top: 50%; transform: translateY(-50%); } .crosshair-3 .tick-w { width: 10%; height: 2px; left: 10%; top: 50%; transform: translateY(-50%); } .crosshair-4::before { box-shadow: 0 0 12px 5px #ff00ff, 0 0 18px 9px #aa00ff inset; } .crosshair-5::before { box-shadow: 0 0 10px 4px #00ff00, 0 0 16px 8px #00aa00 inset; background: repeating-linear-gradient( 45deg, transparent, transparent 5px, rgba(0, 255, 0, 0.2) 5px, rgba(0, 255, 0, 0.2) 10px ); } .crosshair-6::before { box-shadow: 0 0 15px 6px #ff4500, 0 0 20px 10px #ff0000 inset; background: radial-gradient(circle, #ff4500 20%, transparent 70%); } .crosshair-7 { background: transparent; } .crosshair-7::before { content: ''; position: absolute; top: 50%; left: 50%; width: 60%; height: 60%; border: 2px solid #00ffff; transform: translate(-50%, -50%) rotate(45deg); box-shadow: 0 0 8px #00ffff; } .crosshair-7::after { content: ''; position: absolute; top: 50%; left: 50%; width: 2px; height: 2px; background: #00ffff; transform: translate(-50%, -50%); box-shadow: 0 0 5px #00ffff; } .crosshair-8 { background: transparent; } .crosshair-8::before { content: ''; position: absolute; top: 50%; left: 50%; width: 100%; height: 100%; background: radial-gradient(circle, #ffd700 10%, transparent 50%); transform: translate(-50%, -50%); clip-path: polygon( 50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35% ); box-shadow: 0 0 10px #ffd700; } .crosshair-9 { background: transparent; } .crosshair-9::before { content: ''; position: absolute; top: 50%; left: 50%; width: 80%; height: 80%; border: 1px solid #00b7eb; transform: translate(-50%, -50%); background: repeating-linear-gradient( 0deg, transparent, transparent 5px, rgba(0, 183, 235, 0.3) 5px, rgba(0, 183, 235, 0.3) 6px ); box-shadow: 0 0 8px #00b7eb; } .crosshair-9::after { content: ''; position: absolute; top: 50%; left: 50%; width: 2px; height: 2px; background: #00b7eb; transform: translate(-50%, -50%); } .crosshair-10 { background: transparent; } .crosshair-10::before, .crosshair-10::after { content: ''; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); border-radius: 50%; border: 1px solid #ff00ff; box-shadow: 0 0 6px #ff00ff; } .crosshair-10::before { width: 100%; height: 100%; } .crosshair-10::after { width: 60%; height: 60%; } .crosshair-10 .dot, .crosshair-13 .dot { position: absolute; top: 50%; left: 50%; width: 4px; height: 4px; background: #ff00ff; transform: translate(-50%, -50%); border-radius: 50%; } .crosshair-11 { background-size: contain; background-repeat: no-repeat; background-position: center; } .crosshair-custom, .crosshair-11 { background-size: contain; background-repeat: no-repeat; background-position: center; } /* Crosshair 12: Electric Bolt */ .crosshair-12 { background: transparent; } .crosshair-12::before { content: ''; position: absolute; top: 50%; left: 50%; width: 100%; height: 100%; transform: translate(-50%, -50%); background: url('data:image/svg+xml;utf8,') no-repeat center; background-size: contain; animation: electricPulse 0.5s infinite alternate; box-shadow: 0 0 10px yellow; } @keyframes electricPulse { 0% { opacity: 0.7; transform: translate(-50%, -50%) scale(0.9); } 100% { opacity: 1; transform: translate(-50%, -50%) scale(1); } } /* Crosshair 13: Neon Cross */ .crosshair-13 { background: transparent; } .crosshair-13::before, .crosshair-13::after { content: ''; position: absolute; top: 50%; left: 50%; background: #00ffcc; box-shadow: 0 0 8px #00ffcc; } .crosshair-13::before { width: 60%; height: 4px; transform: translate(-50%, -50%); } .crosshair-13::after { width: 4px; height: 60%; transform: translate(-50%, -50%); } .crosshair-13 .dot { background: #00ffcc; box-shadow: 0 0 5px #00ffcc; } /* Crosshair 14: Cyber Triangle */ .crosshair-14 { background: transparent; } .crosshair-14::before { content: ''; position: absolute; top: 50%; left: 50%; width: 50%; height: 50%; border: 2px solid #ff00ff; transform: translate(-50%, -50%) rotate(45deg); clip-path: polygon(50% 0%, 0% 100%, 100% 100%); box-shadow: 0 0 10px #ff00ff; animation: rotateSlow 5s infinite linear; } /* Crosshair 15: Plasma Orb */ .crosshair-15::before { background: radial-gradient(circle, #ff00ff 20%, #00ffcc 70%, transparent 100%); box-shadow: 0 0 15px #ff00ff, 0 0 20px #00ffcc inset; } /* Crosshair 16: Holo Hexagon */ .crosshair-16 { background: transparent; } .crosshair-16::before { content: ''; position: absolute; top: 50%; left: 50%; width: 70%; height: 70%; border: 2px solid #00b7eb; transform: translate(-50%, -50%); clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%); box-shadow: 0 0 10px #00b7eb; animation: rotateSlow 4s infinite linear; } @keyframes rotateSlow { 0% { transform: translate(-50%, -50%) rotate(0deg); } 100% { transform: translate(-50%, -50%) rotate(360deg); } } .crosshair-animated::before { animation: spinPulse 3s infinite ease-in-out; } .comic-effect { filter: contrast(1.5) brightness(1.1) saturate(1.5); position: relative; } .comic-effect::after { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: url('data:image/svg+xml;utf8,') repeat; background-size: 8px 8px; opacity: 0.5; pointer-events: none; } @keyframes pulse { 0%, 100% { transform: translate(-50%, -50%) scale(1); } 50% { transform: translate(-50%, -50%) scale(1.1); } } @keyframes spinPulse { 0%, 100% { transform: translate(-50%, -50%) scale(1) rotate(0deg); } 50% { transform: translate(-50%, -50%) scale(1.1) rotate(180deg); } } @keyframes vortexSpin { 0% { transform: translate(-50%, -50%) rotate(0deg); } 100% { transform: translate(-50%, -50%) rotate(360deg); } } /* Settings Panel Styles */ .kour-settings { position: fixed; right: 20px; top: 20%; background: rgba(20, 20, 20, 0.95); border: 2px solid #666; padding: 15px; border-radius: 15px; color: white; font-family: sans-serif; z-index: 100000; max-height: 75vh; overflow-y: auto; box-shadow: 0 0 15px rgba(0, 0, 0, 0.5); transition: opacity 0.3s ease; } .kour-settings.hidden { display: none; } .kour-settings button { margin: 5px 0; padding: 6px 12px; border: none; border-radius: 5px; background: #444; color: white; cursor: pointer; font-size: 14px; transition: background 0.2s ease, transform 0.1s ease; } .kour-settings button:hover { background: #666; transform: scale(1.05); } .kour-settings .section-title { font-weight: bold; margin: 10px 0 5px; color: #fff; text-shadow: 0 0 5px rgba(255, 255, 255, 0.5); } .kour-settings .section { padding: 10px; margin: 10px 0; border-radius: 10px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); } .crosshair-section { background: linear-gradient(135deg, #00b7eb, #00ff88); } .color-section { background: linear-gradient(135deg, #ff00ff, #ff5555); } .effects-section { background: linear-gradient(135deg, #ffaa00, #ffd700); } .vip-section { background: linear-gradient(135deg, #ffd700, #ff4500); } .kour-settings .slider-label { font-size: 12px; color: #fff; margin-top: 5px; text-shadow: 0 0 3px rgba(0, 0, 0, 0.5); } .kour-slider, .kour-file-input, .kour-code-input { width: 100%; margin: 5px 0; padding: 5px; border-radius: 5px; border: 1px solid #666; background: #333; color: white; } .kour-sub-message { font-size: 14px; color: #ff4444; text-align: center; margin-bottom: 15px; font-weight: bold; text-shadow: 0 0 8px rgba(255, 68, 68, 0.9); background: rgba(0, 0, 0, 0.5); padding: 5px; border-radius: 5px; } .kour-vip-message { font-size: 16px; color: #ffd700; text-align: center; margin-bottom: 15px; font-weight: bold; text-shadow: 0 0 8px rgba(255, 215, 0, 0.9); background: rgba(0, 0, 0, 0.5); padding: 5px; border-radius: 5px; } /* Overlay and Effects Styles */ .kour-overlay { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; pointer-events: none; z-index: 9999; mix-blend-mode: hue; transition: background-color 0.3s ease; } .kour-particles { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; pointer-events: none; z-index: 9996; } .kour-confetti { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; pointer-events: none; z-index: 9997; } .kour-glitch { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; pointer-events: none; z-index: 9995; background: repeating-linear-gradient( to bottom, transparent, transparent 2px, rgba(255, 255, 255, 0.05) 2px, rgba(255, 255, 255, 0.05) 4px ); animation: glitch 0.5s infinite; opacity: 0; } @keyframes glitch { 0% { transform: translate(0); } 20% { transform: translate(-2px, 2px); } 40% { transform: translate(2px, -2px); } 60% { transform: translate(-1px, -1px); } 80% { transform: translate(1px, 1px); } } .kour-vignette { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; pointer-events: none; z-index: 9994; background: radial-gradient(circle, transparent 50%, rgba(0, 0, 0, 0.7) 100%); opacity: 0; transition: opacity 0.3s ease; } .kour-gear { position: fixed; right: 20px; top: 50%; transform: translateY(-50%); width: 40px; height: 40px; background: rgba(20, 20, 20, 0.9); border: 2px solid #666; border-radius: 50%; color: white; font-size: 24px; text-align: center; line-height: 40px; cursor: pointer; z-index: 100001; box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); transition: background 0.2s ease, transform 0.2s ease; } .kour-gear:hover { background: rgba(40, 40, 40, 0.9); transform: translateY(-50%) scale(1.1); } .kour-hitmarker { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 40px; height: 40px; background: transparent; pointer-events: none; z-index: 99998; opacity: 0; transition: opacity 0.5s ease; } .kour-hitmarker::before, .kour-hitmarker::after { content: ''; position: absolute; background: #ff0000; box-shadow: 0 0 5px #ff0000; } .kour-hitmarker::before { width: 20px; height: 2px; top: 50%; left: 50%; transform: translate(-50%, -50%) rotate(45deg); } .kour-hitmarker::after { width: 20px; height: 2px; top: 50%; left: 50%; transform: translate(-50%, -50%) rotate(-45deg); } .kour-screen-flash { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background: rgba(255, 255, 255, 0.3); pointer-events: none; z-index: 9993; opacity: 0; transition: opacity 0.3s ease; } .kour-laser-beam { position: fixed; top: 50%; left: 50%; width: 2px; height: 100vh; background: #ff00ff; box-shadow: 0 0 10px #ff00ff; transform: translateX(-50%); pointer-events: none; z-index: 9992; opacity: 0; transition: opacity 0.2s ease; } .kour-shockwave { position: fixed; top: 50%; left: 50%; width: 0; height: 0; border: 2px solid #00ff00; border-radius: 50%; box-shadow: 0 0 15px #00ff00; transform: translate(-50%, -50%); pointer-events: none; z-index: 9991; opacity: 0; transition: all 0.5s ease; } @keyframes shockwaveExpand { 0% { width: 0; height: 0; opacity: 1; } 100% { width: 200px; height: 200px; opacity: 0; } } .kour-keyboard { position: fixed; bottom: 10px; left: 50%; transform: translateX(-50%); background: rgba(20, 20, 20, 0.95); border: 2px solid #666; padding: 10px; border-radius: 10px; z-index: 100002; display: none; box-shadow: 0 0 15px rgba(0, 0, 0, 0.5); } .kour-keyboard button { width: 40px; height: 40px; margin: 5px; border: none; border-radius: 5px; background: #444; color: white; font-size: 16px; cursor: pointer; transition: background 0.2s ease, transform 0.1s ease; } .kour-keyboard button:hover { background: #666; transform: scale(1.05); } .kour-keyboard .space { width: 150px; } .kour-keyboard .backspace, .kour-keyboard .close { width: 60px; } `; document.head.appendChild(style); }; applyStyles(); // === CROSSHAIRS SETUP === const setupCrosshairs = () => { const crosshairs = {}; for (let i = 1; i <= 16; i++) { crosshairs[`ch${i}`] = createElement('div', `kour-crosshair crosshair-${i}`, { display: 'none' }); if (i === 3 || i === 10 || i === 13) { crosshairs[`ch${i}`].innerHTML = `
${i === 3 ? `
` : ''} `; } if (i === 11) { crosshairs[`ch${i}`].style.backgroundImage = `url('https://i.imgur.com/5o5o5o5.png')`; crosshairs[`ch${i}`].style.animation = 'vortexSpin 4s infinite linear'; } document.body.appendChild(crosshairs[`ch${i}`]); } const chCustom = createElement('div', 'kour-crosshair crosshair-custom', { display: 'none' }); document.body.appendChild(chCustom); return { crosshairs, chCustom }; }; const { crosshairs, chCustom } = setupCrosshairs(); // === COLOR OVERLAY === const setupColorOverlay = () => { const overlay = createElement('div', 'kour-overlay', { backgroundColor: 'transparent' }); // Start with no color document.body.appendChild(overlay); let autoColor = false; let currentHue = 0; const updateColor = () => { if (autoColor) { currentHue = (currentHue + 1) % 360; overlay.style.backgroundColor = `hsl(${currentHue}, 100%, 50%)`; } requestAnimationFrame(updateColor); }; updateColor(); return { overlay, autoColor, currentHue }; }; const { overlay, autoColor: autoColorState, currentHue: initialHue } = setupColorOverlay(); let autoColor = autoColorState; let currentHue = initialHue; // === PARTICLE EFFECTS === const setupParticles = () => { const particleCanvas = createElement('canvas', 'kour-particles'); document.body.appendChild(particleCanvas); particleCanvas.width = window.innerWidth; particleCanvas.height = window.innerHeight; const ctx = particleCanvas.getContext('2d'); let particlesEnabled = false; let particleStyle = 'fire'; let particles = []; let comicEffectEnabled = false; let comicIntensity = 0.5; let particleSize = 5; const initParticles = () => { particles = []; for (let i = 0; i < 20; i++) { particles.push({ angle: Math.random() * Math.PI * 2, radius: Math.random() * 40 + 20, speed: Math.random() * 0.05 + 0.02, size: particleSize, opacity: Math.random() * 0.5 + 0.3 }); } }; initParticles(); const animateParticles = () => { ctx.clearRect(0, 0, particleCanvas.width, particleCanvas.height); if (particlesEnabled) { const centerX = window.innerWidth / 2; const centerY = window.innerHeight / 2; particles.forEach(p => { p.angle += p.speed; p.size = particleSize; const x = centerX + Math.cos(p.angle) * p.radius; const y = centerY + Math.sin(p.angle) * p.radius; ctx.beginPath(); ctx.arc(x, y, p.size, 0, Math.PI * 2); if (particleStyle === 'fire') { ctx.fillStyle = `rgba(255, ${Math.floor(Math.random() * 100) + 100}, 0, ${p.opacity})`; } else if (particleStyle === 'neon') { ctx.fillStyle = `rgba(0, 255, 255, ${p.opacity})`; } else if (particleStyle === 'magic') { ctx.fillStyle = `rgba(${Math.floor(Math.random() * 255)}, 0, 255, ${p.opacity})`; } ctx.fill(); }); } requestAnimationFrame(animateParticles); }; animateParticles(); window.addEventListener('resize', () => { particleCanvas.width = window.innerWidth; particleCanvas.height = window.innerHeight; }); return { particleCanvas, particlesEnabled, particleStyle, particles, comicEffectEnabled, comicIntensity, particleSize, initParticles }; }; const { particleCanvas, particlesEnabled: initialParticlesEnabled, particleStyle: initialParticleStyle, particles, comicEffectEnabled: initialComicEffectEnabled, comicIntensity: initialComicIntensity, particleSize: initialParticleSize, initParticles } = setupParticles(); let particlesEnabled = initialParticlesEnabled; let particleStyle = initialParticleStyle; let comicEffectEnabled = initialComicEffectEnabled; let comicIntensity = initialComicIntensity; let particleSize = initialParticleSize; // === CONFETTI EFFECTS === const setupConfetti = () => { const confettiCanvas = createElement('canvas', 'kour-confetti'); document.body.appendChild(confettiCanvas); confettiCanvas.width = window.innerWidth; confettiCanvas.height = window.innerHeight; const confettiCtx = confettiCanvas.getContext('2d'); let confettiEnabled = true; let confettiParticles = []; let confettiAmount = 100; const initConfetti = (centerX = window.innerWidth / 2, centerY = window.innerHeight / 2) => { confettiParticles = []; for (let i = 0; i < confettiAmount; i++) { confettiParticles.push({ x: centerX, y: centerY, angle: Math.random() * Math.PI * 2, speed: Math.random() * 5 + 2, size: Math.random() * 5 + 3, color: `hsl(${Math.random() * 360}, 100%, 50%)`, life: 1, decay: Math.random() * 0.02 + 0.01 }); } }; const animateConfetti = () => { confettiCtx.clearRect(0, 0, confettiCanvas.width, confettiCanvas.height); confettiParticles = confettiParticles.filter(p => p.life > 0); confettiParticles.forEach(p => { p.x += Math.cos(p.angle) * p.speed; p.y += Math.sin(p.angle) * p.speed + 1; p.life -= p.decay; confettiCtx.fillStyle = p.color; confettiCtx.globalAlpha = p.life; confettiCtx.fillRect(p.x, p.y, p.size, p.size); }); if (confettiParticles.length > 0) requestAnimationFrame(animateConfetti); }; return { confettiCanvas, confettiEnabled, confettiParticles, confettiAmount, initConfetti, animateConfetti }; }; const { confettiCanvas, confettiEnabled: initialConfettiEnabled, confettiParticles, confettiAmount: initialConfettiAmount, initConfetti, animateConfetti } = setupConfetti(); let confettiEnabled = initialConfettiEnabled; let confettiAmount = initialConfettiAmount; // === OTHER EFFECTS === const setupEffects = () => { const hitmarker = createElement('div', 'kour-hitmarker'); document.body.appendChild(hitmarker); const screenFlash = createElement('div', 'kour-screen-flash'); document.body.appendChild(screenFlash); const laserBeam = createElement('div', 'kour-laser-beam'); document.body.appendChild(laserBeam); const shockwave = createElement('div', 'kour-shockwave'); document.body.appendChild(shockwave); const glitch = createElement('div', 'kour-glitch'); document.body.appendChild(glitch); let glitchEnabled = false; let glitchIntensity = 0.3; const vignette = createElement('div', 'kour-vignette'); document.body.appendChild(vignette); let vignetteEnabled = false; let vignetteOpacity = 0.7; return { hitmarker, screenFlash, laserBeam, shockwave, glitch, glitchEnabled, glitchIntensity, vignette, vignetteEnabled, vignetteOpacity }; }; const { hitmarker, screenFlash, laserBeam, shockwave, glitch, glitchEnabled: initialGlitchEnabled, glitchIntensity: initialGlitchIntensity, vignette, vignetteEnabled: initialVignetteEnabled, vignetteOpacity: initialVignetteOpacity } = setupEffects(); let glitchEnabled = initialGlitchEnabled; let glitchIntensity = initialGlitchIntensity; let vignetteEnabled = initialVignetteEnabled; let vignetteOpacity = initialVignetteOpacity; // === GEAR ICON === const setupGearIcon = () => { const gearIcon = createElement('div', 'kour-gear'); gearIcon.innerHTML = '⚙️'; document.body.appendChild(gearIcon); return gearIcon; }; const gearIcon = setupGearIcon(); // === VIRTUAL KEYBOARD === const setupKeyboard = () => { const keyboard = createElement('div', 'kour-keyboard', { display: 'none' }); keyboard.innerHTML = `
`; document.body.appendChild(keyboard); return keyboard; }; const keyboard = setupKeyboard(); // === SETTINGS PANEL === const setupSettingsPanel = () => { const panel = createElement('div', 'kour-settings'); panel.innerHTML = `
sub to @justkour yt NOW :)
🎯 Crosshair
Crosshair Size (20-1000px):
Custom Opacity:
Animation Speed:
🎨 Color Tint
Presets:
💥 Effects
Particle Style:
Particle Size (2-20px):
Comic Intensity:
Glitch Intensity:
Vignette Opacity:
🔥 VIP Features
Enter Code:
🎯 VIP Crosshairs
💥 VIP Shoot Effects
Confetti Amount (50-200):
Hitmarker Size (20-100px):
Screen Flash Intensity:
Laser Beam Width (1-5px):
Shockwave Size (100-500px):
✨ VIP Visual Enhancements
Glow Intensity:
Trail Length (1-10):
Sound Volume:
Color Change Speed:
Zoom Sensitivity:
`; document.body.appendChild(panel); return panel; }; const panel = setupSettingsPanel(); // === VIP FEATURES STATE === let isVip = false; let hitmarkerEnabled = true; let screenFlashEnabled = true; let laserBeamEnabled = true; let shockwaveEnabled = true; let glowEffectEnabled = true; let trailEffectEnabled = true; let soundEffectEnabled = true; let crosshairColorEnabled = true; let dynamicZoomEnabled = true; let hitmarkerSize = 40; let screenFlashIntensity = 0.3; let laserBeamWidth = 2; let shockwaveSize = 200; let glowIntensity = 10; let trailLength = 5; let soundVolume = 0.5; let colorChangeSpeed = 5; let zoomSensitivity = 1; let crosshairHue = 0; // === SHOOT SOUND === const setupShootSound = () => { const shootSound = new Audio('https://cdn.pixabay.com/audio/2022/03/10/audio_d5b3969f3a.mp3'); shootSound.volume = soundVolume; return shootSound; }; const shootSound = setupShootSound(); // === TRAIL EFFECT === const setupTrailEffect = () => { const trailCanvas = createElement('canvas', 'kour-particles'); document.body.appendChild(trailCanvas); trailCanvas.width = window.innerWidth; trailCanvas.height = window.innerHeight; const trailCtx = trailCanvas.getContext('2d'); let trailPositions = []; const updateTrail = () => { trailCtx.clearRect(0, 0, trailCanvas.width, trailCanvas.height); if (trailEffectEnabled && trailPositions.length > 0) { trailPositions.forEach((pos, i) => { trailCtx.beginPath(); trailCtx.arc(pos.x, pos.y, 3, 0, Math.PI * 2); trailCtx.fillStyle = `hsla(${crosshairHue}, 100%, 50%, ${pos.opacity})`; trailCtx.fill(); pos.opacity -= 0.05; if (pos.opacity <= 0) trailPositions.splice(i, 1); }); } requestAnimationFrame(updateTrail); }; updateTrail(); window.addEventListener('resize', () => { trailCanvas.width = window.innerWidth; trailCanvas.height = window.innerHeight; }); return { trailCanvas, trailPositions }; }; const { trailCanvas, trailPositions } = setupTrailEffect(); // === EVENT LISTENERS === const setupEventListeners = () => { let crossAnimEnabled = false; // Close Panel panel.querySelector('#closePanel').addEventListener('click', () => { panel.classList.add('hidden'); gearIcon.style.display = 'block'; keyboard.style.display = 'none'; }); // Gear Icon to Open Panel gearIcon.addEventListener('click', () => { panel.classList.remove('hidden'); gearIcon.style.display = 'none'; }); // Reset Everything panel.querySelector('#resetAll').addEventListener('click', () => { // Reset Crosshairs Object.values(crosshairs).forEach(ch => { ch.style.display = 'none'; ch.classList.remove('crosshair-animated'); ch.classList.remove('comic-effect'); ch.style.boxShadow = ''; ch.style.filter = ''; }); chCustom.style.display = 'none'; chCustom.classList.remove('crosshair-animated'); chCustom.classList.remove('comic-effect'); chCustom.style.boxShadow = ''; chCustom.style.filter = ''; particleCanvas.classList.remove('comic-effect'); trailCanvas.classList.remove('comic-effect'); crossAnimEnabled = false; panel.querySelector('#crossAnim').textContent = 'Toggle Animation'; panel.querySelector('#crosshairSize').value = 80; Object.values(crosshairs).forEach(ch => { ch.style.width = '80px'; ch.style.height = '80px'; }); chCustom.style.width = '80px'; chCustom.style.height = '80px'; panel.querySelector('#customOpacity').value = 1; chCustom.style.opacity = 1; panel.querySelector('#animSpeed').value = 3; document.querySelectorAll('.crosshair-animated').forEach(el => { el.style.animationDuration = '3s'; }); // Reset Color Tint autoColor = false; currentHue = 0; overlay.style.backgroundColor = 'transparent'; panel.querySelector('#colorSlider').value = 0; panel.querySelector('#autoColor').textContent = 'Auto Cycle'; // Reset Effects particlesEnabled = false; panel.querySelector('#particlesToggle').textContent = 'Toggle Particles'; particleStyle = 'fire'; panel.querySelector('#particleSize').value = 5; particleSize = 5; initParticles(); comicEffectEnabled = false; panel.querySelector('#comicToggle').textContent = 'Toggle Comic Effect'; panel.querySelector('#comicIntensity').value = 0.5; comicIntensity = 0.5; glitchEnabled = false; glitch.style.opacity = 0; panel.querySelector('#glitchToggle').textContent = 'Toggle Glitch'; panel.querySelector('#glitchIntensity').value = 0.3; glitchIntensity = 0.3; vignetteEnabled = false; vignette.style.opacity = 0; panel.querySelector('#vignetteToggle').textContent = 'Toggle Vignette'; panel.querySelector('#vignetteOpacity').value = 0.7; vignetteOpacity = 0.7; // Reset VIP Features isVip = false; panel.querySelector('#vipMessage').style.display = 'none'; for (let i = 4; i <= 16; i++) { panel.querySelector(`#cross${i}`).style.display = 'none'; } panel.querySelector('#confettiToggle').style.display = 'none'; panel.querySelector('#confettiAmount').style.display = 'none'; panel.querySelector('#hitmarkerToggle').style.display = 'none'; panel.querySelector('#hitmarkerSize').style.display = 'none'; panel.querySelector('#screenFlashToggle').style.display = 'none'; panel.querySelector('#screenFlashIntensity').style.display = 'none'; panel.querySelector('#laserBeamToggle').style.display = 'none'; panel.querySelector('#laserBeamWidth').style.display = 'none'; panel.querySelector('#shockwaveToggle').style.display = 'none'; panel.querySelector('#shockwaveSize').style.display = 'none'; panel.querySelector('#glowEffectToggle').style.display = 'none'; panel.querySelector('#glowIntensity').style.display = 'none'; panel.querySelector('#trailEffectToggle').style.display = 'none'; panel.querySelector('#trailLength').style.display = 'none'; panel.querySelector('#soundEffectToggle').style.display = 'none'; panel.querySelector('#soundVolume').style.display = 'none'; panel.querySelector('#crosshairColorToggle').style.display = 'none'; panel.querySelector('#colorChangeSpeed').style.display = 'none'; panel.querySelector('#dynamicZoomToggle').style.display = 'none'; panel.querySelector('#zoomSensitivity').style.display = 'none'; confettiEnabled = true; panel.querySelector('#confettiToggle').textContent = 'Toggle Confetti on Shoot'; panel.querySelector('#confettiAmount').value = 100; confettiAmount = 100; hitmarkerEnabled = true; panel.querySelector('#hitmarkerToggle').textContent = 'Toggle Hitmarker'; panel.querySelector('#hitmarkerSize').value = 40; hitmarkerSize = 40; hitmarker.style.width = `${hitmarkerSize}px`; hitmarker.style.height = `${hitmarkerSize}px`; screenFlashEnabled = true; panel.querySelector('#screenFlashToggle').textContent = 'Toggle Screen Flash'; panel.querySelector('#screenFlashIntensity').value = 0.3; screenFlashIntensity = 0.3; laserBeamEnabled = true; panel.querySelector('#laserBeamToggle').textContent = 'Toggle Laser Beam'; panel.querySelector('#laserBeamWidth').value = 2; laserBeamWidth = 2; laserBeam.style.width = `${laserBeamWidth}px`; shockwaveEnabled = true; panel.querySelector('#shockwaveToggle').textContent = 'Toggle Shockwave'; panel.querySelector('#shockwaveSize').value = 200; shockwaveSize = 200; glowEffectEnabled = true; panel.querySelector('#glowEffectToggle').textContent = 'Toggle Crosshair Glow'; panel.querySelector('#glowIntensity').value = 10; glowIntensity = 10; trailEffectEnabled = true; panel.querySelector('#trailEffectToggle').textContent = 'Toggle Crosshair Trail'; panel.querySelector('#trailLength').value = 5; trailLength = 5; soundEffectEnabled = true; panel.querySelector('#soundEffectToggle').textContent = 'Toggle Shoot Sound'; panel.querySelector('#soundVolume').value = 0.5; soundVolume = 0.5; shootSound.volume = soundVolume; crosshairColorEnabled = true; panel.querySelector('#crosshairColorToggle').textContent = 'Toggle Crosshair Color Change'; panel.querySelector('#colorChangeSpeed').value = 5; colorChangeSpeed = 5; dynamicZoomEnabled = true; panel.querySelector('#dynamicZoomToggle').textContent = 'Toggle Dynamic Zoom'; panel.querySelector('#zoomSensitivity').value = 1; zoomSensitivity = 1; crosshairHue = 0; panel.querySelector('#vipCodeInput').value = ''; }); // Crosshair Selection for (let i = 1; i <= 16; i++) { const button = panel.querySelector(`#cross${i}`); if (button) { button.addEventListener('click', () => { if (i > 3 && !isVip) { alert('Enter the VIP code to unlock this crosshair!'); return; } Object.values(crosshairs).forEach(ch => ch.style.display = 'none'); chCustom.style.display = 'none'; crosshairs[`ch${i}`].style.display = 'block'; if (crossAnimEnabled) crosshairs[`ch${i}`].classList.add('crosshair-animated'); else crosshairs[`ch${i}`].classList.remove('crosshair-animated'); if (comicEffectEnabled) crosshairs[`ch${i}`].classList.add('comic-effect'); else crosshairs[`ch${i}`].classList.remove('comic-effect'); if (glowEffectEnabled && isVip) { crosshairs[`ch${i}`].style.boxShadow = `0 0 ${glowIntensity}px #ff00ff`; } }); } } // Custom Crosshair panel.querySelector('#crossCustom').addEventListener('click', () => { Object.values(crosshairs).forEach(ch => ch.style.display = 'none'); chCustom.style.display = 'block'; if (crossAnimEnabled) chCustom.classList.add('crosshair-animated'); else chCustom.classList.remove('crosshair-animated'); if (comicEffectEnabled) chCustom.classList.add('comic-effect'); else chCustom.classList.remove('comic-effect'); if (glowEffectEnabled && isVip) { chCustom.style.boxShadow = `0 0 ${glowIntensity}px #ff00ff`; } }); // Turn Off Crosshair panel.querySelector('#crossOff').addEventListener('click', () => { Object.values(crosshairs).forEach(ch => ch.style.display = 'none'); chCustom.style.display = 'none'; }); // Crosshair Size panel.querySelector('#crosshairSize').addEventListener('input', (e) => { const size = e.target.value; Object.values(crosshairs).forEach(ch => { ch.style.width = `${size}px`; ch.style.height = `${size}px`; }); chCustom.style.width = `${size}px`; chCustom.style.height = `${size}px`; }); // Custom Crosshair Upload panel.querySelector('#customCrosshair').addEventListener('change', (e) => { const file = e.target.files[0]; if (file) { const reader = new FileReader(); reader.onload = (event) => { chCustom.style.backgroundImage = `url(${event.target.result})`; chCustom.style.display = 'block'; Object.values(crosshairs).forEach(ch => ch.style.display = 'none'); if (crossAnimEnabled) chCustom.classList.add('crosshair-animated'); if (comicEffectEnabled) chCustom.classList.add('comic-effect'); if (glowEffectEnabled && isVip) { chCustom.style.boxShadow = `0 0 ${glowIntensity}px #ff00ff`; } }; reader.readAsDataURL(file); } }); // Custom Crosshair Opacity panel.querySelector('#customOpacity').addEventListener('input', (e) => { chCustom.style.opacity = e.target.value; }); // Toggle Crosshair Animation panel.querySelector('#crossAnim').addEventListener('click', () => { crossAnimEnabled = !crossAnimEnabled; const activeCrosshair = [...Object.values(crosshairs), chCustom].find(ch => ch.style.display === 'block'); if (activeCrosshair) { if (crossAnimEnabled) activeCrosshair.classList.add('crosshair-animated'); else activeCrosshair.classList.remove('crosshair-animated'); } panel.querySelector('#crossAnim').textContent = crossAnimEnabled ? 'Disable Animation' : 'Toggle Animation'; }); // Animation Speed panel.querySelector('#animSpeed').addEventListener('input', (e) => { document.querySelectorAll('.crosshair-animated').forEach(el => { el.style.animationDuration = `${e.target.value}s`; }); }); // Color Tint Controls panel.querySelector('#colorSlider').addEventListener('input', (e) => { autoColor = false; currentHue = parseInt(e.target.value); overlay.style.backgroundColor = `hsl(${currentHue}, 100%, 50%)`; panel.querySelector('#autoColor').textContent = 'Auto Cycle'; }); panel.querySelector('#autoColor').addEventListener('click', () => { autoColor = !autoColor; panel.querySelector('#autoColor').textContent = autoColor ? 'Disable Auto Cycle' : 'Auto Cycle'; }); panel.querySelector('#colorOff').addEventListener('click', () => { autoColor = false; overlay.style.backgroundColor = 'transparent'; panel.querySelector('#colorSlider').value = 0; panel.querySelector('#autoColor').textContent = 'Auto Cycle'; }); panel.querySelector('#presetNeon').addEventListener('click', () => { autoColor = false; currentHue = 180; overlay.style.backgroundColor = `hsl(180, 100%, 50%)`; panel.querySelector('#colorSlider').value = currentHue; panel.querySelector('#autoColor').textContent = 'Auto Cycle'; }); panel.querySelector('#presetPastel').addEventListener('click', () => { autoColor = false; currentHue = 300; overlay.style.backgroundColor = `hsl(300, 50%, 80%)`; panel.querySelector('#colorSlider').value = currentHue; panel.querySelector('#autoColor').textContent = 'Auto Cycle'; }); panel.querySelector('#presetMono').addEventListener('click', () => { autoColor = false; currentHue = 0; overlay.style.backgroundColor = `hsl(0, 0%, 50%)`; panel.querySelector('#colorSlider').value = currentHue; panel.querySelector('#autoColor').textContent = 'Auto Cycle'; }); // Particle Effects Controls panel.querySelector('#particlesToggle').addEventListener('click', () => { particlesEnabled = !particlesEnabled; if (particlesEnabled && comicEffectEnabled) { particleCanvas.classList.add('comic-effect'); } else { particleCanvas.classList.remove('comic-effect'); } panel.querySelector('#particlesToggle').textContent = particlesEnabled ? 'Disable Particles' : 'Toggle Particles'; }); panel.querySelector('#particleFire').addEventListener('click', () => { particleStyle = 'fire'; }); panel.querySelector('#particleNeon').addEventListener('click', () => { particleStyle = 'neon'; }); panel.querySelector('#particleMagic').addEventListener('click', () => { particleStyle = 'magic'; }); panel.querySelector('#particleSize').addEventListener('input', (e) => { particleSize = parseFloat(e.target.value); initParticles(); }); // Comic Effect panel.querySelector('#comicToggle').addEventListener('click', () => { comicEffectEnabled = !comicEffectEnabled; const activeCrosshair = [...Object.values(crosshairs), chCustom].find(ch => ch.style.display === 'block'); if (comicEffectEnabled) { if (activeCrosshair) activeCrosshair.classList.add('comic-effect'); if (particlesEnabled) particleCanvas.classList.add('comic-effect'); if (trailEffectEnabled && isVip) trailCanvas.classList.add('comic-effect'); } else { if (activeCrosshair) activeCrosshair.classList.remove('comic-effect'); particleCanvas.classList.remove('comic-effect'); trailCanvas.classList.remove('comic-effect'); } panel.querySelector('#comicToggle').textContent = comicEffectEnabled ? 'Disable Comic Effect' : 'Toggle Comic Effect'; }); panel.querySelector('#comicIntensity').addEventListener('input', (e) => { comicIntensity = parseFloat(e.target.value); document.querySelectorAll('.comic-effect::after').forEach(el => { if (el) el.style.opacity = comicIntensity; }); }); // Glitch Effect panel.querySelector('#glitchToggle').addEventListener('click', () => { glitchEnabled = !glitchEnabled; glitch.style.opacity = glitchEnabled ? glitchIntensity : '0'; panel.querySelector('#glitchToggle').textContent = glitchEnabled ? 'Disable Glitch' : 'Toggle Glitch'; }); panel.querySelector('#glitchIntensity').addEventListener('input', (e) => { glitchIntensity = parseFloat(e.target.value); if (glitchEnabled) glitch.style.opacity = glitchIntensity; }); // Vignette Effect panel.querySelector('#vignetteToggle').addEventListener('click', () => { vignetteEnabled = !vignetteEnabled; vignette.style.opacity = vignetteEnabled ? vignetteOpacity : '0'; panel.querySelector('#vignetteToggle').textContent = vignetteEnabled ? 'Disable Vignette' : 'Toggle Vignette'; }); panel.querySelector('#vignetteOpacity').addEventListener('input', (e) => { vignetteOpacity = parseFloat(e.target.value); if (vignetteEnabled) vignette.style.opacity = vignetteOpacity; }); // Virtual Keyboard Functionality const vipCodeInput = panel.querySelector('#vipCodeInput'); vipCodeInput.addEventListener('click', () => { keyboard.style.display = 'flex'; }); keyboard.querySelectorAll('button').forEach(btn => { btn.addEventListener('click', () => { const value = btn.textContent; if (value === 'Space') { vipCodeInput.value += ' '; } else if (value === '⌫') { vipCodeInput.value = vipCodeInput.value.slice(0, -1); } else if (value === 'Close') { keyboard.style.display = 'none'; } else { vipCodeInput.value += value; } }); }); // VIP Features Unlock panel.querySelector('#checkCode').addEventListener('click', () => { const code = vipCodeInput.value.trim().toUpperCase(); if (code === 'JUSTKOUR') { isVip = true; panel.querySelector('#vipMessage').style.display = 'block'; for (let i = 4; i <= 16; i++) { const btn = panel.querySelector(`#cross${i}`); if (btn) btn.style.display = 'block'; } panel.querySelector('#confettiToggle').style.display = 'block'; panel.querySelector('#confettiAmount').style.display = 'block'; panel.querySelector('#hitmarkerToggle').style.display = 'block'; panel.querySelector('#hitmarkerSize').style.display = 'block'; panel.querySelector('#screenFlashToggle').style.display = 'block'; panel.querySelector('#screenFlashIntensity').style.display = 'block'; panel.querySelector('#laserBeamToggle').style.display = 'block'; panel.querySelector('#laserBeamWidth').style.display = 'block'; panel.querySelector('#shockwaveToggle').style.display = 'block'; panel.querySelector('#shockwaveSize').style.display = 'block'; panel.querySelector('#glowEffectToggle').style.display = 'block'; panel.querySelector('#glowIntensity').style.display = 'block'; panel.querySelector('#trailEffectToggle').style.display = 'block'; panel.querySelector('#trailLength').style.display = 'block'; panel.querySelector('#soundEffectToggle').style.display = 'block'; panel.querySelector('#soundVolume').style.display = 'block'; panel.querySelector('#crosshairColorToggle').style.display = 'block'; panel.querySelector('#colorChangeSpeed').style.display = 'block'; panel.querySelector('#dynamicZoomToggle').style.display = 'block'; panel.querySelector('#zoomSensitivity').style.display = 'block'; alert('VIP Unlocked! Enjoy the exclusive features.'); const activeCrosshair = [...Object.values(crosshairs), chCustom].find(ch => ch.style.display === 'block'); if (activeCrosshair) { const crosshairRect = activeCrosshair.getBoundingClientRect(); initConfetti(crosshairRect.left + crosshairRect.width / 2, crosshairRect.top + crosshairRect.height / 2); } else { initConfetti(); } animateConfetti(); keyboard.style.display = 'none'; } else { alert('Invalid code! Please enter JUSTKOUR to unlock VIP features.'); } }); // VIP Shoot Effects panel.querySelector('#confettiToggle').addEventListener('click', () => { confettiEnabled = !confettiEnabled; panel.querySelector('#confettiToggle').textContent = confettiEnabled ? 'Disable Confetti on Shoot' : 'Toggle Confetti on Shoot'; }); panel.querySelector('#confettiAmount').addEventListener('input', (e) => { confettiAmount = parseInt(e.target.value); }); panel.querySelector('#hitmarkerToggle').addEventListener('click', () => { hitmarkerEnabled = !hitmarkerEnabled; panel.querySelector('#hitmarkerToggle').textContent = hitmarkerEnabled ? 'Disable Hitmarker' : 'Toggle Hitmarker'; }); panel.querySelector('#hitmarkerSize').addEventListener('input', (e) => { hitmarkerSize = parseInt(e.target.value); hitmarker.style.width = `${hitmarkerSize}px`; hitmarker.style.height = `${hitmarkerSize}px`; }); panel.querySelector('#screenFlashToggle').addEventListener('click', () => { screenFlashEnabled = !screenFlashEnabled; panel.querySelector('#screenFlashToggle').textContent = screenFlashEnabled ? 'Disable Screen Flash' : 'Toggle Screen Flash'; }); panel.querySelector('#screenFlashIntensity').addEventListener('input', (e) => { screenFlashIntensity = parseFloat(e.target.value); }); panel.querySelector('#laserBeamToggle').addEventListener('click', () => { laserBeamEnabled = !laserBeamEnabled; panel.querySelector('#laserBeamToggle').textContent = laserBeamEnabled ? 'Disable Laser Beam' : 'Toggle Laser Beam'; }); panel.querySelector('#laserBeamWidth').addEventListener('input', (e) => { laserBeamWidth = parseInt(e.target.value); laserBeam.style.width = `${laserBeamWidth}px`; }); panel.querySelector('#shockwaveToggle').addEventListener('click', () => { shockwaveEnabled = !shockwaveEnabled; panel.querySelector('#shockwaveToggle').textContent = shockwaveEnabled ? 'Disable Shockwave' : 'Toggle Shockwave'; }); panel.querySelector('#shockwaveSize').addEventListener('input', (e) => { shockwaveSize = parseInt(e.target.value); }); // VIP Visual Enhancements panel.querySelector('#glowEffectToggle').addEventListener('click', () => { glowEffectEnabled = !glowEffectEnabled; const activeCrosshair = [...Object.values(crosshairs), chCustom].find(ch => ch.style.display === 'block'); if (activeCrosshair) { if (glowEffectEnabled) { activeCrosshair.style.boxShadow = `0 0 ${glowIntensity}px #ff00ff`; } else { activeCrosshair.style.boxShadow = ''; } } panel.querySelector('#glowEffectToggle').textContent = glowEffectEnabled ? 'Disable Crosshair Glow' : 'Toggle Crosshair Glow'; }); panel.querySelector('#glowIntensity').addEventListener('input', (e) => { glowIntensity = parseInt(e.target.value); const activeCrosshair = [...Object.values(crosshairs), chCustom].find(ch => ch.style.display === 'block'); if (activeCrosshair && glowEffectEnabled) { activeCrosshair.style.boxShadow = `0 0 ${glowIntensity}px #ff00ff`; } }); panel.querySelector('#trailEffectToggle').addEventListener('click', () => { trailEffectEnabled = !trailEffectEnabled; panel.querySelector('#trailEffectToggle').textContent = trailEffectEnabled ? 'Disable Crosshair Trail' : 'Toggle Crosshair Trail'; }); panel.querySelector('#trailLength').addEventListener('input', (e) => { trailLength = parseInt(e.target.value); }); panel.querySelector('#soundEffectToggle').addEventListener('click', () => { soundEffectEnabled = !soundEffectEnabled; panel.querySelector('#soundEffectToggle').textContent = soundEffectEnabled ? 'Disable Shoot Sound' : 'Toggle Shoot Sound'; }); panel.querySelector('#soundVolume').addEventListener('input', (e) => { soundVolume = parseFloat(e.target.value); shootSound.volume = soundVolume; }); panel.querySelector('#crosshairColorToggle').addEventListener('click', () => { crosshairColorEnabled = !crosshairColorEnabled; panel.querySelector('#crosshairColorToggle').textContent = crosshairColorEnabled ? 'Disable Crosshair Color Change' : 'Toggle Crosshair Color Change'; }); panel.querySelector('#colorChangeSpeed').addEventListener('input', (e) => { colorChangeSpeed = parseInt(e.target.value); }); panel.querySelector('#dynamicZoomToggle').addEventListener('click', () => { dynamicZoomEnabled = !dynamicZoomEnabled; panel.querySelector('#dynamicZoomToggle').textContent = dynamicZoomEnabled ? 'Disable Dynamic Zoom' : 'Toggle Dynamic Zoom'; }); panel.querySelector('#zoomSensitivity').addEventListener('input', (e) => { zoomSensitivity = parseFloat(e.target.value); }); // Crosshair Color Change Animation const updateCrosshairColor = () => { if (crosshairColorEnabled && isVip) { crosshairHue = (crosshairHue + colorChangeSpeed) % 360; const activeCrosshair = [...Object.values(crosshairs), chCustom].find(ch => ch.style.display === 'block'); if (activeCrosshair) { activeCrosshair.style.filter = `hue-rotate(${crosshairHue}deg)`; } } requestAnimationFrame(updateCrosshairColor); }; updateCrosshairColor(); // Dynamic Zoom on Mouse Move let baseCrosshairSize = 80; const updateDynamicZoom = (e) => { if (dynamicZoomEnabled && isVip) { const activeCrosshair = [...Object.values(crosshairs), chCustom].find(ch => ch.style.display === 'block'); if (activeCrosshair) { const centerX = window.innerWidth / 2; const centerY = window.innerHeight / 2; const distance = Math.sqrt(Math.pow(e.clientX - centerX, 2) + Math.pow(e.clientY - centerY, 2)); const zoomFactor = 1 - (distance / (window.innerWidth / 2)) * zoomSensitivity * 0.3; const newSize = baseCrosshairSize * Math.max(0.5, zoomFactor); activeCrosshair.style.width = `${newSize}px`; activeCrosshair.style.height = `${newSize}px`; } } }; // Trail Effect on Mouse Move const updateTrailOnMove = (e) => { if (trailEffectEnabled && isVip) { const activeCrosshair = [...Object.values(crosshairs), chCustom].find(ch => ch.style.display === 'block'); if (activeCrosshair) { const crosshairRect = activeCrosshair.getBoundingClientRect(); trailPositions.push({ x: crosshairRect.left + crosshairRect.width / 2, y: crosshairRect.top + crosshairRect.height / 2, opacity: 1 }); if (trailPositions.length > trailLength) { trailPositions.shift(); } } } }; // Mouse Move Events document.addEventListener('mousemove', (e) => { updateDynamicZoom(e); updateTrailOnMove(e); }); // Shoot Effects on Mouse Down document.addEventListener('mousedown', (e) => { if (isVip) { const activeCrosshair = [...Object.values(crosshairs), chCustom].find(ch => ch.style.display === 'block'); if (confettiEnabled) { if (activeCrosshair) { const crosshairRect = activeCrosshair.getBoundingClientRect(); initConfetti( crosshairRect.left + crosshairRect.width / 2, crosshairRect.top + crosshairRect.height / 2 ); } else { initConfetti(); } animateConfetti(); } if (hitmarkerEnabled) { hitmarker.style.opacity = '1'; setTimeout(() => { hitmarker.style.opacity = '0'; }, 200); } if (screenFlashEnabled) { screenFlash.style.opacity = screenFlashIntensity; setTimeout(() => { screenFlash.style.opacity = '0'; }, 100); } if (laserBeamEnabled) { laserBeam.style.opacity = '1'; setTimeout(() => { laserBeam.style.opacity = '0'; }, 50); } if (shockwaveEnabled) { shockwave.style.width = '0'; shockwave.style.height = '0'; shockwave.style.opacity = '1'; shockwave.style.animation = 'none'; setTimeout(() => { shockwave.style.width = `${shockwaveSize}px`; shockwave.style.height = `${shockwaveSize}px`; shockwave.style.opacity = '0'; shockwave.style.animation = 'shockwaveExpand 0.5s ease forwards'; }, 10); } if (soundEffectEnabled) { shootSound.currentTime = 0; shootSound.play(); } } }); // Crosshair Size Update (to sync with dynamic zoom base size) panel.querySelector('#crosshairSize').addEventListener('input', (e) => { baseCrosshairSize = parseInt(e.target.value); Object.values(crosshairs).forEach(ch => { ch.style.width = `${baseCrosshairSize}px`; ch.style.height = `${baseCrosshairSize}px`; }); chCustom.style.width = `${baseCrosshairSize}px`; chCustom.style.height = `${baseCrosshairSize}px`; }); }; setupEventListeners(); // === INITIALIZATION === const initialize = () => { gearIcon.style.display = 'block'; panel.classList.remove('hidden'); window.addEventListener('resize', () => { confettiCanvas.width = window.innerWidth; confettiCanvas.height = window.innerHeight; particleCanvas.width = window.innerWidth; particleCanvas.height = window.innerHeight; trailCanvas.width = window.innerWidth; trailCanvas.height = window.innerHeight; }); }; initialize(); })();