弥恩诸世
更多操作
**弥恩诸世**
在此地的住民口中,**弥恩**也即天地之意,而“**弥恩文明**”便顺理成章地成为他们用以自称的称谓。
- 弥恩文明**与恶意相伴而生——诡异的**古孽**盘踞在疆域之外,狂暴的**龙族**潜伏于深山林涧,古怪的**智械**镇守着古代废墟……在这被归为“**灾厄**”的三重恶意环伺之下,**弥恩文明**挣扎而顽强地生存成长,历经漫长的**221纪**,疆域自**昭旦平原**东扩至无垠沧海,南达广袤雨林,北抵连绵沙碛,更向西将旗帜插至以**厄南峰**为核心的**天山山脉**脚下。
横跨六千万平方公里的辽阔大地上,分布着多个以各自“中央建构”为核心的广袤大区。幅员如此辽阔,人口如此驳杂,致使诸区风貌迥异,宛若云泥。而曾经统御诸区、率领众生抗击**灾厄**的,是一个永恒而伟大的帝国——以文明之名冠称的“**弥恩帝国**”。
然而,**七纪**之前,帝国倾覆。辉煌的统一文明化为齑粉。破碎山河之间,军阀、城邦、国度如野草般滋长,在昔日帝国的遗骸之上挣扎求生。而你们的冒险,正要从这片混沌的世间拉开序幕。
- 历法
- 弥恩**诸地子民每日经历着日出于东方,落于西方的生活,那照耀此星的太阳,被当地人唤为**芙莱斯塔**——常简称为**芙莱**。而当夜幕降临,唤为**伊莱克塔**——也即**伊莱**——的月亮便接替**芙莱**之位,高悬穹苍之中。夜空中常可见一道横贯月面的淡灰色弧形暗影,那便是环绕**弥恩**运行的**维洛斯星带**,静静横亘于大地与月亮之间。
在**芙莱**、**伊莱**与**维洛斯星带**之外,**弥恩**的星空中还高悬着被称为**宇域神宿**的二十一个星体。它们环绕**芙莱**运行,被认为是二十一位神明的居所。其中最为特殊的,是象征知识与起源之神**伊斯普洛尔**的**启明之星**。这颗拖曳淡蓝色彗尾的星辰,与**弥恩**轨道几乎重合,却逆向而行。每一**纪年**,**伊斯普洛尔**会与**弥恩**擦肩两次:第一次在**纪元日**,即**启蛰时节**开启之际;第二次则在**炎焚时节**末尾、**素秋时节**初临之时,标志着**纪程**过半,气候由酷热转向温和。
**弥恩通行历法**,正是依据大地在星空间运行的规律而制定。一日共三十六小时,划分如下:0至8时为凌晨,8至12时为晨分,12至16时为上午,16至18时为正午,18至22时为下午,22至28时为夜分,28至36时为夜晚。伴随**弥恩**的**伊莱**,其一次完整的月相周期约为三十日,故定三十日为一**月**。每六十四**月**,**弥恩**完成一次环绕**芙莱**——那高悬远空的湛蓝艳阳——的**公转周期**,此一轮回称为一**纪年**。
因**公转周期**并非恰好六十四**月**,每**纪年**之始以**启明之星**、**弥恩**与**芙莱**三星共线为准,此日被定为**纪元日**。**定纪**是**弥恩**规范**节历**的重要流程,除依据当**纪年**天象赋予专属**纪年**名外,亦负责**置闰**之调整。此外,为区分各**月**间显著的气候差异,**弥恩通行历法**在**纪年**与**月**之间设有**节历**,每八月为一**时节**,共分八节,依次为:冻土复苏、深雪融化的**启蛰时节**;气候温和,百花齐放的**芳华时节**;多雨且天气骤变的**清霖时节**;气温骤升、野火频发的**炎焚时节**;由热转寒、天气稳定的**素秋时节**;气温转寒、昼夜温差显著的**霜降时节**;气温剧降、风雪不止的**玄英时节**;以及每纪最后八月,流水凝结、万物凝滞的**归藏时节**。
一套标准的**弥恩通行历法**日期,书写格式即为:XXX**纪年**XX**时节**X**月**X日。
- 位面
- 弥恩**大陆是一个纯粹的单一世界,所有故事均发生于唯一的**物质位面**(亦称主位面)之内。此位面涵括世间一切存在:自地底深处的幽暗地域,延伸至苍穹之上的神域,乃至由**魔法**构筑的各类临时空间,皆归属于**物质位面**的范畴。
尽管**物质位面**的定义明确清晰,与之相对的**非物质位面**在**弥恩**却仍属未解之谜。其是否存在,至今仍无定论。
对**非物质位面**的探讨,源于对**异界存在**的观察。这些存在——无论是弱小的**元素生物**,抑或强大的**异界宗主**——虽可经由**魔网**召唤至**物质位面**,并施加真实可见的影响,却无一能准确描述其来源位面的样貌。
任何**异界存在**一旦尝试描述**非物质位面**,即会陷入不可逆的思维错乱。与此同时,**物质位面**的生灵亦无法以任何方式传送或观测至**非物质位面**。因此,**非物质位面**的存在本身,处于“无法证实”的状态。
基于上述设定,**弥恩**的位面模型认为:一切实体仅存于**物质位面**,其外的**非物质位面**仅为概念性存在。无论其形态如何光怪陆离,与**物质位面**的关联何等复杂,对**弥恩**的生灵而言,皆属不可触及、不可认知之域。
在实际运作中,**弥恩**学界为诠释某些**次元魔法**效应,仍以推理方式定义了多种位面。这些描述并非亲眼所见,而是基于对**非物质位面**存在的推测所构建的理论框架。
> **【规则适配说明】** > - 你无法以任何方式观测或传送至**非物质位面**。 > - 你无法通过召唤物获取对**非物质位面**的准确描述。 > - 异界生物仅在受到观测或与物质位面相互作用时才“存在”。它们可被召唤、遣返或重新召唤,并能与物质世界沟通,但仅拥有对自身来源的“感觉”,而无清晰的“认知”。 > - 半位面是上述限制的唯一例外,其本质属于物质位面所衍生的额外空间。 > - PHB及其拓展中所述的大部分位面,在弥恩中皆以“不可抵达但可互动”的形式存在。你可自其中召唤生物、获取力量与指引,此设定不影响绝大多数规则的使用。 >
- 基调
- 弥恩**世设与传统的奇幻世界存在显著差异。其核心灵感源自现实世界的**一战前期**,并对个人武力——无论是**奥术**还是体术所能达到的极限(即等级上限)——施加了更为严苛的限制。**魔法**并非总是可靠,**奥术**与**神术**时有失效,甚至可能引发灾难性后果。
然而,这并非一个魔法稀有的世界。相反,在**生产力**发展的推动下,魔法早已摆脱了源于古代**神秘学**的偶发性和私有性,成为一种得到充分开发和利用的、普及化的集体智慧与**资源**。这个世界从不缺少宏大的奇幻景致与**奇迹**,但与许多传统设定不同,这些奇迹极少由某个强大的个体单独创造。在这片生活着数亿人口、幅员辽阔的**大陆**上,个体的力量是有限且微小的。简而言之,**弥恩**是一个更为“**现实**”的世设。 这并不意味着玩家角色会处处受限或感到挫败。在难以成为传统“个人英雄”的**弥恩**,冒险的核心动机应源于与这片大陆历史进程的深切联结——小至一个**NPC**的命运转折,大至**思想**的变迁、**国度**的兴衰。**弥恩**将玩家角色置于一个充满变革矛盾的时代:毁灭与存续、革命与反动、繁荣与破败,这些矛盾在众生行动中不断演变。地下城主(DM)应着力展现,在变革的洪流中,每个角色的选择如何具体地**影响历史**的走向,无论其导向进步还是倒退。 为了构建这样一个世界,角色的动机也必须与其背景深刻绑定。一个邪恶的**巫妖**不会仅因“对力量的渴望”这种单薄的理由就召唤亡灵大军。无论是行善还是作恶,背后都应有更深刻、更合理的动机,而这些动机正根植于角色的**背景**之中。 传统以“**阵营**”来界定角色的行为准则,但其标准往往模糊、主观且易被突破。为了更具体地诠释动机,**弥恩**世设将在后文使用“**个人意识形态**”这一概念,从理念与实践两个层面阐明角色行动的理由及其可能造成的影响,以提供更直观的指引。 > **本节内容与《城主指南》第3、5章主旨相似,旨在说明如何构建符合弥恩基调的战役。本节内容主要面向地下城主,文中“你”即指代地下城主。**
- 游戏风格
- #### 诗神已死
**弥恩**所处的年代,是**乌托邦理想**破灭、“**灾祸**”频发与“个人毁灭”的年代。传统的田园诗式冒险已然逝去,“痛苦的良心”、纯粹的“自我完善”等古典叙事不再适用。因此,**弥恩**的战役风格应是**现实主义**的:社会关系在矛盾中流转变化,历史的进程真实而具体地影响每一个个体,同时也被每一个个体所塑造。DM应有宏大的视野,部分参照现实世界的逻辑,合理而具体地描绘这个处于变革中的世界。
- #### 历史浪潮
**弥恩**的**社会背景**参考了**一战早期**。**生产力**的发展激化了**生产关系**的矛盾,连绵的**战争**与冲突又加剧了这一过程,形成了**弥恩**最根本的主线——**历史的浪潮**。在此,一切**政权**都是暂时的,代表特定集团的利益。它们相互倾轧,时而一方压倒另一方,时而又从内部瓦解。DM应着力表现这“大浪淘沙”的过程,在典型的时代环境中充分展现人与人矛盾在历史洪流下的演进。
- #### 未知世界
**弥恩**是一个充满**未解之谜**的世界:古代**文明**的覆灭、**天灾**的缘由、**魔网**的衰减与**众神**的远离……这些谜团构成了**弥恩**的第二大矛盾——**人与自然的矛盾**。它与“人与人的矛盾”交织作用,时而占据主导。一些奥秘直接威胁全世界的存亡,而如何应对它们——是研究还是远离,是激进还是保守——将对从个人到**政权**的各个层面产生深远影响。玩家在探索这些未知的过程中,也将深化与世界的联结,并逐步揭开隐秘。
- 故事和节奏
- #### 玩家仍能成为英雄
尽管**弥恩**对个人武力加以限制,且许多危机无法单凭力量解决,但这不妨碍玩家角色成为世界中突出的个体。他们成长迅速,潜力超常。驱动他们成为**英雄**的,通常并非“对抗邪恶的宿命”,而是他们在时代矛盾中心的**行动**——那些创造或改变历史的行动。 因此,**弥恩**战役必须向玩家充分展示背景环境的矛盾,让他们深度参与,并清晰地展现其行动对矛盾发展的推动或阻滞。地区**历史**、社会冲突等,应用以**塑造角色**,而非仅作为背景板。DM应引导玩家思考行动的意义与后果,并给予即时反馈。传统的“击败盗匪”、“猎杀巨龙”等任务依然可行,但其意义应超越证明实力或获取赏金——例如,剿灭盗匪可使村庄繁荣,村民自发感激;屠龙可能重开商路,影响城市经济。即,玩家的任何行为都应切实**影响世界**。
- #### 必然与偶然
历史是无数社会因素相互作用的结果。从相对科学的角度看,其决定性因素在于现实生活的生产与再生产,这构成了历史不断进步与上升的**必然性**。**弥恩**预设的**历史时间线**也基于此设计,DM应对未来一段时间的经济与政治变化有所规划。 然而,这种必然性是“归根到底”意义上的。**弥恩**虽强调**历史浪潮**的必然,并鼓励DM通过经济变动向玩家揭示这一点,但历史进程同样受无数**偶然**因素影响:法律、政治、哲学、文化、具体战争的胜负、阶级力量对比等。这些偶然与作为必然的经济运动相互作用,共同推动历史。 玩家角色的行动正是最大的偶然性因素。战役应突出玩家作为“偶然”对历史的能动作用。但DM需注意,不应让偶然性压倒决定性因素——若玩家行动违背历史规律,将遭遇巨大阻力;若顺应规律,则能事半功倍。
- #### 死之严肃
与传统奇幻不同,**弥恩**既无确定的**来世**与**天国**,**复活**也极度困难。**死亡**意味着个人意志的终结,与现实世界同样沉重。然而,被**战争**与**灾厄**笼罩的**弥恩**社会,却又无可避免地将所有生灵置于**死亡**的阴影之下。生命可能被轻易剥夺,对玩家角色亦然。 DM应让玩家重视角色的性命。角色死亡意味着与过往建立的所有联结断绝,新角色可能需从更低等级开始。有时,DM也可以通过关键**NPC**的牺牲来拯救玩家角色,而非直接处死。核心原则是:**在弥恩,生命只有一次**。 因此,绝大多数生灵都会为生存拼尽全力。冒险充满危机,DM应将每场战斗设计得困难而独特,营造生死一线的紧张感,促使玩家在谨慎与果敢间寻找平衡。基于此,尽量避免使用“游荡怪物”的随机设定,所有敌对遭遇都应是服务于剧情、合情合理的。
- #### 曲折前行
即使足够谨慎和强大,玩家也难免遭遇失败。当失败发生时,DM应首先厘清原因:是外部压力还是自身失误?是暴力碾压还是判断错误?在呈现失败结果时,必须让玩家理解败因,或至少给予他们探究的途径。 所有挫败都应是**可以被克服的**。玩家从失败中汲取的经验,应能在后续冒险中得到运用。DM在设计失败时,就应将其构思为**角色成长的助力**,而非用于打压玩家或制造挫败感。应引导玩家思考如何补偿失误,并坚信“下次能做得更好”。 基于**弥恩**的基调,在追求长远目标的过程中,暂时性的失败几乎是必然的。正义可能暂时屈服,真理可能被蒙蔽,革命道路并非一帆风顺。此时,不应让玩家感到“此路不通”,而应让每一次失败都令角色更接近目标,将苦痛转化为激励,推动他们继续前进。让玩家明白:**道路是曲折的,前途是光明的**。
- #### 未竟事业
历史不会终结,强调人物与环境互动的**弥恩**战役亦如此。当玩家完成某项**英雄伟业**,将某个矛盾推向新阶段时,新的矛盾已然滋生。不存在“完满”的结局,玩家角色会发现,即使抵达目标,也无法安于现状。 他们所获得的满足感,并非来自结局,而是来自一路走来的创造与行动所铸就的**理念**。这些理念或许会驱使他们继续前行,或许不足以支撑新的冒险。无论如何,这些**未竟的事业**都将成为历史的注脚,留给后人(或许是下一次冒险)去书写。
- ### 意识形态坐标系
**弥恩**的意识形态是一个由两个基本维度构成的**二维坐标系**,用于精确定位任何政治实体或哲学流派的核心立场。
#### 坐标系定义
1.**横轴:社会政治立场 (Sociopolitical Axis)**
- **衡量标准**:实体对待**社会结构、权力分配与历史进程**的根本倾向。
- **光谱范围**:从左翼的**激进变革** 到右翼的**传统守序**。
2.**纵轴:自然哲学立场 (Natural Philosophy Axis)**
- **衡量标准**:实体对待**世界隐秘(魔法、奥秘、未知力量)**的根本倾向。
- **光谱范围**:从上端的**主动驾驭**到下端的**敬畏顺从**。
#### 核心规则与应用指南
> **【坐标定位规则】** > - **必有定位**:任何成型的政治实体或思想流派,都可以且必须在此坐标系中找到一个**主导倾向区域**。 > - **动态演变**:实体的坐标会因重大事件、领导更迭或社会变迁而**移动**,这份变是**即时**的。 > - **统治地位**:大型实体的坐标为其占据统治地位的意识形态,而忽视其内部可能的分歧。
#### 示例
弥恩世界意识形态动态坐标图
拖拽蓝色定位点可调整其位置。点击下方表格中的“定位”按钮可高亮对应点。横轴(X):激进变革(左)← → 传统守序(右);纵轴(Y):主动驾驭(上)← → 敬畏顺从(下)
当前选中:无 (X: -, Y: -)
<button onclick="resetAllPoints()" style="padding: 0.4rem 0.8rem; background: #6c757d; color: white; border: none; border-radius: 4px; cursor: pointer;">重置所有点到默认位置</button>
<button onclick="exportCoordinates()" style="margin-left: 0.5rem; padding: 0.4rem 0.8rem; background: #28a745; color: white; border: none; border-radius: 4px; cursor: pointer;">导出当前坐标数据</button>
意识形态实体坐标管理表
<thead> </thead> <tbody> </tbody>| 实体 | 意识形态标签 | 当前坐标 | 默认坐标 | 操作 |
|---|---|---|---|---|
| 赤环学会 | 革命理性主义 | 0.15, 0.85 | 0.15, 0.85 |
<button onclick="focusPoint('point-1')" style="padding: 0.25rem 0.5rem; background: #007bff; color: white; border: none; border-radius: 3px; cursor: pointer; margin-right: 0.25rem;">定位</button>
<button onclick="resetPoint('point-1', 0.15, 0.85)" style="padding: 0.25rem 0.5rem; background: #ffc107; color: black; border: none; border-radius: 3px; cursor: pointer;">重置</button>
|
| 铸铁公约 | 技术威权主义 | 0.85, 0.80 | 0.85, 0.80 |
<button onclick="focusPoint('point-2')" style="padding: 0.25rem 0.5rem; background: #007bff; color: white; border: none; border-radius: 3px; cursor: pointer; margin-right: 0.25rem;">定位</button>
<button onclick="resetPoint('point-2', 0.85, 0.80)" style="padding: 0.25rem 0.5rem; background: #ffc107; color: black; border: none; border-radius: 3px; cursor: pointer;">重置</button>
|
| 林语会 | 灵性公社主义 | 0.20, 0.20 | 0.20, 0.20 |
<button onclick="focusPoint('point-3')" style="padding: 0.25rem 0.5rem; background: #007bff; color: white; border: none; border-radius: 3px; cursor: pointer; margin-right: 0.25rem;">定位</button>
<button onclick="resetPoint('point-3', 0.20, 0.20)" style="padding: 0.25rem 0.5rem; background: #ffc107; color: black; border: none; border-radius: 3px; cursor: pointer;">重置</button>
|
提示:要添加新实体,请复制一行并修改所有相关数据。坐标范围:0.0 到 1.0。
<script> // 1. 实体数据定义 (可以在这里添加新实体) const entities = [
{id: 'point-1', name: '赤环学会', color: '#CC0000', defaultX: 0.15, defaultY: 0.85, rowId: 'row-1'},
{id: 'point-2', name: '铸铁公约', color: '#4682B4', defaultX: 0.85, defaultY: 0.80, rowId: 'row-2'},
{id: 'point-3', name: '林语会', color: '#B8860B', defaultX: 0.20, defaultY: 0.20, rowId: 'row-3'}
// 添加新实体示例:
// ,{id: 'point-4', name: '您的实体', color: '#颜色代码', defaultX: 0.5, defaultY: 0.5, rowId: 'row-4'}
];
// 2. 初始化所有定位点 function initPoints() {
const container = document.getElementById('chart-points-container');
container.innerHTML = ;
entities.forEach(entity => {
// 从表格中读取当前坐标(如果已经调整过)
const coordCell = document.querySelector(`#${entity.rowId} .coord-cell`);
let currentX = entity.defaultX, currentY = entity.defaultY;
if (coordCell && coordCell.textContent) {
const parts = coordCell.textContent.split(',').map(s => parseFloat(s.trim()));
if (parts.length === 2 && !isNaN(parts[0]) && !isNaN(parts[1])) {
currentX = parts[0];
currentY = parts[1];
}
}
// 创建定位点元素
const point = document.createElement('div');
point.id = entity.id;
point.className = 'chart-point';
point.style.position = 'absolute';
point.style.width = '16px';
point.style.height = '16px';
point.style.backgroundColor = entity.color;
point.style.border = '2px solid white';
point.style.borderRadius = '50%';
point.style.cursor = 'move';
point.style.boxShadow = '0 2px 4px rgba(0,0,0,0.2)';
point.style.zIndex = '10';
point.style.transform = 'translate(-50%, -50%)';
// 计算位置(百分比)
point.style.left = `${currentX * 100}%`;
point.style.top = `${(1 - currentY) * 100}%`; // 反转Y轴,使0在上,1在下
// 添加悬停提示
point.title = `${entity.name} (${currentX.toFixed(2)}, ${currentY.toFixed(2)})`;
// 添加拖拽功能
makeDraggable(point, entity);
// 添加点击事件
point.addEventListener('click', function(e) {
e.stopPropagation();
updateSelectedPoint(entity.name, currentX, currentY);
highlightPoint(entity.id);
highlightRow(entity.rowId);
});
container.appendChild(point);
});
}
// 3. 拖拽功能实现 function makeDraggable(element, entity) {
let isDragging = false;
let offsetX, offsetY;
const container = element.parentElement;
element.addEventListener('mousedown', startDrag);
function startDrag(e) {
isDragging = true;
const rect = container.getBoundingClientRect();
const pointRect = element.getBoundingClientRect();
// 计算鼠标相对于点中心的位置
offsetX = e.clientX - pointRect.left;
offsetY = e.clientY - pointRect.top;
document.addEventListener('mousemove', drag);
document.addEventListener('mouseup', stopDrag);
e.preventDefault();
updateSelectedPoint(entity.name, 0, 0);
highlightPoint(entity.id);
highlightRow(entity.rowId);
}
function drag(e) {
if (!isDragging) return;
const rect = container.getBoundingClientRect();
// 计算新位置(限制在容器内)
let newLeft = e.clientX - rect.left - offsetX;
let newTop = e.clientY - rect.top - offsetY;
newLeft = Math.max(0, Math.min(newLeft, rect.width));
newTop = Math.max(0, Math.min(newTop, rect.height));
// 转换为坐标值 (0-1)
const x = newLeft / rect.width;
const y = 1 - (newTop / rect.height); // 反转Y轴
// 更新点位置
element.style.left = `${x * 100}%`;
element.style.top = `${(1 - y) * 100}%`;
// 更新表格和提示
updateTableCoordinates(entity.rowId, x, y);
element.title = `${entity.name} (${x.toFixed(2)}, ${y.toFixed(2)})`;
updateSelectedPoint(entity.name, x, y);
}
function stopDrag() {
isDragging = false;
document.removeEventListener('mousemove', drag);
document.removeEventListener('mouseup', stopDrag);
}
}
// 4. 辅助函数 function updateTableCoordinates(rowId, x, y) {
const coordCell = document.querySelector(`#${rowId} .coord-cell`);
if (coordCell) {
coordCell.textContent = `${x.toFixed(2)}, ${y.toFixed(2)}`;
}
}
function updateSelectedPoint(name, x, y) {
document.getElementById('selected-point-name').textContent = name;
document.getElementById('selected-point-coords').textContent = `(X: ${x.toFixed(2)}, Y: ${y.toFixed(2)})`;
}
function highlightPoint(pointId) {
// 移除所有高亮
document.querySelectorAll('.chart-point').forEach(p => {
p.style.boxShadow = '0 2px 4px rgba(0,0,0,0.2)';
p.style.transform = 'translate(-50%, -50%)';
});
// 高亮选中的点
const point = document.getElementById(pointId);
if (point) {
point.style.boxShadow = '0 0 0 3px rgba(0,123,255,0.5), 0 2px 8px rgba(0,0,0,0.3)';
point.style.transform = 'translate(-50%, -50%) scale(1.2)';
point.style.zIndex = '100';
}
}
function highlightRow(rowId) {
// 移除所有行高亮
document.querySelectorAll('#ideology-table tbody tr').forEach(row => {
row.style.backgroundColor = ;
});
// 高亮选中的行
const row = document.getElementById(rowId);
if (row) {
row.style.backgroundColor = 'rgba(0,123,255,0.1)';
}
}
function focusPoint(pointId) {
const entity = entities.find(e => e.id === pointId);
if (entity) {
const coordCell = document.querySelector(`#${entity.rowId} .coord-cell`);
if (coordCell && coordCell.textContent) {
const parts = coordCell.textContent.split(',').map(s => parseFloat(s.trim()));
if (parts.length === 2) {
updateSelectedPoint(entity.name, parts[0], parts[1]);
}
}
highlightPoint(pointId);
highlightRow(entity.rowId);
}
}
function resetPoint(pointId, defaultX, defaultY) {
const entity = entities.find(e => e.id === pointId); if (!entity) return; // 更新表格 updateTableCoordinates(entity.rowId, defaultX, defaultY); // 重新初始化点(会从表格读取新坐标) initPoints(); // 更新选中显示 updateSelectedPoint(entity.name, defaultX, defaultY); highlightPoint(pointId); highlightRow(entity.rowId);
}
function resetAllPoints() {
if (confirm('确定要重置所有点到默认位置吗?')) {
entities.forEach(entity => {
updateTableCoordinates(entity.rowId, entity.defaultX, entity.defaultY);
});
initPoints();
updateSelectedPoint('无', 0, 0);
document.querySelectorAll('#ideology-table tbody tr').forEach(row => {
row.style.backgroundColor = ;
});
}
}
function exportCoordinates() {
let exportText = "弥恩意识形态坐标数据\n====================\n\n";
entities.forEach(entity => {
const coordCell = document.querySelector(`#${entity.rowId} .coord-cell`);
if (coordCell) {
exportText += `${entity.name}: ${coordCell.textContent}\n`;
}
});
exportText += `\n导出时间: ${new Date().toLocaleString()}`;
// 复制到剪贴板(简单方案)
const textArea = document.createElement('textarea');
textArea.value = exportText;
document.body.appendChild(textArea);
textArea.select();
try {
document.execCommand('copy');
alert('坐标数据已复制到剪贴板!\n\n' + exportText);
} catch (err) {
alert('无法自动复制,请手动复制以下内容:\n\n' + exportText);
}
document.body.removeChild(textArea);
}
// 5. 页面加载完成后初始化 document.addEventListener('DOMContentLoaded', function() {
initPoints();
}); </script>
<details style="margin-top: 2rem; padding: 1rem; background: #f1f3f4; border-radius: 8px;">
<summary style="font-weight: bold; color: #8B7355; cursor: pointer;">📘 使用说明与扩展指南</summary>
核心功能
- 拖拽定位:直接在坐标图上拖拽蓝色圆点,实时调整其位置。
- 表格联动:点击表格中的“定位”按钮,坐标图上对应的点会高亮显示。
- 坐标管理:表格中的坐标会随拖拽自动更新,支持单个重置和全部重置。
- 数据导出:点击“导出当前坐标数据”可将所有坐标复制到剪贴板。
如何添加新实体(势力/组织)
- 在表格部分找到注释处,复制一行表格代码,例如复制
<tr id="row-3">...</tr>。 - 将新行的所有数字递增(如
row-4、point-4)。 - 修改实体名称、意识形态标签(确保使用正确的颜色代码)。
- 设置默认坐标(两个位置)。
- 在 JavaScript 部分的
entities数组中添加一行新数据,格式参照现有条目。
如何与世界观整合
- 此坐标图可以放置在您的 世界观设定 核心页面。
- 每个实体名称都使用了
内部链接语法,确保点击可跳转到对应页面。 - 导出的坐标数据可以用于 叙事记录,记录意识形态的演变。
- 鼓励在实体描述页面引用其坐标位置,例如:“根据意识形态坐标图,本组织位于 (0.35, 0.60),属于 渐进改良主义 象限。”
提示: 此工具完全基于标准 HTML/CSS/JavaScript,兼容绝大多数支持自定义 HTML 的 Wiki 平台和编辑器。如果遇到问题,请确保您的平台允许执行内联脚本。
</details>