const glassbreak = new Audio("https://files.catbox.moe/b1q0jx.ogg") let lCursorUrl = localStorage.getItem("lcursor_url"); let isKCursed = localStorage.getItem("kcursed"); const lCursorStyleTag = document.createElement('style'); document.head.appendChild(lCursorStyleTag); let lCursorDiv; initCursorDiv = (url) => { console.log("hi!") lCursorStyleTag.innerHTML = `* { cursor: none !important }`; const cursorDiv = document.createElement('img'); cursorDiv.style.pointerEvents = `none` cursorDiv.style.position = `fixed` cursorDiv.style.zIndex = `10000` cursorDiv.src = lCursorUrl cursorDiv.id = "lcursordiv" document.onmousemove = (e) => { cursorDiv.style.left = `${e.clientX}px` cursorDiv.style.top = `${e.clientY}px` } document.body.appendChild(cursorDiv) lCursorDiv = cursorDiv } window.setLCursor = (url) => { if (isKCursed) return localStorage.setItem("lcursor_url", url); if (!lCursorDiv) initCursorDiv(url) lCursorDiv.src = url console.log("setlcursor", url) } if (lCursorUrl) { lCursorStyleTag.innerHTML = `:root { cursor: url("${lCursorUrl}"), auto }`; initCursorDiv(lCursorUrl) } window.clearLCursor = () => { if (isKCursed) return localStorage.removeItem("lcursor_url"); lCursorStyleTag.innerHTML = ``; lCursorDiv.remove(); lCursorDiv = undefined; glassbreak.play() } // Why did someone change cursor to curser all over my code! I am mad! (Oh wait, I get the pun - You totally misunderstood what I was doing LOL. I just wanted to rewrite it using LocalStorage) // kcursor - kallistero's melo-tech link-fed custom cursors! // This script allows you to select a custom cursor just by adding an image link to a "kcursor" url parameter! // example link to test the script: // https://everyone.melonland.net/kallistero?kcursor=https://kallistero.neocities.org/things/i/use/images/ghost.gif // ^ click the star from there to see the magic carry over to the Everyone site homepage! // external handle, for re-running the cursor-setting function if needed let refreshKCursor = function(){}; // also, any links with the class "kcursor-removal-link" will turn into links that remove the cursor image document.querySelectorAll(".kcursor-removal-link").forEach((element) => { element.onclick = (e) => { e.preventDefault(); window.clearLCursor(); } }) /* { let kCursorStyleTag; const setCursor = (event) => { let cursorLink; try { cursorLink = encodeURI(new URLSearchParams(window.location.search).get('kcursor')); } catch (e) { console.warn(e); return; } if(cursorLink && cursorLink !== 'null') { if(kCursorStyleTag === undefined) { kCursorStyleTag = document.createElement('style'); kCursorStyleTag.id = `kcursor-${Date.now()}`; document.head.appendChild(kCursorStyleTag); } kCursorStyleTag.innerHTML = `:root { cursor: url(${cursorLink}), auto }`; try { pageLinkHref = new URL(pageLink.href); } catch (typeError) { // adds no params to links that are invalid continue; } const pageLinkParams = pageLinkHref.searchParams; if(pageLinkHref.href.startsWith('javascript:') || pageLinkHref.href.startsWith('https://forum.melonland.net/pad.php')) { // adds no params to javascript links or community pad links continue; } let newHref = pageLinkHref.origin + pageLinkHref.pathname + '?'; let hasKCursorParam = false; for(const [paramName, paramValue] of pageLinkParams) { if(paramName === 'kcursor') { hasKCursorParam = true; newHref += `${paramName}=${cursorLink}`; } else { newHref += `${paramName}=${paramValue}`; } newHref += '&'; } if(hasKCursorParam) { newHref = newHref.slice(0, -1); } else { newHref += 'kcursor=' + cursorLink; } newHref += pageLinkHref.hash; pageLink.href = newHref; } } }; window.addEventListener('DOMContentLoaded', setCursor); refreshKCursor = setCursor; }; */