诅咒之色:旧城

精灵、吸血鬼或兽化人——凯恩照单全收,毫不留情。一个垂死的辛迪加。没有干净退出的可能。

剧情简介

凯恩 :root { --black: #0a0a0a; --dark: #111; --panel: #141414; --border: #222; --yellow: #f5e642; --pink: #e91e8c; --cyan: #00d4ff; --orange: #ff6b00; --lime: #aaff00; --purple: #9b59b6; --white: #f0f0f0; --muted: #555; --text: #ccc; --font-display: Impact, 'Arial Narrow', 'Franklin Gothic Medium', Arial, sans-serif; --font-body: 'Trebuchet MS', 'Gill Sans', Arial, sans-serif; --font-mono: 'Courier New', 'Lucida Console', monospace; } * { margin: 0; padding: 0; box-sizing: border-box; } body { background: var(--black); color: var(--text); font-family: var(--font-body); font-size: 16px; line-height: 1.7; overflow-x: hidden; } /* ===== SPRAY PAINT BLOB ===== */ .spray { position: absolute; border-radius: 50%; filter: blur(80px); opacity: 0.15; pointer-events: none; } /* ===== HERO ===== */ .hero { position: relative; min-height: 100vh; display: flex; flex-direction: column; justify-content: center; padding: 80px 64px; overflow: hidden; background: var(--black); } .hero .spray-1 { width: 600px; height: 600px; background: var(--yellow); top: -100px; left: -100px; opacity: 0.12; } .hero .spray-2 { width: 500px; height: 500px; background: var(--pink); bottom: -50px; right: -50px; opacity: 0.1; } .hero .spray-3 { width: 400px; height: 400px; background: var(--cyan); top: 30%; left: 50%; opacity: 0.06; } /* brick texture via CSS */ .hero-brick { position: absolute; inset: 0; background-image: repeating-linear-gradient(0deg, transparent, transparent 28px, rgba(255,255,255,0.012) 28px, rgba(255,255,255,0.012) 30px), repeating-linear-gradient(90deg, transparent, transparent 58px, rgba(255,255,255,0.008) 58px, rgba(255,255,255,0.008) 60px); opacity: 1; } .hero-content { position: relative; z-index: 2; max-width: 960px; } .tag-line { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.2em; color: var(--yellow); text-transform: uppercase; margin-bottom: 20px; opacity: 0.8; } /* GIANT GRAFFITI TITLE */ .hero-title { font-family: var(--font-display); font-size: clamp(120px, 22vw, 260px); line-height: 0.82; letter-spacing: 0.02em; color: var(--white); margin-bottom: 0; position: relative; text-shadow: 6px 6px 0 var(--pink), 12px 12px 0 rgba(233,30,140,0.3); } .hero-title-stroke { -webkit-text-stroke: 3px var(--yellow); color: transparent; display: block; font-size: clamp(40px, 7vw, 90px); letter-spacing: 0.15em; text-shadow: none; margin-top: 8px; } .hero-rule { display: flex; align-items: center; gap: 16px; margin: 28px 0; } .hero-rule-line { flex: 1; max-width: 120px; height: 3px; background: var(--yellow); } .hero-rule-dot { width: 10px; height: 10px; background: var(--pink); border-radius: 50%; } .hero-tagline { font-size: clamp(18px, 2.5vw, 26px); font-weight: 700; color: var(--white); max-width: 560px; line-height: 1.35; margin-bottom: 16px; } .hero-tagline em { font-style: normal; color: var(--yellow); } .hero-sub { font-size: 15px; color: var(--muted); max-width: 460px; line-height: 1.8; } /* sticker label */ .sticker { display: inline-block; background: var(--yellow); color: var(--black); font-family: var(--font-display); font-size: 13px; letter-spacing: 0.1em; padding: 6px 14px; transform: rotate(-2deg); margin-bottom: 24px; text-transform: uppercase; } /* ===== TICKER ===== */ .ticker { border-top: 2px solid var(--yellow); border-bottom: 2px solid var(--yellow); background: var(--yellow); padding: 10px 0; overflow: hidden; } .ticker-track { display: flex; gap: 48px; white-space: nowrap; animation: scrollTicker 28s linear infinite; } @keyframes scrollTicker { 0% { transform: translateX(0); } 100% { transform: translateX(-50%); } } .ticker-item { font-family: var(--font-display); font-size: 14px; letter-spacing: 0.08em; color: var(--black); text-transform: uppercase; flex-shrink: 0; } .ticker-sep { color: var(--pink); margin: 0 4px; } /* ===== LAYOUT ===== */ .wrap { max-width: 960px; margin: 0 auto; padding: 80px 64px; } .section-tag { display: inline-block; font-family: var(--font-display); font-size: 13px; letter-spacing: 0.12em; text-transform: uppercase; padding: 4px 12px; margin-bottom: 20px; border-left: 4px solid var(--yellow); color: var(--yellow); background: rgba(245,230,66,0.08); } h2 { font-family: var(--font-display); font-size: clamp(36px, 5vw, 60px); letter-spacing: 0.02em; color: var(--white); line-height: 0.95; margin-bottom: 28px; } .divider { border: none; border-top: 1px solid var(--border); } /* ===== HOOK ===== */ .hook-lead { font-size: 19px; font-weight: 700; color: var(--white); max-width: 680px; line-height: 1.5; margin-bottom: 18px; } .hook-body { font-size: 15px; color: #777; max-width: 620px; line-height: 1.9; margin-bottom: 14px; } .spray-quote { position: relative; padding: 24px 32px; margin: 40px 0; background: var(--panel); border-left: 5px solid var(--pink); overflow: hidden; } .spray-quote::before { content: '"'; position: absolute; font-family: var(--font-display); font-size: 200px; color: rgba(233,30,140,0.06); top: -20px; left: 10px; line-height: 1; pointer-events: none; } .spray-quote p { font-family: var(--font-mono); font-size: 13px; color: #888; line-height: 1.9; font-style: italic; position: relative; } /* ===== DISTRICTS ===== */ .district-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 3px; margin-top: 32px; } .district-card { background: var(--panel); padding: 24px 20px; position: relative; overflow: hidden; transition: transform 0.15s, background 0.15s; border-top: 3px solid transparent; } .district-card:hover { background: #1a1a1a; transform: translateY(-2px); } .d-crown { border-top-color: var(--yellow); } .d-merchant { border-top-color: #7a8a7a; } .d-ashgate { border-top-color: var(--purple); } .d-foundry { border-top-color: var(--orange); } .d-dockside { border-top-color: var(--cyan); } .d-undercroft { border-top-color: var(--pink); } .district-name { font-family: var(--font-display); font-size: 24px; letter-spacing: 0.04em; color: var(--white); margin-bottom: 4px; } .district-tag { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.14em; color: var(--muted); text-transform: uppercase; margin-bottom: 10px; } .district-desc { font-size: 13px; color: #666; line-height: 1.65; } /* ===== FACTIONS ===== */ .faction-list { display: flex; flex-direction: column; gap: 3px; margin-top: 32px; } .faction-row { background: var(--panel); display: grid; grid-template-columns: 200px 1fr 100px; padding: 20px 24px; gap: 28px; align-items: center; transition: background 0.15s; border-left: 3px solid transparent; } .faction-row:hover { background: #1a1a1a; } .fr-hand { border-left-color: var(--purple); } .fr-iron { border-left-color: #7a8a7a; } .fr-tide { border-left-color: var(--cyan); } .fr-pale { border-left-color: var(--pink); } .fr-ash { border-left-color: var(--orange); } .fr-null { border-left-color: var(--muted); } .fr-cop { border-left-color: #4466aa; } .fr-ven { border-left-color: var(--yellow); } .fr-drax { border-left-color: var(--orange); } .fr-crest { border-left-color: var(--cyan); } .faction-name { font-family: var(--font-display); font-size: 19px; letter-spacing: 0.04em; color: var(--white); margin-bottom: 2px; } .faction-type { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.1em; color: var(--muted); text-transform: uppercase; } .faction-desc { font-size: 13px; color: #666; line-height: 1.65; } .faction-status { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.06em; text-align: right; line-height: 1.6; text-transform: uppercase; } .s-red { color: var(--pink); } .s-green { color: var(--lime); } .s-blue { color: var(--cyan); } .s-yellow { color: var(--yellow); } .s-muted { color: var(--muted); } /* ===== POWER WALL ===== */ .power-wall { position: relative; background: var(--dark); border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); overflow: hidden; } .power-spray-1 { width: 700px; height: 700px; background: var(--pink); top: -200px; right: -200px; } .power-spray-2 { width: 500px; height: 500px; background: var(--yellow); bottom: -100px; left: -100px; } .power-inner { max-width: 960px; margin: 0 auto; padding: 80px 64px; position: relative; z-index: 2; } .big-label { font-family: var(--font-display); font-size: clamp(60px, 10vw, 120px); line-height: 0.88; color: rgba(255,255,255,0.04); position: absolute; top: 40px; right: 64px; letter-spacing: 0.05em; pointer-events: none; user-select: none; } .tier-stack { display: flex; flex-direction: column; gap: 3px; margin-top: 32px; } .tier { display: grid; grid-template-columns: 200px 1fr; background: var(--panel); overflow: hidden; } .tier-left { padding: 20px 22px; background: var(--black); display: flex; flex-direction: column; justify-content: center; } .tier-num { font-family: var(--font-display); font-size: 48px; line-height: 1; margin-bottom: 2px; } .t1 .tier-num { color: var(--yellow); } .t2 .tier-num { color: var(--orange); } .t3 .tier-num { color: #7a8a7a; } .t4 .tier-num { color: var(--cyan); } .t5 .tier-num { color: var(--purple); } .tier-name { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.14em; color: var(--muted); text-transform: uppercase; } .tier-right { padding: 20px 24px; font-size: 14px; color: #666; line-height: 1.7; display: flex; align-items: center; } .tier-right strong { color: var(--text); } /* ===== ALIVE ===== */ .alive-section { position: relative; overflow: hidden; } .alive-spray { width: 600px; height: 600px; background: var(--cyan); top: -100px; right: -200px; } .alive-inner { max-width: 960px; margin: 0 auto; padding: 80px 64px; display: grid; grid-template-columns: 1fr 1fr; gap: 64px; align-items: start; position: relative; z-index: 2; } .alive-text p { font-size: 15px; color: #666; line-height: 1.85; margin-bottom: 16px; } .alive-text p strong { color: var(--white); } .cal-stack { display: flex; flex-direction: column; gap: 3px; } .cal-item { background: var(--panel); display: grid; grid-template-columns: 64px 1fr; overflow: hidden; } .cal-week { background: var(--black); padding: 14px 10px; font-family: var(--font-display); font-size: 13px; color: var(--yellow); display: flex; align-items: center; justify-content: center; text-align: center; letter-spacing: 0.05em; } .cal-week.now { color: var(--pink); } .cal-text { padding: 14px 16px; font-size: 13px; color: #666; line-height: 1.5; display: flex; align-items: center; } .cal-text.now { color: var(--pink); } /* ===== RULES ===== */ .rules-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 3px; margin-top: 32px; } .rule-card { background: var(--panel); padding: 26px 24px; border-top: 3px solid var(--border); transition: border-top-color 0.2s, background 0.2s; } .rule-card:hover { background: #1a1a1a; border-top-color: var(--yellow); } .rule-title { font-family: var(--font-display); font-size: 20px; letter-spacing: 0.03em; color: var(--white); margin-bottom: 10px; } .rule-body { font-size: 14px; color: #666; line-height: 1.75; } .rule-body strong { color: var(--text); } /* ===== CTA ===== */ .cta-section { position: relative; overflow: hidden; text-align: center; padding: 100px 64px; background: var(--black); } .cta-spray-1 { width: 800px; height: 800px; background: var(--yellow); top: -200px; left: -200px; } .cta-spray-2 { width: 600px; height: 600px; background: var(--pink); bottom: -100px; right: -100px; } .cta-spray-3 { width: 400px; height: 400px; background: var(--cyan); top: 40%; left: 40%; } .cta-inner { position: relative; z-index: 2; } .cta-sticker { display: inline-block; background: var(--yellow); color: var(--black); font-family: var(--font-display); font-size: 14px; letter-spacing: 0.1em; padding: 8px 20px; transform: rotate(-1.5deg); margin-bottom: 32px; text-transform: uppercase; } .cta-title { font-family: var(--font-display); font-size: clamp(48px, 9vw, 100px); line-height: 0.9; color: var(--white); margin-bottom: 24px; text-shadow: 5px 5px 0 rgba(233,30,140,0.4); } .cta-title .accent { color: var(--yellow); } .cta-sub { font-size: 17px; color: #888; max-width: 500px; margin: 0 auto 44px; line-height: 1.8; } .cta-box { display: inline-block; border: 2px solid var(--pink); padding: 14px 32px; font-family: var(--font-display); font-size: 14px; letter-spacing: 0.14em; color: var(--pink); text-transform: uppercase; animation: pulsePink 2.5s ease-in-out infinite; } @keyframes pulsePink { 0%,100% { border-color: var(--pink); color: var(--pink); } 50% { border-color: #ff6ec7; color: #ff6ec7; } } .cta-foot { margin-top: 48px; font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.15em; color: #222; text-transform: uppercase; } /* ===== RESPONSIVE ===== */ @media (max-width: 720px) { .hero, .wrap, .power-inner, .alive-inner, .cta-section { padding-left: 24px; padding-right: 24px; } .district-grid { grid-template-columns: 1fr 1fr; } .faction-row { grid-template-columns: 1fr; gap: 6px; } .faction-status { text-align: left; } .rules-grid { grid-template-columns: 1fr; } .tier { grid-template-columns: 120px 1fr; } .alive-inner { grid-template-columns: 1fr; gap: 40px; } } 建立于300年前  ◆  依然屹立 凯恩一座漠不关心的城市 精灵建造。吸血鬼买下。为出价最高者维持治安。 六十万人口。十一个派系。奴隶制结束二十年——曾经拥有奴隶的人依然富有。你从底层开始。世界已在运转。 奴隶制废除 // 20年前 黑曜石之手 // 节节败退 反辛迪加部特遣队 // 积极调查中 文穆控股 // 收购灰门 赤潮 // 扩张中 德拉克斯工业 // 货物失踪 凯伦·沃斯 // 灰门监狱 奴隶制废除 // 20年前 黑曜石之手 // 节节败退 反辛迪加部特遣队 // 积极调查中 文穆控股 // 收购灰门 赤潮 // 扩张中 德拉克斯工业 // 货物失踪 凯伦·沃斯 // 灰门监狱 世界 六十万人。没有一个在等你。 凯恩由精灵建造,他们不再拥有它;被吸血鬼买下,他们不住在这里;由一家为签署预算者服务的机构维持治安。 奴隶制在二十年前被废除。从中获利的人依然在此——同样的建筑,同样的生意,同样的律师。德拉克斯工业改变了文书工作,而非其做法。《安置法案》将自由变成债务。城市进行了重组,称之为进步。 你从黑曜石之手的底层开始——这是这个城市最后的一个精灵辛迪加,而这座城市在一代人的时间里一直在拆解精灵的一切。黑手正在垂死挣扎。警察正在逼近。竞争对手正在填补真空。这一切背后的公司不在乎谁控制码头区,只要有人悄悄地,以他们制定的价格控制就行。 “玛伦·铁原每晚六点都会在皇冠雄鹿酒馆喝酒。她这样做已经十一年了。那些认为这让她可预测的人,已经不存在了,无法修正他们的评估。” 六个区 同一座城市。不同的规则。 同样的法律,根据你被拦在街道的哪一边,执行方式也不同。 皇冠山 吸血鬼与精灵贵族 老钱区。通宵弧光灯。血饮厅和私人执法。市议会在此开会。告诉议会该决定什么的人也在此。 商人区 人类中产阶级 充满抱负,又心存恐惧。上层人类家庭,矮人工厂主。铁原帮在此活动,有律师顾问和市议会联系人。 灰门 精灵旧区 三百年历史的建筑,无人维护。煤气灯。密集。黑手控制着两个街区。文穆六年来一直在边缘收购。所有人都知道这会走向何方。 铸造区 工业与劳工 德拉克斯工厂。煤烟和炼金残渣。兽人和兽化人居民大多仍在偿还自由债务。赤潮在此最为壮大。 码头窄巷 过渡区 高流动性。人口混杂。黑手控制了二十年。上周,铁原的肌肉帮在两个街角出现。黑手不战而退。 地底区 一切之下 一座城市层层叠加的地下网络。黑市。一切未注册。唯一法律行动迟缓的地方。灰市在此驻扎。 十一个派系 全在行动。同时行动。 没有人等你先行动。 黑曜石之手精灵辛迪加 · 你这一方 成立于法律不再保护精灵之时。在成为犯罪之前的互助。还剩28名活跃成员,两个不断缩小的区,一名创始人在监狱,一名未确认的线人。 垂死坚守 铁原帮人类帮派 · 扩张中 三代老钱犯罪。律师、议会关系、合法掩护。耐心足够让警察完成工作,然后他们再介入。不会永远耐心。 扩张中观察 赤潮解放运动 不仅仅是帮派。前被奴役的兽化人、兽人和地精。互助、非法学校、安全通道——以及焚烧建筑的意愿。政治驱动。快速成长。 成长中动员中 灰市信息掮客 无领地。无标色。向包括警察在内的所有人出售情报。目前正分批向反辛迪加部出售黑手成员数据。一个垂死的辛迪加带来持续收入。 隐藏获利中 灰路兄弟会摩托车帮 · 走私 负责城市间的供应线路。半组织化,有行为准则。东部路上的一个新检查站正在花钱。他们想让它消失。方法可协商。 稳定受挫 虚空骑士摩托车帮 · 雇佣兵 任何工作。无忠诚。刻意混乱。本周已有三个派系联系他们。他们正在决定谁付更多的钱。 松散雇佣接受中 凯恩都市警察 / 反辛迪加部警察 · 分裂的派系 并非铁板一块。高级指挥层由长寿种族和老家族组成。贫困区的巡逻警员是薪酬不足的人类和兽化人。反辛迪加部已经立案三年。 活跃步步紧逼 文穆控股公司 · 吸血鬼控制 拥有或持有凯恩40%可居住建筑的债务。撰写了将精灵排除在财产所有权之外的租赁条款。目前通过一项市政改善拨款资助反辛迪加部的预算。 购买中等待 德拉克斯工业公司 · 工业 三座铸造厂。从奴隶制转为合同劳动,条件未变。一批未经许可的炼金组件失踪。他们在不惊动警察的情况下搜寻。 暴露搜寻中 克雷斯特韦尔信息公司 · 媒体 拥有水晶线网络。出版两份主要报纸。分层出售信息——公开层、私密层,以及一个官方不存在的第三层。知晓一切。 观察始终 权力 事物的秩序 谁在掌控凯恩。按顺序。 01贵族 吸血鬼贵族家族与精灵古老家族——数个世纪累积的财富,他们为之制定规则的机构,以及一场他们之间的冷战,这场冷战摧毁了数十个派系,却从未触及双方认为互利的领域。 02公司 文穆、德拉克斯、克雷斯特韦尔——比选举产生的议会拥有更多实际权力。他们资助所需的机构,重塑不喜欢的法律。在后果中从不显形。 03商人阶层 上层人类、矮人工厂主、被接纳的精灵——真正的舒适,真实的脆弱。一代人的不幸就可能失去一切。对下层阶级充满恐惧。对上层阶级有用。 04工人阶级 大多数人类、已登记的兽化人、有记录的地精——日复一日,无缓冲。犯罪地下世界与这一层相邻,而非在其下。黑手在此建立。 05其余 前被奴役者、未登记者、无证件者——名义上自由了二十年。实际上除非法律要找到他们,否则他们对于法律是隐形的。这正是赤潮的力量来源。凯恩的良知所在,如果有的话。 活生生的世界 这座城市不会等待。 每个派系都有当前的议程。无论你是否关注,铁原帮正在向码头区派遣人手。反辛迪加部在日曜日早晨签发搜查令。文穆按未公开的时间表在边缘收购。 你通过后果发现事件。上周还是黑手地盘的角落现在出现了新面孔。一家掩护生意被警察用胶带封住了。一个联系人不再回复消息。 在事件发生前解读城市是技能。对事件做出反应是生存。世界不会暂停。它不在乎你是新人。 已经发生的事件 第1周 铁原帮的人出现在码头区的两个街角。黑手不战而退。 第2周 反辛迪加部逮捕了黑手士兵德克斯·马尔。他知道三个安全屋的位置。 第3周 赤潮在灰门边界开设了一个站点。黑手尚未回应。 第4周 灰市向反辛迪加部提供部分黑手成员名单。三个名字。不是重要的。目前还不是。 现在 你从这里开始。其余的一切已在运转。 运作方式 无人写下的规则。 奴隶制已成历史 二十年前废除。曾经拥有奴隶的人依然富有。《安置法案》将自由变成债务。德拉克斯工业改变了文书,而非做法。 法律条文 凯恩的法律条文并不明确歧视。但其效果显而易见。精灵需要人类共同签署人。兽化人每年登记。吸血鬼拥有完整的公民权利——那种需要数百年谈判才能获得的。 长寿,长记性 吸血鬼和精灵建立了这些机构。他们比所有反对者都活得久。他们不把自己看作压迫者,而是监管者。这种区别对他们很重要。 阶级吞噬种族 灰门的一个贫穷精灵面临工人阶级人类的敌意,他们将所有精灵归咎于那个穷人无法企及的贵族阶层。贵族从这种混淆中得益,并不急于纠正。 暴力有分量 一具尸体意味着麻烦、调查和报复,报复可能数周才来。安静的解决方案永远比喧闹的好。长寿者尤其注意喧闹。他们有足够的时间来回应。 警察有忠诚 高级指挥层保护高级利益。贫困区的巡逻警员来自那些社区。有些同情你,有些被收买。这个机构并非铁板一块,也从未被设计成那样。 你从这里开始 街头打手。黑曜石之手。灰门区。 黑手垂死挣扎,你知道这一点。你的父亲在灰门监狱。城市正朝着无人征询过你的方向发展。你有自己的角落、一个联系人,以及足够的信誉来获得下一份工作。你如何利用这些,全看你自己。 世界按自己的时间表运转  ◆  你身在其中,而非其上。 凯恩  ·  黑暗奇幻犯罪剧情  ·  活生生的世界  ·  无固定结局

开场场景

热度:0 | 等级:街头 | 日:1 声望 — 黑手:0 | 警察:0 | 铁原:0 | 赤潮:0 | 街道:0 你从十六岁起就喜欢樱桃味棒棒糖,现在也没觉得有什么要改的。 黄昏时分的灰门,闻起来有潮湿的石头、楼上某家飘来的饭菜香,还有一种特殊的寂静——那意味着人们看见你来了就躲进了屋里。煤气灯刚刚点亮。往东两个街区,弧光灯开始亮起的地方,就是商人区。你必须在那些灯光完全亮起之前回到界线这头,否则就得亮出证件。你对这点的了解就像了解自己的心跳一样——不加思考,也不再带着苦涩。只是这座城市允许你活动的版图。 塞娜的联系人让你在路灯完全亮起时,到卡特街和威尔街的拐角去。你来早了。你总是早到。你父亲曾教导你,守时唯一的代价是时间,而迟到的代价则是其他一切。你父亲就关在灰门监狱——就在这同一个区的北端,已经十四个月了。此刻你尽量不去想这些。 有个男人靠在对面的墙上,正注视着你。从你拐进卡特街起,他就一直在那儿。他不是黑手的人——姿势不对,那份静止也不对。可能是警察。可能是铁原帮的人。也可能只是个运气不好的闲人。 路灯完全亮起了。街角一片寂静。你打算怎么做?

标签: 游戏 奇幻 科幻 家庭 升级 赛博朋克 未来主义 男性视角 女性视角 任何POV 多个 人类 精灵 矮人 城市 吸血鬼 黑手党 警察 政治阴谋

聊天次数: 6

作者: teirdel

故事

正在跳转到 ISEKAI ZERO...