方尖碑职业是瓦尔海姆的一个模组(BepInEx插件,基于 约顿巨人 模组库),添加了一个可制作的“职业方尖碑”。玩家与方尖碑互动后可从10个战斗职业中进行选择:
剑术大师, 弓箭手, 粉碎者, 刺客, 斗士, 法师, 枪兵, 壁垒, 刽子手, 术士
每个职业使用对应武器类型时会造成额外伤害,并通过战斗获得经验值。职业等级从1级到50级,每10级解锁一个被动技能(10级/20级/30级/40级/50级)。
插件标识(BepInEx):
| 领域 | 数值 |
|---|---|
| 全局唯一标识符 | com.bunzboi.valheimweaponclass |
| 名称 | 维京英灵殿武器类别 |
| 版本 | 1.1.0 |
[BepInDependency(Jotunn.Main.ModGuid)])— 用于预制体克隆、部件/建造系统以及所有自定义GUI(职业选择窗口)这 项目文件 通过指向本地Steam安装目录的HintPaths引用游戏/BepInEx/Jotunn DLL(程序文件 (x86)\Steam\steamapps\common\Valheim\...)。如果你在新机器上进行设置,而构建时无法找到引用,请更新这些 HintPaths(或你的 Steam 安装路径)。
A Newtonsoft.Json.dll 被收录在 库/ 但是 不 当前未用于任何用途——所有存档数据都通过 Unity 自有的 Json工具 改为。
ClassObeliskMod.cs 插件入口点(BaseUnityPlugin)。创建方尖碑部件,并包含整个职业选择 GUI(使用 Jotunn 的 GUIManager 构建)。Utilities/ PlayerClass.cs PlayerClass 枚举 + PlayerClassHelper(显示名称、内部名称、武器类型查找)。PlayerClassManager.cs 每名玩家的职业数据(PlayerClassData)和静态注册表(PlayerClassManager)。还包含保存/加载的 Harmony 补丁。ClassCombatManager.cs 武器类型检测(这是剑吗?弓吗?等等)和职业伤害倍率。ClassDamageBonusSystem.cs 通用的每级伤害加成(与 ClassCombatManager 分离——见第 5 节)。XPSystemManager.cs 经验值授予、升级曲线,以及挂钩战斗事件以获取经验值的 Harmony 补丁。AnimationSpeedManager.cs 可复用的可叠加倍率工具,用于攻击/动画速度(供某些 perk 使用)。SEUtils.cs 用于检查原版 StatusEffects 的辅助工具(中毒/燃烧/寒霜层数、计时器等)PerkManagers/ 每个职业一个文件,各自实现该职业的 10/20/30/40/50 级被动 perk(SwordMasterPerkManager.cs、ArcherPerkManager.cs、CrusherPerkManager.cs、AssassinPerkManager.cs、BrawlerPerkManager.cs、WizardPerkManager.cs、LancerPerkManager.cs、BulwarkPerkManager.cs)。这里就是你添加或调整特定职业能力的地方。TestingResources/ 仅调试用的控制台命令(API 发现、弓测试、通用调试工具)。不属于预期的正式功能集。Resources/Icons/ 某些 perk 状态效果使用的嵌入式 .rgba 图标资源。Libs/ 内置的第三方 DLL(Newtonsoft.Json、AnimationSpeedManager)。
玩家使用锤子制作职业方尖碑。它是通过克隆原版 工作台 预制件并剥离其 制作站 组件,所以它纯粹是一个可交互物件,而非制作站(见 添加职业方尖碑 / 创建职业方尖碑预制体)。
与其互动(E)会召唤 方尖碑互动.交互,这会打开一个完全用Jotunn构建的职业选择窗口 界面管理器 (无 Unity 预制体/资源 UI)- 一个职业按钮网格,一个由硬编码填充的描述面板 职业描述 字典输入 方尖碑职业模组.cs,以及一个“选择职业”按钮。
点击“选择职业”会调用:
玩家职业管理器.设置玩家激活职业(玩家, 职业名)
解析该类并调用 设置激活职业, 替换 任何当前激活的类别——默认情况下,同一时间只能激活一个类别。
注意:
无法选择第二职业当任意职业达到50级时返回true,暗示此时设计上意图开启第二个同时激活的职业。选择界面目前始终调用单职业的“替换”路径,而非“添加第二职业”路径,因此双职业看起来是一个已规划但尚未完全接通的功能。
类定义没有外部数据文件(没有JSON/YAML)——所有内容都硬编码在C#中:
工具类/玩家职业.cs — 这个 玩家职业 枚举(8个职业)加上 职业助手,它将每个职业映射到一个显示名称、一个内部/存档名称以及一个武器类型描述。方尖碑职业模组.cs (职业描述 字典) ——各职业特长风味文本描述,显示于选择界面。仅为展示文本,非机制内容。工具类/战斗管理器.cs — 武器类型检测(是否是剑类武器, 弓类武器, 钝器, 是否刀具武器, 是否为长矛武器, 徒手攻击, 魔法武器 - 主要是武器名称的字符串匹配)加上 获取职业伤害倍率既用于判定是否可获得经验值,也用于施加战斗伤害加成。工具/职业伤害加成系统.cs 一种与等级挂钩的通用伤害加成(每级0.5%,50级时上限25%),当装备的武器与当前职业的武器类型匹配时生效。
注意: 这似乎与以下位置中的乘数逻辑重叠:
战斗管理器- 两个补丁伤害如果你要改动伤害计算,这一点值得统一处理,以免加成意外叠加。
PerkManagers/*.cs ——每个职业10/20/30/40/50级特长(增益、状态效果、耐力消耗减免、硬直等)的实际机制实现。这是添加新特长或重新平衡现有特长的主要位置。启用模组 (布尔值,默认 真),束缚于 方尖碑职业模组.Awake()所有其他平衡数值(每级伤害加成、经验值比率、特长阈值/持续时间)都是普通的C#常量,散落在 文件伤害加成系统, XPSystemManager.cs,以及各个技能管理器——除了通过代码修改外,没有任何配置文件可以调整它们(少数几个值可以在运行时通过 比率 调试命令,不会持久化)。玩家职业数据 (工具/玩家职业管理器.cs) 是每个玩家的状态容器:职业等级、各职业经验值、当前激活的职业,以及各职业的“已解锁”标记。
注意:
已解锁职业目前每次初始化时所有职业都处于解锁状态(“测试用全部解锁”)——解锁限制实际上尚未生效。
职业管理器 持有一个静态内存字典, 字典<长整数, 玩家职业数据>,以玩家ID为键。此项通过以下方式延迟填充: 获取玩家数据(player).
持久化依赖于原版角色存档,而非独立文件或世界存档:
玩家_保存_补丁 (后缀开启 玩家.存档)序列化 玩家职业数据 使用Unity的 JsonUtility 并将其追加到角色的 包.玩家_加载_补丁 (后缀开启 玩家.加载读取尾部数据(并对旧版或未安装模组的角色文件安全地执行空操作)。实际效果:职业进度随玩家角色存档一起保存,不受其加入的世界/服务器影响。
多人游戏注意事项: 模组中没有任何自定义RPC/ZDO同步代码。职业/等级/经验值状态仅存在于计算它的那台机器(客户端或专用服务器)的本地内存中,不会在对等端之间广播。在有多名玩家同时在线的专用服务器上,这是一个很可能存在的漏洞,在实际多人游戏会话中依赖它之前值得测试和加固。
核心逻辑: 功能模块/XPSystemManager.cs (职业经验管理器)
击杀奖励倍率) 被分摊到造成伤害的各个职业上。伤害 (帖子,仅用于追踪)以及 角色.死亡时 (追踪补丁经验值)。经验值需求 是用于1-50级的硬编码累计经验值表(一条注释指出它最初源自一个 经验值_升级.json 仓库中已不再存在的参考文件——这些值现已直接内联在代码中)。 XPCurveHelper 暴露每级所需经验值、累计经验值、根据经验值获取当前等级以及进度(用于UI进度条)的查询接口。PerkManagers/*.cs 达到50级后,任何职业也会解锁第二个主动职业槽位(见第4节)。所有补丁均通过一次调用被发现并应用 方尖碑职业模组.Awake(): new Harmony(PluginGUID).PatchAll().
| 文件 | 目标 | 目的 |
|---|---|---|
方尖碑职业模组.cs |
终端.初始化终端 |
注册模组控制台命令 |
工具/玩家职业管理器.cs |
玩家.保存 / 玩家.加载 |
持久化/恢复 玩家职业数据 |
终端.初始化终端 |
重置职业 调试命令 |
|
工具/经验值系统管理器.cs |
伤害 (帖子) |
按职业追踪伤害贡献以分配击杀奖励 |
角色.死亡时 |
触发击杀奖励经验分配 | |
终端.初始化终端 |
测试经验值/税率/经验曲线 指令 |
|
工具/战斗职业管理器.cs |
伤害, 弹体.*, 游戏更新, 终端.初始化终端 |
职业伤害倍率、武器类型检测、杂项记录/调试 |
工具类/职业伤害加成系统.cs |
伤害, 终端.初始化终端 |
每级通用伤害加成 + 调试命令 |
实用工具/动画速度管理器.cs |
角色动画事件.自定义固定更新, 角色.更新 |
攻击/动画速度倍率叠加工具,供若干技能使用 |
PerkManagers/*.cs |
角色.伤害, 玩家/人形战斗与装备钩子, 玩家.已生成, 游戏.更新 |
各职业10-50级技能效果(见第5节) |
测试资源/*.cs |
终端。初始化终端 |
调试/API发现控制台命令 |
所有这些都通过以下方式注册 终端.控制台命令 和谐后缀开启时 终端.初始化终端,所以只要模组已加载,它们随时都可以在游戏控制台(反引号键 / F5,具体取决于你的英灵神殿控制台按键绑定)中使用——没有单独的“调试版本”标志。它们纯粹是为了开发而存在,并且 不 意在作为生产功能。
工具类/玩家职业管理器.cs, 工具/经验系统管理器.cs)| 命令 | 用法 | 它的作用 |
|---|---|---|
重置职业 |
重置职业 |
将你当前激活的职业等级和经验重置为0。适合从头重新测试升级和技能解锁。 |
测试经验值 |
测试经验值 [amount] |
给予经验值(若省略则默认100)给 每个 当前激活的职业,无需战斗即可。打印旧等级/经验值 -> 新等级/经验值,并标记升级。 |
倍率 |
兑换率 击杀倍率 |
无参数时,打印当前 击杀奖励倍率. 带参数时,在当前会话中实时覆盖(例如 兑换率 1.5)。 未持久化 - 重启时重置为编码默认值。 |
经验值曲线 |
经验曲线 <level> (1-50) |
打印达到以下等级所需的经验值 <关卡>、累计经验值总数,以及下一级所需经验——方便核对 经验值需求/曲线助手 无需游玩即可变更。 |
实用工具/职业战斗管理器.cs, 工具/职业伤害加成系统.cs)| 命令 | 用途 | 作用 |
|---|---|---|
武器类型 |
武器类型 |
显示你当前装备的武器被归类为(剑/弓/钝器/匕首/长矛/徒手/魔法),依据是 战斗管理器的姓名匹配逻辑。 |
职业等级 |
职业等级 |
列出你的所有职业等级及其各自的伤害加成,以及你当前装备的武器。 |
伤害率 |
伤害倍率 每级伤害加成 <bonus_per_level> [最大加成] |
显示或覆盖 职业伤害加成管理器每级加成与上限(数值为百分比,例如 伤害率 1.0 30 每级提升1%,上限30%)。不持久保存。 |
模拟伤害 |
模拟伤害 <职业> <等级> |
打印伤害倍率以及针对假设职业/等级的完整计算示例(100伤害 -> X),无需该等级的实际角色。带有空格的职业名称需加引号,例如 模拟伤害 “剑术大师” 25. |
测试伤害 |
测试伤害 |
显示当前应用于你装备武器的伤害加成/倍率。 |
注意:
测试伤害已注册 两次 - 一旦进入战斗调试命令(战斗管理器.cs)以及一次在伤害加成指令(类伤害加成系统.cs),输出略有不同。因为两个补丁类都运行它们的初始化终端后缀,运行时实际上只有一个注册会胜出(无论哪个终端.控制台命令最后才为那个名称添加的)。如果你在调试伤害计算时发现输出结果错误或过时,很可能就是这个命名冲突导致的——在依赖它之前,值得先重命名其中一个。
测试资源/弓箭测试命令.cs)| 命令 | 用法 | 它的作用 |
|---|---|---|
查看绘画 |
查看抽奖 |
记录当前所装备弓的详细抽弓机制反射信息(需要装备弓)。 |
测试绘制时长 |
测试绘制持续时间 <multiplier> |
使已装备的弓的 最短绘制时长 直播(例如 0.5 速度加倍, 1.5 = 50% 减速)。仅对当前会话/武器实例有效。 |
重置抽牌 |
重置抽牌 |
将抽牌时长倍率重置为1.0(正常)。 |
绘制信息 |
绘制信息 |
显示当前抽卡时长倍率以及测试是否处于激活状态。 |
有一个几乎重复但更简单的乘数命令版本—— 测试绘制时长 <multiplier> - 在 ApiDiscoveryCommands.cs (第9.4节);两者不共享状态,因此不要在同一测试会话中混用它们。
测试资源/Api发现命令.cs)这些内容用于探索英灵神殿的内部机制(找到正确的字段/方法进行Harmony补丁),无需手动反编译。运行 API帮助 在游戏中查看实时摘要。
| 指令 | 用法 | 功能说明 |
|---|---|---|
方法列表 |
列出方法 <className> [filter] |
列出某个类型上的最多 25 个方法,可选择按名称子字符串筛选。接受以下快捷方式: 玩家, 技能, 角色, 类人, 物品掉落, 碎片, 攻击. 例如: 列出方法 角色攻击. |
字段列表 |
list_fields <className> [filter] |
和……思路相同 方法列表 但对于字段。示例: 物品掉落共享列表字段. |
技能列表 |
技能列表 |
尝试反射到本地玩家的技能对象并报告其类型——这是一个起点 方法列表/字段列表 探索,并非全盘技能倾泻。 |
检查对象 |
检查对象 <target> |
导出已知目标的当前字段值: 玩家, 武器, 技能,或 角色. |
类型查找 |
查找类型 <pattern> |
在所有已加载的程序集中搜索包含以下内容的类型名称 <图案> (不区分大小写),最多显示20个包含完整命名空间的匹配项。 |
测试抽取时长 |
测试抽取时长 <multiplier> |
直接将所装备弓的拉弓时间乘以一个系数,用于快速一次性测试(见9.3中的注释)。 |
查看弓属性 |
弓属性 |
显示已装备弓的拉弓时间、速度系数、装填时间和耐力消耗。 |
接口帮助 |
接口帮助 |
打印此命令组的游戏内速查表。 |
测试资源/英灵神殿调试工具.cs)与上述命令(输出到游戏内控制台)不同,这些命令会将结果写入文本文件,以便你在游戏外查看大量转储数据——请查看 BepInEx 打印的日志/调试输出路径下的内容 调试路径.
| 指令 | 用途 | 它的作用 |
|---|---|---|
列出方法 |
listmethods <classname> |
将类型上的每个公共/私有/实例/静态方法写入到 DebugLogs/methods_<classname>.txt,包括兼容 Harmony 的参数类型列表。 |
查找方法 |
查找方法 <classname> <keyword> |
同 列出方法 但筛选出的方法名称中包含 <关键词>;写入到 DebugLogs/findmethod_<classname>_<keyword>.txt. |
方法签名 |
方法签名 <classname> <methodname> |
为每个重载写入完整签名,针对一个方法名,外加可直接粘贴的内容 [和谐补丁(...)] 属性和前缀方法占位符,到 调试日志/methodsig_<类名>_<方法名>.txt在编写新的Harmony补丁时非常有用。 |
调试路径 |
调试路径 |
打印这些转储文件写入的目录(以及该目录当前是否存在)。 |
奥碑职业模组.cs)| 命令 | 用途 | 它的作用 |
|---|---|---|
方尖碑测试 |
方尖碑测试 |
输出一条静态的“mod运行正常”消息——用于快速验证插件已加载且Harmony补丁已应用。 |
调试碎片 |
调试碎片 |
将可锤子建造的完整部件列表写入 锤子碎片.txt 在BepInEx根目录中,标记任何名称包含“Obelisk”或“Class”的文件——这有助于确认自定义部件是否已成功注册。 |
瓦尔海姆职业方尖碑.sln 在Visual Studio(或你首选的支持.NET Framework的IDE)中。ValheimClassObelisk.csproj 匹配你本地的 Steam 英灵神殿安装(BepInEx 核心、Jotunn 插件文件夹以及游戏的管理程序集)。如果你的安装路径不同,请更新它们。BepInEx/plugins 文件夹——它是运行时依赖,而不仅仅是编译时引用。瓦尔海姆职业方尖碑.dll (以及以下任何内容 库/ 需要的话)放入你的英灵神殿中 BepInEx/plugins 用于游戏内测试的文件夹。
修改前置工具
2026-09-12 14:33:53
修改前置工具

史诗战利品
randyknapp2026-09-09 21:20:10
为英灵神殿添加战利品掉落、魔法物品和附魔。

制作 建造 熔炼 烹饪 燃料 从容器中取出
aedenthorn2025-06-30 08:34:14
让你在制作、建造、使用熔炉和窑炉、添加燃料、烹饪食物等时,可以使用附近容器中的资源。

种植一切
Advize2025-09-09 11:15:37
重写了bkeyes93的种植增强模组。允许你的种植者种植浆果丛、蓟、蒲公英、蘑菇、此前无法获取的树种以及其他装饰性植物。还包括许多其他杂项功能(详见

无限制传送门
frostedplaything4102023-09-02 17:39:40
无限制传送门是一个客户端模组,允许玩家通过传送门传送任何物品。该模组提供广泛的自定义选项,让玩家能够控制物品限制、移除限制,

农场格子
Sarcenzzz2023-06-14 11:38:34
允许所有通过种植器种下的植物自动对齐并放置在网格中,确保它们有足够的生长空间。

更好的UI
MKMasa2021-04-15 09:19:42
这个模组对游戏界面做了一些细微的调整。你可以编辑并选择想要启用的更新内容。

更好的射箭
Ishid42026-09-10 16:16:51
为弓术玩法添加了许多功能和改动,包括全新的箭袋系统、可回收的箭矢、更精准的瞄准以及逼真的箭矢物理效果。