打开/关闭菜单
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

杂物间:空山新雨后

来自EaseCation Wiki

我想你

我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你

我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你

我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你

我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你

我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你

我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你

我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你

我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你

我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你

我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你

我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你

我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你

我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你

我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你

我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你

我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你

我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你

我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你

我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你

我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你我想你

我 想 你

'); $('body').append($pageBlackout); var isFlooding = false; var isFinished = false; var currentSpeed = 600; var speedLevel = 0; var addInterval = null; var speedTimer = null; var batchFastInterval = null; var coverCheckInterval = null; function getBounds() { var rect = $overlay[0].getBoundingClientRect(); return { width: rect.width, height: rect.height }; } function addMissWord() { if (isFinished) return; var bounds = getBounds(); if (bounds.width <= 0 || bounds.height <= 0) return; var word = document.createElement('div'); word.className = 'miss-word'; word.textContent = '我想你'; var rand = Math.random(); var fontSize; if (rand < 0.5) { fontSize = 12 + Math.random() * 20; } else if (rand < 0.8) { fontSize = 32 + Math.random() * 40; } else { fontSize = 72 + Math.random() * 58; } word.style.fontSize = fontSize + 'px'; var left = Math.random() * (bounds.width - Math.min(150, bounds.width - 10)); var top = Math.random() * (bounds.height - 50); word.style.left = left + 'px'; word.style.top = top + 'px'; word.style.color = '#000000'; word.style.opacity = '0'; $overlay[0].appendChild(word); setTimeout(function() { if (word.parentNode) { word.style.opacity = '0.85'; } }, 5); if ($overlay[0].children.length > 1500) { var toRemove = $overlay[0].children.length - 1200; for (var i = 0; i < toRemove; i++) { if ($overlay[0].children[i]) { $overlay[0].children[i].remove(); } } } } function addBatch(count) { for (var i = 0; i < count; i++) { (function(idx) { setTimeout(function() { addMissWord(); }, idx * 15); })(i); } } function checkCoverageAndFinish() { if (isFinished || !isFlooding) return; var count = $overlay[0].children.length; if (count >= 600 || (currentSpeed <= 30 && count >= 350)) { finishAndBlackout(); } } function finishAndBlackout() { if (isFinished) return; isFinished = true; isFlooding = false; clearInterval(addInterval); clearInterval(coverCheckInterval); clearInterval(speedTimer); if (batchFastInterval) clearInterval(batchFastInterval); // Rapid final batch for (var i = 0; i < 100; i++) { (function(idx) { setTimeout(function() { addMissWord(); }, idx * 8); })(i); } // Trigger container blackout $blackout.addClass('show'); // Trigger full-page blackout setTimeout(function() { $('body').addClass('miss-black-mode'); $pageBlackout.addClass('show'); }, 300); // Show final red text (full screen centered) setTimeout(function() { $final.addClass('show'); }, 1500); console.log('[空山新雨后] 蔓延效果完成,进入终局'); } function increaseSpeed() { if (!isFlooding || isFinished) return; speedLevel++; if (speedLevel <= 20) { currentSpeed = Math.max(25, currentSpeed * 0.85); } else if (speedLevel <= 40) { currentSpeed = Math.max(12, currentSpeed * 0.92); } else { currentSpeed = Math.max(6, currentSpeed * 0.95); } clearInterval(addInterval); addInterval = setInterval(function() { if (isFlooding && !isFinished) { addMissWord(); if (Math.random() < 0.25) { setTimeout(function() { addMissWord(); }, 8); } } }, currentSpeed); if (currentSpeed < 40 && isFlooding && !isFinished) { if (batchFastInterval) clearInterval(batchFastInterval); batchFastInterval = setInterval(function() { if (isFlooding && !isFinished) { for (var i = 0; i < 4; i++) { (function(idx) { setTimeout(function() { addMissWord(); }, idx * 10); })(i); } } }, 1200); } } function startFlooding() { if (isFlooding || isFinished) return; isFlooding = true; console.log('[空山新雨后] 开始蔓延'); addBatch(25); currentSpeed = 550; addInterval = setInterval(function() { if (isFlooding && !isFinished) { addMissWord(); if (Math.random() < 0.2) { setTimeout(function() { addMissWord(); }, 8); } } }, currentSpeed); speedTimer = setInterval(function() { if (isFlooding && !isFinished) { increaseSpeed(); } else { clearInterval(speedTimer); } }, 1000); coverCheckInterval = setInterval(function() { checkCoverageAndFinish(); }, 300); } setTimeout(function() { if (!isFlooding && !isFinished) { startFlooding(); } }, 1000); console.log('[空山新雨后] 蔓延效果已初始化'); }); }, 0); })();