实例副本难度
实例副本有一个特殊设置,可以方便地为副本定义不同的难度。
运作方式
难度可以设置 levelSync,借鉴了《最终幻想 14》的等级同步系统。它会改变玩家物品缓存所用的等级,不会改写背包中的物品本身。
当前的近战攻击和护甲防御计算读取物品的原始等级。投射物战斗快照也读取武器的原始攻击值,投出的三叉戟则在命中时读取自身物品等级。不要仅靠 levelSync 来拉平武器和护甲配置。
锋利和力量为装备攻击提供独立的倍率加成。每件符合条件的已装备物品贡献 0.025 * (Sharpness level + Power level),六个装备槽的贡献相加。等级同步不限制此附魔贡献。它是倍率的加成,不是固定的伤害点数。
应用生命值上限前,Boss 基础生命值每五级翻倍,但玩家攻击使用独立的技能、物品、附魔和职业计算。平衡战斗前请查看伤害系统。将等级同步与特定难度的能力、Boss 数值及奖励配合使用,并检查玩家实际携带的装备。
队伍系统
EliteMobs 拥有仅在会话内有效的队伍。普通邀请最多允许五名成员,自动副本队伍可容纳更大的已准入名单。任一成员选择实例副本时,EliteMobs 会记录完整名单并启动可点击的准备确认。发起者自动准备完成;其余成员必须接受这个确切的副本及难度,才会开始准备世界。动态副本还会显示所选等级。拒绝、超时、名单变化、成员不可用、权限或容量不足、活动实例冲突,或 EliteMobs 的 MatchJoinEvent 预检被取消,都会中止整队入场,不会故意只移动部分成员。EliteMobs 的 PlayerJoinDungeonEvent 是准入后触发的不可取消通知。
个人的物品附魔挑战仍然是单人的,因为挑战会临时占用发起玩家的物品。
作者可以选择随玩家数量增加而更加危险的能力。副本 Boss 也会在设置生命值时,按实例参与人数获得生命值加成,包括比赛开始时。公式为:scaledHealth = baseHealth * 0.75 * playerCount。例如,2 名玩家时 Boss 拥有其基础生命值的 1.5 倍,3 名玩家时为 2.25 倍,5 名玩家时为 3.75 倍。
注意: 生命值缩放只在实例中有 2 名或更多玩家时才会生效。单人玩家面对的 Boss 使用标准生命值。
如何定义难度
难度在 /plugins/EliteMobs/content_packages/ 下的实例副本包 YAML 中定义,也可能位于内容包子文件夹内。将 difficulties 与 contentLevel、name 等其他顶层副本设置并列。
我们来看一个示例:
difficulties:
- levelSync: 60
name: normal
- levelSync: 50
name: hard
- levelSync: 40
name: mythic
这设置了三个难度。name 提供菜单标签。levelSync 和 id 可选;省略 levelSync 就不应用同步。可识别的难度名称能够补全缺失的 ID,详见下文。新内容包应优先显式设置 ID。
name 是难度的名称,会显示在游戏内的难度设置中。可以取任意名称。
levelSync 设置上述物品处理路径的等级上限,并不限制所有伤害或防御计算。
你可以定义任意多或任意少的难度。只需按照相同格式在 difficulties 设置中添加或删除条目即可。
相对等级同步
等级同步也可以使用相对值而不是绝对数字。请始终给该值加引号。 YAML 会把不带引号的 +5 解析为普通整数 5,等到 EliteMobs 读取时开头的 + 已经消失——因此 levelSync: +5 会悄悄变成等级 5 的绝对同步,而 levelSync: +0 会变成绝对的 0,从而彻底禁用等级同步。不带引号的负值(例如 levelSync: -10)恰好能够幸免,因为 - 会被保留下来,EliteMobs 仍然会把它当作相对值读取——但给每个值都加引号才是唯一没有歧义的写法:
difficulties:
- levelSync: '+5'
name: easy
- levelSync: '+0'
name: normal
- levelSync: '-10'
name: hard
相对值是基于副本的基础内容等级计算的,并且结果永远不会低于 1。例如,如果一个副本的内容等级为 60:
levelSync: '+5'变为 65levelSync: '+0'变为 60levelSync: '-10'变为 50
这对于内容等级可能变化的动态副本尤其有用。在动态副本上,内容等级只有在实例创建之后才能确定,因此相对值会在那时才解析。
绝对值 levelSync: 0——或任何 EliteMobs 无法解析的值——意味着该难度完全不进行等级同步。
可选的难度 ID 字段
为每个难度条目设置 id,用于能力和战利品过滤。标准数值映射为 0 = NORMAL、1 = HARD、2 = MYTHIC。
当前实现也识别 Normal/Hard/Mythic 和旧式 Easy/Medium/Hard,忽略大小写、颜色和首尾空白。整个内容包决定命名方案:显式 Normal 或 Mythic ID 选择标准方案;否则,Easy 或 Medium ID 选择旧方案。仅按名称判断时,必须出现 Easy 或 Medium 且没有 Normal 或 Mythic,才选择旧方案。检测发生在翻译之前,数值 ID 始终保持固定含义。可识别的名称能补全缺失的 ID,或为自定义 ID 提供难度档位。
未知定义会在控制台产生带有包文件名的警告。自定义 ID 经大小写、颜色和空白规范化后仍可匹配作者的过滤器。自动战利品优先使用 ClassLootSettings.yml 中针对原始 ID 的显式映射,其次使用解析出的档位和配置默认值。为不常见的名称显式设置 ID。
difficulties:
- levelSync: 60
name: normal
id: 0
- levelSync: 50
name: hard
id: 1
基于难度的能力
可以配置 Boss 只在特定难度下拥有某些能力。我们来看一个示例:
powers:
- filename: invulnerability_fire.yml
difficultyID:
- 1
- 2
注意:这是自定义 Boss 配置文件的一部分!
在这个例子中,Boss 只会在 ID 为 1 和 2 的难度下拥有火焰免疫。
能力和作者定义的战利品都允许 difficultyID 使用单个 ID 或 YAML 列表。空或无效的能力过滤器不匹配任何难度;在战利品条目中,空列表或空白 ID 会让该条目在文件加载时被拒绝。能力过滤器适用于关联副本的实例 Boss,也适用于通过实例 Boss API 在其他插件的实例中生成的 Boss,此时使用该插件分配的难度。它们不限制普通开放世界 Boss。
基于难度的战利品
可以配置 Boss 掉落特定于某个实例副本难度的战利品。我们来看一个示例:
uniqueLootList:
- filename: himiko_boss_drop_axe_tank_normal.yml
chance: 0.05
difficultyID: 0
注意:这是自定义 Boss 配置文件的一部分!
在副本内,该条目允许难度 0 以 5% 的概率抽取 himiko_boss_drop_axe_tank_normal.yml,同时仍受普通战利品资格规则约束。难度检查使用接收者当前所在的副本;在副本外不会阻止该条目。符合条件的装备进入副本队伍战利品,非装备物品仍为个人所得。参见队伍战利品。
平衡 Normal、Hard 和 Mythic 奖励
上例将作者定义的物品文件限制在一种难度。若希望每种职业都能得到适合的装备,又不想维护每件物品的三个版本,请使用自动职业战利品。它按难度和阶级选择附魔配置,同时只需在一处维护物品名称与描述。
指南包含主要附魔上限表及实际掉落抽取使用的预算公式。提高难度不会自动倍增 Boss 生命值或战利品属性;等级同步、能力、Boss 数值和奖励配置各自控制战斗的不同部分。