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

Sandbox/2.0:修订间差异

来自夜幕之下
Rin留言 | 贡献
添加邀约故事区:点击卡片后显示对话故事面板 (via update-page on MediaWiki MCP Server)
Rin留言 | 贡献
故事区改为硬填内容,移除内联 style/script (via update-page on MediaWiki MCP Server)
第130行: 第130行:
<ul class="card_content_date-list">
<ul class="card_content_date-list">
<!-- 01|方案A:左上角小方块 + 序号,无图,矮,margin-top偏大 -->
<!-- 01|方案A:左上角小方块 + 序号,无图,矮,margin-top偏大 -->
<li class="card_content_date-item card_content_date-item--style-a" style="margin-top:40px"><div class="card_content_date-body"><span class="card_content_date-num">01</span><span class="card_content_date-label">Story</span></div></li>
<li class="card_content_date-item card_content_date-item--style-a" style="margin-top:40px" data-date-index="0"><div class="card_content_date-body"><span class="card_content_date-num">01</span><span class="card_content_date-label">Story</span></div></li>
<!-- 02|方案B:像素进度条,有图,高,margin-top小 -->
<!-- 02|方案B:像素进度条,有图,高,margin-top小 -->
<li class="card_content_date-item card_content_date-item--style-b card_content_date-item--has-img" style="margin-top:0px"><div class="card_content_date-img">[[file:test卡面.jpg|nolink]]</div><div class="card_content_date-body"><span class="card_content_date-num">02</span><span class="card_content_date-label">Story</span><div class="card_content_date-pixels" aria-hidden="true"><span class="px on"></span><span class="px on"></span><span class="px on"></span><span class="px"></span><span class="px"></span><span class="px"></span><span class="px"></span><span class="px"></span><span class="px"></span><span class="px"></span><span class="px"></span><span class="px"></span><span class="px"></span><span class="px"></span><span class="px"></span></div></div></li>
<li class="card_content_date-item card_content_date-item--style-b card_content_date-item--has-img" style="margin-top:0px" data-date-index="1"><div class="card_content_date-img">[[file:test卡面.jpg|nolink]]</div><div class="card_content_date-body"><span class="card_content_date-num">02</span><span class="card_content_date-label">Story</span><div class="card_content_date-pixels" aria-hidden="true"><span class="px on"></span><span class="px on"></span><span class="px on"></span><span class="px"></span><span class="px"></span><span class="px"></span><span class="px"></span><span class="px"></span><span class="px"></span><span class="px"></span><span class="px"></span><span class="px"></span><span class="px"></span><span class="px"></span><span class="px"></span></div></div></li>
<!-- 03|方案C:两端色块夹文字,无图,矮,margin-top偏大 -->
<!-- 03|方案C:两端色块夹文字,无图,矮,margin-top偏大 -->
<li class="card_content_date-item card_content_date-item--style-c" style="margin-top:55px"><div class="card_content_date-body"><div class="card_content_date-bracket"><span class="bracket-block bracket-block--l"></span><span class="bracket-num">03</span><span class="bracket-label">Story</span><span class="bracket-block bracket-block--r"></span></div></div></li>
<li class="card_content_date-item card_content_date-item--style-c" style="margin-top:55px" data-date-index="2"><div class="card_content_date-body"><div class="card_content_date-bracket"><span class="bracket-block bracket-block--l"></span><span class="bracket-num">03</span><span class="bracket-label">Story</span><span class="bracket-block bracket-block--r"></span></div></div></li>
<!-- 04|方案D:右上角小方块,无图,矮,margin-top中等 -->
<!-- 04|方案D:右上角小方块,无图,矮,margin-top中等 -->
<li class="card_content_date-item card_content_date-item--style-d" style="margin-top:20px"><div class="card_content_date-body"><span class="card_content_date-num">04</span><span class="card_content_date-label">Story</span></div></li>
<li class="card_content_date-item card_content_date-item--style-d" style="margin-top:20px" data-date-index="3"><div class="card_content_date-body"><span class="card_content_date-num">04</span><span class="card_content_date-label">Story</span></div></li>
<!-- 05|方案B:满格进度条END,有图,高,margin-top小 -->
<!-- 05|方案B:满格进度条END,有图,高,margin-top小 -->
<li class="card_content_date-item card_content_date-item--style-b card_content_date-item--has-img card_content_date-item--end" style="margin-top:10px"><div class="card_content_date-img">[[file:banner.jpg|nolink]]</div><div class="card_content_date-body"><span class="card_content_date-num">05</span><span class="card_content_date-label">END</span><div class="card_content_date-pixels" aria-hidden="true"><span class="px on"></span><span class="px on"></span><span class="px on"></span><span class="px on"></span><span class="px on"></span><span class="px on"></span><span class="px on"></span><span class="px on"></span><span class="px on"></span><span class="px on"></span><span class="px on"></span><span class="px on"></span><span class="px on"></span><span class="px on"></span><span class="px on"></span></div></div></li>
<li class="card_content_date-item card_content_date-item--style-b card_content_date-item--has-img card_content_date-item--end" style="margin-top:10px" data-date-index="4"><div class="card_content_date-img">[[file:banner.jpg|nolink]]</div><div class="card_content_date-body"><span class="card_content_date-num">05</span><span class="card_content_date-label">END</span><div class="card_content_date-pixels" aria-hidden="true"><span class="px on"></span><span class="px on"></span><span class="px on"></span><span class="px on"></span><span class="px on"></span><span class="px on"></span><span class="px on"></span><span class="px on"></span><span class="px on"></span><span class="px on"></span><span class="px on"></span><span class="px on"></span><span class="px on"></span><span class="px on"></span><span class="px on"></span></div></div></li>
</ul>
</ul>
</div>
</div>
第144行: 第144行:


<!--2-4-story. 邀约故事区(点击卡片后凭空出现)-->
<!--2-4-story. 邀约故事区(点击卡片后凭空出现)-->
<div class="date_story-panel" id="date-story-panel" aria-live="polite">
<div class="card_date_story" id="date-story-panel" aria-live="polite">
  <div class="date_story-scene" id="date-story-scene"></div>
<div class="card_date_story-scene" id="date-story-scene">待补充</div>
  <div class="date_story-body" id="date-story-body"></div>
<div class="card_date_story-body" id="date-story-body">
 
<!-- ── 01 的故事内容,默认显示(JS会按需切换) ── -->
<div class="card_date_story-content" data-story-index="0">
<div class="card_date_story-narration">夜风从半开的窗缝钻进来,带着一点潮湿的气息。</div>
<div class="card_date_story-dialogue card_date_story-dialogue--left"><div class="card_date_story-avatar"><div class="card_date_story-avatar-placeholder"></div></div><div class="card_date_story-dialogue-content"><span class="card_date_story-charname">幽灵</span><span class="card_date_story-text">「好久不见。」</span></div></div>
<div class="card_date_story-narration">沉默在两人之间蔓延,像溢出杯沿的咖啡。</div>
<div class="card_date_story-dialogue card_date_story-dialogue--right"><div class="card_date_story-dialogue-content"><span class="card_date_story-text">「嗯……好久不见。」</span></div><div class="card_date_story-avatar"><div class="card_date_story-avatar-placeholder"></div></div></div>
<div class="card_date_story-dialogue card_date_story-dialogue--left"><div class="card_date_story-avatar"><div class="card_date_story-avatar-placeholder"></div></div><div class="card_date_story-dialogue-content"><span class="card_date_story-charname">幽灵</span><span class="card_date_story-text">「你还是一个人来吗?」</span></div></div>
<div class="card_date_story-dialogue card_date_story-dialogue--right"><div class="card_date_story-dialogue-content"><span class="card_date_story-text">「……有时候吧。」</span></div><div class="card_date_story-avatar"><div class="card_date_story-avatar-placeholder"></div></div></div>
</div>
</div>


<style>
<!-- ── 02 的故事内容 ── -->
/* ── 故事面板 ── */
<div class="card_date_story-content" data-story-index="1">
.date_story-panel {
<div class="card_date_story-narration">故事内容待补充……</div>
  display: none;
</div>
  margin-top: 28px;
  padding: 36px 28px 40px;
  background: #1a1a1f;
  border-top: 1px solid #2a2a35;
  animation: dateStoryFadeIn 0.45s ease;
}
.date_story-panel.is-visible {
  display: block;
}
@keyframes dateStoryFadeIn {
  from { opacity: 0; transform: translateY(8px); }
  to  { opacity: 1; transform: translateY(0); }
}


/* ── 场景标签 ── */
<!-- ── 03 的故事内容 ── -->
.date_story-scene {
<div class="card_date_story-content" data-story-index="2">
  text-align: center;
<div class="card_date_story-narration">故事内容待补充……</div>
  color: #555;
</div>
  font-size: 11px;
  letter-spacing: 5px;
  padding-bottom: 16px;
  margin-bottom: 28px;
  border-bottom: 1px solid #2a2a35;
  font-family: 'Georgia', 'Noto Serif SC', serif;
}


/* ── 旁白 ── */
<!-- ── 04 的故事内容 ── -->
.date_story-narration {
<div class="card_date_story-content" data-story-index="3">
  text-align: center;
<div class="card_date_story-narration">故事内容待补充……</div>
  color: #6a6570;
</div>
  font-style: italic;
  font-size: 12.5px;
  margin: 24px 40px;
  line-height: 2.1;
  font-family: 'Georgia', 'Noto Serif SC', serif;
}


/* ── 对话行 ── */
<!-- ── 05 的故事内容 ── -->
.date_story-dialogue {
<div class="card_date_story-content" data-story-index="4">
  display: flex;
<div class="card_date_story-narration">故事内容待补充……</div>
  align-items: flex-start;
</div>
  gap: 12px;
  margin: 18px 0;
}
/* 右边(""):整行反向排列,头像在最右 */
.date_story-dialogue--right {
  flex-direction: row-reverse;
}


/* ── 头像区域 ── */
</div>
.date_story-avatar {
</div>
  flex-shrink: 0;
  width: 44px;
  height: 44px;
  /* [[file:xxx.png|44px]] 插入后会生成 <img>,直接继承此尺寸 */
}
.date_story-avatar img {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  object-fit: cover;
  display: block;
}
/* 暂无图片时的占位圆圈 */
.date_story-avatar-placeholder {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: #252530;
  border: 1px solid #35353f;
}
 
/* ── 对话内容列 ── */
.date_story-dialogue-content {
  display: flex;
  flex-direction: column;
  gap: 3px;
  max-width: 65%;
}
.date_story-dialogue--right .date_story-dialogue-content {
  align-items: flex-end;
}
 
/* ── 角色名(仅幽灵显示) ── */
.date_story-charname {
  font-size: 11px;
  letter-spacing: 2px;
  color: #c0392b;
  font-family: 'Georgia', 'Noto Serif SC', serif;
}
 
/* ── 对话正文 ── */
.date_story-text {
  font-size: 14px;
  color: #d4d0c8;
  line-height: 1.95;
  font-family: 'Georgia', 'Noto Serif SC', serif;
}
</style>
 
<script>
(function () {
  /* ── 每张邀约卡对应的故事数据 ──
    avatar_ghost : 幽灵头像,留空时显示占位圆圈
    avatar_me    : "我"的头像,留空时显示占位圆圈
    scene        : 场景文字
    lines        : 对话/旁白列表
      type: 'narration' | 'ghost' | 'me'
      text: 内容
  */
  var stories = [
    {
      /* 01 */
      scene: '夜,咖啡馆',
      avatar_ghost: '', /* 将来替换为文件名,如 'File:幽灵头像.png' */
      avatar_me:    '',
      lines: [
        { type: 'narration', text: '夜风从半开的窗缝钻进来,带着一点潮湿的气息。' },
        { type: 'ghost',    text: '「好久不见。」' },
        { type: 'me',        text: '「嗯……好久不见。」' },
        { type: 'narration', text: '沉默在两人之间蔓延,像溢出杯沿的咖啡。' },
        { type: 'ghost',    text: '「你还是一个人来吗?」' },
        { type: 'me',        text: '「……有时候吧。」' }
      ]
    },
    { scene: '待补充', avatar_ghost: '', avatar_me: '', lines: [{ type: 'narration', text: '故事内容待补充……' }] },
    { scene: '待补充', avatar_ghost: '', avatar_me: '', lines: [{ type: 'narration', text: '故事内容待补充……' }] },
    { scene: '待补充', avatar_ghost: '', avatar_me: '', lines: [{ type: 'narration', text: '故事内容待补充……' }] },
    { scene: '待补充', avatar_ghost: '', avatar_me: '', lines: [{ type: 'narration', text: '故事内容待补充……' }] }
  ];
 
  /* 构建头像 HTML */
  function buildAvatar(fileTitle) {
    if (fileTitle) {
      /* MediaWiki [[File:xxx|44px]] 渲染后是 <a><img></a>,
        这里用 img src 方式暂不可用,实际需 wikitext 渲染。
        此处占位,等 Rin 换成 wikitext [[file:]] 写法后生效。 */
      return '<div class="date_story-avatar"><div class="date_story-avatar-placeholder"></div></div>';
    }
    return '<div class="date_story-avatar"><div class="date_story-avatar-placeholder"></div></div>';
  }
 
  /* 构建整个故事 body HTML */
  function buildStoryHTML(story) {
    var html = '';
    story.lines.forEach(function (line) {
      if (line.type === 'narration') {
        html += '<div class="date_story-narration">' + line.text + '</div>';
      } else if (line.type === 'ghost') {
        html += '<div class="date_story-dialogue date_story-dialogue--left">'
              +  buildAvatar(story.avatar_ghost)
              +  '<div class="date_story-dialogue-content">'
              +    '<span class="date_story-charname">幽灵</span>'
              +    '<span class="date_story-text">' + line.text + '</span>'
              +  '</div>'
              + '</div>';
      } else if (line.type === 'me') {
        html += '<div class="date_story-dialogue date_story-dialogue--right">'
              +  buildAvatar(story.avatar_me)
              +  '<div class="date_story-dialogue-content">'
              +    '<span class="date_story-text">' + line.text + '</span>'
              +  '</div>'
              + '</div>';
      }
    });
    return html;
  }
 
  /* ── 绑定卡片点击 ── */
  var items  = document.querySelectorAll('.card_content_date-item');
  var panel  = document.getElementById('date-story-panel');
  var sceneEl = document.getElementById('date-story-scene');
  var bodyEl  = document.getElementById('date-story-body');
  var current = -1;
 
  items.forEach(function (item, index) {
    item.style.cursor = 'pointer';
    item.addEventListener('click', function () {
 
      /* 再次点击同一张卡:收起 */
      if (current === index) {
        panel.classList.remove('is-visible');
        item.classList.remove('is-active');
        current = -1;
        return;
      }
 
      /* 切换高亮 */
      items.forEach(function (el) { el.classList.remove('is-active'); });
      item.classList.add('is-active');
      current = index;
 
      /* 填充内容 */
      var story = stories[index] || stories[0];
      sceneEl.textContent = story.scene;
      bodyEl.innerHTML    = buildStoryHTML(story);
 
      /* 重新触发淡入动画 */
      panel.classList.remove('is-visible');
      void panel.offsetWidth; /* reflow */
      panel.classList.add('is-visible');
 
      /* 平滑滚动到故事区 */
      panel.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
    });
  });
})();
</script>


</div><!--右栏结束-->
</div><!--右栏结束-->

2026年3月5日 (四) 22:28的版本

特攻
我说这是私欲
复仇童谣 · 幽灵
信息Info
等级 100 Lv. Max
生命
150044
攻击
8655
防御
4875
暴击率
5%
暴击伤害
50%
战斗技能Tactical
复仇的低吟「普通攻击」
使用武器 炸弹
对敌方造成89%1伤害。
2
3
4
5
6
7
8
9
10
1伤害
110%
130%
150%
170%
200%
2持续伤害
附加
延长
强度↑
3攻击次数
额外↑
奇袭战术「被动」
触发条件 每进行15次普攻
单体
持续伤害
对当前目标方向投掷3把匕首,共造成111%1伤害,若目标存在[持续伤害]效果,则本次伤害提升80%2
2
3
4
5
6
7
8
9
10
1触发次数
12次
10次
8次
5次
2伤害提升
+20%
+40%
+60%
3匕首数量
4把
5把
无名的阵列「终结技」
欲火消耗 4
群攻
持续伤害
对扇形范围内敌方造成305%1伤害,若目标存在[持续伤害],则本次伤害提升50%2。每存在一层[持续伤害],追加13%3伤害
2
3
4
5
6
7
8
9
1伤害
320%
335%
350%
370%
2提升
55%
60%
65%
70%
3追加/层
16%
19%
22%
觉醒Feat
  • STAGE

    01
    终结技对存在[持续伤害]的目标,伤害额外提升10%。
    攻击加成提升3.0%「沉默是金Ⅰ」
  • STAGE

    02
    攻击加成提升3.0%「沉默是金Ⅱ」
  • STAGE

    03
    攻击加成提升3.0%「沉默是金Ⅲ」
  • STAGE

    04
    攻击加成提升3.0%「沉默是金Ⅳ」
  • STAGE

    05
    情报适配度提升1级:※2 → ※3
    攻击加成提升3.0%「沉默是金Ⅴ」
小传Story
收起
Lv.20 解锁
复仇童谣/ Story
夜已经深了,静谧的黑暗中,模糊的光微弱地闪烁着。
今年格外寒冷,还不到落雪的时候,霜就已经攀上窗户。
壁炉熊熊燃烧着,身穿洁白睡衣的孩子们围在壁炉边,像一群染上橘色的雪人。幽灵被他们簇拥于中间,面上仍然平淡地维持笑意。
这群新收容的孩子格外闹腾,没有半点面对新环境的不安,几分钟前甚至还吵着让幽灵念睡前故事。
抵不过他们的强烈要求,幽灵叹了口气,打开故事书。
《愿望精灵》是那种普通、平淡,但又能在畅销榜上占据一席的故事。大概讲述了一个出身凄苦的男孩,身边人救助他并将这种救助包装成\"精灵\"实现愿望,而长大后的男孩以同样的方式救助别人。
\"最后,愿望精灵越来越多,大家都过上了幸福快乐的生活……\"
基本上都是幽灵无法理解的内容。
故事果然是故事,全是放现实里行不通的事。说到底,没有利益,怎么可能将人群联系到一起?
这些孩子们却对这个故事充满向往。幽灵看着他们的笑脸,摇摇头。他们和故事里的男孩处境相似,然而现实里哪里有无条件的救助,不过是接纳、笼络、而后利用罢了。
\"爱德华多哥哥,你也有愿望精灵吗?\"
Lv.40 解锁
灰烬与火/ Story
第二段小传正文……
Lv.60 解锁
第三章标题/ Story
第三段小传正文……
Lv.80 解锁
第四章标题/ Story
第四段小传正文……
Lv.100 解锁
终章标题/ Story
第五段小传正文……
邀约Date
待补充
夜风从半开的窗缝钻进来,带着一点潮湿的气息。
幽灵「好久不见。」
沉默在两人之间蔓延,像溢出杯沿的咖啡。
「嗯……好久不见。」
幽灵「你还是一个人来吗?」
「……有时候吧。」
故事内容待补充……
故事内容待补充……
故事内容待补充……
故事内容待补充……

模板:Cardcss