<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://www.moshilu.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=OnlyOTO</id>
	<title>末世录 - 用户贡献 [zh-cn]</title>
	<link rel="self" type="application/atom+xml" href="https://www.moshilu.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=OnlyOTO"/>
	<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/%E7%89%B9%E6%AE%8A:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/OnlyOTO"/>
	<updated>2026-05-10T00:34:17Z</updated>
	<subtitle>用户贡献</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=CommentStreams:870e67a0af4058d637466efe5b38254b&amp;diff=348</id>
		<title>CommentStreams:870e67a0af4058d637466efe5b38254b</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=CommentStreams:870e67a0af4058d637466efe5b38254b&amp;diff=348"/>
		<updated>2026-03-31T15:24:31Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;实装光标{{DISPLAYTITLE:&lt;br /&gt;
测试&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=347</id>
		<title>MediaWiki:Citizen.js</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=347"/>
		<updated>2026-03-31T15:17:38Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(function() {&lt;br /&gt;
// 页面白名单&lt;br /&gt;
const allowPages = [&lt;br /&gt;
  &amp;quot;首页&amp;quot;,&lt;br /&gt;
  &amp;quot;Main Page&amp;quot;,&lt;br /&gt;
  &amp;quot;你的自定义首页名字&amp;quot;&lt;br /&gt;
];&lt;br /&gt;
const currentPage = mw.config.get(&amp;quot;wgTitle&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if( !allowPages.includes(currentPage) ){&lt;br /&gt;
  return;&lt;br /&gt;
}&lt;br /&gt;
if( window.magneticCursorInit ) return;&lt;br /&gt;
window.magneticCursorInit = true;&lt;br /&gt;
&lt;br /&gt;
mw.loader.using( [], function() {&lt;br /&gt;
    // 创建四角光标&lt;br /&gt;
    const ptr = document.createElement(&#039;div&#039;);&lt;br /&gt;
    ptr.className = &#039;magnetic-true-corner&#039;;&lt;br /&gt;
    ptr.innerHTML = `&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;`;&lt;br /&gt;
    document.body.appendChild(ptr);&lt;br /&gt;
&lt;br /&gt;
    // 样式&lt;br /&gt;
    const css = document.createElement(&#039;style&#039;);&lt;br /&gt;
    css.textContent = `&lt;br /&gt;
&lt;br /&gt;
/* 隐藏浏览器原生光标 */&lt;br /&gt;
body {&lt;br /&gt;
  cursor: none !important;&lt;br /&gt;
}&lt;br /&gt;
/* 防止输入框/按钮露馅，强制全局隐藏 */&lt;br /&gt;
* {&lt;br /&gt;
  cursor: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
    .magnetic-true-corner{&lt;br /&gt;
        position:fixed;&lt;br /&gt;
        left:0;top:0;&lt;br /&gt;
        width:0;height:0;&lt;br /&gt;
        pointer-events:none;&lt;br /&gt;
        z-index:999999!important;&lt;br /&gt;
    }&lt;br /&gt;
    .magnetic-true-corner i{&lt;br /&gt;
        position:absolute;&lt;br /&gt;
        width:14px;height:14px;&lt;br /&gt;
        border:2px solid #888e99;&lt;br /&gt;
        background:transparent!important;&lt;br /&gt;
        box-shadow:none!important;&lt;br /&gt;
    }&lt;br /&gt;
    .magnetic-true-corner i:nth-child(1){top:-2px;left:-2px;border-right:none;border-bottom:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(2){top:-2px;right:-2px;border-left:none;border-bottom:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(3){bottom:-2px;left:-2px;border-right:none;border-top:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(4){bottom:-2px;right:-2px;border-left:none;border-top:none;}&lt;br /&gt;
    `;&lt;br /&gt;
    document.head.appendChild(css);&lt;br /&gt;
&lt;br /&gt;
    let hoverEl = null;&lt;br /&gt;
    let mx = 0, my = 0;&lt;br /&gt;
    // 光标缓冲坐标&lt;br /&gt;
    let smoothX = 0, smoothY = 0;&lt;br /&gt;
    let curW = 40, curH = 40;&lt;br /&gt;
&lt;br /&gt;
    // 鼠标实时位置&lt;br /&gt;
    document.addEventListener(&#039;mousemove&#039;, e =&amp;gt; {&lt;br /&gt;
        mx = e.clientX;&lt;br /&gt;
        my = e.clientY;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // 顺滑帧磁吸缓冲&lt;br /&gt;
    function loop(){&lt;br /&gt;
        const ease = 0.15; // 磁吸顺滑度&lt;br /&gt;
        if(hoverEl){&lt;br /&gt;
            // 吸附到元素中心 + 缓冲&lt;br /&gt;
            const r = hoverEl.getBoundingClientRect();&lt;br /&gt;
            const targetX = r.left + r.width / 2;&lt;br /&gt;
            const targetY = r.top + r.height / 2;&lt;br /&gt;
            smoothX += (targetX - smoothX) * ease;&lt;br /&gt;
            smoothY += (targetY - smoothY) * ease;&lt;br /&gt;
            curW = r.width;&lt;br /&gt;
            curH = r.height;&lt;br /&gt;
&lt;br /&gt;
            // 四角框&lt;br /&gt;
            ptr.style.left = (smoothX - curW / 2) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = (smoothY - curH / 2) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = curW + &#039;px&#039;;&lt;br /&gt;
            ptr.style.height = curH + &#039;px&#039;;&lt;br /&gt;
        }else{&lt;br /&gt;
            // 常态跟随鼠标&lt;br /&gt;
            curW = 40;&lt;br /&gt;
            curH = 40;&lt;br /&gt;
            smoothX += (mx - smoothX) * ease;&lt;br /&gt;
            smoothY += (my - smoothY) * ease;&lt;br /&gt;
&lt;br /&gt;
            ptr.style.left = (smoothX - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = (smoothY - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = curW + &#039;px&#039;;&lt;br /&gt;
            ptr.style.height = curH + &#039;px&#039;;&lt;br /&gt;
        }&lt;br /&gt;
        requestAnimationFrame(loop);&lt;br /&gt;
    }&lt;br /&gt;
    loop();&lt;br /&gt;
&lt;br /&gt;
const sel = [&lt;br /&gt;
    // 官方皮肤按钮&lt;br /&gt;
    &#039;.citizen-nav a&#039;,&lt;br /&gt;
    &#039;.citizen-menu a&#039;,&lt;br /&gt;
    &#039;.citizen-button&#039;,&lt;br /&gt;
    &#039;.citizen-action-button&#039;,&lt;br /&gt;
    &#039;.cdx-button&#039;,&lt;br /&gt;
    &#039;.mw-editsection a&#039;,&lt;br /&gt;
    &#039;#citizen-header__nav a&#039;,&lt;br /&gt;
    &#039;.citizen-sidebar a&#039;,&lt;br /&gt;
    &lt;br /&gt;
    // 自己加的 _target &lt;br /&gt;
    &#039;._target&#039;,&lt;br /&gt;
    &lt;br /&gt;
    // Commentstreams扩展&lt;br /&gt;
    &#039;.commentstreams-button&#039;,&lt;br /&gt;
    &#039;.commentstreams-submit&#039;,&lt;br /&gt;
    &#039;.commentstreams-header button&#039;,&lt;br /&gt;
    &#039;.commentstreams-box button&#039;,&lt;br /&gt;
    &lt;br /&gt;
    // 常用&lt;br /&gt;
    &#039;.mw-ui-button&#039;,&lt;br /&gt;
    &#039;button&#039;,&lt;br /&gt;
    &#039;a[role=&amp;quot;button&amp;quot;]&#039;&lt;br /&gt;
].join(&#039;,&#039;);&lt;br /&gt;
&lt;br /&gt;
    function bind(){&lt;br /&gt;
        document.querySelectorAll(sel).forEach(el=&amp;gt;{&lt;br /&gt;
            if(el._magBind)return;&lt;br /&gt;
            el._magBind = 1;&lt;br /&gt;
            el.addEventListener(&#039;mouseenter&#039;, ()=&amp;gt; hoverEl = el);&lt;br /&gt;
            el.addEventListener(&#039;mouseleave&#039;, ()=&amp;gt; hoverEl = null);&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    bind();&lt;br /&gt;
    new MutationObserver(bind).observe(document.body,{childList:true,subtree:true});&lt;br /&gt;
});&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=346</id>
		<title>MediaWiki:Citizen.js</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=346"/>
		<updated>2026-03-31T15:16:54Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(function() {&lt;br /&gt;
// 页面白名单&lt;br /&gt;
const allowPages = [&lt;br /&gt;
  &amp;quot;首页&amp;quot;,&lt;br /&gt;
  &amp;quot;Main Page&amp;quot;,&lt;br /&gt;
  &amp;quot;你的自定义首页名字&amp;quot;&lt;br /&gt;
];&lt;br /&gt;
const currentPage = mw.config.get(&amp;quot;wgTitle&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if( !allowPages.includes(currentPage) ){&lt;br /&gt;
  return;&lt;br /&gt;
}&lt;br /&gt;
if( window.magneticCursorInit ) return;&lt;br /&gt;
window.magneticCursorInit = true;&lt;br /&gt;
&lt;br /&gt;
mw.loader.using( [], function() {&lt;br /&gt;
    // 创建四角光标&lt;br /&gt;
    const ptr = document.createElement(&#039;div&#039;);&lt;br /&gt;
    ptr.className = &#039;magnetic-true-corner&#039;;&lt;br /&gt;
    ptr.innerHTML = `&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;`;&lt;br /&gt;
    document.body.appendChild(ptr);&lt;br /&gt;
&lt;br /&gt;
    // 样式&lt;br /&gt;
    const css = document.createElement(&#039;style&#039;);&lt;br /&gt;
    css.textContent = `&lt;br /&gt;
&lt;br /&gt;
/* 隐藏浏览器原生光标 */&lt;br /&gt;
body {&lt;br /&gt;
  cursor: none !important;&lt;br /&gt;
}&lt;br /&gt;
* {&lt;br /&gt;
  cursor: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes rotateLoop {&lt;br /&gt;
  from { transform: rotate(0deg); }&lt;br /&gt;
  to   { transform: rotate(360deg); }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.magnetic-true-corner{&lt;br /&gt;
    position:fixed;&lt;br /&gt;
    left:0;top:0;&lt;br /&gt;
    width:0;height:0;&lt;br /&gt;
    pointer-events:none;&lt;br /&gt;
    z-index:999999!important;&lt;br /&gt;
    animation: rotateLoop 8s linear infinite; /* 转圈：8秒一圈，可改速度 */&lt;br /&gt;
}&lt;br /&gt;
.magnetic-true-corner i{&lt;br /&gt;
    position:absolute;&lt;br /&gt;
    width:14px;height:14px;&lt;br /&gt;
    border:2px solid #888e99;&lt;br /&gt;
    background:transparent!important;&lt;br /&gt;
    box-shadow:none!important;&lt;br /&gt;
}&lt;br /&gt;
.magnetic-true-corner i:nth-child(1){top:-2px;left:-2px;border-right:none;border-bottom:none;}&lt;br /&gt;
.magnetic-true-corner i:nth-child(2){top:-2px;right:-2px;border-left:none;border-bottom:none;}&lt;br /&gt;
.magnetic-true-corner i:nth-child(3){bottom:-2px;left:-2px;border-right:none;border-top:none;}&lt;br /&gt;
.magnetic-true-corner i:nth-child(4){bottom:-2px;right:-2px;border-left:none;border-top:none;}&lt;br /&gt;
    `;&lt;br /&gt;
    document.head.appendChild(css);&lt;br /&gt;
&lt;br /&gt;
    let hoverEl = null;&lt;br /&gt;
    let mx = 0, my = 0;&lt;br /&gt;
    // 光标缓冲坐标&lt;br /&gt;
    let smoothX = 0, smoothY = 0;&lt;br /&gt;
    let curW = 40, curH = 40;&lt;br /&gt;
&lt;br /&gt;
    // 鼠标实时位置&lt;br /&gt;
    document.addEventListener(&#039;mousemove&#039;, e =&amp;gt; {&lt;br /&gt;
        mx = e.clientX;&lt;br /&gt;
        my = e.clientY;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // 顺滑帧磁吸缓冲&lt;br /&gt;
    function loop(){&lt;br /&gt;
        const ease = 0.15; // 磁吸顺滑度&lt;br /&gt;
        if(hoverEl){&lt;br /&gt;
            // 吸附到元素中心 + 缓冲&lt;br /&gt;
            const r = hoverEl.getBoundingClientRect();&lt;br /&gt;
            const targetX = r.left + r.width / 2;&lt;br /&gt;
            const targetY = r.top + r.height / 2;&lt;br /&gt;
            smoothX += (targetX - smoothX) * ease;&lt;br /&gt;
            smoothY += (targetY - smoothY) * ease;&lt;br /&gt;
            curW = r.width;&lt;br /&gt;
            curH = r.height;&lt;br /&gt;
&lt;br /&gt;
            // 四角框&lt;br /&gt;
            ptr.style.left = (smoothX - curW / 2) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = (smoothY - curH / 2) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = curW + &#039;px&#039;;&lt;br /&gt;
            ptr.style.height = curH + &#039;px&#039;;&lt;br /&gt;
        }else{&lt;br /&gt;
            // 常态跟随鼠标&lt;br /&gt;
            curW = 40;&lt;br /&gt;
            curH = 40;&lt;br /&gt;
            smoothX += (mx - smoothX) * ease;&lt;br /&gt;
            smoothY += (my - smoothY) * ease;&lt;br /&gt;
&lt;br /&gt;
            ptr.style.left = (smoothX - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = (smoothY - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = curW + &#039;px&#039;;&lt;br /&gt;
            ptr.style.height = curH + &#039;px&#039;;&lt;br /&gt;
        }&lt;br /&gt;
        requestAnimationFrame(loop);&lt;br /&gt;
    }&lt;br /&gt;
    loop();&lt;br /&gt;
&lt;br /&gt;
const sel = [&lt;br /&gt;
    // 官方皮肤按钮&lt;br /&gt;
    &#039;.citizen-nav a&#039;,&lt;br /&gt;
    &#039;.citizen-menu a&#039;,&lt;br /&gt;
    &#039;.citizen-button&#039;,&lt;br /&gt;
    &#039;.citizen-action-button&#039;,&lt;br /&gt;
    &#039;.cdx-button&#039;,&lt;br /&gt;
    &#039;.mw-editsection a&#039;,&lt;br /&gt;
    &#039;#citizen-header__nav a&#039;,&lt;br /&gt;
    &#039;.citizen-sidebar a&#039;,&lt;br /&gt;
    &lt;br /&gt;
    // 自己加的 _target &lt;br /&gt;
    &#039;._target&#039;,&lt;br /&gt;
    &lt;br /&gt;
    // Commentstreams扩展&lt;br /&gt;
    &#039;.commentstreams-button&#039;,&lt;br /&gt;
    &#039;.commentstreams-submit&#039;,&lt;br /&gt;
    &#039;.commentstreams-header button&#039;,&lt;br /&gt;
    &#039;.commentstreams-box button&#039;,&lt;br /&gt;
    &lt;br /&gt;
    // 常用&lt;br /&gt;
    &#039;.mw-ui-button&#039;,&lt;br /&gt;
    &#039;button&#039;,&lt;br /&gt;
    &#039;a[role=&amp;quot;button&amp;quot;]&#039;&lt;br /&gt;
].join(&#039;,&#039;);&lt;br /&gt;
&lt;br /&gt;
    function bind(){&lt;br /&gt;
        document.querySelectorAll(sel).forEach(el=&amp;gt;{&lt;br /&gt;
            if(el._magBind)return;&lt;br /&gt;
            el._magBind = 1;&lt;br /&gt;
            el.addEventListener(&#039;mouseenter&#039;, ()=&amp;gt; hoverEl = el);&lt;br /&gt;
            el.addEventListener(&#039;mouseleave&#039;, ()=&amp;gt; hoverEl = null);&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    bind();&lt;br /&gt;
    new MutationObserver(bind).observe(document.body,{childList:true,subtree:true});&lt;br /&gt;
});&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=345</id>
		<title>MediaWiki:Citizen.js</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=345"/>
		<updated>2026-03-31T15:15:48Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(function() {&lt;br /&gt;
// 页面白名单&lt;br /&gt;
const allowPages = [&lt;br /&gt;
  &amp;quot;首页&amp;quot;,&lt;br /&gt;
  &amp;quot;Main Page&amp;quot;&lt;br /&gt;
];&lt;br /&gt;
const currentPage = mw.config.get(&amp;quot;wgTitle&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
if( !allowPages.includes(currentPage) ){&lt;br /&gt;
  return;&lt;br /&gt;
}&lt;br /&gt;
if( window.magneticCursorInit ) return;&lt;br /&gt;
window.magneticCursorInit = true;&lt;br /&gt;
&lt;br /&gt;
mw.loader.using( [], function() {&lt;br /&gt;
    const ptr = document.createElement(&#039;div&#039;);&lt;br /&gt;
    ptr.className = &#039;magnetic-true-corner&#039;;&lt;br /&gt;
    ptr.innerHTML = `&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;`;&lt;br /&gt;
    document.body.appendChild(ptr);&lt;br /&gt;
&lt;br /&gt;
    const css = document.createElement(&#039;style&#039;);&lt;br /&gt;
    css.textContent = `&lt;br /&gt;
body, body * { cursor: none !important; }&lt;br /&gt;
&lt;br /&gt;
.magnetic-true-corner{&lt;br /&gt;
    position:fixed;&lt;br /&gt;
    left:0;top:0;&lt;br /&gt;
    width:0;height:0;&lt;br /&gt;
    pointer-events:none;&lt;br /&gt;
    z-index:999999!important;&lt;br /&gt;
    /* 暂时关掉旋转，保证能显示 */&lt;br /&gt;
}&lt;br /&gt;
.magnetic-true-corner i{&lt;br /&gt;
    position:absolute;&lt;br /&gt;
    width:14px;height:14px;&lt;br /&gt;
    border:2px solid #888e99;&lt;br /&gt;
    background:transparent!important;&lt;br /&gt;
    box-shadow:none!important;&lt;br /&gt;
}&lt;br /&gt;
.magnetic-true-corner i:nth-child(1){top:-2px;left:-2px;border-right:none;border-bottom:none;}&lt;br /&gt;
.magnetic-true-corner i:nth-child(2){top:-2px;right:-2px;border-left:none;border-bottom:none;}&lt;br /&gt;
.magnetic-true-corner i:nth-child(3){bottom:-2px;left:-2px;border-right:none;border-top:none;}&lt;br /&gt;
.magnetic-true-corner i:nth-child(4){bottom:-2px;right:-2px;border-left:none;border-top:none;}&lt;br /&gt;
    `;&lt;br /&gt;
    document.head.appendChild(css);&lt;br /&gt;
&lt;br /&gt;
    let hoverEl = null;&lt;br /&gt;
    let mx = 0, my = 0;&lt;br /&gt;
    let smoothX = 0, smoothY = 0;&lt;br /&gt;
    let curW = 40, curH = 40;&lt;br /&gt;
&lt;br /&gt;
    document.addEventListener(&#039;mousemove&#039;, e =&amp;gt; {&lt;br /&gt;
        mx = e.clientX;&lt;br /&gt;
        my = e.clientY;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    function loop(){&lt;br /&gt;
        const ease = 0.15;&lt;br /&gt;
        if(hoverEl){&lt;br /&gt;
            const r = hoverEl.getBoundingClientRect();&lt;br /&gt;
            const targetX = r.left + r.width / 2;&lt;br /&gt;
            const targetY = r.top + r.height / 2;&lt;br /&gt;
            smoothX += (targetX - smoothX) * ease;&lt;br /&gt;
            smoothY += (targetY - smoothY) * ease;&lt;br /&gt;
            curW = r.width;&lt;br /&gt;
            curH = r.height;&lt;br /&gt;
&lt;br /&gt;
            ptr.style.left = (smoothX - curW / 2) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = (smoothY - curH / 2) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = curW + &#039;px&#039;;&lt;br /&gt;
            ptr.style.height = curH + &#039;px&#039;;&lt;br /&gt;
        }else{&lt;br /&gt;
            curW = 40;&lt;br /&gt;
            curH = 40;&lt;br /&gt;
            smoothX += (mx - smoothX) * ease;&lt;br /&gt;
            smoothY += (my - smoothY) * ease;&lt;br /&gt;
&lt;br /&gt;
            ptr.style.left = (smoothX - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = (my - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = curW + &#039;px&#039;;&lt;br /&gt;
            ptr.style.height = curH + &#039;px&#039;;&lt;br /&gt;
        }&lt;br /&gt;
        requestAnimationFrame(loop);&lt;br /&gt;
    }&lt;br /&gt;
    loop();&lt;br /&gt;
&lt;br /&gt;
const sel = [&lt;br /&gt;
    &#039;.citizen-nav a&#039;,&#039;.citizen-menu a&#039;,&#039;.citizen-button&#039;,&lt;br /&gt;
    &#039;.citizen-action-button&#039;,&#039;.cdx-button&#039;,&#039;.mw-editsection a&#039;,&lt;br /&gt;
    &#039;#citizen-header__nav a&#039;,&#039;.citizen-sidebar a&#039;,&#039;._target&#039;,&lt;br /&gt;
    &#039;.commentstreams-button&#039;,&#039;.commentstreams-submit&#039;,&lt;br /&gt;
    &#039;.commentstreams-header button&#039;,&#039;.commentstreams-box button&#039;,&lt;br /&gt;
    &#039;.mw-ui-button&#039;,&#039;button&#039;,&#039;a[role=&amp;quot;button&amp;quot;]&#039;&lt;br /&gt;
].join(&#039;,&#039;);&lt;br /&gt;
&lt;br /&gt;
    function bind(){&lt;br /&gt;
        document.querySelectorAll(sel).forEach(el=&amp;gt;{&lt;br /&gt;
            if(el._magBind)return;&lt;br /&gt;
            el._magBind = 1;&lt;br /&gt;
            el.addEventListener(&#039;mouseenter&#039;, ()=&amp;gt; hoverEl = el);&lt;br /&gt;
            el.addEventListener(&#039;mouseleave&#039;, ()=&amp;gt; hoverEl = null);&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
    bind();&lt;br /&gt;
    new MutationObserver(bind).observe(document.body,{childList:true,subtree:true});&lt;br /&gt;
});&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=344</id>
		<title>MediaWiki:Citizen.js</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=344"/>
		<updated>2026-03-31T15:14:09Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(function() {&lt;br /&gt;
// 页面白名单&lt;br /&gt;
const allowPages = [&lt;br /&gt;
  &amp;quot;首页&amp;quot;,&lt;br /&gt;
  &amp;quot;Main Page&amp;quot;,&lt;br /&gt;
  &amp;quot;你的自定义首页名字&amp;quot;&lt;br /&gt;
];&lt;br /&gt;
const currentPage = mw.config.get(&amp;quot;wgTitle&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
if( !allowPages.includes(currentPage) ){&lt;br /&gt;
  return;&lt;br /&gt;
}&lt;br /&gt;
if( window.magneticCursorInit ) return;&lt;br /&gt;
window.magneticCursorInit = true;&lt;br /&gt;
&lt;br /&gt;
mw.loader.using( [], function() {&lt;br /&gt;
    // 创建四角光标&lt;br /&gt;
    const ptr = document.createElement(&#039;div&#039;);&lt;br /&gt;
    ptr.className = &#039;magnetic-true-corner&#039;;&lt;br /&gt;
    ptr.innerHTML = `&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;`;&lt;br /&gt;
    document.body.appendChild(ptr);&lt;br /&gt;
&lt;br /&gt;
    // 样式：旋转动画+悬停暂停+深银灰+隐藏原生光标&lt;br /&gt;
    const css = document.createElement(&#039;style&#039;);&lt;br /&gt;
    css.textContent = `&lt;br /&gt;
/* 全局隐藏原生光标（仅白名单页面生效） */&lt;br /&gt;
body, body * {&lt;br /&gt;
  cursor: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 旋转关键帧 */&lt;br /&gt;
@keyframes rotateLoop {&lt;br /&gt;
  from { transform: rotate(0deg); }&lt;br /&gt;
  to   { transform: rotate(360deg); }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.magnetic-true-corner{&lt;br /&gt;
    position:fixed;&lt;br /&gt;
    left:0;top:0;&lt;br /&gt;
    width:0;height:0;&lt;br /&gt;
    pointer-events:none;&lt;br /&gt;
    z-index:999999!important;&lt;br /&gt;
    /* 8秒匀速转圈，改数字调快慢 */&lt;br /&gt;
    animation: rotateLoop 8s linear infinite;&lt;br /&gt;
}&lt;br /&gt;
/* 悬停按钮时暂停旋转 */&lt;br /&gt;
.magnetic-true-corner.pause-rotate {&lt;br /&gt;
    animation-play-state: paused;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.magnetic-true-corner i{&lt;br /&gt;
    position:absolute;&lt;br /&gt;
    width:14px;height:14px;&lt;br /&gt;
    border:2px solid #888e99;&lt;br /&gt;
    background:transparent!important;&lt;br /&gt;
    box-shadow:none!important;&lt;br /&gt;
}&lt;br /&gt;
.magnetic-true-corner i:nth-child(1){top:-2px;left:-2px;border-right:none;border-bottom:none;}&lt;br /&gt;
.magnetic-true-corner i:nth-child(2){top:-2px;right:-2px;border-left:none;border-bottom:none;}&lt;br /&gt;
.magnetic-true-corner i:nth-child(3){bottom:-2px;left:-2px;border-right:none;border-top:none;}&lt;br /&gt;
.magnetic-true-corner i:nth-child(4){bottom:-2px;right:-2px;border-left:none;border-top:none;}&lt;br /&gt;
    `;&lt;br /&gt;
    document.head.appendChild(css);&lt;br /&gt;
&lt;br /&gt;
    let hoverEl = null;&lt;br /&gt;
    let mx = 0, my = 0;&lt;br /&gt;
    let smoothX = 0, smoothY = 0;&lt;br /&gt;
    let curW = 40, curH = 40;&lt;br /&gt;
&lt;br /&gt;
    document.addEventListener(&#039;mousemove&#039;, e =&amp;gt; {&lt;br /&gt;
        mx = e.clientX;&lt;br /&gt;
        my = e.clientY;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    function loop(){&lt;br /&gt;
        const ease = 0.15;&lt;br /&gt;
        if(hoverEl){&lt;br /&gt;
            const r = hoverEl.getBoundingClientRect();&lt;br /&gt;
            const targetX = r.left + r.width / 2;&lt;br /&gt;
            const targetY = r.top + r.height / 2;&lt;br /&gt;
            smoothX += (targetX - smoothX) * ease;&lt;br /&gt;
            smoothY += (targetY - smoothY) * ease;&lt;br /&gt;
            curW = r.width;&lt;br /&gt;
            curH = r.height;&lt;br /&gt;
&lt;br /&gt;
            ptr.style.left = (smoothX - curW / 2) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = (smoothY - curH / 2) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = curW + &#039;px&#039;;&lt;br /&gt;
            ptr.style.height = curH + &#039;px&#039;;&lt;br /&gt;
        }else{&lt;br /&gt;
            curW = 40;&lt;br /&gt;
            curH = 40;&lt;br /&gt;
            smoothX += (mx - smoothX) * ease;&lt;br /&gt;
            smoothY += (my - smoothY) * ease;&lt;br /&gt;
&lt;br /&gt;
            ptr.style.left = (smoothX - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = (smoothY - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = curW + &#039;px&#039;;&lt;br /&gt;
            ptr.style.height = curH + &#039;px&#039;;&lt;br /&gt;
        }&lt;br /&gt;
        requestAnimationFrame(loop);&lt;br /&gt;
    }&lt;br /&gt;
    loop();&lt;br /&gt;
&lt;br /&gt;
const sel = [&lt;br /&gt;
    &#039;.citizen-nav a&#039;,&lt;br /&gt;
    &#039;.citizen-menu a&#039;,&lt;br /&gt;
    &#039;.citizen-button&#039;,&lt;br /&gt;
    &#039;.citizen-action-button&#039;,&lt;br /&gt;
    &#039;.cdx-button&#039;,&lt;br /&gt;
    &#039;.mw-editsection a&#039;,&lt;br /&gt;
    &#039;#citizen-header__nav a&#039;,&lt;br /&gt;
    &#039;.citizen-sidebar a&#039;,&lt;br /&gt;
    &#039;._target&#039;,&lt;br /&gt;
    &#039;.commentstreams-button&#039;,&lt;br /&gt;
    &#039;.commentstreams-submit&#039;,&lt;br /&gt;
    &#039;.commentstreams-header button&#039;,&lt;br /&gt;
    &#039;.commentstreams-box button&#039;,&lt;br /&gt;
    &#039;.mw-ui-button&#039;,&lt;br /&gt;
    &#039;button&#039;,&lt;br /&gt;
    &#039;a[role=&amp;quot;button&amp;quot;]&#039;&lt;br /&gt;
].join(&#039;,&#039;);&lt;br /&gt;
&lt;br /&gt;
    function bind(){&lt;br /&gt;
        document.querySelectorAll(sel).forEach(el=&amp;gt;{&lt;br /&gt;
            if(el._magBind)return;&lt;br /&gt;
            el._magBind = 1;&lt;br /&gt;
            el.addEventListener(&#039;mouseenter&#039;, ()=&amp;gt; {&lt;br /&gt;
                hoverEl = el;&lt;br /&gt;
                ptr.classList.add(&#039;pause-rotate&#039;);&lt;br /&gt;
            });&lt;br /&gt;
            el.addEventListener(&#039;mouseleave&#039;, ()=&amp;gt; {&lt;br /&gt;
                hover ptr.classList.remove(&#039;pause-rotate&#039;);&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    bind();&lt;br /&gt;
    new MutationObserver(bind).observe(document.body,{childList:true,subtree:true});&lt;br /&gt;
});&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=343</id>
		<title>MediaWiki:Citizen.js</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=343"/>
		<updated>2026-03-31T15:13:02Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(function() {&lt;br /&gt;
// 页面白名单&lt;br /&gt;
const allowPages = [&lt;br /&gt;
  &amp;quot;首页&amp;quot;,&lt;br /&gt;
  &amp;quot;Main Page&amp;quot;,&lt;br /&gt;
  &amp;quot;你的自定义首页名字&amp;quot;&lt;br /&gt;
];&lt;br /&gt;
const currentPage = mw.config.get(&amp;quot;wgTitle&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if( !allowPages.includes(currentPage) ){&lt;br /&gt;
  return;&lt;br /&gt;
}&lt;br /&gt;
if( window.magneticCursorInit ) return;&lt;br /&gt;
window.magneticCursorInit = true;&lt;br /&gt;
&lt;br /&gt;
mw.loader.using( [], function() {&lt;br /&gt;
    // 创建四角光标&lt;br /&gt;
    const ptr = document.createElement(&#039;div&#039;);&lt;br /&gt;
    ptr.className = &#039;magnetic-true-corner&#039;;&lt;br /&gt;
    ptr.innerHTML = `&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;`;&lt;br /&gt;
    document.body.appendChild(ptr);&lt;br /&gt;
&lt;br /&gt;
    // 样式&lt;br /&gt;
    const css = document.createElement(&#039;style&#039;);&lt;br /&gt;
    css.textContent = `&lt;br /&gt;
&lt;br /&gt;
/* 隐藏浏览器原生光标 */&lt;br /&gt;
body {&lt;br /&gt;
  cursor: none !important;&lt;br /&gt;
}&lt;br /&gt;
* {&lt;br /&gt;
  cursor: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes rotateLoop {&lt;br /&gt;
  from { transform: rotate(0deg); }&lt;br /&gt;
  to   { transform: rotate(360deg); }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.magnetic-true-corner{&lt;br /&gt;
    position:fixed;&lt;br /&gt;
    left:0;top:0;&lt;br /&gt;
    width:0;height:0;&lt;br /&gt;
    pointer-events:none;&lt;br /&gt;
    z-index:999999!important;&lt;br /&gt;
    animation: rotateLoop 8s linear infinite; /* 转圈：8秒一圈，可改速度 */&lt;br /&gt;
}&lt;br /&gt;
.magnetic-true-corner i{&lt;br /&gt;
    position:absolute;&lt;br /&gt;
    width:14px;height:14px;&lt;br /&gt;
    border:2px solid #888e99;&lt;br /&gt;
    background:transparent!important;&lt;br /&gt;
    box-shadow:none!important;&lt;br /&gt;
}&lt;br /&gt;
.magnetic-true-corner i:nth-child(1){top:-2px;left:-2px;border-right:none;border-bottom:none;}&lt;br /&gt;
.magnetic-true-corner i:nth-child(2){top:-2px;right:-2px;border-left:none;border-bottom:none;}&lt;br /&gt;
.magnetic-true-corner i:nth-child(3){bottom:-2px;left:-2px;border-right:none;border-top:none;}&lt;br /&gt;
.magnetic-true-corner i:nth-child(4){bottom:-2px;right:-2px;border-left:none;border-top:none;}&lt;br /&gt;
    `;&lt;br /&gt;
    document.head.appendChild(css);&lt;br /&gt;
&lt;br /&gt;
    let hoverEl = null;&lt;br /&gt;
    let mx = 0, my = 0;&lt;br /&gt;
    // 光标缓冲坐标&lt;br /&gt;
    let smoothX = 0, smoothY = 0;&lt;br /&gt;
    let curW = 40, curH = 40;&lt;br /&gt;
&lt;br /&gt;
    // 鼠标实时位置&lt;br /&gt;
    document.addEventListener(&#039;mousemove&#039;, e =&amp;gt; {&lt;br /&gt;
        mx = e.clientX;&lt;br /&gt;
        my = e.clientY;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // 顺滑帧磁吸缓冲&lt;br /&gt;
    function loop(){&lt;br /&gt;
        const ease = 0.15; // 磁吸顺滑度&lt;br /&gt;
        if(hoverEl){&lt;br /&gt;
            // 吸附到元素中心 + 缓冲&lt;br /&gt;
            const r = hoverEl.getBoundingClientRect();&lt;br /&gt;
            const targetX = r.left + r.width / 2;&lt;br /&gt;
            const targetY = r.top + r.height / 2;&lt;br /&gt;
            smoothX += (targetX - smoothX) * ease;&lt;br /&gt;
            smoothY += (targetY - smoothY) * ease;&lt;br /&gt;
            curW = r.width;&lt;br /&gt;
            curH = r.height;&lt;br /&gt;
&lt;br /&gt;
            // 四角框&lt;br /&gt;
            ptr.style.left = (smoothX - curW / 2) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = (smoothY - curH / 2) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = curW + &#039;px&#039;;&lt;br /&gt;
            ptr.style.height = curH + &#039;px&#039;;&lt;br /&gt;
        }else{&lt;br /&gt;
            // 常态跟随鼠标&lt;br /&gt;
            curW = 40;&lt;br /&gt;
            curH = 40;&lt;br /&gt;
            smoothX += (mx - smoothX) * ease;&lt;br /&gt;
            smoothY += (my - smoothY) * ease;&lt;br /&gt;
&lt;br /&gt;
            ptr.style.left = (smoothX - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = (smoothY - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = curW + &#039;px&#039;;&lt;br /&gt;
            ptr.style.height = curH + &#039;px&#039;;&lt;br /&gt;
        }&lt;br /&gt;
        requestAnimationFrame(loop);&lt;br /&gt;
    }&lt;br /&gt;
    loop();&lt;br /&gt;
&lt;br /&gt;
const sel = [&lt;br /&gt;
    // 官方皮肤按钮&lt;br /&gt;
    &#039;.citizen-nav a&#039;,&lt;br /&gt;
    &#039;.citizen-menu a&#039;,&lt;br /&gt;
    &#039;.citizen-button&#039;,&lt;br /&gt;
    &#039;.citizen-action-button&#039;,&lt;br /&gt;
    &#039;.cdx-button&#039;,&lt;br /&gt;
    &#039;.mw-editsection a&#039;,&lt;br /&gt;
    &#039;#citizen-header__nav a&#039;,&lt;br /&gt;
    &#039;.citizen-sidebar a&#039;,&lt;br /&gt;
    &lt;br /&gt;
    // 自己加的 _target &lt;br /&gt;
    &#039;._target&#039;,&lt;br /&gt;
    &lt;br /&gt;
    // Commentstreams扩展&lt;br /&gt;
    &#039;.commentstreams-button&#039;,&lt;br /&gt;
    &#039;.commentstreams-submit&#039;,&lt;br /&gt;
    &#039;.commentstreams-header button&#039;,&lt;br /&gt;
    &#039;.commentstreams-box button&#039;,&lt;br /&gt;
    &lt;br /&gt;
    // 常用&lt;br /&gt;
    &#039;.mw-ui-button&#039;,&lt;br /&gt;
    &#039;button&#039;,&lt;br /&gt;
    &#039;a[role=&amp;quot;button&amp;quot;]&#039;&lt;br /&gt;
].join(&#039;,&#039;);&lt;br /&gt;
&lt;br /&gt;
    function bind(){&lt;br /&gt;
        document.querySelectorAll(sel).forEach(el=&amp;gt;{&lt;br /&gt;
            if(el._magBind)return;&lt;br /&gt;
            el._magBind = 1;&lt;br /&gt;
            el.addEventListener(&#039;mouseenter&#039;, ()=&amp;gt; hoverEl = el);&lt;br /&gt;
            el.addEventListener(&#039;mouseleave&#039;, ()=&amp;gt; hoverEl = null);&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    bind();&lt;br /&gt;
    new MutationObserver(bind).observe(document.body,{childList:true,subtree:true});&lt;br /&gt;
});&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=342</id>
		<title>MediaWiki:Citizen.js</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=342"/>
		<updated>2026-03-31T08:26:10Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(function() {&lt;br /&gt;
// 页面白名单&lt;br /&gt;
const allowPages = [&lt;br /&gt;
  &amp;quot;首页&amp;quot;,&lt;br /&gt;
  &amp;quot;Main Page&amp;quot;,&lt;br /&gt;
  &amp;quot;你的自定义首页名字&amp;quot;&lt;br /&gt;
];&lt;br /&gt;
const currentPage = mw.config.get(&amp;quot;wgTitle&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if( !allowPages.includes(currentPage) ){&lt;br /&gt;
  return;&lt;br /&gt;
}&lt;br /&gt;
if( window.magneticCursorInit ) return;&lt;br /&gt;
window.magneticCursorInit = true;&lt;br /&gt;
&lt;br /&gt;
mw.loader.using( [], function() {&lt;br /&gt;
    // 创建四角光标&lt;br /&gt;
    const ptr = document.createElement(&#039;div&#039;);&lt;br /&gt;
    ptr.className = &#039;magnetic-true-corner&#039;;&lt;br /&gt;
    ptr.innerHTML = `&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;`;&lt;br /&gt;
    document.body.appendChild(ptr);&lt;br /&gt;
&lt;br /&gt;
    // 样式&lt;br /&gt;
    const css = document.createElement(&#039;style&#039;);&lt;br /&gt;
    css.textContent = `&lt;br /&gt;
&lt;br /&gt;
/* 隐藏浏览器原生光标 */&lt;br /&gt;
body {&lt;br /&gt;
  cursor: none !important;&lt;br /&gt;
}&lt;br /&gt;
/* 防止输入框/按钮露馅，强制全局隐藏 */&lt;br /&gt;
* {&lt;br /&gt;
  cursor: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
    .magnetic-true-corner{&lt;br /&gt;
        position:fixed;&lt;br /&gt;
        left:0;top:0;&lt;br /&gt;
        width:0;height:0;&lt;br /&gt;
        pointer-events:none;&lt;br /&gt;
        z-index:999999!important;&lt;br /&gt;
    }&lt;br /&gt;
    .magnetic-true-corner i{&lt;br /&gt;
        position:absolute;&lt;br /&gt;
        width:14px;height:14px;&lt;br /&gt;
        border:2px solid #888e99;&lt;br /&gt;
        background:transparent!important;&lt;br /&gt;
        box-shadow:none!important;&lt;br /&gt;
    }&lt;br /&gt;
    .magnetic-true-corner i:nth-child(1){top:-2px;left:-2px;border-right:none;border-bottom:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(2){top:-2px;right:-2px;border-left:none;border-bottom:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(3){bottom:-2px;left:-2px;border-right:none;border-top:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(4){bottom:-2px;right:-2px;border-left:none;border-top:none;}&lt;br /&gt;
    `;&lt;br /&gt;
    document.head.appendChild(css);&lt;br /&gt;
&lt;br /&gt;
    let hoverEl = null;&lt;br /&gt;
    let mx = 0, my = 0;&lt;br /&gt;
    // 光标缓冲坐标&lt;br /&gt;
    let smoothX = 0, smoothY = 0;&lt;br /&gt;
    let curW = 40, curH = 40;&lt;br /&gt;
&lt;br /&gt;
    // 鼠标实时位置&lt;br /&gt;
    document.addEventListener(&#039;mousemove&#039;, e =&amp;gt; {&lt;br /&gt;
        mx = e.clientX;&lt;br /&gt;
        my = e.clientY;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // 顺滑帧磁吸缓冲&lt;br /&gt;
    function loop(){&lt;br /&gt;
        const ease = 0.15; // 磁吸顺滑度&lt;br /&gt;
        if(hoverEl){&lt;br /&gt;
            // 吸附到元素中心 + 缓冲&lt;br /&gt;
            const r = hoverEl.getBoundingClientRect();&lt;br /&gt;
            const targetX = r.left + r.width / 2;&lt;br /&gt;
            const targetY = r.top + r.height / 2;&lt;br /&gt;
            smoothX += (targetX - smoothX) * ease;&lt;br /&gt;
            smoothY += (targetY - smoothY) * ease;&lt;br /&gt;
            curW = r.width;&lt;br /&gt;
            curH = r.height;&lt;br /&gt;
&lt;br /&gt;
            // 四角框&lt;br /&gt;
            ptr.style.left = (smoothX - curW / 2) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = (smoothY - curH / 2) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = curW + &#039;px&#039;;&lt;br /&gt;
            ptr.style.height = curH + &#039;px&#039;;&lt;br /&gt;
        }else{&lt;br /&gt;
            // 常态跟随鼠标&lt;br /&gt;
            curW = 40;&lt;br /&gt;
            curH = 40;&lt;br /&gt;
            smoothX += (mx - smoothX) * ease;&lt;br /&gt;
            smoothY += (my - smoothY) * ease;&lt;br /&gt;
&lt;br /&gt;
            ptr.style.left = (smoothX - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = (smoothY - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = curW + &#039;px&#039;;&lt;br /&gt;
            ptr.style.height = curH + &#039;px&#039;;&lt;br /&gt;
        }&lt;br /&gt;
        requestAnimationFrame(loop);&lt;br /&gt;
    }&lt;br /&gt;
    loop();&lt;br /&gt;
&lt;br /&gt;
const sel = [&lt;br /&gt;
    // 官方皮肤按钮&lt;br /&gt;
    &#039;.citizen-nav a&#039;,&lt;br /&gt;
    &#039;.citizen-menu a&#039;,&lt;br /&gt;
    &#039;.citizen-button&#039;,&lt;br /&gt;
    &#039;.citizen-action-button&#039;,&lt;br /&gt;
    &#039;.cdx-button&#039;,&lt;br /&gt;
    &#039;.mw-editsection a&#039;,&lt;br /&gt;
    &#039;#citizen-header__nav a&#039;,&lt;br /&gt;
    &#039;.citizen-sidebar a&#039;,&lt;br /&gt;
    &lt;br /&gt;
    // 自己加的 _target &lt;br /&gt;
    &#039;._target&#039;,&lt;br /&gt;
    &lt;br /&gt;
    // Commentstreams扩展&lt;br /&gt;
    &#039;.commentstreams-button&#039;,&lt;br /&gt;
    &#039;.commentstreams-submit&#039;,&lt;br /&gt;
    &#039;.commentstreams-header button&#039;,&lt;br /&gt;
    &#039;.commentstreams-box button&#039;,&lt;br /&gt;
    &lt;br /&gt;
    // 常用&lt;br /&gt;
    &#039;.mw-ui-button&#039;,&lt;br /&gt;
    &#039;button&#039;,&lt;br /&gt;
    &#039;a[role=&amp;quot;button&amp;quot;]&#039;&lt;br /&gt;
].join(&#039;,&#039;);&lt;br /&gt;
&lt;br /&gt;
    function bind(){&lt;br /&gt;
        document.querySelectorAll(sel).forEach(el=&amp;gt;{&lt;br /&gt;
            if(el._magBind)return;&lt;br /&gt;
            el._magBind = 1;&lt;br /&gt;
            el.addEventListener(&#039;mouseenter&#039;, ()=&amp;gt; hoverEl = el);&lt;br /&gt;
            el.addEventListener(&#039;mouseleave&#039;, ()=&amp;gt; hoverEl = null);&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    bind();&lt;br /&gt;
    new MutationObserver(bind).observe(document.body,{childList:true,subtree:true});&lt;br /&gt;
});&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=341</id>
		<title>MediaWiki:Citizen.js</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=341"/>
		<updated>2026-03-31T08:18:16Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(function() {&lt;br /&gt;
// 页面白名单&lt;br /&gt;
const allowPages = [&lt;br /&gt;
  &amp;quot;首页&amp;quot;,&lt;br /&gt;
  &amp;quot;Main Page&amp;quot;,&lt;br /&gt;
  &amp;quot;你的自定义首页名字&amp;quot;&lt;br /&gt;
];&lt;br /&gt;
const currentPage = mw.config.get(&amp;quot;wgTitle&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if( !allowPages.includes(currentPage) ){&lt;br /&gt;
  return;&lt;br /&gt;
}&lt;br /&gt;
if( window.magneticCursorInit ) return;&lt;br /&gt;
window.magneticCursorInit = true;&lt;br /&gt;
&lt;br /&gt;
mw.loader.using( [], function() {&lt;br /&gt;
    // 创建四角光标&lt;br /&gt;
    const ptr = document.createElement(&#039;div&#039;);&lt;br /&gt;
    ptr.className = &#039;magnetic-true-corner&#039;;&lt;br /&gt;
    ptr.innerHTML = `&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;`;&lt;br /&gt;
    document.body.appendChild(ptr);&lt;br /&gt;
&lt;br /&gt;
    // 样式&lt;br /&gt;
    const css = document.createElement(&#039;style&#039;);&lt;br /&gt;
    css.textContent = `&lt;br /&gt;
    .magnetic-true-corner{&lt;br /&gt;
        position:fixed;&lt;br /&gt;
        left:0;top:0;&lt;br /&gt;
        width:0;height:0;&lt;br /&gt;
        pointer-events:none;&lt;br /&gt;
        z-index:999999!important;&lt;br /&gt;
    }&lt;br /&gt;
    .magnetic-true-corner i{&lt;br /&gt;
        position:absolute;&lt;br /&gt;
        width:14px;height:14px;&lt;br /&gt;
        border:2px solid #888e99;&lt;br /&gt;
        background:transparent!important;&lt;br /&gt;
        box-shadow:none!important;&lt;br /&gt;
    }&lt;br /&gt;
    .magnetic-true-corner i:nth-child(1){top:-2px;left:-2px;border-right:none;border-bottom:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(2){top:-2px;right:-2px;border-left:none;border-bottom:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(3){bottom:-2px;left:-2px;border-right:none;border-top:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(4){bottom:-2px;right:-2px;border-left:none;border-top:none;}&lt;br /&gt;
    `;&lt;br /&gt;
    document.head.appendChild(css);&lt;br /&gt;
&lt;br /&gt;
    let hoverEl = null;&lt;br /&gt;
    let mx = 0, my = 0;&lt;br /&gt;
    // 光标缓冲坐标&lt;br /&gt;
    let smoothX = 0, smoothY = 0;&lt;br /&gt;
    let curW = 40, curH = 40;&lt;br /&gt;
&lt;br /&gt;
    // 鼠标实时位置&lt;br /&gt;
    document.addEventListener(&#039;mousemove&#039;, e =&amp;gt; {&lt;br /&gt;
        mx = e.clientX;&lt;br /&gt;
        my = e.clientY;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // 顺滑帧磁吸缓冲&lt;br /&gt;
    function loop(){&lt;br /&gt;
        const ease = 0.15; // 磁吸顺滑度&lt;br /&gt;
        if(hoverEl){&lt;br /&gt;
            // 吸附到元素中心 + 缓冲&lt;br /&gt;
            const r = hoverEl.getBoundingClientRect();&lt;br /&gt;
            const targetX = r.left + r.width / 2;&lt;br /&gt;
            const targetY = r.top + r.height / 2;&lt;br /&gt;
            smoothX += (targetX - smoothX) * ease;&lt;br /&gt;
            smoothY += (targetY - smoothY) * ease;&lt;br /&gt;
            curW = r.width;&lt;br /&gt;
            curH = r.height;&lt;br /&gt;
&lt;br /&gt;
            // 四角框&lt;br /&gt;
            ptr.style.left = (smoothX - curW / 2) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = (smoothY - curH / 2) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = curW + &#039;px&#039;;&lt;br /&gt;
            ptr.style.height = curH + &#039;px&#039;;&lt;br /&gt;
        }else{&lt;br /&gt;
            // 常态跟随鼠标&lt;br /&gt;
            curW = 40;&lt;br /&gt;
            curH = 40;&lt;br /&gt;
            smoothX += (mx - smoothX) * ease;&lt;br /&gt;
            smoothY += (my - smoothY) * ease;&lt;br /&gt;
&lt;br /&gt;
            ptr.style.left = (smoothX - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = (smoothY - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = curW + &#039;px&#039;;&lt;br /&gt;
            ptr.style.height = curH + &#039;px&#039;;&lt;br /&gt;
        }&lt;br /&gt;
        requestAnimationFrame(loop);&lt;br /&gt;
    }&lt;br /&gt;
    loop();&lt;br /&gt;
&lt;br /&gt;
const sel = [&lt;br /&gt;
    // 官方皮肤按钮&lt;br /&gt;
    &#039;.citizen-nav a&#039;,&lt;br /&gt;
    &#039;.citizen-menu a&#039;,&lt;br /&gt;
    &#039;.citizen-button&#039;,&lt;br /&gt;
    &#039;.citizen-action-button&#039;,&lt;br /&gt;
    &#039;.cdx-button&#039;,&lt;br /&gt;
    &#039;.mw-editsection a&#039;,&lt;br /&gt;
    &#039;#citizen-header__nav a&#039;,&lt;br /&gt;
    &#039;.citizen-sidebar a&#039;,&lt;br /&gt;
    &lt;br /&gt;
    // 自己加的 _target &lt;br /&gt;
    &#039;._target&#039;,&lt;br /&gt;
    &lt;br /&gt;
    // Commentstreams扩展&lt;br /&gt;
    &#039;.commentstreams-button&#039;,&lt;br /&gt;
    &#039;.commentstreams-submit&#039;,&lt;br /&gt;
    &#039;.commentstreams-header button&#039;,&lt;br /&gt;
    &#039;.commentstreams-box button&#039;,&lt;br /&gt;
    &lt;br /&gt;
    // 常用&lt;br /&gt;
    &#039;.mw-ui-button&#039;,&lt;br /&gt;
    &#039;button&#039;,&lt;br /&gt;
    &#039;a[role=&amp;quot;button&amp;quot;]&#039;&lt;br /&gt;
].join(&#039;,&#039;);&lt;br /&gt;
&lt;br /&gt;
    function bind(){&lt;br /&gt;
        document.querySelectorAll(sel).forEach(el=&amp;gt;{&lt;br /&gt;
            if(el._magBind)return;&lt;br /&gt;
            el._magBind = 1;&lt;br /&gt;
            el.addEventListener(&#039;mouseenter&#039;, ()=&amp;gt; hoverEl = el);&lt;br /&gt;
            el.addEventListener(&#039;mouseleave&#039;, ()=&amp;gt; hoverEl = null);&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    bind();&lt;br /&gt;
    new MutationObserver(bind).observe(document.body,{childList:true,subtree:true});&lt;br /&gt;
});&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=340</id>
		<title>MediaWiki:Citizen.js</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=340"/>
		<updated>2026-03-31T08:16:24Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(function() {&lt;br /&gt;
if( window.magneticCursorInit ) return;&lt;br /&gt;
window.magneticCursorInit = true;&lt;br /&gt;
&lt;br /&gt;
mw.loader.using( [], function() {&lt;br /&gt;
    // 创建四角光标&lt;br /&gt;
    const ptr = document.createElement(&#039;div&#039;);&lt;br /&gt;
    ptr.className = &#039;magnetic-true-corner&#039;;&lt;br /&gt;
    ptr.innerHTML = `&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;`;&lt;br /&gt;
    document.body.appendChild(ptr);&lt;br /&gt;
&lt;br /&gt;
    // 样式&lt;br /&gt;
    const css = document.createElement(&#039;style&#039;);&lt;br /&gt;
    css.textContent = `&lt;br /&gt;
    .magnetic-true-corner{&lt;br /&gt;
        position:fixed;&lt;br /&gt;
        left:0;top:0;&lt;br /&gt;
        width:0;height:0;&lt;br /&gt;
        pointer-events:none;&lt;br /&gt;
        z-index:999999!important;&lt;br /&gt;
    }&lt;br /&gt;
    .magnetic-true-corner i{&lt;br /&gt;
        position:absolute;&lt;br /&gt;
        width:14px;height:14px;&lt;br /&gt;
        border:2px solid #888e99;&lt;br /&gt;
        background:transparent!important;&lt;br /&gt;
        box-shadow:none!important;&lt;br /&gt;
    }&lt;br /&gt;
    .magnetic-true-corner i:nth-child(1){top:-2px;left:-2px;border-right:none;border-bottom:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(2){top:-2px;right:-2px;border-left:none;border-bottom:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(3){bottom:-2px;left:-2px;border-right:none;border-top:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(4){bottom:-2px;right:-2px;border-left:none;border-top:none;}&lt;br /&gt;
    `;&lt;br /&gt;
    document.head.appendChild(css);&lt;br /&gt;
&lt;br /&gt;
    let hoverEl = null;&lt;br /&gt;
    let mx = 0, my = 0;&lt;br /&gt;
    // 光标缓冲坐标&lt;br /&gt;
    let smoothX = 0, smoothY = 0;&lt;br /&gt;
    let curW = 40, curH = 40;&lt;br /&gt;
&lt;br /&gt;
    // 鼠标实时位置&lt;br /&gt;
    document.addEventListener(&#039;mousemove&#039;, e =&amp;gt; {&lt;br /&gt;
        mx = e.clientX;&lt;br /&gt;
        my = e.clientY;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // 顺滑帧磁吸缓冲&lt;br /&gt;
    function loop(){&lt;br /&gt;
        const ease = 0.15; // 磁吸顺滑度&lt;br /&gt;
        if(hoverEl){&lt;br /&gt;
            // 吸附到元素中心 + 缓冲&lt;br /&gt;
            const r = hoverEl.getBoundingClientRect();&lt;br /&gt;
            const targetX = r.left + r.width / 2;&lt;br /&gt;
            const targetY = r.top + r.height / 2;&lt;br /&gt;
            smoothX += (targetX - smoothX) * ease;&lt;br /&gt;
            smoothY += (targetY - smoothY) * ease;&lt;br /&gt;
            curW = r.width;&lt;br /&gt;
            curH = r.height;&lt;br /&gt;
&lt;br /&gt;
            // 四角框&lt;br /&gt;
            ptr.style.left = (smoothX - curW / 2) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = (smoothY - curH / 2) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = curW + &#039;px&#039;;&lt;br /&gt;
            ptr.style.height = curH + &#039;px&#039;;&lt;br /&gt;
        }else{&lt;br /&gt;
            // 常态跟随鼠标&lt;br /&gt;
            curW = 40;&lt;br /&gt;
            curH = 40;&lt;br /&gt;
            smoothX += (mx - smoothX) * ease;&lt;br /&gt;
            smoothY += (my - smoothY) * ease;&lt;br /&gt;
&lt;br /&gt;
            ptr.style.left = (smoothX - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = (smoothY - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = curW + &#039;px&#039;;&lt;br /&gt;
            ptr.style.height = curH + &#039;px&#039;;&lt;br /&gt;
        }&lt;br /&gt;
        requestAnimationFrame(loop);&lt;br /&gt;
    }&lt;br /&gt;
    loop();&lt;br /&gt;
&lt;br /&gt;
const sel = [&lt;br /&gt;
    // 官方皮肤按钮&lt;br /&gt;
    &#039;.citizen-nav a&#039;,&lt;br /&gt;
    &#039;.citizen-menu a&#039;,&lt;br /&gt;
    &#039;.citizen-button&#039;,&lt;br /&gt;
    &#039;.citizen-action-button&#039;,&lt;br /&gt;
    &#039;.cdx-button&#039;,&lt;br /&gt;
    &#039;.mw-editsection a&#039;,&lt;br /&gt;
    &#039;#citizen-header__nav a&#039;,&lt;br /&gt;
    &#039;.citizen-sidebar a&#039;,&lt;br /&gt;
    &lt;br /&gt;
    // 自己加的 _target &lt;br /&gt;
    &#039;._target&#039;,&lt;br /&gt;
    &lt;br /&gt;
    // Commentstreams扩展&lt;br /&gt;
    &#039;.commentstreams-button&#039;,&lt;br /&gt;
    &#039;.commentstreams-submit&#039;,&lt;br /&gt;
    &#039;.commentstreams-header button&#039;,&lt;br /&gt;
    &#039;.commentstreams-box button&#039;,&lt;br /&gt;
    &lt;br /&gt;
    // 常用&lt;br /&gt;
    &#039;.mw-ui-button&#039;,&lt;br /&gt;
    &#039;button&#039;,&lt;br /&gt;
    &#039;a[role=&amp;quot;button&amp;quot;]&#039;&lt;br /&gt;
].join(&#039;,&#039;);&lt;br /&gt;
&lt;br /&gt;
    function bind(){&lt;br /&gt;
        document.querySelectorAll(sel).forEach(el=&amp;gt;{&lt;br /&gt;
            if(el._magBind)return;&lt;br /&gt;
            el._magBind = 1;&lt;br /&gt;
            el.addEventListener(&#039;mouseenter&#039;, ()=&amp;gt; hoverEl = el);&lt;br /&gt;
            el.addEventListener(&#039;mouseleave&#039;, ()=&amp;gt; hoverEl = null);&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    bind();&lt;br /&gt;
    new MutationObserver(bind).observe(document.body,{childList:true,subtree:true});&lt;br /&gt;
});&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=339</id>
		<title>MediaWiki:Citizen.js</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=339"/>
		<updated>2026-03-31T08:14:54Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(function() {&lt;br /&gt;
if( window.magneticCursorInit ) return;&lt;br /&gt;
window.magneticCursorInit = true;&lt;br /&gt;
&lt;br /&gt;
mw.loader.using( [], function() {&lt;br /&gt;
    // 创建四角光标&lt;br /&gt;
    const ptr = document.createElement(&#039;div&#039;);&lt;br /&gt;
    ptr.className = &#039;magnetic-true-corner&#039;;&lt;br /&gt;
    ptr.innerHTML = `&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;`;&lt;br /&gt;
    document.body.appendChild(ptr);&lt;br /&gt;
&lt;br /&gt;
    // 样式：原版亮绿 + 纯拐角无方块&lt;br /&gt;
    const css = document.createElement(&#039;style&#039;);&lt;br /&gt;
    css.textContent = `&lt;br /&gt;
    .magnetic-true-corner{&lt;br /&gt;
        position:fixed;&lt;br /&gt;
        left:0;top:0;&lt;br /&gt;
        width:0;height:0;&lt;br /&gt;
        pointer-events:none;&lt;br /&gt;
        z-index:999999!important;&lt;br /&gt;
    }&lt;br /&gt;
    .magnetic-true-corner i{&lt;br /&gt;
        position:absolute;&lt;br /&gt;
        width:14px;height:14px;&lt;br /&gt;
        border:2px solid #888e99;&lt;br /&gt;
        background:transparent!important;&lt;br /&gt;
        box-shadow:none!important;&lt;br /&gt;
    }&lt;br /&gt;
    /* 只留拐角，镂空 */&lt;br /&gt;
    .magnetic-true-corner i:nth-child(1){top:-2px;left:-2px;border-right:none;border-bottom:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(2){top:-2px;right:-2px;border-left:none;border-bottom:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(3){bottom:-2px;left:-2px;border-right:none;border-top:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(4){bottom:-2px;right:-2px;border-left:none;border-top:none;}&lt;br /&gt;
    `;&lt;br /&gt;
    document.head.appendChild(css);&lt;br /&gt;
&lt;br /&gt;
    let hoverEl = null;&lt;br /&gt;
    let mx = 0, my = 0;&lt;br /&gt;
    // 光标缓冲坐标（做顺滑移动）&lt;br /&gt;
    let smoothX = 0, smoothY = 0;&lt;br /&gt;
    let curW = 40, curH = 40;&lt;br /&gt;
&lt;br /&gt;
    // 鼠标实时位置&lt;br /&gt;
    document.addEventListener(&#039;mousemove&#039;, e =&amp;gt; {&lt;br /&gt;
        mx = e.clientX;&lt;br /&gt;
        my = e.clientY;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // 顺滑帧动画：磁吸缓冲&lt;br /&gt;
    function loop(){&lt;br /&gt;
        const ease = 0.15; // 磁吸顺滑度，越小越黏&lt;br /&gt;
        if(hoverEl){&lt;br /&gt;
            // 吸附到元素中心 + 缓冲&lt;br /&gt;
            const r = hoverEl.getBoundingClientRect();&lt;br /&gt;
            const targetX = r.left + r.width / 2;&lt;br /&gt;
            const targetY = r.top + r.height / 2;&lt;br /&gt;
            smoothX += (targetX - smoothX) * ease;&lt;br /&gt;
            smoothY += (targetY - smoothY) * ease;&lt;br /&gt;
            curW = r.width;&lt;br /&gt;
            curH = r.height;&lt;br /&gt;
&lt;br /&gt;
            // 四角框精准包住按钮&lt;br /&gt;
            ptr.style.left = (smoothX - curW / 2) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = (smoothY - curH / 2) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = curW + &#039;px&#039;;&lt;br /&gt;
            ptr.style.height = curH + &#039;px&#039;;&lt;br /&gt;
        }else{&lt;br /&gt;
            // 常态跟随鼠标，小光标顺滑移动&lt;br /&gt;
            curW = 40;&lt;br /&gt;
            curH = 40;&lt;br /&gt;
            smoothX += (mx - smoothX) * ease;&lt;br /&gt;
            smoothY += (my - smoothY) * ease;&lt;br /&gt;
&lt;br /&gt;
            ptr.style.left = (smoothX - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = (smoothY - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = curW + &#039;px&#039;;&lt;br /&gt;
            ptr.style.height = curH + &#039;px&#039;;&lt;br /&gt;
        }&lt;br /&gt;
        requestAnimationFrame(loop);&lt;br /&gt;
    }&lt;br /&gt;
    loop();&lt;br /&gt;
&lt;br /&gt;
    // Citizen 精准按钮选择器&lt;br /&gt;
const sel = [&lt;br /&gt;
    // 官方皮肤按钮&lt;br /&gt;
    &#039;.citizen-nav a&#039;,&lt;br /&gt;
    &#039;.citizen-menu a&#039;,&lt;br /&gt;
    &#039;.citizen-button&#039;,&lt;br /&gt;
    &#039;.citizen-action-button&#039;,&lt;br /&gt;
    &#039;.cdx-button&#039;,&lt;br /&gt;
    &#039;.mw-editsection a&#039;,&lt;br /&gt;
    &#039;#citizen-header__nav a&#039;,&lt;br /&gt;
    &#039;.citizen-sidebar a&#039;,&lt;br /&gt;
    &lt;br /&gt;
    // ✅ 你自己加的 _target 类（所有你想吸附的元素）&lt;br /&gt;
    &#039;._target&#039;,&lt;br /&gt;
    &lt;br /&gt;
    // ✅ Commentstreams 评论插件全按钮自动吸附&lt;br /&gt;
    &#039;.commentstreams-button&#039;,&lt;br /&gt;
    &#039;.commentstreams-submit&#039;,&lt;br /&gt;
    &#039;.commentstreams-header button&#039;,&lt;br /&gt;
    &#039;.commentstreams-box button&#039;,&lt;br /&gt;
    &lt;br /&gt;
    // ✅ 常用插件通用按钮（全覆盖）&lt;br /&gt;
    &#039;.mw-ui-button&#039;,&lt;br /&gt;
    &#039;button&#039;,&lt;br /&gt;
    &#039;a[role=&amp;quot;button&amp;quot;]&#039;&lt;br /&gt;
].join(&#039;,&#039;);&lt;br /&gt;
&lt;br /&gt;
    function bind(){&lt;br /&gt;
        document.querySelectorAll(sel).forEach(el=&amp;gt;{&lt;br /&gt;
            if(el._magBind)return;&lt;br /&gt;
            el._magBind = 1;&lt;br /&gt;
            el.addEventListener(&#039;mouseenter&#039;, ()=&amp;gt; hoverEl = el);&lt;br /&gt;
            el.addEventListener(&#039;mouseleave&#039;, ()=&amp;gt; hoverEl = null);&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    bind();&lt;br /&gt;
    new MutationObserver(bind).observe(document.body,{childList:true,subtree:true});&lt;br /&gt;
});&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=338</id>
		<title>MediaWiki:Citizen.js</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=338"/>
		<updated>2026-03-31T08:13:33Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(function() {&lt;br /&gt;
if( window.magneticCursorInit ) return;&lt;br /&gt;
window.magneticCursorInit = true;&lt;br /&gt;
&lt;br /&gt;
mw.loader.using( [], function() {&lt;br /&gt;
    // 创建四角光标&lt;br /&gt;
    const ptr = document.createElement(&#039;div&#039;);&lt;br /&gt;
    ptr.className = &#039;magnetic-true-corner&#039;;&lt;br /&gt;
    ptr.innerHTML = `&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;`;&lt;br /&gt;
    document.body.appendChild(ptr);&lt;br /&gt;
&lt;br /&gt;
    // 样式：原版亮绿 + 纯拐角无方块&lt;br /&gt;
    const css = document.createElement(&#039;style&#039;);&lt;br /&gt;
    css.textContent = `&lt;br /&gt;
    .magnetic-true-corner{&lt;br /&gt;
        position:fixed;&lt;br /&gt;
        left:0;top:0;&lt;br /&gt;
        width:0;height:0;&lt;br /&gt;
        pointer-events:none;&lt;br /&gt;
        z-index:999999!important;&lt;br /&gt;
    }&lt;br /&gt;
    .magnetic-true-corner i{&lt;br /&gt;
        position:absolute;&lt;br /&gt;
        width:14px;height:14px;&lt;br /&gt;
        border:2px solid #c8cdd5;&lt;br /&gt;
        background:transparent!important;&lt;br /&gt;
        box-shadow:none!important;&lt;br /&gt;
    }&lt;br /&gt;
    /* 只留拐角，镂空 */&lt;br /&gt;
    .magnetic-true-corner i:nth-child(1){top:-2px;left:-2px;border-right:none;border-bottom:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(2){top:-2px;right:-2px;border-left:none;border-bottom:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(3){bottom:-2px;left:-2px;border-right:none;border-top:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(4){bottom:-2px;right:-2px;border-left:none;border-top:none;}&lt;br /&gt;
    `;&lt;br /&gt;
    document.head.appendChild(css);&lt;br /&gt;
&lt;br /&gt;
    let hoverEl = null;&lt;br /&gt;
    let mx = 0, my = 0;&lt;br /&gt;
    // 光标缓冲坐标（做顺滑移动）&lt;br /&gt;
    let smoothX = 0, smoothY = 0;&lt;br /&gt;
    let curW = 40, curH = 40;&lt;br /&gt;
&lt;br /&gt;
    // 鼠标实时位置&lt;br /&gt;
    document.addEventListener(&#039;mousemove&#039;, e =&amp;gt; {&lt;br /&gt;
        mx = e.clientX;&lt;br /&gt;
        my = e.clientY;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // 顺滑帧动画：磁吸缓冲&lt;br /&gt;
    function loop(){&lt;br /&gt;
        const ease = 0.15; // 磁吸顺滑度，越小越黏&lt;br /&gt;
        if(hoverEl){&lt;br /&gt;
            // 吸附到元素中心 + 缓冲&lt;br /&gt;
            const r = hoverEl.getBoundingClientRect();&lt;br /&gt;
            const targetX = r.left + r.width / 2;&lt;br /&gt;
            const targetY = r.top + r.height / 2;&lt;br /&gt;
            smoothX += (targetX - smoothX) * ease;&lt;br /&gt;
            smoothY += (targetY - smoothY) * ease;&lt;br /&gt;
            curW = r.width;&lt;br /&gt;
            curH = r.height;&lt;br /&gt;
&lt;br /&gt;
            // 四角框精准包住按钮&lt;br /&gt;
            ptr.style.left = (smoothX - curW / 2) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = (smoothY - curH / 2) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = curW + &#039;px&#039;;&lt;br /&gt;
            ptr.style.height = curH + &#039;px&#039;;&lt;br /&gt;
        }else{&lt;br /&gt;
            // 常态跟随鼠标，小光标顺滑移动&lt;br /&gt;
            curW = 40;&lt;br /&gt;
            curH = 40;&lt;br /&gt;
            smoothX += (mx - smoothX) * ease;&lt;br /&gt;
            smoothY += (my - smoothY) * ease;&lt;br /&gt;
&lt;br /&gt;
            ptr.style.left = (smoothX - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = (smoothY - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = curW + &#039;px&#039;;&lt;br /&gt;
            ptr.style.height = curH + &#039;px&#039;;&lt;br /&gt;
        }&lt;br /&gt;
        requestAnimationFrame(loop);&lt;br /&gt;
    }&lt;br /&gt;
    loop();&lt;br /&gt;
&lt;br /&gt;
    // Citizen 精准按钮选择器&lt;br /&gt;
const sel = [&lt;br /&gt;
    // 官方皮肤按钮&lt;br /&gt;
    &#039;.citizen-nav a&#039;,&lt;br /&gt;
    &#039;.citizen-menu a&#039;,&lt;br /&gt;
    &#039;.citizen-button&#039;,&lt;br /&gt;
    &#039;.citizen-action-button&#039;,&lt;br /&gt;
    &#039;.cdx-button&#039;,&lt;br /&gt;
    &#039;.mw-editsection a&#039;,&lt;br /&gt;
    &#039;#citizen-header__nav a&#039;,&lt;br /&gt;
    &#039;.citizen-sidebar a&#039;,&lt;br /&gt;
    &lt;br /&gt;
    // ✅ 你自己加的 _target 类（所有你想吸附的元素）&lt;br /&gt;
    &#039;._target&#039;,&lt;br /&gt;
    &lt;br /&gt;
    // ✅ Commentstreams 评论插件全按钮自动吸附&lt;br /&gt;
    &#039;.commentstreams-button&#039;,&lt;br /&gt;
    &#039;.commentstreams-submit&#039;,&lt;br /&gt;
    &#039;.commentstreams-header button&#039;,&lt;br /&gt;
    &#039;.commentstreams-box button&#039;,&lt;br /&gt;
    &lt;br /&gt;
    // ✅ 常用插件通用按钮（全覆盖）&lt;br /&gt;
    &#039;.mw-ui-button&#039;,&lt;br /&gt;
    &#039;button&#039;,&lt;br /&gt;
    &#039;a[role=&amp;quot;button&amp;quot;]&#039;&lt;br /&gt;
].join(&#039;,&#039;);&lt;br /&gt;
&lt;br /&gt;
    function bind(){&lt;br /&gt;
        document.querySelectorAll(sel).forEach(el=&amp;gt;{&lt;br /&gt;
            if(el._magBind)return;&lt;br /&gt;
            el._magBind = 1;&lt;br /&gt;
            el.addEventListener(&#039;mouseenter&#039;, ()=&amp;gt; hoverEl = el);&lt;br /&gt;
            el.addEventListener(&#039;mouseleave&#039;, ()=&amp;gt; hoverEl = null);&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    bind();&lt;br /&gt;
    new MutationObserver(bind).observe(document.body,{childList:true,subtree:true});&lt;br /&gt;
});&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=337</id>
		<title>MediaWiki:Citizen.js</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=337"/>
		<updated>2026-03-31T08:12:47Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(function() {&lt;br /&gt;
if( window.magneticCursorInit ) return;&lt;br /&gt;
window.magneticCursorInit = true;&lt;br /&gt;
&lt;br /&gt;
mw.loader.using( [], function() {&lt;br /&gt;
    // 创建四角光标&lt;br /&gt;
    const ptr = document.createElement(&#039;div&#039;);&lt;br /&gt;
    ptr.className = &#039;magnetic-true-corner&#039;;&lt;br /&gt;
    ptr.innerHTML = `&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;`;&lt;br /&gt;
    document.body.appendChild(ptr);&lt;br /&gt;
&lt;br /&gt;
    // 样式：原版亮绿 + 纯拐角无方块&lt;br /&gt;
    const css = document.createElement(&#039;style&#039;);&lt;br /&gt;
    css.textContent = `&lt;br /&gt;
    .magnetic-true-corner{&lt;br /&gt;
        position:fixed;&lt;br /&gt;
        left:0;top:0;&lt;br /&gt;
        width:0;height:0;&lt;br /&gt;
        pointer-events:none;&lt;br /&gt;
        z-index:999999!important;&lt;br /&gt;
    }&lt;br /&gt;
    .magnetic-true-corner i{&lt;br /&gt;
        position:absolute;&lt;br /&gt;
        width:14px;height:14px;&lt;br /&gt;
        border:2px solid #17f700;&lt;br /&gt;
        background:transparent!important;&lt;br /&gt;
        box-shadow:none!important;&lt;br /&gt;
    }&lt;br /&gt;
    /* 只留拐角，镂空 */&lt;br /&gt;
    .magnetic-true-corner i:nth-child(1){top:-2px;left:-2px;border-right:none;border-bottom:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(2){top:-2px;right:-2px;border-left:none;border-bottom:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(3){bottom:-2px;left:-2px;border-right:none;border-top:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(4){bottom:-2px;right:-2px;border-left:none;border-top:none;}&lt;br /&gt;
    `;&lt;br /&gt;
    document.head.appendChild(css);&lt;br /&gt;
&lt;br /&gt;
    let hoverEl = null;&lt;br /&gt;
    let mx = 0, my = 0;&lt;br /&gt;
    // 光标缓冲坐标（做顺滑移动）&lt;br /&gt;
    let smoothX = 0, smoothY = 0;&lt;br /&gt;
    let curW = 40, curH = 40;&lt;br /&gt;
&lt;br /&gt;
    // 鼠标实时位置&lt;br /&gt;
    document.addEventListener(&#039;mousemove&#039;, e =&amp;gt; {&lt;br /&gt;
        mx = e.clientX;&lt;br /&gt;
        my = e.clientY;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // 顺滑帧动画：磁吸缓冲&lt;br /&gt;
    function loop(){&lt;br /&gt;
        const ease = 0.15; // 磁吸顺滑度，越小越黏&lt;br /&gt;
        if(hoverEl){&lt;br /&gt;
            // 吸附到元素中心 + 缓冲&lt;br /&gt;
            const r = hoverEl.getBoundingClientRect();&lt;br /&gt;
            const targetX = r.left + r.width / 2;&lt;br /&gt;
            const targetY = r.top + r.height / 2;&lt;br /&gt;
            smoothX += (targetX - smoothX) * ease;&lt;br /&gt;
            smoothY += (targetY - smoothY) * ease;&lt;br /&gt;
            curW = r.width;&lt;br /&gt;
            curH = r.height;&lt;br /&gt;
&lt;br /&gt;
            // 四角框精准包住按钮&lt;br /&gt;
            ptr.style.left = (smoothX - curW / 2) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = (smoothY - curH / 2) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = curW + &#039;px&#039;;&lt;br /&gt;
            ptr.style.height = curH + &#039;px&#039;;&lt;br /&gt;
        }else{&lt;br /&gt;
            // 常态跟随鼠标，小光标顺滑移动&lt;br /&gt;
            curW = 40;&lt;br /&gt;
            curH = 40;&lt;br /&gt;
            smoothX += (mx - smoothX) * ease;&lt;br /&gt;
            smoothY += (my - smoothY) * ease;&lt;br /&gt;
&lt;br /&gt;
            ptr.style.left = (smoothX - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = (smoothY - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = curW + &#039;px&#039;;&lt;br /&gt;
            ptr.style.height = curH + &#039;px&#039;;&lt;br /&gt;
        }&lt;br /&gt;
        requestAnimationFrame(loop);&lt;br /&gt;
    }&lt;br /&gt;
    loop();&lt;br /&gt;
&lt;br /&gt;
    // Citizen 精准按钮选择器&lt;br /&gt;
const sel = [&lt;br /&gt;
    // 官方皮肤按钮&lt;br /&gt;
    &#039;.citizen-nav a&#039;,&lt;br /&gt;
    &#039;.citizen-menu a&#039;,&lt;br /&gt;
    &#039;.citizen-button&#039;,&lt;br /&gt;
    &#039;.citizen-action-button&#039;,&lt;br /&gt;
    &#039;.cdx-button&#039;,&lt;br /&gt;
    &#039;.mw-editsection a&#039;,&lt;br /&gt;
    &#039;#citizen-header__nav a&#039;,&lt;br /&gt;
    &#039;.citizen-sidebar a&#039;,&lt;br /&gt;
    &lt;br /&gt;
    // ✅ 你自己加的 _target 类（所有你想吸附的元素）&lt;br /&gt;
    &#039;._target&#039;,&lt;br /&gt;
    &lt;br /&gt;
    // ✅ Commentstreams 评论插件全按钮自动吸附&lt;br /&gt;
    &#039;.commentstreams-button&#039;,&lt;br /&gt;
    &#039;.commentstreams-submit&#039;,&lt;br /&gt;
    &#039;.commentstreams-header button&#039;,&lt;br /&gt;
    &#039;.commentstreams-box button&#039;,&lt;br /&gt;
    &lt;br /&gt;
    // ✅ 常用插件通用按钮（全覆盖）&lt;br /&gt;
    &#039;.mw-ui-button&#039;,&lt;br /&gt;
    &#039;button&#039;,&lt;br /&gt;
    &#039;a[role=&amp;quot;button&amp;quot;]&#039;&lt;br /&gt;
].join(&#039;,&#039;);&lt;br /&gt;
&lt;br /&gt;
    function bind(){&lt;br /&gt;
        document.querySelectorAll(sel).forEach(el=&amp;gt;{&lt;br /&gt;
            if(el._magBind)return;&lt;br /&gt;
            el._magBind = 1;&lt;br /&gt;
            el.addEventListener(&#039;mouseenter&#039;, ()=&amp;gt; hoverEl = el);&lt;br /&gt;
            el.addEventListener(&#039;mouseleave&#039;, ()=&amp;gt; hoverEl = null);&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    bind();&lt;br /&gt;
    new MutationObserver(bind).observe(document.body,{childList:true,subtree:true});&lt;br /&gt;
});&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=336</id>
		<title>MediaWiki:Citizen.js</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=336"/>
		<updated>2026-03-31T08:11:20Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(function() {&lt;br /&gt;
    mw.loader.using(&#039;jquery&#039;, function() {&lt;br /&gt;
        $(function() {&lt;br /&gt;
            if (document.querySelector(&#039;.magnetic-pointer-original&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
            const pointer = document.createElement(&#039;div&#039;);&lt;br /&gt;
            pointer.className = &#039;magnetic-pointer-original&#039;;&lt;br /&gt;
            pointer.innerHTML = &#039;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
            document.body.appendChild(pointer);&lt;br /&gt;
&lt;br /&gt;
            const style = document.createElement(&#039;style&#039;);&lt;br /&gt;
            style.textContent = `&lt;br /&gt;
.magnetic-pointer-original {&lt;br /&gt;
    --width: 4rem;&lt;br /&gt;
    --height: 4rem;&lt;br /&gt;
    position: fixed;&lt;br /&gt;
    top: calc(var(--height) / -2);&lt;br /&gt;
    left: calc(var(--width) / -2);&lt;br /&gt;
    width: var(--width);&lt;br /&gt;
    height: var(--height);&lt;br /&gt;
    transition: all 0.2s ease-out;&lt;br /&gt;
    pointer-events: none;&lt;br /&gt;
    z-index: 99999;&lt;br /&gt;
}&lt;br /&gt;
/* 白天模式：绿色 */&lt;br /&gt;
.magnetic-pointer-original div {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    width: 0.8rem;&lt;br /&gt;
    height: 0.8rem;&lt;br /&gt;
    border-color: #17f700;&lt;br /&gt;
    background: transparent !important;&lt;br /&gt;
    border-top:3px solid transparent;&lt;br /&gt;
    border-left:3px solid transparent;&lt;br /&gt;
}&lt;br /&gt;
/* 黑夜模式：白色 */&lt;br /&gt;
html[data-color-scheme=&amp;quot;dark&amp;quot;] .magnetic-pointer-original div {&lt;br /&gt;
    border-color: #ffffff !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.magnetic-pointer-original div:nth-child(1) {top:0;left:0;border-top-color:inherit;border-left-color:inherit;}&lt;br /&gt;
.magnetic-pointer-original div:nth-child(2) {top:0;right:0;border-top-color:inherit;border-right-color:inherit;}&lt;br /&gt;
.magnetic-pointer-original div:nth-child(3) {bottom:0;left:0;border-bottom-color:inherit;border-left-color:inherit;}&lt;br /&gt;
.magnetic-pointer-original div:nth-child(4) {bottom:0;right:0;border-bottom-color:inherit;border-right-color:inherit;}&lt;br /&gt;
            `;&lt;br /&gt;
            document.head.appendChild(style);&lt;br /&gt;
&lt;br /&gt;
            let currentTarget = null;&lt;br /&gt;
            let currentX = 0, currentY = 0;&lt;br /&gt;
&lt;br /&gt;
            const onMouseMove = function(e) {&lt;br /&gt;
                let x = e.clientX;&lt;br /&gt;
                let y = e.clientY;&lt;br /&gt;
                if (currentTarget) {&lt;br /&gt;
                    const rect = currentTarget.getBoundingClientRect();&lt;br /&gt;
                    const centerX = rect.left + rect.width / 2;&lt;br /&gt;
                    const centerY = rect.top + rect.height / 2;&lt;br /&gt;
                    x = centerX + (x - centerX) * 0.1;&lt;br /&gt;
                    y = centerY + (y - centerY) * 0.1;&lt;br /&gt;
                }&lt;br /&gt;
                currentX = x;&lt;br /&gt;
                currentY = y;&lt;br /&gt;
                pointer.style.transform = `translate(${currentX}px, ${currentY}px)`;&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            const onMouseEnter = function(e) {&lt;br /&gt;
                currentTarget = e.currentTarget;&lt;br /&gt;
                const rect = currentTarget.getBoundingClientRect();&lt;br /&gt;
                pointer.style.setProperty(&#039;--width&#039;, rect.width + window.innerWidth / 50 + &#039;px&#039;);&lt;br /&gt;
                pointer.style.setProperty(&#039;--height&#039;, rect.height + window.innerWidth / 50 + &#039;px&#039;);&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            const onMouseLeave = function() {&lt;br /&gt;
                currentTarget = null;&lt;br /&gt;
                pointer.style.setProperty(&#039;--width&#039;, &#039;4rem&#039;);&lt;br /&gt;
                pointer.style.setProperty(&#039;--height&#039;, &#039;4rem&#039;);&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            // 自动绑定：你自定义的 + Citizen + 评论插件&lt;br /&gt;
            const bindTargets = function() {&lt;br /&gt;
                document.querySelectorAll(`&lt;br /&gt;
                    ._target,&lt;br /&gt;
                    .citizen-button,&lt;br /&gt;
                    .citizen-nav a,&lt;br /&gt;
                    .citizen-menu a,&lt;br /&gt;
                    .citizen-sidebar a,&lt;br /&gt;
                    .cdx-button,&lt;br /&gt;
                    .mw-ui-button,&lt;br /&gt;
                    button,&lt;br /&gt;
                    [class*=&amp;quot;commentstreams&amp;quot;] button,&lt;br /&gt;
                    .commentstreams-box button,&lt;br /&gt;
                    .commentstreams-submit&lt;br /&gt;
                `).forEach(el =&amp;gt; {&lt;br /&gt;
                    if (el._magneticBound) return;&lt;br /&gt;
                    el._magneticBound = true;&lt;br /&gt;
                    el.addEventListener(&#039;mouseenter&#039;, onMouseEnter);&lt;br /&gt;
                    el.addEventListener(&#039;mouseleave&#039;, onMouseLeave);&lt;br /&gt;
                });&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            window.addEventListener(&#039;mousemove&#039;, onMouseMove);&lt;br /&gt;
            bindTargets();&lt;br /&gt;
            const observer = new MutationObserver(bindTargets);&lt;br /&gt;
            observer.observe(document.body, { childList: true, subtree: true });&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=335</id>
		<title>MediaWiki:Citizen.js</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=335"/>
		<updated>2026-03-31T08:10:01Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(function() {&lt;br /&gt;
if( window.magneticCursorInit ) return;&lt;br /&gt;
window.magneticCursorInit = true;&lt;br /&gt;
&lt;br /&gt;
mw.loader.using( [], function() {&lt;br /&gt;
    const ptr = document.createElement(&#039;div&#039;);&lt;br /&gt;
    ptr.className = &#039;magnetic-true-corner&#039;;&lt;br /&gt;
    ptr.innerHTML = `&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;`;&lt;br /&gt;
    document.body.appendChild(ptr);&lt;br /&gt;
&lt;br /&gt;
    const css = document.createElement(&#039;style&#039;);&lt;br /&gt;
    css.textContent = `&lt;br /&gt;
/* 浅色模式：原版亮绿 */&lt;br /&gt;
.magnetic-true-corner i{&lt;br /&gt;
    position:absolute;&lt;br /&gt;
    width:14px;height:14px;&lt;br /&gt;
    border:2px solid #17f700;&lt;br /&gt;
    background:transparent!important;&lt;br /&gt;
    box-shadow:none!important;&lt;br /&gt;
}&lt;br /&gt;
/* ========== Citizen 真正暗黑模式精准匹配 ========== */&lt;br /&gt;
html[data-color-scheme=&amp;quot;dark&amp;quot;] .magnetic-true-corner i {&lt;br /&gt;
    border-color: #4fc3f7 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.magnetic-true-corner{&lt;br /&gt;
    position:fixed;&lt;br /&gt;
    left:0;top:0;&lt;br /&gt;
    width:0;height:0;&lt;br /&gt;
    pointer-events:none;&lt;br /&gt;
    z-index:999999!important;&lt;br /&gt;
}&lt;br /&gt;
.magnetic-true-corner i:nth-child(1){top:-2px;left:-2px;border-right:none;border-bottom:none;}&lt;br /&gt;
.magnetic-true-corner i:nth-child(2){top:-2px;right:-2px;border-left:none;border-bottom:none;}&lt;br /&gt;
.magnetic-true-corner i:nth-child(3){bottom:-2px;left:-2px;border-right:none;border-top:none;}&lt;br /&gt;
.magnetic-true-corner i:nth-child(4){bottom:-2px;right:-2px;border-left:none;border-top:none;}&lt;br /&gt;
    `;&lt;br /&gt;
    document.head.appendChild(css);&lt;br /&gt;
&lt;br /&gt;
    let hoverEl = null;&lt;br /&gt;
    let mx = 0, my = 0;&lt;br /&gt;
    let smoothX = 0, smoothY = 0;&lt;br /&gt;
    let curW = 40, curH = 40;&lt;br /&gt;
&lt;br /&gt;
    document.addEventListener(&#039;mousemove&#039;, e =&amp;gt; {&lt;br /&gt;
        mx = e.clientX;&lt;br /&gt;
        my = e.clientY;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    function loop(){&lt;br /&gt;
        const ease = 0.15;&lt;br /&gt;
        if(hoverEl){&lt;br /&gt;
            const r = hoverEl.getBoundingClientRect();&lt;br /&gt;
            const targetX = r.left + r.width / 2;&lt;br /&gt;
            const targetY = r.top + r.height / 2;&lt;br /&gt;
            smoothX += (targetX - smoothX) * ease;&lt;br /&gt;
            smoothY += (targetY - smoothY) * ease;&lt;br /&gt;
            curW = r.width;&lt;br /&gt;
            curH = r.height;&lt;br /&gt;
&lt;br /&gt;
            ptr.style.left = (smoothX - curW / 2) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = (smoothY - curH / 2) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = curW + &#039;px&#039;;&lt;br /&gt;
            ptr.style.height = curH + &#039;px&#039;;&lt;br /&gt;
        }else{&lt;br /&gt;
            curW = 40;&lt;br /&gt;
            curH = 40;&lt;br /&gt;
            smoothX += (mx - smoothX) * ease;&lt;br /&gt;
            smoothY += (my - smoothY) * ease;&lt;br /&gt;
&lt;br /&gt;
            ptr.style.left = (smoothX - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = (smoothY - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = curW + &#039;px&#039;;&lt;br /&gt;
            ptr.style.height = curH + &#039;px&#039;;&lt;br /&gt;
        }&lt;br /&gt;
        requestAnimationFrame(loop);&lt;br /&gt;
    }&lt;br /&gt;
    loop();&lt;br /&gt;
&lt;br /&gt;
    // 保留你所有自定义按钮 + commentstreams + citizen原生&lt;br /&gt;
    const sel = [&lt;br /&gt;
        &#039;.citizen-nav a&#039;,&lt;br /&gt;
        &#039;.citizen-menu a&#039;,&lt;br /&gt;
        &#039;.citizen-button&#039;,&lt;br /&gt;
        &#039;.citizen-action-button&#039;,&lt;br /&gt;
        &#039;.cdx-button&#039;,&lt;br /&gt;
        &#039;.mw-editsection a&#039;,&lt;br /&gt;
        &#039;#citizen-header__nav a&#039;,&lt;br /&gt;
        &#039;.citizen-sidebar a&#039;,&lt;br /&gt;
        &#039;._target&#039;,&lt;br /&gt;
        &#039;.commentstreams-button&#039;,&lt;br /&gt;
        &#039;.commentstreams-submit&#039;,&lt;br /&gt;
        &#039;.commentstreams-header button&#039;,&lt;br /&gt;
        &#039;.commentstreams-box button&#039;,&lt;br /&gt;
        &#039;.mw-ui-button&#039;,&lt;br /&gt;
        &#039;button&#039;,&lt;br /&gt;
        &#039;a[role=&amp;quot;button&amp;quot;]&#039;&lt;br /&gt;
    ].join(&#039;,&#039;);&lt;br /&gt;
&lt;br /&gt;
    function bind(){&lt;br /&gt;
        document.querySelectorAll(sel).forEach(el=&amp;gt;{&lt;br /&gt;
            if(el._magBind)return;&lt;br /&gt;
            el._magBind = 1;&lt;br /&gt;
            el.addEventListener(&#039;mouseenter&#039;, ()=&amp;gt; hoverEl = el);&lt;br /&gt;
            el.addEventListener(&#039;mouseleave&#039;, ()=&amp;gt; hoverEl = null);&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    bind();&lt;br /&gt;
    new MutationObserver(bind).observe(document.body,{childList:true,subtree:true});&lt;br /&gt;
});&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=334</id>
		<title>MediaWiki:Citizen.js</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=334"/>
		<updated>2026-03-31T08:08:26Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(function() {&lt;br /&gt;
if( window.magneticCursorInit ) return;&lt;br /&gt;
window.magneticCursorInit = true;&lt;br /&gt;
&lt;br /&gt;
mw.loader.using( [], function() {&lt;br /&gt;
    const ptr = document.createElement(&#039;div&#039;);&lt;br /&gt;
    ptr.className = &#039;magnetic-true-corner&#039;;&lt;br /&gt;
    ptr.innerHTML = `&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;`;&lt;br /&gt;
    document.body.appendChild(ptr);&lt;br /&gt;
&lt;br /&gt;
    // 核心：明暗模式自动变色CSS&lt;br /&gt;
    const css = document.createElement(&#039;style&#039;);&lt;br /&gt;
    css.textContent = `&lt;br /&gt;
    /* 默认白天亮色：原版荧光绿 */&lt;br /&gt;
    .magnetic-true-corner i{&lt;br /&gt;
        position:absolute;&lt;br /&gt;
        width:14px;height:14px;&lt;br /&gt;
        border:2px solid #17f700;&lt;br /&gt;
        background:transparent!important;&lt;br /&gt;
        box-shadow:none!important;&lt;br /&gt;
    }&lt;br /&gt;
    /* Citizen深色/暗夜模式 自动变色 */&lt;br /&gt;
    body.skin-citizen--dark .magnetic-true-corner i,&lt;br /&gt;
    body.theme-dark .magnetic-true-corner i,&lt;br /&gt;
    html[data-theme=&amp;quot;dark&amp;quot;] .magnetic-true-corner i{&lt;br /&gt;
        border-color: #4fc3f7 !important;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .magnetic-true-corner{&lt;br /&gt;
        position:fixed;&lt;br /&gt;
        left:0;top:0;&lt;br /&gt;
        width:0;height:0;&lt;br /&gt;
        pointer-events:none;&lt;br /&gt;
        z-index:999999!important;&lt;br /&gt;
    }&lt;br /&gt;
    .magnetic-true-corner i:nth-child(1){top:-2px;left:-2px;border-right:none;border-bottom:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(2){top:-2px;right:-2px;border-left:none;border-bottom:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(3){bottom:-2px;left:-2px;border-right:none;border-top:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(4){bottom:-2px;right:-2px;border-left:none;border-top:none;}&lt;br /&gt;
    `;&lt;br /&gt;
    document.head.appendChild(css);&lt;br /&gt;
&lt;br /&gt;
    let hoverEl = null;&lt;br /&gt;
    let mx = 0, my = 0;&lt;br /&gt;
    let smoothX = 0, smoothY = 0;&lt;br /&gt;
    let curW = 40, curH = 40;&lt;br /&gt;
&lt;br /&gt;
    document.addEventListener(&#039;mousemove&#039;, e =&amp;gt; {&lt;br /&gt;
        mx = e.clientX;&lt;br /&gt;
        my = e.clientY;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // 顺滑磁吸动画保留&lt;br /&gt;
    function loop(){&lt;br /&gt;
        const ease = 0.15;&lt;br /&gt;
        if(hoverEl){&lt;br /&gt;
            const r = hoverEl.getBoundingClientRect();&lt;br /&gt;
            const targetX = r.left + r.width / 2;&lt;br /&gt;
            const targetY = r.top + r.height / 2;&lt;br /&gt;
            smoothX += (targetX - smoothX) * ease;&lt;br /&gt;
            smoothY += (targetY - smoothY) * ease;&lt;br /&gt;
            curW = r.width;&lt;br /&gt;
            curH = r.height;&lt;br /&gt;
&lt;br /&gt;
            ptr.style.left = (smoothX - curW / 2) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = (smoothY - curH / 2) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = curW + &#039;px&#039;;&lt;br /&gt;
            ptr.style.height = curH + &#039;px&#039;;&lt;br /&gt;
        }else{&lt;br /&gt;
            curW = 40;&lt;br /&gt;
            curH = 40;&lt;br /&gt;
            smoothX += (mx - smoothX) * ease;&lt;br /&gt;
            smoothY += (my - smoothY) * ease;&lt;br /&gt;
&lt;br /&gt;
            ptr.style.left = (smoothX - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = (smoothY - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = curW + &#039;px&#039;;&lt;br /&gt;
            ptr.style.height = curH + &#039;px&#039;;&lt;br /&gt;
        }&lt;br /&gt;
        requestAnimationFrame(loop);&lt;br /&gt;
    }&lt;br /&gt;
    loop();&lt;br /&gt;
&lt;br /&gt;
    // 全覆盖：Citizen原生 + 你的自定义按钮 + Commentstreams插件&lt;br /&gt;
    const sel = [&lt;br /&gt;
        &#039;.citizen-nav a&#039;,&lt;br /&gt;
        &#039;.citizen-menu a&#039;,&lt;br /&gt;
        &#039;.citizen-button&#039;,&lt;br /&gt;
        &#039;.citizen-action-button&#039;,&lt;br /&gt;
        &#039;.cdx-button&#039;,&lt;br /&gt;
        &#039;.mw-editsection a&#039;,&lt;br /&gt;
        &#039;#citizen-header__nav a&#039;,&lt;br /&gt;
        &#039;.citizen-sidebar a&#039;,&lt;br /&gt;
        &#039;._target&#039;,&lt;br /&gt;
        &#039;.commentstreams-button&#039;,&lt;br /&gt;
        &#039;.commentstreams-submit&#039;,&lt;br /&gt;
        &#039;.commentstreams-header button&#039;,&lt;br /&gt;
        &#039;.commentstreams-box button&#039;,&lt;br /&gt;
        &#039;.mw-ui-button&#039;,&lt;br /&gt;
        &#039;button&#039;,&lt;br /&gt;
        &#039;a[role=&amp;quot;button&amp;quot;]&#039;&lt;br /&gt;
    ].join(&#039;,&#039;);&lt;br /&gt;
&lt;br /&gt;
    function bind(){&lt;br /&gt;
        document.querySelectorAll(sel).forEach(el=&amp;gt;{&lt;br /&gt;
            if(el._magBind)return;&lt;br /&gt;
            el._magBind = 1;&lt;br /&gt;
            el.addEventListener(&#039;mouseenter&#039;, ()=&amp;gt; hoverEl = el);&lt;br /&gt;
            el.addEventListener(&#039;mouseleave&#039;, ()=&amp;gt; hoverEl = null);&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    bind();&lt;br /&gt;
    new MutationObserver(bind).observe(document.body,{childList:true,subtree:true});&lt;br /&gt;
});&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=333</id>
		<title>MediaWiki:Citizen.js</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=333"/>
		<updated>2026-03-31T08:07:37Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(function() {&lt;br /&gt;
if( window.magneticCursorInit ) return;&lt;br /&gt;
window.magneticCursorInit = true;&lt;br /&gt;
&lt;br /&gt;
mw.loader.using( [], function() {&lt;br /&gt;
    // 创建四角光标&lt;br /&gt;
    const ptr = document.createElement(&#039;div&#039;);&lt;br /&gt;
    ptr.className = &#039;magnetic-true-corner&#039;;&lt;br /&gt;
    ptr.innerHTML = `&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;`;&lt;br /&gt;
    document.body.appendChild(ptr);&lt;br /&gt;
&lt;br /&gt;
    // 样式：原版亮绿 + 纯拐角无方块&lt;br /&gt;
    const css = document.createElement(&#039;style&#039;);&lt;br /&gt;
    css.textContent = `&lt;br /&gt;
    .magnetic-true-corner{&lt;br /&gt;
        position:fixed;&lt;br /&gt;
        left:0;top:0;&lt;br /&gt;
        width:0;height:0;&lt;br /&gt;
        pointer-events:none;&lt;br /&gt;
        z-index:999999!important;&lt;br /&gt;
    }&lt;br /&gt;
    .magnetic-true-corner i{&lt;br /&gt;
        position:absolute;&lt;br /&gt;
        width:14px;height:14px;&lt;br /&gt;
        border:2px solid #17f700;&lt;br /&gt;
        background:transparent!important;&lt;br /&gt;
        box-shadow:none!important;&lt;br /&gt;
    }&lt;br /&gt;
    /* 只留拐角，镂空 */&lt;br /&gt;
    .magnetic-true-corner i:nth-child(1){top:-2px;left:-2px;border-right:none;border-bottom:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(2){top:-2px;right:-2px;border-left:none;border-bottom:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(3){bottom:-2px;left:-2px;border-right:none;border-top:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(4){bottom:-2px;right:-2px;border-left:none;border-top:none;}&lt;br /&gt;
    `;&lt;br /&gt;
    document.head.appendChild(css);&lt;br /&gt;
&lt;br /&gt;
    let hoverEl = null;&lt;br /&gt;
    let mx = 0, my = 0;&lt;br /&gt;
    // 光标缓冲坐标（做顺滑移动）&lt;br /&gt;
    let smoothX = 0, smoothY = 0;&lt;br /&gt;
    let curW = 40, curH = 40;&lt;br /&gt;
&lt;br /&gt;
    // 鼠标实时位置&lt;br /&gt;
    document.addEventListener(&#039;mousemove&#039;, e =&amp;gt; {&lt;br /&gt;
        mx = e.clientX;&lt;br /&gt;
        my = e.clientY;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // 顺滑帧动画：磁吸缓冲&lt;br /&gt;
    function loop(){&lt;br /&gt;
        const ease = 0.15; // 磁吸顺滑度，越小越黏&lt;br /&gt;
        if(hoverEl){&lt;br /&gt;
            // 吸附到元素中心 + 缓冲&lt;br /&gt;
            const r = hoverEl.getBoundingClientRect();&lt;br /&gt;
            const targetX = r.left + r.width / 2;&lt;br /&gt;
            const targetY = r.top + r.height / 2;&lt;br /&gt;
            smoothX += (targetX - smoothX) * ease;&lt;br /&gt;
            smoothY += (targetY - smoothY) * ease;&lt;br /&gt;
            curW = r.width;&lt;br /&gt;
            curH = r.height;&lt;br /&gt;
&lt;br /&gt;
            // 四角框精准包住按钮&lt;br /&gt;
            ptr.style.left = (smoothX - curW / 2) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = (smoothY - curH / 2) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = curW + &#039;px&#039;;&lt;br /&gt;
            ptr.style.height = curH + &#039;px&#039;;&lt;br /&gt;
        }else{&lt;br /&gt;
            // 常态跟随鼠标，小光标顺滑移动&lt;br /&gt;
            curW = 40;&lt;br /&gt;
            curH = 40;&lt;br /&gt;
            smoothX += (mx - smoothX) * ease;&lt;br /&gt;
            smoothY += (my - smoothY) * ease;&lt;br /&gt;
&lt;br /&gt;
            ptr.style.left = (smoothX - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = (smoothY - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = curW + &#039;px&#039;;&lt;br /&gt;
            ptr.style.height = curH + &#039;px&#039;;&lt;br /&gt;
        }&lt;br /&gt;
        requestAnimationFrame(loop);&lt;br /&gt;
    }&lt;br /&gt;
    loop();&lt;br /&gt;
&lt;br /&gt;
    // Citizen 精准按钮选择器&lt;br /&gt;
    const sel = [&lt;br /&gt;
           // 官方皮肤按钮&lt;br /&gt;
    &#039;.citizen-nav a&#039;,&lt;br /&gt;
    &#039;.citizen-menu a&#039;,&lt;br /&gt;
    &#039;.citizen-button&#039;,&lt;br /&gt;
    &#039;.citizen-action-button&#039;,&lt;br /&gt;
    &#039;.cdx-button&#039;,&lt;br /&gt;
    &#039;.mw-editsection a&#039;,&lt;br /&gt;
    &#039;#citizen-header__nav a&#039;,&lt;br /&gt;
    &#039;.citizen-sidebar a&#039;,&lt;br /&gt;
    &lt;br /&gt;
    // ✅ 你自己加的 _target 类（所有你想吸附的元素）&lt;br /&gt;
    &#039;._target&#039;,&lt;br /&gt;
    &lt;br /&gt;
    // ✅ Commentstreams 评论插件全按钮自动吸附&lt;br /&gt;
    &#039;.commentstreams-button&#039;,&lt;br /&gt;
    &#039;.commentstreams-submit&#039;,&lt;br /&gt;
    &#039;.commentstreams-header button&#039;,&lt;br /&gt;
    &#039;.commentstreams-box button&#039;,&lt;br /&gt;
    &lt;br /&gt;
    // ✅ 常用插件通用按钮（全覆盖）&lt;br /&gt;
    &#039;.mw-ui-button&#039;,&lt;br /&gt;
    &#039;button&#039;,&lt;br /&gt;
    &#039;a[role=&amp;quot;button&amp;quot;]&#039;&lt;br /&gt;
    ].join(&#039;,&#039;);&lt;br /&gt;
&lt;br /&gt;
    function bind(){&lt;br /&gt;
        document.querySelectorAll(sel).forEach(el=&amp;gt;{&lt;br /&gt;
            if(el._magBind)return;&lt;br /&gt;
            el._magBind = 1;&lt;br /&gt;
            el.addEventListener(&#039;mouseenter&#039;, ()=&amp;gt; hoverEl = el);&lt;br /&gt;
            el.addEventListener(&#039;mouseleave&#039;, ()=&amp;gt; hoverEl = null);&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    bind();&lt;br /&gt;
    new MutationObserver(bind).observe(document.body,{childList:true,subtree:true});&lt;br /&gt;
});&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=332</id>
		<title>MediaWiki:Citizen.js</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=332"/>
		<updated>2026-03-31T08:01:00Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(function() {&lt;br /&gt;
if( window.magneticCursorInit ) return;&lt;br /&gt;
window.magneticCursorInit = true;&lt;br /&gt;
&lt;br /&gt;
mw.loader.using( [], function() {&lt;br /&gt;
    // 创建四角光标&lt;br /&gt;
    const ptr = document.createElement(&#039;div&#039;);&lt;br /&gt;
    ptr.className = &#039;magnetic-true-corner&#039;;&lt;br /&gt;
    ptr.innerHTML = `&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;`;&lt;br /&gt;
    document.body.appendChild(ptr);&lt;br /&gt;
&lt;br /&gt;
    // 样式：原版亮绿 + 纯拐角无方块&lt;br /&gt;
    const css = document.createElement(&#039;style&#039;);&lt;br /&gt;
    css.textContent = `&lt;br /&gt;
    .magnetic-true-corner{&lt;br /&gt;
        position:fixed;&lt;br /&gt;
        left:0;top:0;&lt;br /&gt;
        width:0;height:0;&lt;br /&gt;
        pointer-events:none;&lt;br /&gt;
        z-index:999999!important;&lt;br /&gt;
    }&lt;br /&gt;
    .magnetic-true-corner i{&lt;br /&gt;
        position:absolute;&lt;br /&gt;
        width:14px;height:14px;&lt;br /&gt;
        border:2px solid #17f700;&lt;br /&gt;
        background:transparent!important;&lt;br /&gt;
        box-shadow:none!important;&lt;br /&gt;
    }&lt;br /&gt;
    /* 只留拐角，镂空 */&lt;br /&gt;
    .magnetic-true-corner i:nth-child(1){top:-2px;left:-2px;border-right:none;border-bottom:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(2){top:-2px;right:-2px;border-left:none;border-bottom:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(3){bottom:-2px;left:-2px;border-right:none;border-top:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(4){bottom:-2px;right:-2px;border-left:none;border-top:none;}&lt;br /&gt;
    `;&lt;br /&gt;
    document.head.appendChild(css);&lt;br /&gt;
&lt;br /&gt;
    let hoverEl = null;&lt;br /&gt;
    let mx = 0, my = 0;&lt;br /&gt;
    // 光标缓冲坐标（做顺滑移动）&lt;br /&gt;
    let smoothX = 0, smoothY = 0;&lt;br /&gt;
    let curW = 40, curH = 40;&lt;br /&gt;
&lt;br /&gt;
    // 鼠标实时位置&lt;br /&gt;
    document.addEventListener(&#039;mousemove&#039;, e =&amp;gt; {&lt;br /&gt;
        mx = e.clientX;&lt;br /&gt;
        my = e.clientY;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // 顺滑帧动画：磁吸缓冲&lt;br /&gt;
    function loop(){&lt;br /&gt;
        const ease = 0.15; // 磁吸顺滑度，越小越黏&lt;br /&gt;
        if(hoverEl){&lt;br /&gt;
            // 吸附到元素中心 + 缓冲&lt;br /&gt;
            const r = hoverEl.getBoundingClientRect();&lt;br /&gt;
            const targetX = r.left + r.width / 2;&lt;br /&gt;
            const targetY = r.top + r.height / 2;&lt;br /&gt;
            smoothX += (targetX - smoothX) * ease;&lt;br /&gt;
            smoothY += (targetY - smoothY) * ease;&lt;br /&gt;
            curW = r.width;&lt;br /&gt;
            curH = r.height;&lt;br /&gt;
&lt;br /&gt;
            // 四角框精准包住按钮&lt;br /&gt;
            ptr.style.left = (smoothX - curW / 2) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = (smoothY - curH / 2) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = curW + &#039;px&#039;;&lt;br /&gt;
            ptr.style.height = curH + &#039;px&#039;;&lt;br /&gt;
        }else{&lt;br /&gt;
            // 常态跟随鼠标，小光标顺滑移动&lt;br /&gt;
            curW = 40;&lt;br /&gt;
            curH = 40;&lt;br /&gt;
            smoothX += (mx - smoothX) * ease;&lt;br /&gt;
            smoothY += (my - smoothY) * ease;&lt;br /&gt;
&lt;br /&gt;
            ptr.style.left = (smoothX - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = (smoothY - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = curW + &#039;px&#039;;&lt;br /&gt;
            ptr.style.height = curH + &#039;px&#039;;&lt;br /&gt;
        }&lt;br /&gt;
        requestAnimationFrame(loop);&lt;br /&gt;
    }&lt;br /&gt;
    loop();&lt;br /&gt;
&lt;br /&gt;
    // Citizen 精准按钮选择器&lt;br /&gt;
    const sel = [&lt;br /&gt;
        &#039;.citizen-nav a&#039;,&lt;br /&gt;
        &#039;.citizen-menu a&#039;,&lt;br /&gt;
        &#039;.citizen-button&#039;,&lt;br /&gt;
        &#039;.citizen-action-button&#039;,&lt;br /&gt;
        &#039;.cdx-button&#039;,&lt;br /&gt;
        &#039;.mw-editsection a&#039;,&lt;br /&gt;
        &#039;#citizen-header__nav a&#039;,&lt;br /&gt;
        &#039;.citizen-sidebar a&#039;&lt;br /&gt;
    ].join(&#039;,&#039;);&lt;br /&gt;
&lt;br /&gt;
    function bind(){&lt;br /&gt;
        document.querySelectorAll(sel).forEach(el=&amp;gt;{&lt;br /&gt;
            if(el._magBind)return;&lt;br /&gt;
            el._magBind = 1;&lt;br /&gt;
            el.addEventListener(&#039;mouseenter&#039;, ()=&amp;gt; hoverEl = el);&lt;br /&gt;
            el.addEventListener(&#039;mouseleave&#039;, ()=&amp;gt; hoverEl = null);&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    bind();&lt;br /&gt;
    new MutationObserver(bind).observe(document.body,{childList:true,subtree:true});&lt;br /&gt;
});&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=331</id>
		<title>MediaWiki:Citizen.js</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=331"/>
		<updated>2026-03-31T07:59:39Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* 这里所有JavaScript都会加载给Citizen皮肤的用户 */&lt;br /&gt;
(function() {&lt;br /&gt;
if( window.magneticCursorInit ) return;&lt;br /&gt;
window.magneticCursorInit = true;&lt;br /&gt;
&lt;br /&gt;
mw.loader.using( [], function() {&lt;br /&gt;
    // 创建四角光标&lt;br /&gt;
    const ptr = document.createElement(&#039;div&#039;);&lt;br /&gt;
    ptr.className = &#039;magnetic-true-corner&#039;;&lt;br /&gt;
    ptr.innerHTML = `&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;`;&lt;br /&gt;
    document.body.appendChild(ptr);&lt;br /&gt;
&lt;br /&gt;
    // 强制覆盖样式：纯四角镂空，永不方块&lt;br /&gt;
    const css = document.createElement(&#039;style&#039;);&lt;br /&gt;
    css.textContent = `&lt;br /&gt;
    .magnetic-true-corner{&lt;br /&gt;
        position:fixed;left:0;top:0;&lt;br /&gt;
        width:0;height:0;&lt;br /&gt;
        pointer-events:none;z-index:999999!important;&lt;br /&gt;
        transition:none;will-change:left,top;&lt;br /&gt;
    }&lt;br /&gt;
    .magnetic-true-corner i{&lt;br /&gt;
        position:absolute;width:14px;height:14px;&lt;br /&gt;
        border:2px solid #17f700;border-radius:2px;&lt;br /&gt;
        background:transparent!important;box-shadow:none!important;&lt;br /&gt;
    }&lt;br /&gt;
    .magnetic-true-corner i:nth-child(1){top:-2px;left:-2px;border-right:none;border-bottom:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(2){top:-2px;right:-2px;border-left:none;border-bottom:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(3){bottom:-2px;left:-2px;border-right:none;border-top:none;}&lt;br /&gt;
    .magnetic-true-corner i:nth-child(4){bottom:-2px;right:-2px;border-left:none;border-top:none;}&lt;br /&gt;
    `;&lt;br /&gt;
    document.head.appendChild(css);&lt;br /&gt;
&lt;br /&gt;
    let hoverEl = null;&lt;br /&gt;
    let mx=0,my=0;&lt;br /&gt;
&lt;br /&gt;
    // 鼠标实时位置&lt;br /&gt;
    document.addEventListener(&#039;mousemove&#039;,e=&amp;gt;{mx=e.clientX;my=e.clientY;});&lt;br /&gt;
&lt;br /&gt;
    // 帧更新：精准贴元素四角&lt;br /&gt;
    function loop(){&lt;br /&gt;
        if(hoverEl){&lt;br /&gt;
            const r = hoverEl.getBoundingClientRect();&lt;br /&gt;
            ptr.style.left = r.left + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = r.top + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = r.width + &#039;px&#039;;&lt;br /&gt;
            ptr.style.height = r.height + &#039;px&#039;;&lt;br /&gt;
        }else{&lt;br /&gt;
            // 跟随鼠标缩小光标&lt;br /&gt;
            ptr.style.left = (mx - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.top = (my - 20) + &#039;px&#039;;&lt;br /&gt;
            ptr.style.width = &#039;40px&#039;;&lt;br /&gt;
            ptr.style.height = &#039;40px&#039;;&lt;br /&gt;
        }&lt;br /&gt;
        requestAnimationFrame(loop);&lt;br /&gt;
    }&lt;br /&gt;
    loop();&lt;br /&gt;
&lt;br /&gt;
    // ✅ Citizen 皮肤【官方原生真实选择器】一个不漏&lt;br /&gt;
    const sel = [&lt;br /&gt;
        &#039;.citizen-nav a&#039;,&lt;br /&gt;
        &#039;.citizen-menu a&#039;,&lt;br /&gt;
        &#039;.citizen-button&#039;,&lt;br /&gt;
        &#039;.citizen-action-button&#039;,&lt;br /&gt;
        &#039;.cdx-button&#039;,&lt;br /&gt;
        &#039;.mw-editsection a&#039;,&lt;br /&gt;
        &#039;#citizen-header__nav a&#039;,&lt;br /&gt;
        &#039;.citizen-sidebar a&#039;&lt;br /&gt;
    ].join(&#039;,&#039;);&lt;br /&gt;
&lt;br /&gt;
    // 绑定+防重复&lt;br /&gt;
    function bind(){&lt;br /&gt;
        document.querySelectorAll(sel).forEach(el=&amp;gt;{&lt;br /&gt;
            if(el._magBind)return;&lt;br /&gt;
            el._magBind=1;&lt;br /&gt;
            el.onmouseenter=()=&amp;gt;hoverEl=el;&lt;br /&gt;
            el.onmouseleave=()=&amp;gt;hoverEl=null;&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    bind();&lt;br /&gt;
    new MutationObserver(bind).observe(document.body,{childList:true,subtree:true});&lt;br /&gt;
});&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=330</id>
		<title>MediaWiki:Citizen.js</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=330"/>
		<updated>2026-03-31T07:58:44Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* 这里所有JavaScript都会加载给Citizen皮肤的用户 */&lt;br /&gt;
(function() {&lt;br /&gt;
    mw.loader.using(&#039;jquery&#039;, function() {&lt;br /&gt;
        $(function() {&lt;br /&gt;
            if (document.querySelector(&#039;.magnetic-pointer-original&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
            // 光标 DOM&lt;br /&gt;
            const pointer = document.createElement(&#039;div&#039;);&lt;br /&gt;
            pointer.className = &#039;magnetic-pointer-original&#039;;&lt;br /&gt;
            pointer.innerHTML = &#039;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
            document.body.appendChild(pointer);&lt;br /&gt;
&lt;br /&gt;
            // 样式：纯空心四角角标&lt;br /&gt;
            const style = document.createElement(&#039;style&#039;);&lt;br /&gt;
            style.textContent = `&lt;br /&gt;
.magnetic-pointer-original {&lt;br /&gt;
    --width: 48px;&lt;br /&gt;
    --height: 48px;&lt;br /&gt;
    position: fixed;&lt;br /&gt;
    top: 0;&lt;br /&gt;
    left: 0;&lt;br /&gt;
    width: var(--width);&lt;br /&gt;
    height: var(--height);&lt;br /&gt;
    transform-origin: center center;&lt;br /&gt;
    transition: transform 0.22s ease, width 0.22s ease, height 0.22s ease;&lt;br /&gt;
    pointer-events: none !important;&lt;br /&gt;
    z-index: 999999 !important;&lt;br /&gt;
    will-change: transform, width, height;&lt;br /&gt;
}&lt;br /&gt;
.magnetic-pointer-original div {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    width: 12px;&lt;br /&gt;
    height: 12px;&lt;br /&gt;
    border-color: #17f700;&lt;br /&gt;
    background: transparent !important;&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
}&lt;br /&gt;
.magnetic-pointer-original div:nth-child(1) { top: 0; left: 0; border-top: 2px solid; border-left: 2px solid; }&lt;br /&gt;
.magnetic-pointer-original div:nth-child(2) { top: 0; right: 0; border-top: 2px solid; border-right: 2px solid; }&lt;br /&gt;
.magnetic-pointer-original div:nth-child(3) { bottom: 0; left: 0; border-bottom: 2px solid; border-left: 2px solid; }&lt;br /&gt;
.magnetic-pointer-original div:nth-child(4) { bottom: 0; right: 0; border-bottom: 2px solid; border-right: 2px solid; }&lt;br /&gt;
            `;&lt;br /&gt;
            document.head.appendChild(style);&lt;br /&gt;
&lt;br /&gt;
            let target = null;&lt;br /&gt;
            let mouseX = 0, mouseY = 0;&lt;br /&gt;
            let cursorX = 0, cursorY = 0;&lt;br /&gt;
&lt;br /&gt;
            // 鼠标位置实时更新&lt;br /&gt;
            window.addEventListener(&#039;mousemove&#039;, (e) =&amp;gt; {&lt;br /&gt;
                mouseX = e.clientX;&lt;br /&gt;
                mouseY = e.clientY;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            // 平滑跟随循环&lt;br /&gt;
            function update() {&lt;br /&gt;
                if (target) {&lt;br /&gt;
                    const rect = target.getBoundingClientRect();&lt;br /&gt;
                    const cx = rect.left + rect.width / 2;&lt;br /&gt;
                    const cy = rect.top + rect.height / 2;&lt;br /&gt;
&lt;br /&gt;
                    cursorX += (cx - cursorX) * 0.2;&lt;br /&gt;
                    cursorY += (cy - cursorY) * 0.2;&lt;br /&gt;
&lt;br /&gt;
                    pointer.style.width = rect.width + 12 + &#039;px&#039;;&lt;br /&gt;
                    pointer.style.height = rect.height + 12 + &#039;px&#039;;&lt;br /&gt;
                } else {&lt;br /&gt;
                    cursorX += (mouseX - cursorX) * 0.25;&lt;br /&gt;
                    cursorY += (mouseY - cursorY) * 0.25;&lt;br /&gt;
                    pointer.style.width = &#039;48px&#039;;&lt;br /&gt;
                    pointer.style.height = &#039;48px&#039;;&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                pointer.style.transform = `translate(${cursorX - pointer.offsetWidth/2}px, ${cursorY - pointer.offsetHeight/2}px)`;&lt;br /&gt;
                requestAnimationFrame(update);&lt;br /&gt;
            }&lt;br /&gt;
            update();&lt;br /&gt;
&lt;br /&gt;
            // 👇 这是 Citizen 皮肤真正的按钮选择器（全覆盖）&lt;br /&gt;
            const citizenSelectors = [&lt;br /&gt;
                &amp;quot;.citizen-button&amp;quot;,&lt;br /&gt;
                &amp;quot;.citizen-ui-btn&amp;quot;,&lt;br /&gt;
                &amp;quot;.citizen-nav__item a&amp;quot;,&lt;br /&gt;
                &amp;quot;.citizen-menu__item a&amp;quot;,&lt;br /&gt;
                &amp;quot;#citizen-header a&amp;quot;,&lt;br /&gt;
                &amp;quot;#citizen-sidebar a&amp;quot;,&lt;br /&gt;
                &amp;quot;a.citizen-button&amp;quot;,&lt;br /&gt;
                &amp;quot;button.citizen-button&amp;quot;,&lt;br /&gt;
                &amp;quot;.mw-editsection a&amp;quot;,&lt;br /&gt;
                &amp;quot;.mw-ui-button&amp;quot;,&lt;br /&gt;
                &amp;quot;.citizen-btn&amp;quot;&lt;br /&gt;
            ].join(&amp;quot;,&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            function bind() {&lt;br /&gt;
                document.querySelectorAll(citizenSelectors).forEach(el =&amp;gt; {&lt;br /&gt;
                    if (el._magnet) return;&lt;br /&gt;
                    el._magnet = 1;&lt;br /&gt;
&lt;br /&gt;
                    el.addEventListener(&amp;quot;mouseenter&amp;quot;, () =&amp;gt; {&lt;br /&gt;
                        target = el;&lt;br /&gt;
                    });&lt;br /&gt;
                    el.addEventListener(&amp;quot;mouseleave&amp;quot;, () =&amp;gt; {&lt;br /&gt;
                        target = null;&lt;br /&gt;
                    });&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            bind();&lt;br /&gt;
            new MutationObserver(bind).observe(document.body, { childList: true, subtree: true });&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=MediaWiki:Common.js&amp;diff=329</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=MediaWiki:Common.js&amp;diff=329"/>
		<updated>2026-03-31T07:57:42Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​页面内容被替换为“/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */  /* USERNAME */ $( function() {     if ( mw.user.isNamed() ) {         $( &amp;#039;.insertusername&amp;#039; ).text( mw.user.getName() );     } else {         $( &amp;#039;.insertusername&amp;#039; ).text( &amp;#039;访客&amp;#039; );     } } );  /* INFOBOX */ $(&amp;#039;.infobox&amp;#039;).hide();”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */&lt;br /&gt;
&lt;br /&gt;
/* USERNAME */&lt;br /&gt;
$( function() {&lt;br /&gt;
    if ( mw.user.isNamed() ) {&lt;br /&gt;
        $( &#039;.insertusername&#039; ).text( mw.user.getName() );&lt;br /&gt;
    } else {&lt;br /&gt;
        $( &#039;.insertusername&#039; ).text( &#039;访客&#039; );&lt;br /&gt;
    }&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
/* INFOBOX */&lt;br /&gt;
$(&#039;.infobox&#039;).hide();&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=328</id>
		<title>MediaWiki:Citizen.js</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=MediaWiki:Citizen.js&amp;diff=328"/>
		<updated>2026-03-31T07:57:33Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​创建页面，内容为“/* 这里所有JavaScript都会加载给Citizen皮肤的用户 */ (function() {     mw.loader.using(&amp;#039;jquery&amp;#039;, function() {         $(function() {             // 防重复挂载             if (document.querySelector(&amp;#039;.magnetic-pointer-original&amp;#039;)) return;              // 创建光标DOM             const pointer = document.createElement(&amp;#039;div&amp;#039;);             pointer.className = &amp;#039;magnetic-pointer-original&amp;#039;;             pointer.innerHTML = &amp;#039;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;di…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* 这里所有JavaScript都会加载给Citizen皮肤的用户 */&lt;br /&gt;
(function() {&lt;br /&gt;
    mw.loader.using(&#039;jquery&#039;, function() {&lt;br /&gt;
        $(function() {&lt;br /&gt;
            // 防重复挂载&lt;br /&gt;
            if (document.querySelector(&#039;.magnetic-pointer-original&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
            // 创建光标DOM&lt;br /&gt;
            const pointer = document.createElement(&#039;div&#039;);&lt;br /&gt;
            pointer.className = &#039;magnetic-pointer-original&#039;;&lt;br /&gt;
            pointer.innerHTML = &#039;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
            document.body.appendChild(pointer);&lt;br /&gt;
&lt;br /&gt;
            // 终极修复CSS：纯镂空四角 + 适配Citizen层级&lt;br /&gt;
            const style = document.createElement(&#039;style&#039;);&lt;br /&gt;
            style.textContent = `&lt;br /&gt;
/* 光标本体 */&lt;br /&gt;
.magnetic-pointer-original {&lt;br /&gt;
    --width: 4rem;&lt;br /&gt;
    --height: 4rem;&lt;br /&gt;
    position: fixed;&lt;br /&gt;
    top: calc(var(--height) / -2);&lt;br /&gt;
    left: calc(var(--width) / -2);&lt;br /&gt;
    width: var(--width);&lt;br /&gt;
    height: var(--height);&lt;br /&gt;
    transition: all 0.2s ease-out;&lt;br /&gt;
    pointer-events: none;&lt;br /&gt;
    z-index: 999999 !important; /* 压过Citizen所有弹窗/导航 */&lt;br /&gt;
}&lt;br /&gt;
/* 四角拐角 - 杜绝方块 */&lt;br /&gt;
.magnetic-pointer-original div {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    width: 12px;&lt;br /&gt;
    height: 12px;&lt;br /&gt;
    border-color: #17f700;&lt;br /&gt;
    background: transparent !important;&lt;br /&gt;
    box-shadow: none !important;&lt;br /&gt;
    margin: 0 !important;&lt;br /&gt;
    padding: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
.magnetic-pointer-original div:nth-child(1) {top:0;left:0;border-top:2px solid;border-left:2px solid;}&lt;br /&gt;
.magnetic-pointer-original div:nth-child(2) {top:0;right:0;border-top:2px solid;border-right:2px solid;}&lt;br /&gt;
.magnetic-pointer-original div:nth-child(3) {bottom:0;left:0;border-bottom:2px solid;border-left:2px solid;}&lt;br /&gt;
.magnetic-pointer-original div:nth-child(4) {bottom:0;right:0;border-bottom:2px solid;border-right:2px solid;}&lt;br /&gt;
&lt;br /&gt;
/* 锁定Citizen皮肤所有按钮为磁吸目标 */&lt;br /&gt;
.citizen-button,&lt;br /&gt;
.citizen-ui-button,&lt;br /&gt;
.citizen-nav-item a,&lt;br /&gt;
.citizen-menu-item a,&lt;br /&gt;
#citizen-header a,&lt;br /&gt;
#citizen-sidebar a,&lt;br /&gt;
.vector-tabs a,&lt;br /&gt;
.mw-editsection,&lt;br /&gt;
a.citizen-link-button {&lt;br /&gt;
    position: relative !important;&lt;br /&gt;
}&lt;br /&gt;
            `;&lt;br /&gt;
            document.head.appendChild(style);&lt;br /&gt;
&lt;br /&gt;
            let currentTarget = null;&lt;br /&gt;
            let currentX = 0, currentY = 0;&lt;br /&gt;
&lt;br /&gt;
            // 磁吸跟随逻辑&lt;br /&gt;
            const onMouseMove = function(e) {&lt;br /&gt;
                let x = e.clientX;&lt;br /&gt;
                let y = e.clientY;&lt;br /&gt;
                if (currentTarget) {&lt;br /&gt;
                    const rect = currentTarget.getBoundingClientRect();&lt;br /&gt;
                    const centerX = rect.left + rect.width / 2;&lt;br /&gt;
                    const centerY = rect.top + rect.height / 2;&lt;br /&gt;
                    x = centerX + (x - centerX) * 0.12; // 微调吸附顺滑度&lt;br /&gt;
                    y = centerY + (y - centerY) * 0.12;&lt;br /&gt;
                }&lt;br /&gt;
                currentX = x;&lt;br /&gt;
                currentY = y;&lt;br /&gt;
                pointer.style.transform = `translate(${currentX}px, ${currentY}px)`;&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            const onMouseEnter = function(e) {&lt;br /&gt;
                currentTarget = e.currentTarget;&lt;br /&gt;
                const rect = currentTarget.getBoundingClientRect();&lt;br /&gt;
                // 贴合Citizen按钮间距，放大留白更自然&lt;br /&gt;
                const gap = window.innerWidth / 60;&lt;br /&gt;
                pointer.style.setProperty(&#039;--width&#039;, rect.width + gap + &#039;px&#039;);&lt;br /&gt;
                pointer.style.setProperty(&#039;--height&#039;, rect.height + gap + &#039;px&#039;);&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            const onMouseLeave = function() {&lt;br /&gt;
                currentTarget = null;&lt;br /&gt;
                pointer.style.setProperty(&#039;--width&#039;, &#039;4rem&#039;);&lt;br /&gt;
                pointer.style.setProperty(&#039;--height&#039;, &#039;4rem&#039;);&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            // 自动绑定：Citizen全系列按钮 + 原有自定义_target&lt;br /&gt;
            const bindCitizenButtons = function() {&lt;br /&gt;
                const selector = `&lt;br /&gt;
                    .citizen-button:not([data-bound]),&lt;br /&gt;
                    .citizen-ui-button:not([data-bound]),&lt;br /&gt;
                    .citizen-nav-item a:not([data-bound]),&lt;br /&gt;
                    .citizen-menu-item a:not([data-bound]),&lt;br /&gt;
                    #citizen-header a:not([data-bound]),&lt;br /&gt;
                    #citizen-sidebar a:not([data-bound]),&lt;br /&gt;
                    .mw-editsection:not([data-bound]),&lt;br /&gt;
                    a.citizen-link-button:not([data-bound]),&lt;br /&gt;
                    ._target:not([data-bound])&lt;br /&gt;
                `;&lt;br /&gt;
                document.querySelectorAll(selector).forEach(el =&amp;gt; {&lt;br /&gt;
                    el.dataset.bound = &amp;quot;1&amp;quot;;&lt;br /&gt;
                    el.addEventListener(&#039;mouseenter&#039;, onMouseEnter);&lt;br /&gt;
                    el.addEventListener(&#039;mouseleave&#039;, onMouseLeave);&lt;br /&gt;
                });&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            // 全局鼠标监听&lt;br /&gt;
            window.addEventListener(&#039;mousemove&#039;, onMouseMove);&lt;br /&gt;
&lt;br /&gt;
            // 初始绑定&lt;br /&gt;
            bindCitizenButtons();&lt;br /&gt;
&lt;br /&gt;
            // 监听动态加载（侧边栏折叠/展开、AJAX页面、弹窗）&lt;br /&gt;
            const observer = new MutationObserver(() =&amp;gt; bindCitizenButtons());&lt;br /&gt;
            observer.observe(document.body, { childList: true, subtree: true, attributes: true });&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=MediaWiki:Common.js&amp;diff=327</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=MediaWiki:Common.js&amp;diff=327"/>
		<updated>2026-03-31T07:56:39Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */&lt;br /&gt;
&lt;br /&gt;
/* USERNAME */&lt;br /&gt;
$( function() {&lt;br /&gt;
    if ( mw.user.isNamed() ) {&lt;br /&gt;
        $( &#039;.insertusername&#039; ).text( mw.user.getName() );&lt;br /&gt;
    } else {&lt;br /&gt;
        $( &#039;.insertusername&#039; ).text( &#039;访客&#039; );&lt;br /&gt;
    }&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
/* INFOBOX */&lt;br /&gt;
$(&#039;.infobox&#039;).hide();&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    mw.loader.using(&#039;jquery&#039;, function() {&lt;br /&gt;
        $(function() {&lt;br /&gt;
            // 防重复挂载&lt;br /&gt;
            if (document.querySelector(&#039;.magnetic-pointer-original&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
            // 创建光标DOM&lt;br /&gt;
            const pointer = document.createElement(&#039;div&#039;);&lt;br /&gt;
            pointer.className = &#039;magnetic-pointer-original&#039;;&lt;br /&gt;
            pointer.innerHTML = &#039;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
            document.body.appendChild(pointer);&lt;br /&gt;
&lt;br /&gt;
            // 终极修复CSS：纯镂空四角 + 适配Citizen层级&lt;br /&gt;
            const style = document.createElement(&#039;style&#039;);&lt;br /&gt;
            style.textContent = `&lt;br /&gt;
/* 光标本体 */&lt;br /&gt;
.magnetic-pointer-original {&lt;br /&gt;
    --width: 4rem;&lt;br /&gt;
    --height: 4rem;&lt;br /&gt;
    position: fixed;&lt;br /&gt;
    top: calc(var(--height) / -2);&lt;br /&gt;
    left: calc(var(--width) / -2);&lt;br /&gt;
    width: var(--width);&lt;br /&gt;
    height: var(--height);&lt;br /&gt;
    transition: all 0.2s ease-out;&lt;br /&gt;
    pointer-events: none;&lt;br /&gt;
    z-index: 999999 !important; /* 压过Citizen所有弹窗/导航 */&lt;br /&gt;
}&lt;br /&gt;
/* 四角拐角 - 杜绝方块 */&lt;br /&gt;
.magnetic-pointer-original div {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    width: 12px;&lt;br /&gt;
    height: 12px;&lt;br /&gt;
    border-color: #17f700;&lt;br /&gt;
    background: transparent !important;&lt;br /&gt;
    box-shadow: none !important;&lt;br /&gt;
    margin: 0 !important;&lt;br /&gt;
    padding: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
.magnetic-pointer-original div:nth-child(1) {top:0;left:0;border-top:2px solid;border-left:2px solid;}&lt;br /&gt;
.magnetic-pointer-original div:nth-child(2) {top:0;right:0;border-top:2px solid;border-right:2px solid;}&lt;br /&gt;
.magnetic-pointer-original div:nth-child(3) {bottom:0;left:0;border-bottom:2px solid;border-left:2px solid;}&lt;br /&gt;
.magnetic-pointer-original div:nth-child(4) {bottom:0;right:0;border-bottom:2px solid;border-right:2px solid;}&lt;br /&gt;
&lt;br /&gt;
/* 锁定Citizen皮肤所有按钮为磁吸目标 */&lt;br /&gt;
.citizen-button,&lt;br /&gt;
.citizen-ui-button,&lt;br /&gt;
.citizen-nav-item a,&lt;br /&gt;
.citizen-menu-item a,&lt;br /&gt;
#citizen-header a,&lt;br /&gt;
#citizen-sidebar a,&lt;br /&gt;
.vector-tabs a,&lt;br /&gt;
.mw-editsection,&lt;br /&gt;
a.citizen-link-button {&lt;br /&gt;
    position: relative !important;&lt;br /&gt;
}&lt;br /&gt;
            `;&lt;br /&gt;
            document.head.appendChild(style);&lt;br /&gt;
&lt;br /&gt;
            let currentTarget = null;&lt;br /&gt;
            let currentX = 0, currentY = 0;&lt;br /&gt;
&lt;br /&gt;
            // 磁吸跟随逻辑&lt;br /&gt;
            const onMouseMove = function(e) {&lt;br /&gt;
                let x = e.clientX;&lt;br /&gt;
                let y = e.clientY;&lt;br /&gt;
                if (currentTarget) {&lt;br /&gt;
                    const rect = currentTarget.getBoundingClientRect();&lt;br /&gt;
                    const centerX = rect.left + rect.width / 2;&lt;br /&gt;
                    const centerY = rect.top + rect.height / 2;&lt;br /&gt;
                    x = centerX + (x - centerX) * 0.12; // 微调吸附顺滑度&lt;br /&gt;
                    y = centerY + (y - centerY) * 0.12;&lt;br /&gt;
                }&lt;br /&gt;
                currentX = x;&lt;br /&gt;
                currentY = y;&lt;br /&gt;
                pointer.style.transform = `translate(${currentX}px, ${currentY}px)`;&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            const onMouseEnter = function(e) {&lt;br /&gt;
                currentTarget = e.currentTarget;&lt;br /&gt;
                const rect = currentTarget.getBoundingClientRect();&lt;br /&gt;
                // 贴合Citizen按钮间距，放大留白更自然&lt;br /&gt;
                const gap = window.innerWidth / 60;&lt;br /&gt;
                pointer.style.setProperty(&#039;--width&#039;, rect.width + gap + &#039;px&#039;);&lt;br /&gt;
                pointer.style.setProperty(&#039;--height&#039;, rect.height + gap + &#039;px&#039;);&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            const onMouseLeave = function() {&lt;br /&gt;
                currentTarget = null;&lt;br /&gt;
                pointer.style.setProperty(&#039;--width&#039;, &#039;4rem&#039;);&lt;br /&gt;
                pointer.style.setProperty(&#039;--height&#039;, &#039;4rem&#039;);&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            // 自动绑定：Citizen全系列按钮 + 原有自定义_target&lt;br /&gt;
            const bindCitizenButtons = function() {&lt;br /&gt;
                const selector = `&lt;br /&gt;
                    .citizen-button:not([data-bound]),&lt;br /&gt;
                    .citizen-ui-button:not([data-bound]),&lt;br /&gt;
                    .citizen-nav-item a:not([data-bound]),&lt;br /&gt;
                    .citizen-menu-item a:not([data-bound]),&lt;br /&gt;
                    #citizen-header a:not([data-bound]),&lt;br /&gt;
                    #citizen-sidebar a:not([data-bound]),&lt;br /&gt;
                    .mw-editsection:not([data-bound]),&lt;br /&gt;
                    a.citizen-link-button:not([data-bound]),&lt;br /&gt;
                    ._target:not([data-bound])&lt;br /&gt;
                `;&lt;br /&gt;
                document.querySelectorAll(selector).forEach(el =&amp;gt; {&lt;br /&gt;
                    el.dataset.bound = &amp;quot;1&amp;quot;;&lt;br /&gt;
                    el.addEventListener(&#039;mouseenter&#039;, onMouseEnter);&lt;br /&gt;
                    el.addEventListener(&#039;mouseleave&#039;, onMouseLeave);&lt;br /&gt;
                });&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            // 全局鼠标监听&lt;br /&gt;
            window.addEventListener(&#039;mousemove&#039;, onMouseMove);&lt;br /&gt;
&lt;br /&gt;
            // 初始绑定&lt;br /&gt;
            bindCitizenButtons();&lt;br /&gt;
&lt;br /&gt;
            // 监听动态加载（侧边栏折叠/展开、AJAX页面、弹窗）&lt;br /&gt;
            const observer = new MutationObserver(() =&amp;gt; bindCitizenButtons());&lt;br /&gt;
            observer.observe(document.body, { childList: true, subtree: true, attributes: true });&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=MediaWiki:Common.js&amp;diff=326</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=MediaWiki:Common.js&amp;diff=326"/>
		<updated>2026-03-31T07:55:22Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */&lt;br /&gt;
&lt;br /&gt;
/* USERNAME */&lt;br /&gt;
$( function() {&lt;br /&gt;
    if ( mw.user.isNamed() ) {&lt;br /&gt;
        $( &#039;.insertusername&#039; ).text( mw.user.getName() );&lt;br /&gt;
    } else {&lt;br /&gt;
        $( &#039;.insertusername&#039; ).text( &#039;访客&#039; );&lt;br /&gt;
    }&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
/* INFOBOX */&lt;br /&gt;
$(&#039;.infobox&#039;).hide();&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    mw.loader.using(&#039;jquery&#039;, function() {&lt;br /&gt;
        $(function() {&lt;br /&gt;
            if (document.querySelector(&#039;.magnetic-pointer-original&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
            const pointer = document.createElement(&#039;div&#039;);&lt;br /&gt;
            pointer.className = &#039;magnetic-pointer-original&#039;;&lt;br /&gt;
            pointer.innerHTML = &#039;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
            document.body.appendChild(pointer);&lt;br /&gt;
&lt;br /&gt;
            const style = document.createElement(&#039;style&#039;);&lt;br /&gt;
            style.textContent = `&lt;br /&gt;
.magnetic-pointer-original {&lt;br /&gt;
    --width: 4rem;&lt;br /&gt;
    --height: 4rem;&lt;br /&gt;
    position: fixed;&lt;br /&gt;
    top: calc(var(--height) / -2);&lt;br /&gt;
    left: calc(var(--width) / -2);&lt;br /&gt;
    width: var(--width);&lt;br /&gt;
    height: var(--height);&lt;br /&gt;
    transition: all 0.2s ease-out;&lt;br /&gt;
    pointer-events: none;&lt;br /&gt;
    z-index: 99999;&lt;br /&gt;
}&lt;br /&gt;
.magnetic-pointer-original div {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    width: 0.8rem;&lt;br /&gt;
    height: 0.8rem;&lt;br /&gt;
    border-color: #17f700;&lt;br /&gt;
    background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
.magnetic-pointer-original div:nth-child(1) {top:0;left:0;border-top:3px solid;border-left:3px solid;}&lt;br /&gt;
.magnetic-pointer-original div:nth-child(2) {top:0;right:0;border-top:3px solid;border-right:3px solid;}&lt;br /&gt;
.magnetic-pointer-original div:nth-child(3) {bottom:0;left:0;border-bottom:3px solid;border-left:3px solid;}&lt;br /&gt;
.magnetic-pointer-original div:nth-child(4) {bottom:0;right:0;border-bottom:3px solid;border-right:3px solid;}&lt;br /&gt;
            `;&lt;br /&gt;
            document.head.appendChild(style);&lt;br /&gt;
&lt;br /&gt;
            let currentTarget = null;&lt;br /&gt;
            let currentX = 0, currentY = 0;&lt;br /&gt;
&lt;br /&gt;
            const onMouseMove = function(e) {&lt;br /&gt;
                let x = e.clientX;&lt;br /&gt;
                let y = e.clientY;&lt;br /&gt;
                if (currentTarget) {&lt;br /&gt;
                    const rect = currentTarget.getBoundingClientRect();&lt;br /&gt;
                    const centerX = rect.left + rect.width / 2;&lt;br /&gt;
                    const centerY = rect.top + rect.height / 2;&lt;br /&gt;
                    x = centerX + (x - centerX) * 0.1;&lt;br /&gt;
                    y = centerY + (y - centerY) * 0.1;&lt;br /&gt;
                }&lt;br /&gt;
                currentX = x;&lt;br /&gt;
                currentY = y;&lt;br /&gt;
                pointer.style.transform = `translate(${currentX}px, ${currentY}px)`;&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            const onMouseEnter = function(e) {&lt;br /&gt;
                currentTarget = e.currentTarget;&lt;br /&gt;
                const rect = currentTarget.getBoundingClientRect();&lt;br /&gt;
                pointer.style.setProperty(&#039;--width&#039;, rect.width + window.innerWidth / 50 + &#039;px&#039;);&lt;br /&gt;
                pointer.style.setProperty(&#039;--height&#039;, rect.height + window.innerWidth / 50 + &#039;px&#039;);&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            const onMouseLeave = function() {&lt;br /&gt;
                currentTarget = null;&lt;br /&gt;
                pointer.style.setProperty(&#039;--width&#039;, &#039;4rem&#039;);&lt;br /&gt;
                pointer.style.setProperty(&#039;--height&#039;, &#039;4rem&#039;);&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            const bindTargets = function() {&lt;br /&gt;
                document.querySelectorAll(&#039;._target&#039;).forEach(el =&amp;gt; {&lt;br /&gt;
                    if (el._magneticBound) return;&lt;br /&gt;
                    el._magneticBound = true;&lt;br /&gt;
                    el.addEventListener(&#039;mouseenter&#039;, onMouseEnter);&lt;br /&gt;
                    el.addEventListener(&#039;mouseleave&#039;, onMouseLeave);&lt;br /&gt;
                });&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            window.addEventListener(&#039;mousemove&#039;, onMouseMove);&lt;br /&gt;
            bindTargets();&lt;br /&gt;
            const observer = new MutationObserver(bindTargets);&lt;br /&gt;
            observer.observe(document.body, { childList: true, subtree: true });&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=MediaWiki:Common.js&amp;diff=325</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=MediaWiki:Common.js&amp;diff=325"/>
		<updated>2026-03-31T07:54:01Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */&lt;br /&gt;
&lt;br /&gt;
/* USERNAME */&lt;br /&gt;
$( function() {&lt;br /&gt;
    if ( mw.user.isNamed() ) {&lt;br /&gt;
        $( &#039;.insertusername&#039; ).text( mw.user.getName() );&lt;br /&gt;
    } else {&lt;br /&gt;
        $( &#039;.insertusername&#039; ).text( &#039;访客&#039; );&lt;br /&gt;
    }&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
/* INFOBOX */&lt;br /&gt;
$(&#039;.infobox&#039;).hide();&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    // 等待 jQuery 加载完成（MediaWiki 自带 jQuery）&lt;br /&gt;
    mw.loader.using(&#039;jquery&#039;, function() {&lt;br /&gt;
        $(function() {&lt;br /&gt;
            // 防止重复创建光标&lt;br /&gt;
            if (document.querySelector(&#039;.magnetic-pointer-original&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
            // 1. 创建光标元素&lt;br /&gt;
            const pointer = document.createElement(&#039;div&#039;);&lt;br /&gt;
            pointer.className = &#039;magnetic-pointer-original&#039;;&lt;br /&gt;
            pointer.innerHTML = &#039;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
            document.body.appendChild(pointer);&lt;br /&gt;
&lt;br /&gt;
            // 2. 注入光标样式&lt;br /&gt;
            const style = document.createElement(&#039;style&#039;);&lt;br /&gt;
            style.textContent = `&lt;br /&gt;
                .magnetic-pointer-original {&lt;br /&gt;
                    --width: 4rem;&lt;br /&gt;
                    --height: 4rem;&lt;br /&gt;
                    position: fixed;&lt;br /&gt;
                    top: calc(var(--height) / -2);&lt;br /&gt;
                    left: calc(var(--width) / -2);&lt;br /&gt;
                    width: var(--width);&lt;br /&gt;
                    height: var(--height);&lt;br /&gt;
                    transition: all 0.2s ease-out;&lt;br /&gt;
                    pointer-events: none;&lt;br /&gt;
                    z-index: 99999;&lt;br /&gt;
                }&lt;br /&gt;
                .magnetic-pointer-original div {&lt;br /&gt;
                    position: absolute;&lt;br /&gt;
                    width: 1rem;&lt;br /&gt;
                    height: 1rem;&lt;br /&gt;
                    border-width: 0.3rem;&lt;br /&gt;
                    border-color: #17f700;&lt;br /&gt;
                }&lt;br /&gt;
                .magnetic-pointer-original div:nth-child(1) { top: 0; left: 0; border-top-style: solid; border-left-style: solid; }&lt;br /&gt;
                .magnetic-pointer-original div:nth-child(2) { top: 0; right: 0; border-top-style: solid; border-right-style: solid; }&lt;br /&gt;
                .magnetic-pointer-original div:nth-child(3) { bottom: 0; left: 0; border-bottom-style: solid; border-left-style: solid; }&lt;br /&gt;
                .magnetic-pointer-original div:nth-child(4) { bottom: 0; right: 0; border-bottom-style: solid; border-right-style: solid; }&lt;br /&gt;
            `;&lt;br /&gt;
            document.head.appendChild(style);&lt;br /&gt;
&lt;br /&gt;
            let currentTarget = null;&lt;br /&gt;
            let currentX = 0, currentY = 0;&lt;br /&gt;
&lt;br /&gt;
            // 鼠标移动：磁性跟随&lt;br /&gt;
            const onMouseMove = function(e) {&lt;br /&gt;
                let x = e.clientX;&lt;br /&gt;
                let y = e.clientY;&lt;br /&gt;
                if (currentTarget) {&lt;br /&gt;
                    const rect = currentTarget.getBoundingClientRect();&lt;br /&gt;
                    const centerX = rect.left + rect.width / 2;&lt;br /&gt;
                    const centerY = rect.top + rect.height / 2;&lt;br /&gt;
                    x = centerX + (x - centerX) * 0.1;&lt;br /&gt;
                    y = centerY + (y - centerY) * 0.1;&lt;br /&gt;
                }&lt;br /&gt;
                currentX = x;&lt;br /&gt;
                currentY = y;&lt;br /&gt;
                pointer.style.transform = `translate(${currentX}px, ${currentY}px)`;&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            // 鼠标进入目标：磁性吸附 + 放大&lt;br /&gt;
            const onMouseEnter = function(e) {&lt;br /&gt;
                currentTarget = e.currentTarget;&lt;br /&gt;
                const rect = currentTarget.getBoundingClientRect();&lt;br /&gt;
                pointer.style.setProperty(&#039;--width&#039;, rect.width + window.innerWidth / 50 + &#039;px&#039;);&lt;br /&gt;
                pointer.style.setProperty(&#039;--height&#039;, rect.height + window.innerWidth / 50 + &#039;px&#039;);&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            // 鼠标离开：恢复原状&lt;br /&gt;
            const onMouseLeave = function() {&lt;br /&gt;
                currentTarget = null;&lt;br /&gt;
                pointer.style.setProperty(&#039;--width&#039;, &#039;4rem&#039;);&lt;br /&gt;
                pointer.style.setProperty(&#039;--height&#039;, &#039;4rem&#039;);&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            // 绑定磁性目标 ._target&lt;br /&gt;
            const bindTargets = function() {&lt;br /&gt;
                document.querySelectorAll(&#039;._target&#039;).forEach(el =&amp;gt; {&lt;br /&gt;
                    if (el._magneticBound) return;&lt;br /&gt;
                    el._magneticBound = true;&lt;br /&gt;
                    el.addEventListener(&#039;mouseenter&#039;, onMouseEnter);&lt;br /&gt;
                    el.addEventListener(&#039;mouseleave&#039;, onMouseLeave);&lt;br /&gt;
                });&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            // 全局监听鼠标移动&lt;br /&gt;
            window.addEventListener(&#039;mousemove&#039;, onMouseMove);&lt;br /&gt;
&lt;br /&gt;
            // 初始绑定&lt;br /&gt;
            bindTargets();&lt;br /&gt;
&lt;br /&gt;
            // 监听页面内容变化（支持动态加载）&lt;br /&gt;
            const observer = new MutationObserver(bindTargets);&lt;br /&gt;
            observer.observe(document.body, { childList: true, subtree: true });&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=MediaWiki:Common.js&amp;diff=324</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=MediaWiki:Common.js&amp;diff=324"/>
		<updated>2026-03-31T07:52:14Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */&lt;br /&gt;
&lt;br /&gt;
/* USERNAME */&lt;br /&gt;
$( function() {&lt;br /&gt;
    if ( mw.user.isNamed() ) {&lt;br /&gt;
        $( &#039;.insertusername&#039; ).text( mw.user.getName() );&lt;br /&gt;
    } else {&lt;br /&gt;
        $( &#039;.insertusername&#039; ).text( &#039;访客&#039; );&lt;br /&gt;
    }&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
/* INFOBOX */&lt;br /&gt;
$(&#039;.infobox&#039;).hide();&lt;br /&gt;
&lt;br /&gt;
(function() {&lt;br /&gt;
    // 等待页面加载完成&lt;br /&gt;
    $(function() {&lt;br /&gt;
        // 如果已经存在光标元素，不再重复创建&lt;br /&gt;
        if (document.querySelector(&#039;.magnetic-pointer-original&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
        // 1. 创建光标容器&lt;br /&gt;
        const pointer = document.createElement(&#039;div&#039;);&lt;br /&gt;
        pointer.className = &#039;magnetic-pointer-original&#039;;&lt;br /&gt;
        pointer.innerHTML = &#039;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
        document.body.appendChild(pointer);&lt;br /&gt;
&lt;br /&gt;
        // 2. 注入样式（完全按照你的原始设计）&lt;br /&gt;
        const style = document.createElement(&#039;style&#039;);&lt;br /&gt;
        style.textContent = `&lt;br /&gt;
            .magnetic-pointer-original {&lt;br /&gt;
                --width: 4rem;&lt;br /&gt;
                --height: 4rem;&lt;br /&gt;
                position: fixed;&lt;br /&gt;
                top: calc(var(--height) / -2);&lt;br /&gt;
                left: calc(var(--width) / -2);&lt;br /&gt;
                width: var(--width);&lt;br /&gt;
                height: var(--height);&lt;br /&gt;
                transition: all 0.2s ease-out;&lt;br /&gt;
                pointer-events: none;&lt;br /&gt;
                z-index: 99999;&lt;br /&gt;
            }&lt;br /&gt;
            .magnetic-pointer-original div {&lt;br /&gt;
                position: absolute;&lt;br /&gt;
                width: 1rem;&lt;br /&gt;
                height: 1rem;&lt;br /&gt;
                border-width: 0.3rem;&lt;br /&gt;
                border-color: #17f700;&lt;br /&gt;
            }&lt;br /&gt;
            .magnetic-pointer-original div:nth-child(1) { top: 0; left: 0; border-top-style: solid; border-left-style: solid; }&lt;br /&gt;
            .magnetic-pointer-original div:nth-child(2) { top: 0; right: 0; border-top-style: solid; border-right-style: solid; }&lt;br /&gt;
            .magnetic-pointer-original div:nth-child(3) { bottom: 0; left: 0; border-bottom-style: solid; border-left-style: solid; }&lt;br /&gt;
            .magnetic-pointer-original div:nth-child(4) { bottom: 0; right: 0; border-bottom-style: solid; border-right-style: solid; }&lt;br /&gt;
        `;&lt;br /&gt;
        document.head.appendChild(style);&lt;br /&gt;
&lt;br /&gt;
        let currentTarget = null;&lt;br /&gt;
        let currentX = 0, currentY = 0;  // 用于跟随的变量&lt;br /&gt;
&lt;br /&gt;
        // 鼠标移动时的磁性计算（完全复制你的逻辑）&lt;br /&gt;
        const onMouseMove = function(e) {&lt;br /&gt;
            let x = e.clientX;&lt;br /&gt;
            let y = e.clientY;&lt;br /&gt;
            if (currentTarget) {&lt;br /&gt;
                const rect = currentTarget.getBoundingClientRect();&lt;br /&gt;
                const centerX = rect.left + rect.width / 2;&lt;br /&gt;
                const centerY = rect.top + rect.height / 2;&lt;br /&gt;
                x = centerX + (x - centerX) * 0.1;&lt;br /&gt;
                y = centerY + (y - centerY) * 0.1;&lt;br /&gt;
            }&lt;br /&gt;
            currentX = x;&lt;br /&gt;
            currentY = y;&lt;br /&gt;
            pointer.style.transform = `translate(${currentX}px, ${currentY}px)`;&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        // 进入目标元素&lt;br /&gt;
        const onMouseEnter = function(e) {&lt;br /&gt;
            currentTarget = e.currentTarget;&lt;br /&gt;
            const rect = currentTarget.getBoundingClientRect();&lt;br /&gt;
            // 这里的 innerWidth/50 对应你原始代码中的内边距效果&lt;br /&gt;
            pointer.style.setProperty(&#039;--width&#039;, rect.width + window.innerWidth / 50 + &#039;px&#039;);&lt;br /&gt;
            pointer.style.setProperty(&#039;--height&#039;, rect.height + window.innerWidth / 50 + &#039;px&#039;);&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        // 离开目标元素&lt;br /&gt;
        const onMouseLeave = function() {&lt;br /&gt;
            currentTarget = null;&lt;br /&gt;
            pointer.style.setProperty(&#039;--width&#039;, &#039;4rem&#039;);&lt;br /&gt;
            pointer.style.setProperty(&#039;--height&#039;, &#039;4rem&#039;);&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        // 绑定所有 ._target 元素的事件（支持动态加载的内容）&lt;br /&gt;
        const bindTargets = function() {&lt;br /&gt;
            document.querySelectorAll(&#039;._target&#039;).forEach(el =&amp;gt; {&lt;br /&gt;
                // 避免重复绑定&lt;br /&gt;
                if (el._magneticBound) return;&lt;br /&gt;
                el._magneticBound = true;&lt;br /&gt;
                el.addEventListener(&#039;mouseenter&#039;, onMouseEnter);&lt;br /&gt;
                el.addEventListener(&#039;mouseleave&#039;, onMouseLeave);&lt;br /&gt;
            });&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        // 监听全局鼠标移动&lt;br /&gt;
        window.addEventListener(&#039;mousemove&#039;, onMouseMove);&lt;br /&gt;
&lt;br /&gt;
        // 初始绑定&lt;br /&gt;
        bindTargets();&lt;br /&gt;
&lt;br /&gt;
        // 监听页面内容变化（例如通过 AJAX 加载的章节）&lt;br /&gt;
        const observer = new MutationObserver(function(mutations) {&lt;br /&gt;
            bindTargets();&lt;br /&gt;
        });&lt;br /&gt;
        observer.observe(document.body, { childList: true, subtree: true });&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=MediaWiki:Common.js&amp;diff=323</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=MediaWiki:Common.js&amp;diff=323"/>
		<updated>2026-03-31T07:50:00Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */&lt;br /&gt;
&lt;br /&gt;
/* USERNAME */&lt;br /&gt;
$( function() {&lt;br /&gt;
    if ( mw.user.isNamed() ) {&lt;br /&gt;
        $( &#039;.insertusername&#039; ).text( mw.user.getName() );&lt;br /&gt;
    } else {&lt;br /&gt;
        $( &#039;.insertusername&#039; ).text( &#039;访客&#039; );&lt;br /&gt;
    }&lt;br /&gt;
} );&lt;br /&gt;
&lt;br /&gt;
/* INFOBOX */&lt;br /&gt;
$(&#039;.infobox&#039;).hide();&lt;br /&gt;
&lt;br /&gt;
// 将下面的代码整体复制到下一步要创建的 .js 页面中&lt;br /&gt;
(function(mw, $) {&lt;br /&gt;
    // 确保页面加载完成后再执行&lt;br /&gt;
    mw.hook(&#039;wikipage.content&#039;).add(function() {&lt;br /&gt;
        // 1. 创建光标的HTML结构&lt;br /&gt;
        if (document.querySelector(&#039;.magnetic-pointer&#039;)) return;&lt;br /&gt;
        const pointerDiv = document.createElement(&#039;div&#039;);&lt;br /&gt;
        pointerDiv.className = &#039;magnetic-pointer&#039;;&lt;br /&gt;
        pointerDiv.innerHTML = &#039;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
        document.body.appendChild(pointerDiv);&lt;br /&gt;
        &lt;br /&gt;
        // 2. 注入光标专属的CSS样式&lt;br /&gt;
        const style = `&lt;br /&gt;
            .magnetic-pointer {&lt;br /&gt;
                --width: 4rem;&lt;br /&gt;
                --height: 4rem;&lt;br /&gt;
                position: fixed;&lt;br /&gt;
                top: calc(var(--height) / -2);&lt;br /&gt;
                left: calc(var(--width) / -2);&lt;br /&gt;
                width: var(--width);&lt;br /&gt;
                height: var(--height);&lt;br /&gt;
                transition: all 0.2s ease-out;&lt;br /&gt;
                pointer-events: none;&lt;br /&gt;
                z-index: 9999;&lt;br /&gt;
            }&lt;br /&gt;
            .magnetic-pointer div {&lt;br /&gt;
                position: absolute;&lt;br /&gt;
                width: 1rem;&lt;br /&gt;
                height: 1rem;&lt;br /&gt;
                border-width: 0.3rem;&lt;br /&gt;
                border-color: #17f700;&lt;br /&gt;
            }&lt;br /&gt;
            .magnetic-pointer div:nth-child(1) { top: 0; left: 0; border-top-style: solid; border-left-style: solid; }&lt;br /&gt;
            .magnetic-pointer div:nth-child(2) { top: 0; right: 0; border-top-style: solid; border-right-style: solid; }&lt;br /&gt;
            .magnetic-pointer div:nth-child(3) { bottom: 0; left: 0; border-bottom-style: solid; border-left-style: solid; }&lt;br /&gt;
            .magnetic-pointer div:nth-child(4) { bottom: 0; right: 0; border-bottom-style: solid; border-right-style: solid; }&lt;br /&gt;
            .mw-target-hover { cursor: pointer; } /* 为可吸附元素增加光标提示 */&lt;br /&gt;
        `;&lt;br /&gt;
        if (!document.getElementById(&#039;magnetic-pointer-styles&#039;)) {&lt;br /&gt;
            const styleSheet = document.createElement(&#039;style&#039;);&lt;br /&gt;
            styleSheet.id = &#039;magnetic-pointer-styles&#039;;&lt;br /&gt;
            styleSheet.textContent = style;&lt;br /&gt;
            document.head.appendChild(styleSheet);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 3. 光标逻辑&lt;br /&gt;
        const pointer = document.querySelector(&#039;.magnetic-pointer&#039;);&lt;br /&gt;
        let currentTarget = null;&lt;br /&gt;
        &lt;br /&gt;
        const move = (e) =&amp;gt; {&lt;br /&gt;
            let x = e.clientX, y = e.clientY;&lt;br /&gt;
            if (currentTarget) {&lt;br /&gt;
                const rect = currentTarget.getBoundingClientRect();&lt;br /&gt;
                const centerX = rect.left + rect.width / 2;&lt;br /&gt;
                const centerY = rect.top + rect.height / 2;&lt;br /&gt;
                x = centerX + (x - centerX) * 0.1;&lt;br /&gt;
                y = centerY + (y - centerY) * 0.1;&lt;br /&gt;
            }&lt;br /&gt;
            if (pointer) pointer.style.transform = `translate(${x}px, ${y}px)`;&lt;br /&gt;
        };&lt;br /&gt;
        &lt;br /&gt;
        const bindTargets = () =&amp;gt; {&lt;br /&gt;
            document.querySelectorAll(&#039;.mw-target-hover&#039;).forEach(el =&amp;gt; {&lt;br /&gt;
                el.removeEventListener(&#039;mouseenter&#039;, onMouseEnter);&lt;br /&gt;
                el.removeEventListener(&#039;mouseleave&#039;, onMouseLeave);&lt;br /&gt;
                el.addEventListener(&#039;mouseenter&#039;, onMouseEnter);&lt;br /&gt;
                el.addEventListener(&#039;mouseleave&#039;, onMouseLeave);&lt;br /&gt;
            });&lt;br /&gt;
        };&lt;br /&gt;
        &lt;br /&gt;
        const onMouseEnter = (e) =&amp;gt; {&lt;br /&gt;
            currentTarget = e.currentTarget;&lt;br /&gt;
            const rect = currentTarget.getBoundingClientRect();&lt;br /&gt;
            if (pointer) {&lt;br /&gt;
                pointer.style.setProperty(&#039;--width&#039;, rect.width + window.innerWidth / 50 + &#039;px&#039;);&lt;br /&gt;
                pointer.style.setProperty(&#039;--height&#039;, rect.height + window.innerWidth / 50 + &#039;px&#039;);&lt;br /&gt;
            }&lt;br /&gt;
        };&lt;br /&gt;
        &lt;br /&gt;
        const onMouseLeave = () =&amp;gt; {&lt;br /&gt;
            currentTarget = null;&lt;br /&gt;
            if (pointer) {&lt;br /&gt;
                pointer.style.setProperty(&#039;--width&#039;, &#039;4rem&#039;);&lt;br /&gt;
                pointer.style.setProperty(&#039;--height&#039;, &#039;4rem&#039;);&lt;br /&gt;
            }&lt;br /&gt;
        };&lt;br /&gt;
        &lt;br /&gt;
        window.addEventListener(&#039;mousemove&#039;, move);&lt;br /&gt;
        // 监听页面内容变化，重新绑定目标元素&lt;br /&gt;
        const observer = new MutationObserver(bindTargets);&lt;br /&gt;
        observer.observe(document.body, { childList: true, subtree: true });&lt;br /&gt;
        bindTargets();&lt;br /&gt;
    });&lt;br /&gt;
})(window.mediaWiki, window.jQuery);&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=%E8%8E%B1%E7%89%B9%E5%AE%81%E6%A3%AE%E8%92%82%E4%BC%8A%E8%8A%99%E5%84%BF&amp;diff=321</id>
		<title>莱特宁森蒂伊芙儿</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=%E8%8E%B1%E7%89%B9%E5%AE%81%E6%A3%AE%E8%92%82%E4%BC%8A%E8%8A%99%E5%84%BF&amp;diff=321"/>
		<updated>2026-03-31T06:14:15Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{角色信息&lt;br /&gt;
|图像=3d15d8b11.png&lt;br /&gt;
|发音=Lightning3Diver&lt;br /&gt;
|出生日期=旧Yun历前37年&lt;br /&gt;
|出生地点=奈希斯帝国胡安王座&lt;br /&gt;
|阵营=旧鹤望兰共和国&lt;br /&gt;
|涉及传说=幽灵蛮神&lt;br /&gt;
|性别=₪&lt;br /&gt;
|身高=165cm&lt;br /&gt;
|发色=赤金&lt;br /&gt;
|眼睛=蓝色&lt;br /&gt;
|服饰=旧鹤望兰仪式服&lt;br /&gt;
|身份=旧鹤望兰士兵&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;莱特宁&#039;&#039;&#039;，&#039;&#039;&#039;旧鹤望兰共和国&#039;&#039;&#039;的士兵，前半生誓死追随&#039;&#039;&#039;KingJuans元帅&#039;&#039;&#039;，屡建战功，参与了处决奈希斯王朝的所有王室成员的行动，在元帅KingJuans远游后也开展了自己的旅途，在穿着仪式服回归故乡时云大陆发生了崩塌，在此情况下她被建筑废墟压住并与鹤望兰大部队失联，好在及时挣脱赶上了船，她用尽全身力气向船跳去，用双手抓住了船底的木条上，最终开始了她前往新世界的漫长旅程。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在船抵达终点后独自踏上了新大陆的土地，亲眼见证或参与了大陆开拓初期的各种野蛮与血腥事件......&lt;br /&gt;
在漂泊数年后，她听闻了一个名为&#039;&#039;&#039;鹤望兰自由人联合体&#039;&#039;&#039;的国度，了解到了新鹤望兰的诞生，至此她与新鹤望兰结成了合作关系，并被称为&#039;&#039;&#039;“共和国最后的战士”&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;角色生平&#039;&#039;&#039;==&lt;br /&gt;
===&#039;&#039;&#039;苦尽甘来两重天，青星情谊可比山&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;黑暗童年&#039;&#039;&#039;====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
旧云历前37年，莱特宁在一张凌乱的稻草席上出生了，没错，这里是&#039;&#039;&#039;胡安王座&#039;&#039;&#039;的一户佃农家庭，家中的条件非常的差，奈希斯王朝天堂般的美景并没有惠及到这样千千万万个隐蔽的角落，相反，正是千万佃农的暗无天日才换取了奈希斯少数几个天堂的欣欣向荣，皇帝说：“人民直接管理领地！”，可是大部分人都没有土地，在格拉斯兰，千百年来亦是如此，失去土地的人民只能被迫成为“直接管辖者”————地主的奴隶，莱特宁的家庭便是如此，她也就在这样的环境中学会了走路，说话......度过了十余载。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
人不断成长，事物也不断运动，奈希斯这样一个田园风光的国家也会出现工业浪潮，尽管庄园早已不是以前自给自足的局面，而是专门生产某一产品（羊毛，木材，食物等）换取货币购买工业品，但是这些产品怎么能竞争得过高效的大生产？工业的发展无时无刻都在挤压着地主的生存空间，为了生存下去，莱特宁所在庄园的地主越来越没有底线......&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
那段时间，莱特宁的父亲患病在身，却又因地主这个活阎王的重重逼债，被迫无奈继续工作，似乎地主根本不知道日夜有更替一般，居然专门让卫兵轮流监管这批带着莱特宁父亲的佃农们，最终身体虚弱的父亲死在了他踩踏了一辈子的土地之上......&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
父亲死了，债谁来还？地主盯上了莱特宁的母亲，可母亲早年落下残疾，在父亲接受了地主的无理指标后，才得以生存下来，在旧云历前28年，年仅九岁的亲眼看着疯狂的地主闯进她的家，只见地主拿着账本，指着父亲生前所欠下了债对着母女俩破口大骂，可是这样写着天文数字的莫须有债款一个壮丁都不可能还清，更何况现在面临这一切的是一个残疾人和一个小孩呢？地主见这般情况，骂骂咧咧的让他的亲卫带走了莱特宁的母亲......妈妈去哪了？她还会回来吗？年幼的莱特宁亲眼看着发生的一切，无能为力。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
等了一天，两天，莱特宁没有等来母亲的问候，却等来了地主粗暴的敲门声，一瞬间莱特宁被吓得心惊肉跳，之后地主便踢开了门，跑进来一把抓起了年幼的莱特宁，怎么办？母亲的消失与父亲的逝世都没能还清地主的债，如今只好让这个还算健康的小毛孩继续还债了，于是莱特宁被押上了农田，踩着他父辈乃至祖辈便开始在此流血出汗的土地，开始了她的童奴生活......&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;凭什么？！&#039;&#039;&#039;====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
就这样在鞭打与逼债中过去了五年，云历前23年1月8日，整个奈希斯王朝肉眼可见的衰落，奈希斯旧有的经济基础正在土崩瓦解，地主早已负担不起卫兵的费用，孤身一人的地主只好自己监管整个庄园的奴隶，地主逼债更狠了，庄园的产品现在根本卖不过工业产品，地主只好大大加强耕作的强度，只为能够微微追上工业生产的效率，以此换得些许生存空间，可是地主要生存，他的佃农又要怎么活？莱特宁早已无法忍受这样的生活，往日数年地主的重重压迫在此刻终于化为了无穷的怒火，只见她在夜深人静之时拿起了他父亲往日使用的铁斧，抄起了火把便朝着地主的卧室走去......&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
莱特宁静悄悄的走到地主窗前，听着肥头大耳的地主像猪一般的酣睡声，往日的千头万绪一下子涌上了她的心头，顿时眼泪止不住的往下掉，哭声和火把的微弱亮光惊醒了地主，莱特宁愣了一下便要举起斧头向下劈去，可奈何地主反应了得一把抓住了她的手，就大骂着要打死她，地主不敢轻易碰火把便一把抢过斧头就要向莱特宁砍去，可到底房间里还是黑灯瞎火，唯一的亮光也不在地主身上，地主肥硕的身体怎会有小孩那样灵活？莱特宁躲过攻击，斧头便劈到了房梁之上，地主也摔倒在地，莱特宁看准时机用火把引燃了地主的衣服，地主这时慌了神，莱特宁便迅速地拿下斧头向地主劈去，顿时鲜血四溅，地主没了气息，莱特宁见事情做完了便把火把丢在地上，抹着不止的眼泪带着万千的思绪拼命的往外跑。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
她无穷的怒火正拼命的燃烧着这吃人的庄园，跑到庄园外面的她躺在草地上看着自己熊熊燃烧的杰作，她第一次感到了安心和宁静......此刻的她才&#039;&#039;&#039;十四岁&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;我做自己的主&#039;&#039;&#039;====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
同年1月23日，格拉斯兰爆发了一场起义，流浪的莱特宁听说起义的人都是和他一个处境的人，她想去看看，可她这辈子也没有去过庄园外的地方，走了五天也没有走出胡安王座，这几天街上也越来越安静，要饭都要不到了，最终她倒在街头上，昏睡了去。正莱特宁沉睡之时，一个人叫醒了她，莱特宁轻轻睁眼一看，是一群穿着奇怪衣服的人，在微弱的路灯下他们帽子上的青星依然耀眼，迷迷糊糊的她就这样被这群人带走了......&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在一股模糊的声音中莱特宁再次睁开了眼睛，声音慢慢变得清晰，这里是一间地下室，转头一看，一个人正在人群里激情的发表誓词，后来她才知道，这个人是&#039;&#039;&#039;革命军的大元帅KingJuans&#039;&#039;&#039;，在他旁边的战士见莱特宁苏醒过来，便将随身携带的面包放到莱特宁手中，饿了许久的莱特宁狼吞虎咽的吃完了面包，又接过了战士的水，大口大口地往里灌，终于她清醒了过来&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;“这是哪里？”&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;“欸，你一小孩怎么大晚上的睡外面啊，你父母呢？”&#039;&#039;战士听到便说。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;“我父母很早就死了......”&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;“怎么死的？”&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;“地主逼死的！我把地主杀了，就跑到外面来了！”&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;“你们是干什么的，把我抓到这里干什么？！”&#039;&#039;见战士无言莱特宁开始反问。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;“这里是革命军的据点，你叫什么名字？”&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;“我叫......莱特宁。”&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
说罢大元帅的誓词便吸引住了莱特宁，大元帅义愤填膺地指控着贵族与地主的罪行，试问哪个受尽苦难的人听到这曙光般的话语能不涌起他万千的思绪？莱特宁的眼眶再一次湿润了起来，战士见状立刻懂得了一切，上去安抚着她，忽然莱特宁不再哭泣，转过身来：&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;“我要和你们走！”&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;“你真的想好了吗？”&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;“我没有什么地方能去了！我不想给地主做事情，也不想再流浪了，收下我吧！”&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
战士听到这些话便不再发出疑问，高兴地坐了下来，听着大元帅的誓词，莱特宁也不再追问。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
此后的几天里，这支队伍带着莱特宁学文化，学红石，学军事，同时莱特宁自己也参与了对纪律，对伙食，对建设的管理，这几天的日子似乎比以往十几年的光阴还要精彩，还要美好，他终于感觉到：我正在做自己的主。&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;起义风雪遍胡安，血海深仇终偿还&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;伟大的胜利&#039;&#039;&#039;====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在旧云历前23年2月2日凌晨，队伍开始秘密集结，准备今晚开始起义，在此刻莱特宁接到了一项艰巨的任务，去摸清胡安王座军火库的情况，因为莱特宁年纪小便于伪装，莱特宁坚定的接过了任务，再次装成了流浪儿童，独自前往了军火库探明情况。风雪的吹打并没有吹倒莱特宁完成任务的决心，很快她就摸到了军火库对门，并迅速转移到了掩体后，她探过头，军火库竟只有两三人看守，并且一人还在呼呼大睡，在摸清更多情报后顺利撤离。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在提供情报后当晚队伍便聚集在了军火库，一名战士的火枪率先杀死了一名守军，其余的两人分分交枪投降，战士们涌入军火库分配武器，莱特宁也分得一把火枪，在将武器全部缴获到人后，一名战士用手炮炸毁了这座空荡荡的军火库，不久又向天空开了一炮，这在告知全胡安王座的人民：暴风雪起义开始了！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
革命军收到指示立即向亲信府进军，随后便于当地的驻军发生冲突，在革命军战备充足意气风发的条件下，这些驻军像秋风扫落叶一般迅速的被剿灭了，这一切都非常的顺利，顺利得让莱特宁都难以置信，没过多久就传来了皇帝亲信坠崖而亡的消息，胡安王座是我们的了，昔日奴隶如今成了翻天覆地的力量，真是令人感慨，随后莱特宁便加入了巩固据点的工作中，她带着火枪和队伍来到一家庄园门口，这里似乎有着浓郁的宗教气息，尽管这样的庄园多了去了，但这一家似乎和以往那些宗教庄园有所不懂，砰砰两声门被敲响，只不过这次敲的人不是地主，而是莱特宁，见里面的地主不开门，莱特宁一脚踹开了门，拿着枪就向着里面的地主走去，一路上看着骨瘦如柴的佃农们，她不经意见加快了脚步，怒火不自觉地涌上心头，在地主进入她视野的一瞬间她立即扣动了扳机，没想到那地主竟躲了过去，顿时浑身散发着蓝色的诡异气息，一眨眼就变成了个怪物并发了疯似的朝莱特宁扑过来，幸亏莱特宁反应及时用火枪堵住了这个怪物的嘴巴，可没过几秒它竟硬生生的咬断了枪杆，重重的咬在了莱特宁的肩膀上，莱特宁以为自己命丧于此，可队伍里的同伴却这样描述当时的场景：那怪物身上的诡异气息竟然从钻入莱特宁的七窍，强大的气场让在场的人没有一个能够上前阻止，最终怪物变回了人形，而那些诡异气息一点不剩的钻进了晕死过去的莱特宁的灵魂之中......&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;诡异的力量&#039;&#039;&#039;====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
不久后莱特宁醒过来，在梦中的窃窃低语并没有随着她走出梦乡而停止缠绕，这股声音似乎来自灵魂的深处，莱特宁不再多想，想要继续参与任务，却被队伍里制止了，说是要她好好养伤，但她觉得自己并没有受伤，甚至还拥有了前所未有的力量，现在也只不过有一个声音一直在她耳边骚扰着她罢了，见队伍坚决反对，她也就作罢，躺在床上继续睡了下去。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
可曾想这一觉就睡了好几天，马上队伍就要向全国进军了，莱特宁赶忙起床跟上了大部队，随着队伍向全国进军了。莱特宁被分到一支先遣小队走在队伍前面，恰好小队没有携带较多的装备，又遭遇了一支精锐的敌人，小队无处可逃只好殊死抵抗，尽管如此战友们还是一个接着一个的倒下，最后只剩下了几个队员被敌人俘虏，而被殴打到将近昏死的莱特宁也在其中，看着死去的战友，有看着生不如死的队员，再一眨眼，莱特宁回到了几个月前的那天，地主在面前熟睡，而她拿着火把与劈斧，这一刻她不再由于，她将满腔的怒火灌注到了斧头之中，全力一击的向地主劈了下去，再一睁眼她回到了刚才的战场上，发现刚才敌军都被拦腰斩断，身边也变得异常平坦，她又拼尽全力的转过头，却看到......一同被拦腰斩断的，幸存的队员们，这是怎么一回事？一阵声音再一次缠绕在了她的脑海之中，这时她才发现自己浑身散发着蓝色的诡异气息，可这时的她早已没了哪怕一丝体力，没来得及思考便昏死了过去。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
再次醒来，莱特宁便已睡在了革命军战地医院的病床上，上次受的伤依旧没有一点好转，想深呼一口气却又咳出了鲜血，耳边的声音不知怎么的比以往任何时候都要嘈杂，医生见莱特宁状态没有好转就过来进行照料，但之间莱特宁气场强盛，身上再次散发出了诡异的气息，脸部出现了一面狰狞的鬼脸，一下子便将医生吓得后退了两步，再一眨眼莱特宁便失去踪影，只留下了帐篷上那个正被幽魂之火燃烧的人形窟窿......&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
被夺舍的莱特宁在荒野上飞速奔跑，饿了就随手杀掉路边的动物生吃了去，路上她闯进了一座奢华的住宅，风驰电掣的她在这时停下来脚步，失了魂地看着肥胖的房主，浑身散发着野兽与杀戮的气息，她模糊的视野马上和那一难忘的夜晚开始交织起来，一抬手，整间房屋便染便血色，满地的碎玻璃和狂风卷起的精致窗帘共同衬托着这一宁静场景。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
莱特宁继续飞速奔跑，可到底她的肉体还是有极限的，她浑身不再散发杀气倒了下来，可又在此刻得到了难得的清醒，一抬头，这里是一个祭坛，它供奉着哪位神明？一晃眼，她看到了自己虚弱的肉体，向其伸手却又无法触及&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;“过来，孩子。”&#039;&#039;忽然有一个声音呼唤着她，&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;“你是谁？”&#039;&#039;莱特宁转过身，只见一个有着壮硕身体的幽灵注视着她&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;“能够作为我的神使，你应该感到幸运。”&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
莱特宁呆住了，她听说过这个东西，它似乎是一位无恶不作的邪神————&#039;&#039;&#039;幽灵蛮神&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;“孩子，成为我的神使吧，我将会赋予你强大的力量”&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;“放我走！”&#039;&#039;在话语脱口的一瞬间莱特宁的灵魂受到了无尽的痛苦&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;“你会是比他更优秀的人选。”&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
原来，莱特宁那一天想要逮捕的地主，是幽灵蛮神的神使，难怪有如此惊人的力量，但他似乎并没有得到莱特宁这样惊人的力量，甚至抵不过一只奇怪的蓝皮生物，可莱特宁最近的表现却十分惊人，由此可见幽灵蛮神对她的青睐，就这一幽灵蛮神将强大的力量注入到了莱特宁的灵魂之中，意图直接操控莱特宁的灵魂，但是莱特宁的坚强的意志战胜了这个邪神的无耻侵蚀，迅速的飞回了肉体之中，挣扎着站了起来，一瘸一拐的跑出了洞穴。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
莱特宁跑到一棵树上摊了下去，尽管蛮神的仪式被打断了，但是蛮神注入的这些力量也足以和暂时操纵莱特宁的灵魂......&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;代价是什么？&#039;&#039;&#039;====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
莱特宁痛苦的醒了过来，她感觉自己的四肢似乎有点不听自己的使唤，但却又能勉强操控它们，她颤颤巍巍的站了起来，发现自己身上的伤无一例外全部愈合了，在身体逐渐平稳下来后她便要赶回革命军的驻地，可在这是又有一段声音在她耳边回响，这次的声音比以往都要清晰，这是&#039;&#039;&#039;幽灵蛮神&#039;&#039;&#039;的话语，不知幽灵蛮神是否有意为之，在此般话语后便不再困扰莱特宁。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在获得了幽灵蛮神的部分力量后，莱特宁明显感到自己的身体素质要远远高于以前，并且一夜从一米四的个头蹿到了一米六五，这般变化实在令人震惊，莱特宁见状便要向革命军驻地跑去，只轻轻用力，莱特宁的速度就堪比昨晚那疯狂的模样。正莱特宁飞速奔跑之时，一颗子弹飞过了她的发梢，随后莱特宁便被一根长的出奇的细线绊倒，莱特宁赶忙爬起来，可刚转身，一杆火枪就已经抵住了莱特宁的头，仔细一看，这些人全是奈希斯的部队，是专门在这里埋伏革命军的，莱特宁当时便慌了神，虽然能感觉到身体素质大大加强，但也摸不清楚现在被抵着的这可怜的头盖骨能不能吃得消了这真枪实弹，那官兵见莱特宁身着革命军的服饰，二话不说就要扣动扳机，莱特宁只好拼上一把，用尽全身气力伸手便要夺过火枪，可没想到这杆火枪竟被直接捏断，那官兵见莱特宁这般怪力顿时便被吓得瘫坐在地，随后立即跑出了莱特宁的视线，正当莱特宁被这股怪力震惊之时，一发手炮已经瞄准好了她自己，仅仅因为这短短的松懈时刻，莱特宁便被炮弹击倒在地，此时幽灵蛮神的声音又开始在她耳边回响&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
“可恨的敌人啊，何不使用我的力量，将他们尽数歼灭？”&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
莱特宁的心声沉默了，她真的很需要更多的力量，但又不知道这背后到底会有什么代价，可此时在敌人的视角里，莱特宁已经扭曲地站了起来，她把手微微举起，一把光矛便凭空出现在她手中，并立即伴随着她狰狞的笑容脱手而出飞向那敌人埋伏所用的隐蔽之处，随着一声巨响那里就被夷为平地，莱特宁回过神来，仅仅因为一丝动摇便被邪神操控了灵魂，等莱特宁回过神来，敌军早已尽数撤退，见此情况她只好继续赶回驻地。&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;建国功成终有竟，邪神缠体未得宁&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;蛮神的诱惑&#039;&#039;&#039;====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
莱特宁赶回了营地，部队见她完全康复便将他重新编入队伍，元帅集结的两个军团就这样开始向奈希斯兰进军了。莱特宁这次被编入了大部队，因为她的身高和身体素质已经达标了，是一名合格的战士，由于帝国的军队都开去格拉斯兰镇压起义了，奈希斯兰这一边的防守意外的薄弱，但还是遭遇了一个军团的阻击，莱特宁率先冲锋，英勇杀敌，最终带领她的小队活捉了一名躲在指挥部里的司令，莱特宁当场就要击毙他，可被队友制止&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;“现在还不能杀掉他”&#039;&#039;队友如是说到&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;“这种走狗不杀掉还留着他干什么？他害死了我们多少人！”&#039;&#039;莱特宁愤怒地说&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;“我们只有从他的嘴里撬出更多东西，才可能让我们少些不必要的牺牲！”&#039;&#039;莱特宁听后便&lt;br /&gt;
&lt;br /&gt;
“”&lt;br /&gt;
[[分类:角色]]&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=CommentStreams:0b72cb4a558923875c8c94ca049856a3&amp;diff=320</id>
		<title>CommentStreams:0b72cb4a558923875c8c94ca049856a3</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=CommentStreams:0b72cb4a558923875c8c94ca049856a3&amp;diff=320"/>
		<updated>2026-03-30T17:37:42Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;为什么没有点赞功能&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=CommentStreams:06e6c5b49aa2eb7784a421b7658d54bc&amp;diff=317</id>
		<title>CommentStreams:06e6c5b49aa2eb7784a421b7658d54bc</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=CommentStreams:06e6c5b49aa2eb7784a421b7658d54bc&amp;diff=317"/>
		<updated>2026-03-30T16:28:24Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;虽然不像灰机那样，但至少能用{{DISPLAYTITLE:&lt;br /&gt;
实装了评论功能&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=MediaWiki:Sidebar&amp;diff=316</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=MediaWiki:Sidebar&amp;diff=316"/>
		<updated>2026-03-30T16:07:56Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** helppage|help-mediawiki&lt;br /&gt;
** specialpages-url|specialpages&lt;br /&gt;
* 末世录&lt;br /&gt;
** 分类:角色|角色&lt;br /&gt;
** 分类:国家|国家&lt;br /&gt;
** 分类:教派|教派&lt;br /&gt;
* 我想嗦牛子&lt;br /&gt;
** 牛子|嗦塞尔达牛子&lt;br /&gt;
** 牛子|嗦萨图恩牛子&lt;br /&gt;
** 牛子|嗦奥利奥头牛子&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=MediaWiki:Sidebar&amp;diff=315</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=MediaWiki:Sidebar&amp;diff=315"/>
		<updated>2026-03-30T16:07:28Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** helppage|help-mediawiki&lt;br /&gt;
** specialpages-url|specialpages&lt;br /&gt;
* 末世录&lt;br /&gt;
** 分类:角色|角色&lt;br /&gt;
** 分类:国家|国家&lt;br /&gt;
** 分类:教派|教派&lt;br /&gt;
* 我想嗦牛子&lt;br /&gt;
** 嗦塞尔达牛子&lt;br /&gt;
** 嗦萨图恩牛子&lt;br /&gt;
** 嗦奥利奥头牛子&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=313</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=313"/>
		<updated>2026-03-30T16:02:35Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[File:末世录LOGO.png|200px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#8B0000; font-size:200%; font-weight:bold; font-family:&#039;SimHei&#039;,&#039;Microsoft YaHei&#039;,sans-serif; text-shadow: 0 0 6px rgba(139,0,0,0.5);&amp;quot;&amp;gt;末·世·录&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=311</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=311"/>
		<updated>2026-03-30T15:31:45Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[File:末世录LOGO.png|200px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#8B0000; font-size:200%; font-weight:bold; font-family:&#039;SimHei&#039;,&#039;Microsoft YaHei&#039;,sans-serif; text-shadow: 0 0 6px rgba(139,0,0,0.5);&amp;quot;&amp;gt;末·世·录&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;comments /&amp;gt;&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=310</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=310"/>
		<updated>2026-03-30T15:30:36Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[File:末世录LOGO.png|200px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#8B0000; font-size:200%; font-weight:bold; font-family:&#039;SimHei&#039;,&#039;Microsoft YaHei&#039;,sans-serif; text-shadow: 0 0 6px rgba(139,0,0,0.5);&amp;quot;&amp;gt;末·世·录&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=309</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=309"/>
		<updated>2026-03-30T15:29:58Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[File:末世录LOGO.png|200px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#8B0000; font-size:200%; font-weight:bold; font-family:&#039;SimHei&#039;,&#039;Microsoft YaHei&#039;,sans-serif; text-shadow: 0 0 6px rgba(139,0,0,0.5);&amp;quot;&amp;gt;末·世·录&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;comments /&amp;gt;&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=308</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=308"/>
		<updated>2026-03-30T15:26:48Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[File:末世录LOGO.png|200px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#8B0000; font-size:200%; font-weight:bold; font-family:&#039;SimHei&#039;,&#039;Microsoft YaHei&#039;,sans-serif; text-shadow: 0 0 6px rgba(139,0,0,0.5);&amp;quot;&amp;gt;末·世·录&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#comments:}}&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=%E7%8E%84%E5%A4%A9&amp;diff=307</id>
		<title>玄天</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=%E7%8E%84%E5%A4%A9&amp;diff=307"/>
		<updated>2026-03-30T15:26:39Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:玄天}}&lt;br /&gt;
{{人物信息&lt;br /&gt;
| 图像	   = OnlyOTO玄天.png&lt;br /&gt;
| 人名       = 玄天&lt;br /&gt;
| 分类       = 人物&lt;br /&gt;
| 图像信息   = 玄天&lt;br /&gt;
| 发音       = OnlyOTO&lt;br /&gt;
| 居住地     = 格拉斯兰&lt;br /&gt;
| 头衔       = 圣礼院 弦枢 教宗&lt;br /&gt;
| 阵营= 鹤望兰自联体 [[幽魂弦教|幽魂弦教]]&lt;br /&gt;
| 种族       = 鲛人&lt;br /&gt;
| 语言       = 云语&lt;br /&gt;
| 涉及传说   = [[幽魂真神|幽魂真神]]&lt;br /&gt;
| 性别       = ₪&lt;br /&gt;
| 身高       = 1.72&lt;br /&gt;
| 服饰       = 幽魂弦音礼服&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{首行缩进start}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;big&amp;gt;玄天&amp;lt;/big&amp;gt;&#039;&#039;&#039;，第九次序[[幽魂弦教]]的弦枢教宗，[https://simmc.fandom.com/zh/wiki/%E6%A0%BC%E6%8B%89%E6%96%AF%E5%85%B0%E5%85%B1%E5%92%8C%E5%9B%BD 前鹤望兰共和国]第三任主席。&lt;br /&gt;
&lt;br /&gt;
在终极混乱发生前，玄天选择了“埋葬”自己，保留剩余的生命力直到最后一刻，事实上当时的大陆很多教主、奥术师以及掌权人都会这么做，只是手段方法各不相同，玄天选择了最适合他的一种————在一片坟墓中安眠。&lt;br /&gt;
&lt;br /&gt;
万灵之弦如蛛网覆盖玄天，生灵的旋律在他耳边萦绕。&lt;br /&gt;
&lt;br /&gt;
「每个人的灵魂都由墨塔莱蒂拨弹」，玄天的目光时常凝聚在这圣言上，他的意识曾为之一滞，“如果我们由神而存在，那神是否已经定死了我们的人生呢？”，“我是我，我非我，我所想的真实真是我所想的吗？”一个谜团解开了，万千个谜团却洗刷着玄天的思维。&lt;br /&gt;
&lt;br /&gt;
自此以后，玄天为了确认自己是否拥有“真正的自由”而做出了很多努力，但一切的方法都无法证明他不被弦所束缚，也没有办法证明他被神所约束，于是现如今，他愿意为追寻最终的“意义”献上一切。&lt;br /&gt;
&lt;br /&gt;
{{首行缩进end}}&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;外貌&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
身着的弦音礼服是一身经典的、带有幽魂弦教特色的装束，按照玄天要求特意定做成黑白配色，尽显其教士身份的高雅气质。&lt;br /&gt;
&lt;br /&gt;
曾经如瀑般的紫发染上了无法洗去的赤红，在阳光的照耀下会显现出类似粉色的流光。&lt;br /&gt;
&lt;br /&gt;
失去应有高光的红色眼瞳多出一丝柔和，其左眼的单片眼镜是占星纪元的产物。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;特质&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;性格&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
ζ 玄天沉默寡言，行为孤僻。&lt;br /&gt;
&lt;br /&gt;
ζ 喜欢站在高处的高山峰顶俯瞰平原，更喜欢抬头仰视闪烁的群星，一言一语里能感受到丝丝悲伤，享受着伤春悲秋的感觉。&lt;br /&gt;
&lt;br /&gt;
ζ 随风而来，随风而去，玄天愿意做一个自由但怀疑自由的人。&lt;br /&gt;
&lt;br /&gt;
ζ 对灵魂的学识研究甚高，高到有些高傲。&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;特性&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
◇ 信奉幽魂之神、弦的源头————[[幽魂真神|墨塔莱蒂]]，一次次的祭祀令神的赐福与信仰力深深烙印在玄天的灵魂上，在后续对幽魂真神祷告获得建立圣所的神启后加深了这一点。&lt;br /&gt;
&lt;br /&gt;
◇ 非公认的众教文书官洞悉历史，记录与执掌过往大多数的祭祀文献，对旧纪元神明均有着一定的了解。&lt;br /&gt;
&lt;br /&gt;
◇ 不通音律何以奉幽魂？不鸣琴弦何以成教宗？幽魂弦教信奉弦之主，幽魂教宗自然精通旋律。&lt;br /&gt;
&lt;br /&gt;
◇ 作为教宗更作为学者，致力于堪破灵魂与弦的终极奥妙————“朝闻道，夕死可矣”。&lt;br /&gt;
&lt;br /&gt;
◇ 没有过多的战斗才情，但在狂笑骷髅入侵时期的重压下拥有了一定的自保能力。&lt;br /&gt;
&lt;br /&gt;
◇较为喜欢非纯种人类智慧生物。&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;弦冥轶事&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;“鱼无法杀死水，树无法杀死土，众生无法脱离死亡。”&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;————[[冥典|《冥典》]]&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{首行缩进start}} &lt;br /&gt;
&lt;br /&gt;
粼粼波光已在海面上闪动百万年，也将继续在下一个百万年里闪烁。这片海没有名字，格拉斯兰的居民们只以海来称呼她，任何的名字都会让海与人的距离疏远。&lt;br /&gt;
&lt;br /&gt;
海是如此的富饶，即便表层的鱼虾经过千艘渔船不眠不休的捕捞，巡猎的海东青依然可以轻易的在一次俯冲后饱腹；海是如此的温和，格拉斯兰城屹立于此已有千年，风浪波涛也不过时而在城墙脚下拍打，如同一位母亲抚摸新生儿的脸颊；海是如此的宽容，默许着生灵从她身上无尽的索取，却从不奢求一丝回报。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;但他畏惧海。&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
他不敢踏上任何一艘远行的船只，仅仅只是在沙滩边上驻足，感受着海浪漫过他的脚背又流淌而下，都会让他颤抖战栗。&lt;br /&gt;
&lt;br /&gt;
他害怕大海，他是异类。在这半座城池都以海为生的地方，他是实实在在的异类。他的导师屡次为此而不知所措，他的同窗，那只明明自己碰不得半滴水的猫族人也以此来嘲笑他。&lt;br /&gt;
&lt;br /&gt;
他对大海保有深入骨髓的恐惧，因为他直面过这片海的真实。她不是渔民世家口口相传的那样温柔，也不是航海家大肆宣扬的那样富足。那只是冰川的表层，更深的秘密埋藏在阴暗的海底：&lt;br /&gt;
&lt;br /&gt;
那是一个很久之前的沉睡季，那一年的沉睡季尤为寒冷，连塔上都覆了一层霜。他随着导师来到海边，映入眼帘的是洁净的蓝。海也沉眠了，海面覆盖坚冰，光滑的像是一面盈镜。隔着厚冰，他望见了镜下的海鱼依然在游动，透过冰层的光束被暗流扭曲，这一切就像是海的梦中呓语。而那拖着紫色长袍的导师早已前往海中心，直到猫人的呼喊传来，他才将好奇的目光从海身上挪开。&lt;br /&gt;
&lt;br /&gt;
他也不知此次考察的目的地在哪，冷风吹的他拉低了学院帽的帽檐，盲目的跟随队列前方同学的脚跟。寒风却忽地骤起，沉睡的大海似乎比醒着的更要可怕，冰晶在空气里凝聚，冰雾分割了这只队伍，他也彻底失去了对方向的感知。同伴脚步的踢踏声变成了可怕的吱呀声，那是坚冰在开裂，风刃似乎在切割海洋的肌肤。压下惊慌与恐惧，遵行着导师临行前的教诲，他头也不回的离开这片布满裂纹的冰面。&lt;br /&gt;
&lt;br /&gt;
但大海不会放过任何一个她想吞噬的人。以此地为原点，在“咔擦”的脆响后，一个直径百米的蛛网笼罩了冰面，接着便是噗通的落水声。他咬紧牙关死死抱住一块浮冰，通红的十指在冰上抠出了十个浅洞，即使是第一次陷入如此境地，他的直觉也告诉他：落水，必死无疑。海还在沉睡，不过她的呼噜就足以带给人们毁灭，波浪拨弄浮冰的重心，无数的冰块都在水面翻滚，没有例外。瞬间他就被甩入海中，只余一声惊叫刺破云霄。&lt;br /&gt;
&lt;br /&gt;
暗流卷席着他以骇人的速度深入海底，扑棱四肢也只是螳臂当车。他试图憋气，但海的压迫让他忍不住咳嗽，咸辛的海水灌满了他的口腔、他的气管和他的肺，头脑顿时昏沉，四肢的摆动也渐渐微弱，却迟迟未失去意识。死神一直注视着他，谁都无法从祂手里夺走灵魂，包括这片海。&lt;br /&gt;
&lt;br /&gt;
他就这么被甩出了暗流，仿佛是一条坠落的鲸，一动不动，沉寂的、孤独的下落————在没有光的深海。唯有眼球还在受神经系统所操纵，窒息让他感到肺部都被撕裂，苦痛满溢全身。在这海的深处，五感给出的反馈可以被统合成一个词：寒冷。不过他适应的异常快，开始思索脱困的办法，却只得在脑内绝望的哀嚎。“虽然死亡并不是什么可怕的事情，但死在这里确也过于憋屈”，他几乎要流出泪来，泪水却早就融入海了。&lt;br /&gt;
&lt;br /&gt;
安静，太安静了，安静的可怕，安静的奇怪。“不，并不奇怪，”他如此想着，“海就像寰宇星空，虚无才是她的主旋律。”，但这片黑暗与未知还是让冷静的他陷入恐慌。触底的那一刻，他已无法思考，任何思维的脉络有所冒头，就会被恐惧掐灭，他颤抖，却不是因为寒冷。&lt;br /&gt;
&lt;br /&gt;
海最终还是放弃了。她放过了这个可怜孩子，在幽邃海底被恐惧折磨了两天一夜的孩子。据说是一只虎鲸将他带到渔船船沿，而渔民在夜间的微弱灯光下看到诡异的长出鱼尾且面色惨白、校服被暗流撕扯成碎布条的他时，宛如面见魔鬼。从此以后，他再也没有踏足过这片海。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;他从未想过再次面对这片海。&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
但他还是被命运驱赶到了这片海的边沿，即使时代早已不再是从前，大陆年轻了万年，海却还是那么古朴，从未异变。&lt;br /&gt;
&lt;br /&gt;
{{首行缩进end}} &lt;br /&gt;
&lt;br /&gt;
[[Category:角色]]&lt;br /&gt;
[[Category:幽魂弦教]]&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=%E7%8E%84%E5%A4%A9&amp;diff=306</id>
		<title>玄天</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=%E7%8E%84%E5%A4%A9&amp;diff=306"/>
		<updated>2026-03-30T15:26:13Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:玄天}}&lt;br /&gt;
{{人物信息&lt;br /&gt;
| 图像	   = OnlyOTO玄天.png&lt;br /&gt;
| 人名       = 玄天&lt;br /&gt;
| 分类       = 人物&lt;br /&gt;
| 图像信息   = 玄天&lt;br /&gt;
| 发音       = OnlyOTO&lt;br /&gt;
| 居住地     = 格拉斯兰&lt;br /&gt;
| 头衔       = 圣礼院 弦枢 教宗&lt;br /&gt;
| 阵营= 鹤望兰自联体 [[幽魂弦教|幽魂弦教]]&lt;br /&gt;
| 种族       = 鲛人&lt;br /&gt;
| 语言       = 云语&lt;br /&gt;
| 涉及传说   = [[幽魂真神|幽魂真神]]&lt;br /&gt;
| 性别       = ₪&lt;br /&gt;
| 身高       = 1.72&lt;br /&gt;
| 服饰       = 幽魂弦音礼服&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{首行缩进start}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;big&amp;gt;玄天&amp;lt;/big&amp;gt;&#039;&#039;&#039;，第九次序[[幽魂弦教]]的弦枢教宗，[https://simmc.fandom.com/zh/wiki/%E6%A0%BC%E6%8B%89%E6%96%AF%E5%85%B0%E5%85%B1%E5%92%8C%E5%9B%BD 前鹤望兰共和国]第三任主席。&lt;br /&gt;
&lt;br /&gt;
在终极混乱发生前，玄天选择了“埋葬”自己，保留剩余的生命力直到最后一刻，事实上当时的大陆很多教主、奥术师以及掌权人都会这么做，只是手段方法各不相同，玄天选择了最适合他的一种————在一片坟墓中安眠。&lt;br /&gt;
&lt;br /&gt;
万灵之弦如蛛网覆盖玄天，生灵的旋律在他耳边萦绕。&lt;br /&gt;
&lt;br /&gt;
「每个人的灵魂都由墨塔莱蒂拨弹」，玄天的目光时常凝聚在这圣言上，他的意识曾为之一滞，“如果我们由神而存在，那神是否已经定死了我们的人生呢？”，“我是我，我非我，我所想的真实真是我所想的吗？”一个谜团解开了，万千个谜团却洗刷着玄天的思维。&lt;br /&gt;
&lt;br /&gt;
自此以后，玄天为了确认自己是否拥有“真正的自由”而做出了很多努力，但一切的方法都无法证明他不被弦所束缚，也没有办法证明他被神所约束，于是现如今，他愿意为追寻最终的“意义”献上一切。&lt;br /&gt;
&lt;br /&gt;
{{首行缩进end}}&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;外貌&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
身着的弦音礼服是一身经典的、带有幽魂弦教特色的装束，按照玄天要求特意定做成黑白配色，尽显其教士身份的高雅气质。&lt;br /&gt;
&lt;br /&gt;
曾经如瀑般的紫发染上了无法洗去的赤红，在阳光的照耀下会显现出类似粉色的流光。&lt;br /&gt;
&lt;br /&gt;
失去应有高光的红色眼瞳多出一丝柔和，其左眼的单片眼镜是占星纪元的产物。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;特质&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;性格&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
ζ 玄天沉默寡言，行为孤僻。&lt;br /&gt;
&lt;br /&gt;
ζ 喜欢站在高处的高山峰顶俯瞰平原，更喜欢抬头仰视闪烁的群星，一言一语里能感受到丝丝悲伤，享受着伤春悲秋的感觉。&lt;br /&gt;
&lt;br /&gt;
ζ 随风而来，随风而去，玄天愿意做一个自由但怀疑自由的人。&lt;br /&gt;
&lt;br /&gt;
ζ 对灵魂的学识研究甚高，高到有些高傲。&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;特性&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
◇ 信奉幽魂之神、弦的源头————[[幽魂真神|墨塔莱蒂]]，一次次的祭祀令神的赐福与信仰力深深烙印在玄天的灵魂上，在后续对幽魂真神祷告获得建立圣所的神启后加深了这一点。&lt;br /&gt;
&lt;br /&gt;
◇ 非公认的众教文书官洞悉历史，记录与执掌过往大多数的祭祀文献，对旧纪元神明均有着一定的了解。&lt;br /&gt;
&lt;br /&gt;
◇ 不通音律何以奉幽魂？不鸣琴弦何以成教宗？幽魂弦教信奉弦之主，幽魂教宗自然精通旋律。&lt;br /&gt;
&lt;br /&gt;
◇ 作为教宗更作为学者，致力于堪破灵魂与弦的终极奥妙————“朝闻道，夕死可矣”。&lt;br /&gt;
&lt;br /&gt;
◇ 没有过多的战斗才情，但在狂笑骷髅入侵时期的重压下拥有了一定的自保能力。&lt;br /&gt;
&lt;br /&gt;
◇较为喜欢非纯种人类智慧生物。&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;弦冥轶事&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&#039;&#039;“鱼无法杀死水，树无法杀死土，众生无法脱离死亡。”&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;————[[冥典|《冥典》]]&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{首行缩进start}} &lt;br /&gt;
&lt;br /&gt;
粼粼波光已在海面上闪动百万年，也将继续在下一个百万年里闪烁。这片海没有名字，格拉斯兰的居民们只以海来称呼她，任何的名字都会让海与人的距离疏远。&lt;br /&gt;
&lt;br /&gt;
海是如此的富饶，即便表层的鱼虾经过千艘渔船不眠不休的捕捞，巡猎的海东青依然可以轻易的在一次俯冲后饱腹；海是如此的温和，格拉斯兰城屹立于此已有千年，风浪波涛也不过时而在城墙脚下拍打，如同一位母亲抚摸新生儿的脸颊；海是如此的宽容，默许着生灵从她身上无尽的索取，却从不奢求一丝回报。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;但他畏惧海。&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
他不敢踏上任何一艘远行的船只，仅仅只是在沙滩边上驻足，感受着海浪漫过他的脚背又流淌而下，都会让他颤抖战栗。&lt;br /&gt;
&lt;br /&gt;
他害怕大海，他是异类。在这半座城池都以海为生的地方，他是实实在在的异类。他的导师屡次为此而不知所措，他的同窗，那只明明自己碰不得半滴水的猫族人也以此来嘲笑他。&lt;br /&gt;
&lt;br /&gt;
他对大海保有深入骨髓的恐惧，因为他直面过这片海的真实。她不是渔民世家口口相传的那样温柔，也不是航海家大肆宣扬的那样富足。那只是冰川的表层，更深的秘密埋藏在阴暗的海底：&lt;br /&gt;
&lt;br /&gt;
那是一个很久之前的沉睡季，那一年的沉睡季尤为寒冷，连塔上都覆了一层霜。他随着导师来到海边，映入眼帘的是洁净的蓝。海也沉眠了，海面覆盖坚冰，光滑的像是一面盈镜。隔着厚冰，他望见了镜下的海鱼依然在游动，透过冰层的光束被暗流扭曲，这一切就像是海的梦中呓语。而那拖着紫色长袍的导师早已前往海中心，直到猫人的呼喊传来，他才将好奇的目光从海身上挪开。&lt;br /&gt;
&lt;br /&gt;
他也不知此次考察的目的地在哪，冷风吹的他拉低了学院帽的帽檐，盲目的跟随队列前方同学的脚跟。寒风却忽地骤起，沉睡的大海似乎比醒着的更要可怕，冰晶在空气里凝聚，冰雾分割了这只队伍，他也彻底失去了对方向的感知。同伴脚步的踢踏声变成了可怕的吱呀声，那是坚冰在开裂，风刃似乎在切割海洋的肌肤。压下惊慌与恐惧，遵行着导师临行前的教诲，他头也不回的离开这片布满裂纹的冰面。&lt;br /&gt;
&lt;br /&gt;
但大海不会放过任何一个她想吞噬的人。以此地为原点，在“咔擦”的脆响后，一个直径百米的蛛网笼罩了冰面，接着便是噗通的落水声。他咬紧牙关死死抱住一块浮冰，通红的十指在冰上抠出了十个浅洞，即使是第一次陷入如此境地，他的直觉也告诉他：落水，必死无疑。海还在沉睡，不过她的呼噜就足以带给人们毁灭，波浪拨弄浮冰的重心，无数的冰块都在水面翻滚，没有例外。瞬间他就被甩入海中，只余一声惊叫刺破云霄。&lt;br /&gt;
&lt;br /&gt;
暗流卷席着他以骇人的速度深入海底，扑棱四肢也只是螳臂当车。他试图憋气，但海的压迫让他忍不住咳嗽，咸辛的海水灌满了他的口腔、他的气管和他的肺，头脑顿时昏沉，四肢的摆动也渐渐微弱，却迟迟未失去意识。死神一直注视着他，谁都无法从祂手里夺走灵魂，包括这片海。&lt;br /&gt;
&lt;br /&gt;
他就这么被甩出了暗流，仿佛是一条坠落的鲸，一动不动，沉寂的、孤独的下落————在没有光的深海。唯有眼球还在受神经系统所操纵，窒息让他感到肺部都被撕裂，苦痛满溢全身。在这海的深处，五感给出的反馈可以被统合成一个词：寒冷。不过他适应的异常快，开始思索脱困的办法，却只得在脑内绝望的哀嚎。“虽然死亡并不是什么可怕的事情，但死在这里确也过于憋屈”，他几乎要流出泪来，泪水却早就融入海了。&lt;br /&gt;
&lt;br /&gt;
安静，太安静了，安静的可怕，安静的奇怪。“不，并不奇怪，”他如此想着，“海就像寰宇星空，虚无才是她的主旋律。”，但这片黑暗与未知还是让冷静的他陷入恐慌。触底的那一刻，他已无法思考，任何思维的脉络有所冒头，就会被恐惧掐灭，他颤抖，却不是因为寒冷。&lt;br /&gt;
&lt;br /&gt;
海最终还是放弃了。她放过了这个可怜孩子，在幽邃海底被恐惧折磨了两天一夜的孩子。据说是一只虎鲸将他带到渔船船沿，而渔民在夜间的微弱灯光下看到诡异的长出鱼尾且面色惨白、校服被暗流撕扯成碎布条的他时，宛如面见魔鬼。从此以后，他再也没有踏足过这片海。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;他从未想过再次面对这片海。&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
但他还是被命运驱赶到了这片海的边沿，即使时代早已不再是从前，大陆年轻了万年，海却还是那么古朴，从未异变。&lt;br /&gt;
&lt;br /&gt;
{{首行缩进end}} {{#comments:}}&lt;br /&gt;
&lt;br /&gt;
[[Category:角色]]&lt;br /&gt;
[[Category:幽魂弦教]]&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=305</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=305"/>
		<updated>2026-03-30T15:25:47Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[File:末世录LOGO.png|200px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#8B0000; font-size:200%; font-weight:bold; font-family:&#039;SimHei&#039;,&#039;Microsoft YaHei&#039;,sans-serif; text-shadow: 0 0 6px rgba(139,0,0,0.5);&amp;quot;&amp;gt;末·世·录&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=304</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=304"/>
		<updated>2026-03-30T15:25:40Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[File:末世录LOGO.png|200px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#8B0000; font-size:200%; font-weight:bold; font-family:&#039;SimHei&#039;,&#039;Microsoft YaHei&#039;,sans-serif; text-shadow: 0 0 6px rgba(139,0,0,0.5);&amp;quot;&amp;gt;末·世·录&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#comments:}}&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=303</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=303"/>
		<updated>2026-03-30T15:25:15Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[File:末世录LOGO.png|200px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#8B0000; font-size:200%; font-weight:bold; font-family:&#039;SimHei&#039;,&#039;Microsoft YaHei&#039;,sans-serif; text-shadow: 0 0 6px rgba(139,0,0,0.5);&amp;quot;&amp;gt;末·世·录&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{#comments:}&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=302</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=302"/>
		<updated>2026-03-30T15:24:45Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[File:末世录LOGO.png|200px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#8B0000; font-size:200%; font-weight:bold; font-family:&#039;SimHei&#039;,&#039;Microsoft YaHei&#039;,sans-serif; text-shadow: 0 0 6px rgba(139,0,0,0.5);&amp;quot;&amp;gt;末·世·录&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{#comments:}}&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=300</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=300"/>
		<updated>2026-03-30T15:16:22Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[File:末世录LOGO.png|200px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#8B0000; font-size:200%; font-weight:bold; font-family:&#039;SimHei&#039;,&#039;Microsoft YaHei&#039;,sans-serif; text-shadow: 0 0 6px rgba(139,0,0,0.5);&amp;quot;&amp;gt;末·世·录&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=299</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=299"/>
		<updated>2026-03-30T15:15:51Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[File:末世录LOGO.png|200px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#8B0000; font-size:200%; font-weight:bold; font-family:&#039;SimHei&#039;,&#039;Microsoft YaHei&#039;,sans-serif; text-shadow: 0 0 6px rgba(139,0,0,0.5);&amp;quot;&amp;gt;末·世·录&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#comments:}}&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=295</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=295"/>
		<updated>2026-03-30T14:57:43Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[File:末世录LOGO.png|200px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#8B0000; font-size:200%; font-weight:bold; font-family:&#039;SimHei&#039;,&#039;Microsoft YaHei&#039;,sans-serif; text-shadow: 0 0 6px rgba(139,0,0,0.5);&amp;quot;&amp;gt;末·世·录&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=294</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=294"/>
		<updated>2026-03-30T14:57:28Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[File:末世录LOGO.png|200px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#8B0000; font-size:200%; font-weight:bold; font-family:&#039;SimHei&#039;,&#039;Microsoft YaHei&#039;,sans-serif; text-shadow: 0 0 6px rgba(139,0,0,0.5);&amp;quot;&amp;gt;末  世  录&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=293</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=293"/>
		<updated>2026-03-30T14:57:23Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[File:末世录LOGO.png|200px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#8B0000; font-size:200%; font-weight:bold; font-family:&#039;SimHei&#039;,&#039;Microsoft YaHei&#039;,sans-serif; text-shadow: 0 0 6px rgba(139,0,0,0.5);&amp;quot;&amp;gt;末世录&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=292</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=292"/>
		<updated>2026-03-30T14:57:12Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[File:末世录LOGO.png|200px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#B8860B; font-size:200%; font-weight:bold; font-family:&#039;SimHei&#039;,&#039;Microsoft YaHei&#039;,sans-serif; text-shadow: 0 0 8px rgba(184,134,11,0.6);&amp;quot;&amp;gt;末世录&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=291</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=291"/>
		<updated>2026-03-30T14:56:52Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[File:末世录LOGO.png|200px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#E0F7FA; font-size:200%; font-weight:bold; font-family:&#039;SimHei&#039;,&#039;Microsoft YaHei&#039;,sans-serif; text-shadow: 0 0 10px rgba(224,247,250,0.7);&amp;quot;&amp;gt;末世录&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
	<entry>
		<id>https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=290</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://www.moshilu.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=290"/>
		<updated>2026-03-30T14:56:39Z</updated>

		<summary type="html">&lt;p&gt;OnlyOTO：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[File:末世录LOGO.png|200px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#5D4037; font-size:200%; font-weight:bold; font-family:&#039;SimHei&#039;,&#039;Microsoft YaHei&#039;,sans-serif;&amp;quot;&amp;gt;末世录&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>OnlyOTO</name></author>
	</entry>
</feed>