伤害系统
这是对 EliteMobs 中生命值/伤害如何缩放的全面解析。在设计副本时应将其用作参考。
它聚焦于自定义 Boss,但普通精英怪也以相同方式缩放。
在开始之前!
如果你只是想做一些快速调整,并不需要把这些全部读完。直接跳到“将这些数据用于副本”一节,查看极其简化的快速算法以及一系列预设的推荐配置!
缩放(总体而言)
EliteMobs 使用一套指数缩放系统,每相差 5 级,有效战力就翻倍(或减半)。Boss 生命值、玩家伤害和 Boss 伤害都呈指数缩放,从而使战斗在每个等级区间内的体验保持一致——一名 10 级玩家对抗一个 15 级 Boss 的感受,与一名 50 级玩家对抗一个 55 级 Boss 的感受是相同的。
玩家战力来自两个来源,按 50/50 的比例划分:
- 武器熟练度等级 —— 通过用特定武器类型(剑、斧、弓、弩、三叉戟、锄、重锤或长矛)击杀精英怪获得。
- 物品等级 —— 玩家所装备的武器或护甲件的精英等级。
玩家还拥有一项护甲熟练度,它在战斗中被动升级(速率为武器熟练度的 1/3)。护甲熟练度等级会授予额外的最大生命值(每超过 1 级 +1 颗心),并决定玩家对抗 Boss 伤害的防御缩放。
武器熟练度
EliteMobs 10 引入了一套熟练度系统,玩家通过在战斗中使用各类武器来独立地为每种武器类型升级。击杀一个精英怪会向所持武器对应的武器熟练度授予经验值,同时以较低的速率向护甲熟练度授予经验值。
可用的武器熟练度有:
| 熟练度 | 武器 |
|---|---|
| 剑(Swords) | 所有剑类 |
| 斧(Axes) | 所有斧类 |
| 弓(Bows) | 弓 |
| 弩(Crossbows) | 弩 |
| 三叉戟(Tridents) | 三叉戟 |
| 锄(Hoes) | 所有锄类 |
| 重锤(Maces) | 重锤(1.21+) |
| 长矛(Spears) | 所有长矛类(1.21.11+) |
| 护甲(Armor) | 所有护甲件(被动升级) |
从一个怪物获得的熟练度经验等于 mobLevel^2,因此等级越高的怪物按比例授予越多经验。最高熟练度等级为 100,此后一道软上限会使进一步进度呈指数级地更难。
熟练度加成
每项武器熟练度(以及护甲熟练度)都有一组熟练度加成——随玩家升级而解锁的特殊能力。玩家可以选择激活哪些加成。熟练度加成分为五种类型:
- 被动(Passive) —— 装备时始终生效(例如,固定的伤害提升)。
- 条件(Conditional) —— 仅在满足特定条件时生效(例如,目标生命值低于 30% 时的额外伤害)。
- 触发(Proc) —— 在特定事件上基于几率触发(例如,命中时有几率造成流血)。
- 叠加(Stacking) —— 在连续动作中不断累积(例如,连续命中提高伤害)。
- 冷却(Cooldown) —— 带有内部冷却的强力效果(例如,每 60 秒一次免疫致命伤害)。
玩家每种武器或护甲类型最多可拥有 3 个生效的加成。它们的平衡数值硬编码在插件中,不可配置。由于本页上的每一条曲线都是在不含它们的前提下绘制的,在你用这些数字去平衡遭遇战之前,请参阅伤害流程中的熟练度加成了解它们如何组合成真实伤害。
来自武器熟练度的进攻型熟练度加成会作为加法伤害倍率叠加在对 Boss 造成的基础伤害之上。来自护甲熟练度的防御型熟练度加成会通过各种机制(固定减免、闪避、伤害护盾等)减少传入的 Boss 伤害。
自定义 Boss 造成的伤害
EliteMobs 10 中的 Boss 伤害使用三个相乘的层级,并且没有预补偿。该系统的设计使得装备恰当的玩家能从同等级内容中存活大约 5 次攻击。
自定义 Boss 的伤害公式为:
1. playerMaxHealth = 20 + (armorSkillLevel - 1) * 2
2. baseDamage = playerMaxHealth / 5.0
3. skillAdjustment = 2 ^ ((bossLevel - armorSkillLevel) / 7.5)
4. gearAdjustment = 2.0 * (1 - gearReduction)
5. scaledDamage = baseDamage * skillAdjustment * gearAdjustment
6. [如适用,爆炸距离衰减]
7. 来自抗性效果的 potionMultiplier
8. finalDamage = max(scaledDamage, 1) * potionMultiplier * customBossDamageMultiplier * specialMultiplier * configMultiplier
9. finalDamage = min(finalDamage, actualMaxHealth - 1)
这三个层级是:
- 基础伤害 —— 玩家预期每次受击会损失多少生命值(
playerMaxHealth / 5)。 - 熟练度调整 —— 来自 Boss 等级与玩家护甲熟练度等级之差的指数缩放。
- 装备调整 —— 基于玩家所装备护甲与保护附魔的、感知伤害类型的减免(见下方“装备防御系统”)。
注意: 伤害被限制在(玩家实际最大生命值 - 1),以防止秒杀。该上限使用 generic_max_health 属性,它包含所有修饰量(护甲熟练度加成、药水效果等)。
playerMaxHealth
玩家的最大生命值由其护甲熟练度等级决定。基础生命值为 20(10 颗心),护甲熟练度每超过 1 级增加 2 点生命值(1 颗心)。护甲熟练度为 50 级的玩家拥有 118 点生命值(59 颗心)。
baseDamage
基础伤害就是 playerMaxHealth / 5.0。这是装备恰当的同等级玩家每次受击预期承受的伤害量。与旧系统不同,这里没有预补偿——基础值就是目标伤害,而非一个被夸大的原始值。
skillAdjustment
熟练度调整使用指数缩放,使 Boss 与玩家护甲熟练度之间的等级差具有意义:
skillAdjustment = 2 ^ ((bossLevel - armorSkillLevel) / 7.5)
每相差 7.5 级,Boss 的有效伤害就翻倍(或减半)。这比通用的等级修饰量(每 5 级翻倍)稍微宽容一些,因为装备调整层已经提供了额外的缩放。
| 等级差 | 熟练度调整 | 击杀所需的大致击数(装备匹配) |
|---|---|---|
| 同级(0) | 1.0x | 约 5 击 |
| +5 级 | 约 1.6x | 约 3 击 |
| +10 级 | 约 2.5x | 约 2 击 |
| +15 级 | 4.0x | 约 1.25 击 |
装备防御系统
装备防御系统取代了旧的装备坡度。系统不再基于熟练度等级假定一个固定的预补偿倍率,而是读取玩家实际装备的装备,并计算一个感知伤害类型的装备减免。
伤害类型
系统将传入伤害分为五类。伤害类型决定哪些保护附魔会计入装备分数:
| 伤害类型 | 事件成因 | 所用保护附魔 |
|---|---|---|
| MELEE | 直接攻击、横扫攻击 | 仅保护(Protection) |
| PROJECTILE | 箭矢、火球 | 保护 + 弹射物保护 |
| EXPLOSION | 苦力怕、恶魂爆炸 | 保护 + 爆炸保护 |
| FIRE | 火焰、火焰跳伤 | 保护 + 火焰保护 |
| OTHER | 其他一切 | 仅保护(Protection) |
装备分数
装备分数将护甲等级和附魔加成合并为一个可与攻击怪物等级相比较的单一值:
gearScore = (4 个护甲槽位 armorLevel 之和) / 4
+ (全部 6 个槽位 enchantBonus 之和) / 4
护甲等级按每件物品确定:
- 精英物品使用其存储的精英等级(该物品被创建时的等级)。
- 原版物品使用基于材质的查表:
| 材质 | 护甲等级 |
|---|---|
| 皮革 | 1 |
| 金 | 2 |
| 锁链 | 3 |
| 铁 | 4 |
| 海龟壳 | 4 |
| 钻石 | 5 |
| 下界合金 | 7 |
只有 4 个护甲槽位(头盔、胸甲、护腿、靴子)会贡献护甲等级。
附魔加成将保护附魔等级转换为等效的护甲等级单位:
enchantBonus = (通用保护等级 + 类型专属保护等级) * (1/3)
全部 6 个装备槽位(4 个护甲 + 主手 + 副手)都会贡献附魔加成。这意味着带有保护附魔的盾牌或武器会提供额外防御。对总和进行 /4 归一化意味着,在全部 6 个槽位上都有附魔,相比仅在 4 件护甲上有附魔,最多可提供多 50% 的附魔贡献。
计算示例:Lv25 匹配装备 + 保护 IV 对 Lv25(近战)
玩家: armorSkillLevel=25, maxHP = 20 + 24*2 = 68
4 件精英护甲,每件 armorLevel=25,每件带有保护 IV
怪物: level=25, 近战攻击
步骤 1 -- 每件护甲等级: 25(精英物品,存储值)
步骤 2 -- 每件附魔加成: 保护 IV = 4 * (1/3) = 1.333
(近战伤害类型,所以仅通用保护生效)
步骤 3 -- 装备分数:
armorLevelSum = 25*4 = 100, /4 = 25.0
enchantBonusSum = 1.333*4 = 5.333(无主手/副手附魔), /4 = 1.333
gearScore = 25.0 + 1.333 = 26.333
步骤 4 -- 装备减免(高于匹配):
reduction = 0.50 + (26.333 - 25) * 0.025 = 0.533(53.3%)
步骤 5 -- 装备调整: 2.0 * (1 - 0.533) = 0.933
步骤 6 -- 最终伤害: baseDamage(13.6) * skillAdj(1.0) * gearAdj(0.933) = 12.69
击杀所需击数: 68 / 12.69 = 5.36, 约 5.4 击
计算示例:Lv1 原版钻石 对 Lv5 骷髅(弹射物)
玩家: armorSkillLevel=1, maxHP = 20
全套原版钻石护甲(无附魔),无主手/副手附魔
怪物: level=5, 骷髅箭矢(PROJECTILE 伤害类型)
步骤 1 -- 每件护甲等级: 5(查表得到的原版钻石)
步骤 2 -- 附魔加成: 0(任何护甲件均无附魔)
步骤 3 -- 装备分数: (5+5+5+5)/4 + 0/4 = 5.0
步骤 4 -- 装备减免(匹配): 0.50 * (5/5) = 0.50(50%)
步骤 5 -- 装备调整: 2.0 * (1 - 0.50) = 1.0
步骤 6 -- 最终伤害: baseDamage(4) * skillAdj(1.447) * gearAdj(1.0) = 5.79
击杀所需击数: 20 / 5.79 = 3.45, 约 3.5 击
如果钻石护甲还带有弹射物保护 IV,每件会获得 4 * (1/3) = 1.333 的附魔加成。装备分数会上升到 5.0 + (1.333*4)/4 = 6.333,将减免提高到 53.3%,并显著改善对抗箭矢时的存活能力。
装备减免曲线
装备减免使用一条两段式线性曲线,在装备分数等于怪物等级的点处过渡:
低于匹配(gearScore 小于或等于 mobLevel):
reduction = 0.50 * (gearScore / mobLevel)
从 0%(裸装)到 50%(匹配)线性缩放。斜率取决于怪物等级——对抗 5 级怪物时每个装备等级提供 10% 减免,而对抗 50 级怪物时每个仅提供 1%。这自然地使低等级原版护甲对抗低等级怪物时有效,而对抗高等级怪物时无关紧要。
高于匹配(gearScore 大于 mobLevel):
reduction = 0.50 + (gearScore - mobLevel) * 0.025
高于怪物的每个装备等级固定 2.5%。在高于怪物 +10 个装备等级时达到 75% 的硬上限。
装备调整将减免转换为伤害倍率:
gearAdjustment = 2.0 * (1 - gearReduction)
| 装备情况 | 装备减免 | 装备调整 | 击杀所需击数(熟练度等级相同) |
|---|---|---|---|
| 裸装(无装备) | 0% | 2.0 | 约 2.5 |
| 半匹配装备 | 25% | 1.5 | 约 3.3 |
| 匹配装备(gearScore = mobLevel) | 50% | 1.0 | 约 5.0 |
| 高于怪物 +4 级 | 60% | 0.8 | 约 6.25 |
| 高于怪物 +10 级(上限) | 75% | 0.5 | 约 10.0 |
场景表
下表展示了一系列场景下的预期战斗结果:
| 场景 | 熟练度调整 | 装备减免 | 装备调整 | 击数 |
|---|---|---|---|---|
| Lv1 裸装 对 Lv1 | 1.0 | 0% | 2.0 | 2.5 |
| Lv1 裸装 对 Lv5 | 1.45 | 0% | 2.0 | 约 1.7 |
| Lv1 原版钻石 对 Lv5 | 1.45 | 50% | 1.0 | 约 3.5 |
| Lv25 匹配 对 Lv25 | 1.0 | 50% | 1.0 | 5.0 |
| Lv25 匹配+保护IV 对 Lv25 | 1.0 | 53.3% | 0.93 | 5.4 |
| Lv25 匹配 对 Lv30 | 1.59 | 41.7% | 1.17 | 2.7 |
| Lv25 顶级装备 对 Lv25 | 1.0 | 75% | 0.50 | 10.0 |
| Lv50 匹配 对 Lv50 | 1.0 | 50% | 1.0 | 5.0 |
关键设计目标:
- 匹配等级下 5 击 —— 核心平衡目标。装备恰当的玩家在所有等级下都恰好能存活同等级精英怪的 5 次普通攻击。
- 裸装 2.5 击 —— 没有装备意味着通过 2.0 的装备调整承受双倍伤害。立即激励玩家装备任意护甲。
- 原版护甲有意义 —— 穿钻石护甲的 1 级玩家能从 5 级怪物处存活约 3.5 击,而非裸装的约 1.7 击。
- 附魔有意义但不占主导 —— 全部 4 件护甲上的保护 IV 为装备分数增加约 1.33,把减免从 50% 推到 53.3%。可察觉(约多 8% 的存活能力),但不至于破坏平衡。
- 等级一致性 —— 25 级和 50 级的匹配战斗都恰好产生 5 击。
- 顶级装备上限为 10 击 —— 即便拥有最好的装备(高于怪物 +10 级),玩家仍会承受有意义的伤害。
potionMultiplier(防御)
抗性药水效果根据效果等级减少传入伤害:
potionMultiplier = max(0, 1.0 - (resistanceAmplifier + 1) * resistanceDamageMultiplier)
配置键是 MobCombatSettings.yml 中的 resistanceDamageMultiplierV2(默认值:0.2)。这与原版行为一致:抗性 I = 20% 减免,抗性 V = 100% 减免(免疫)。
customBossDamageMultiplier
这是自定义 Boss 文件中的伤害倍率。默认为 1。
configMultiplier(防御)
这是 MobCombatSettings.yml 中的倍率。对于归一化战斗,它使用 normalizedDamageToPlayerMultiplier(默认 1.0)。对于缩放战斗,它使用 scaledDamageToPlayerMultiplier(默认 1.0)。对于标准怪物,它使用 damageToPlayerMultiplierV2(默认 1.0)。
specialMultiplier
这是由 Boss 技能施加的临时伤害倍率。某些 Boss 能力会在技能持续期间提高 Boss 的伤害。无技能生效时默认为 1.0。
爆炸伤害衰减
苦力怕爆炸和其他爆炸伤害(恶魂火球)会根据距爆炸中心的距离而减少。伤害倍率随距爆炸点的距离线性递减,使爆炸在远处不那么致命。
自定义 Boss 的最大生命值
EliteMobs 10 中的 Boss 生命值使用指数缩放而非线性缩放。每 5 级,Boss 生命值就精确翻倍。这确保了无论绝对等级如何,等级差的感受都保持一致。
自定义 Boss 的生命值公式为:
health = min(2.1875 * 2^(bossLevel / 5) * customBossHealthMultiplier, minecraftMaxHealth)
指数缩放
基础常数(2.1875)经过调校,使 25 级 Boss 大约有 70 点生命值。生命值示例(在下文所述的最大生命值上限生效之前):
| Boss 等级 | 生命值 | +5 级后生命值 |
|---|---|---|
| 1 | 约 2.5 | 约 5(2 倍) |
| 5 | 约 4.4 | 约 8.75(2 倍) |
| 10 | 约 8.75 | 约 17.5(2 倍) |
| 25 | 约 70 | 约 140(2 倍) |
| 50 | 约 2,240 | 约 4,480(2 倍) |
| 100 | 约 2,293,760 | 约 4,587,520(2 倍) |
Minecraft 的最大生命值上限
Minecraft 本身拒绝给予实体超过 spigot.yml 中 settings.attribute.maxHealth.max 的生命值。EliteMobs 会在启动时读取该值,如果它低于 2048,就把它提升到 2048 并保存文件。我们把这个值称为 MAX。
该上限会被应用两次 —— 一次作用于纯粹的等级公式,在 healthMultiplier 应用之后再作用一次:
effectiveHealth = min( min(2.1875 * 2^(level / 5), MAX) * healthMultiplier, MAX )
内层钳制正是即使 healthMultiplier 低于 1.0 最终也会停止缩放的原因:无论你用什么倍率,纯公式都会在第 50 级越过 2048,此后下游的一切都是在一个被钉死的数字上运算。而外层钳制对于大于 1.0 的倍率则会更早生效。
在默认服务器上(MAX = 2048):
| healthMultiplier | 典型用途 | 生命值停止增长于 | 被钉死在 |
|---|---|---|---|
| 0.25 | 增援 | 50 级 | 512 HP |
| 0.7 | 杂兵群 | 50 级 | 约 1,434 HP |
| 1.0 | 标准副本怪物 | 50 级 | 2,048 HP |
| 3.0 | 小 Boss | 42 级 | 2,048 HP |
| 7.0 | Boss | 36 级 | 2,048 HP |
| 40.0 | 世界 Boss | 23 级 | 2,048 HP |
超过这些等级之后,生命值池就被冻结了:一个 60 级世界 Boss 和一个 90 级世界 Boss 拥有完全相同的生命值。当 EliteMobs 钳制某个值时,它会记录一条指明实体、等级和倍率的警告,因此这会显示在控制台上,而不是悄无声息地发生。
如果你在大约 35 级以上、并使用较大的 healthMultiplier 值来制作内容,请自行提高 spigot.yml 中的 settings.attribute.maxHealth.max。否则你的 Boss 层级就会彼此压平 —— 一旦它们全都被钳制到同一个数字,本页后面推荐的那些 healthMultiplier 值就无法再区分不同的遭遇战了。
请注意,伤害并不会被钳制。玩家伤害仍随等级指数增长,而 Boss 生命值却被钉在上限处,因此被钳制的高等级 Boss 死得比其 healthMultiplier 所暗示的要快得多。
customBossHealthMultiplier
这是自定义 Boss 文件中的倍率。默认为 1。
对自定义 Boss 造成的伤害
玩家伤害使用指数缩放和线性缩放的相乘层级,以在各等级间保持战斗一致,同时仍让不同武器族系有不同的手感。该公式将玩家战力分为两个独立的轴——武器熟练度等级(指数式熟练度调整)和武器物品等级(线性式武器调整)——使熟练度投入和装备都对战斗力有所贡献。
相比旧版本的重要变化是,近战武器速度不再试图让每种武器类型都拥有相同的理论 DPS。剑仍然是基准点,而斧、重锤和近战三叉戟会获得受抑制的爆发补偿。本就测试表现良好的武器族系,如锄和长矛,则保留旧的攻击速度因子。
伤害公式
完整的玩家对精英怪伤害公式为:
formulaDamage = baseDamage * attackSpeedFactor * skillAdjustment * weaponAdjustment * cooldownOrVelocity * sweepMultiplier * potionMultiplier * equipmentEnchantmentMultiplier * enchantmentMultiplier * arrowDamageMultiplier
finalDamage = max(formulaDamage, 1) * damageModifier * combatMultiplier * critMultiplier
damageAfterSkills = finalDamage * (1 + sum of every active skill bonus fraction)
下面将描述每个组成部分。熟练度加成层在最后运行,即在伤害事件被触发之后;参见伤害流程中的熟练度加成。
baseDamage
每次受击的基础伤害由怪物的归一化生命值(在 healthMultiplier=1.0 时)除以击杀目标击数推导得出:
baseDamage = normalizedMobHP / 3.0
其中 normalizedMobHP = 2.1875 * 2^(mobLevel / 5)(见上方“自定义 Boss 的最大生命值”一节)。常数 3.0(TARGET_HITS_TO_KILL_MOB)意味着匹配玩家在任何等级下都恰好用 3 次剑击杀死一个标准精英怪。
注意: 自定义 Boss 文件中的 healthMultiplier 会乘以实际怪物生命值,但不影响 baseDamage。带有 healthMultiplier: 2.0 的 Boss 拥有双倍生命值,需要 6 击而非 3 击。
attackSpeedFactor
这是近战攻击速度的节奏层。它从旧的传统因子开始:
legacyFactor = 1.6 / actualAttackSpeed
1.6 的参考速度是剑的攻击速度。最终因子随后取决于武器族系:
剑、锄、长矛、未知近战,以及弓/弩的近战:
attackSpeedFactor = legacyFactor
斧、重锤和近战三叉戟:
attackSpeedFactor = sqrt(legacyFactor)
远程弹射物攻击:
attackSpeedFactor = 1.0
这意味着该系统并非试图让每种近战武器都拥有相同的 DPS。慢速爆发武器每次挥击仍然打得更重,但斧、重锤和近战三叉戟不再获得完整的 1.6 / speed 爆发倍率。锄和长矛特意保留旧因子,因为试玩测试显示其节奏已经可以接受。
匹配熟练度和武器等级下的示例:
| 武器类型 | 示例攻击速度 | 因子 | 对抗 healthMultiplier: 1.0 的公式击数 |
|---|---|---|---|
| 剑 | 1.6 | 1.00x | 3.0 |
| 斧 | 1.0 | 1.26x | 约 2.4 |
| 重锤 | 0.6 | 1.63x | 约 1.8 |
| 锄 | 4.0 | 0.40x | 7.5 |
| 三叉戟,近战 | 1.1 | 1.21x | 约 2.5 |
| 长矛,钻石示例 | 约 0.95 | 约 1.68x | 约 1.8 |
| 弓/弩弹射物 | 不适用 | 1.00x | 由弹射物速度决定蓄力 |
对于弹射物攻击,包括弓、弩和投掷的三叉戟,不应用近战攻击速度因子。弹射物的蓄力/强度改由 cooldownOrVelocity 表示。
注意: 仅远程的武器(弓、弩)在近战中使用时会被视为徒手攻击——武器等级 0、熟练度等级 1,默认攻击速度为 4.0(拳头速度)。这使它们在近战中非常弱,激励玩家在远程使用它们。
skillAdjustment
来自玩家武器熟练度等级与怪物等级之差的指数缩放:
skillAdjustment = 2 ^ ((weaponSkillLevel - mobLevel) / 7.5)
每相差 7.5 级,玩家伤害就翻倍(或减半)。这与 Boss 对玩家伤害中使用的防御型熟练度缩放速率相匹配,产生对称的战斗。
| 熟练度差 | 熟练度调整 | 效果 |
|---|---|---|
| -15 | 0.25x | 四分之一伤害 |
| -7.5 | 0.50x | 一半伤害 |
| 0(匹配) | 1.0x | 基准 |
| +7.5 | 2.0x | 双倍伤害 |
| +15 | 4.0x | 四倍伤害 |
与用于 Boss 生命值缩放的通用等级修饰量(会被钳制)不同,进攻型熟练度调整在当前代码中未被钳制。实际上,非常大的等级差(超过 +/-22 级)可能产生极端值,但在正常游戏中这不太可能发生,因为武器熟练度上限为 100。
weaponAdjustment
基于武器物品等级相对于怪物等级的两段式线性曲线。这与装备防御系统中的防御型装备减免曲线相对应。
weaponAdjustment = 0.5 + bonus
低于匹配(weaponLevel 小于或等于 mobLevel):
bonus = 0.50 * (weaponLevel / mobLevel)
从 0(无武器)到 0.50(匹配)线性缩放。未装备武器时,调整为 0.50(一半伤害)。
高于匹配(weaponLevel 大于 mobLevel):
bonus = 0.50 + (weaponLevel - mobLevel) * 0.025
bonus = min(bonus, 0.75)
高于怪物的每个武器等级固定 2.5%,bonus 上限为 0.75。需要高于怪物 +10 个武器等级才能达到上限。
| 武器场景 | bonus | 武器调整 | 对击数的影响 |
|---|---|---|---|
| 赤手空拳(无武器) | 0.00 | 0.50 | 6 击(慢 2 倍) |
| 半等级武器 | 0.25 | 0.75 | 4 击 |
| 匹配武器(weaponLevel = mobLevel) | 0.50 | 1.00 | 3 击(基准) |
| 高于怪物 +4 级 | 0.60 | 1.10 | 约 2.7 击 |
| 高于怪物 +10 级(上限) | 0.75 | 1.25 | 约 2.4 击 |
cooldownOrVelocity
对于近战武器,这是 Minecraft 的攻击冷却倍率(0.0 到 1.0)。在冷却重置前攻击会按比例减少所有公式伤害。蓄满时,cooldown = 1.0。
对于远程/弹射物攻击(弓、弩、投掷的三叉戟,以及技能生成的箭矢),这是归一化的发射速度。满拉弓速度约为 3.0;该值被归一化为 min(velocity / 3.0, 1.0),钳制在 [0, 1] 范围内。
sweepMultiplier
当剑的横扫通过 ENTITY_SWEEP_ATTACK 命中次要目标时,那些目标承受主命中伤害的 25%:
sweepMultiplier = 0.25 (次要横扫目标)
sweepMultiplier = 1.0 (主目标)
potionMultiplier(进攻)
力量和虚弱药水效果会修改玩家输出的伤害:
potionMultiplier = 1.0 + strengthBonus - weaknessPenalty
其中 strengthBonus = (strengthAmplifier + 1) * strengthDamageMultiplier,weaknessPenalty = (weaknessAmplifier + 1) * weaknessDamageMultiplier。两个配置值均默认为 0.2,与原版行为一致(力量 I = +20% 伤害,虚弱 I = -20% 伤害)。等级相同的力量和虚弱会恰好抵消。该倍率的下限为 0。
MobCombatSettings.yml 中的配置键为:
| Key | 默认值 | 描述 |
|---|---|---|
strengthDamageMultiplierV2 | 0.2 | 每级力量的额外伤害 |
weaknessDamageMultiplierV2 | 0.2 | 每级虚弱的伤害惩罚 |
equipmentEnchantmentMultiplier
玩家所装备物品上的锋利(Sharpness)与力量(Power)等级会提供一个百分比伤害加成。每一级价值 2.5%,并且这两种附魔在每件物品上都会被计入:
perItemBonus = (Sharpness level + Power level) * 0.025
equipmentEnchantmentMultiplier = 1.0 + sum of perItemBonus across all six slots
求和覆盖全部六个槽位(4 件护甲 + 主手 + 副手),因此盾牌或护甲上的锋利同样会有贡献。这与下面的 enchantmentMultiplier 是相互独立的层级,后者只涵盖怪物类型相关的附魔(亡灵杀手、节肢杀手)。
enchantmentMultiplier
亡灵杀手(Smite)与节肢杀手(Bane of Arthropods)附魔会对其各自的怪物类型提供少量伤害加成,但仅当 ItemSettings.yml 中的 useEliteEnchantments 被禁用时。当精英附魔启用时,此倍率始终为 1.0。
只有超过原版上限的附魔等级(仅精英等级)才会被计入:
enchantmentMultiplier = 1.0 + eliteLevelsAboveVanillaMax * 0.025
每个仅精英的附魔等级提供 2.5% 的伤害加成。例如,一把精英武器上的亡灵杀手 VIII(原版上限为 V)贡献 3 个精英等级:1.0 + 3 * 0.025 = 1.075(对抗亡灵生物时 7.5% 加成)。
arrowDamageMultiplier
由武器熟练度能力(如多重射击、箭雨等)生成的箭矢会携带一个存储在弹射物数据容器中的伤害倍率。这使技能生成的箭矢相比标准箭矢命中能造成更低的伤害。对于玩家正常射出的箭矢,此倍率为 1.0。
荆棘伤害
荆棘伤害使用基于怪物基础伤害的独立公式,而非标准攻击公式。只有仅精英的荆棘等级(超过原版上限 III 的等级)才会被计入:
eliteThornsLevel = totalThornsLevel - vanillaMaxThornsLevel(按每件护甲计,并对全部 4 件求和)
thornsDamage = baseDamage * eliteThornsLevel * 0.02
每个超过原版上限的精英荆棘等级贡献基础伤害的 2%。原版荆棘 III 不会触发精英荆棘伤害。例如,如果全部 4 件护甲都有荆棘 V(每件 2 个精英等级),则精英荆棘总等级为 8:每次触发为怪物基础伤害的 baseDamage * 8 * 0.02 = 16%。
damageModifier
来自自定义 Boss 文件的、针对特定武器类型的 Boss 专属伤害修饰量(damageModifiers)。这允许 Boss 对特定武器材质承受更多或更少的伤害(例如,一个抗剑但弱于斧的 Boss)。对所有未明确配置的武器类型默认为 1.0。
combatMultiplier
来自 MobCombatSettings.yml 的全局倍率(根据战斗模式为 scaledDamageToEliteMultiplier、normalizedDamageToEliteMultiplier 或 damageToEliteMobMultiplierV2)。默认为 1.0。
critMultiplier
暴击将最终伤害乘以 1.5 倍。暴击几率由玩家精英装备的暴击几率属性在全部六个装备槽位(4 件护甲 + 主手 + 副手)上求和得出,然后被封顶:
critChance = min(sum of all six slots, maximumCriticalStrikeChance)
maximumCriticalStrikeChance 位于 MobCombatSettings.yml 中,默认为 0.40(40%)。若没有这个上限,在六个槽位上堆叠暴击几率可以达到 100%,此时每一次命中都是"暴击" —— 暴击不再读起来像一个事件,却仍然照付 1.5 倍的全额收益。正因如此,不建议使用高于 0.5 的值。无论配置成什么,该上限都会被钳制到 [0.0, 1.0] 范围内。
暴击是在伤害事件触发之前应用的,这使它与下文所述的加法式熟练度加成层保持为彼此独立的相乘步骤,因此再大的熟练度加成也永远不会吞掉暴击。
修饰量钳制
通用等级修饰量(getLevelModifierFromDifference,即 2 ^ (levelDifference / 5))被钳制在 MIN_MODIFIER = 0.125 和 MAX_MODIFIER = 8.0 之间,以防止在非常大的等级差下出现极端值。由于它每 5 级翻一倍,这些上下限在 +/-15 级差时达到。
该修饰量是一个通用辅助函数,并不是上面那些公式中的一步。Boss 生命值直接来自 2.1875 * 2^(level / 5),受最大生命值上限约束,而不是受这个钳制约束;玩家对精英怪与精英怪对玩家的伤害公式也都不会调用它。在推算实际战斗输出时,不要使用 0.125/8.0。
然而,玩家对精英怪和精英怪对玩家伤害公式中使用的进攻型和防御型熟练度调整(calculateOffensiveSkillAdjustment 以及 eliteToPlayerDamageFormula 中的熟练度调整)在当前代码中未被钳制。实际上,熟练度等级受最高熟练度等级(100)限制,这自然地限制了这些值的范围。
真正约束熟练度驱动输出的钳制,是暴击几率上限和两个防御减伤上限,全都在下一节中说明。
伤害流程中的熟练度加成
上面所有内容描述的都是不含加成的曲线。真实玩家每种武器类型最多还有三个生效的熟练度加成,它们叠加在公式之上。如果你仅凭这些曲线来平衡一场遭遇战,你就会一贯低估玩家实际造成的伤害。
熟练度加成的平衡数值 —— 数值、缩放、触发几率、冷却、层数 —— 都是插件中的硬编码常量,不是配置项。skillbonuses/*.yml 文件只承载表现层内容(显示名称、描述、解锁层级、菜单图标)。已废弃的平衡键(baseValue、scalingPerLevel、procChance、cooldownSeconds、maxStacks、stackBonus)会在加载时被主动从现有文件中剥除,以免它们看起来像是可以调节的旋钮。因此在这次改版接受验证期间,每台服务器跑的都是完全相同的战斗数值。
这一层在哪里运行(进攻侧)
熟练度加成是玩家对精英怪路径上的最后一步:
... formula → damageModifier × combatMultiplier → critical hit (×1.5)
→ EliteMobDamagedByPlayerEvent fires (other plugins can modify)
→ skill bonuses applied
→ final damage set
由于暴击在事件之前应用,而熟练度层在事件之后,两者永远不会互相争抢 —— 熟练度加成不可能覆盖或吸收掉一次暴击。
进攻型加成按加法叠加
每个生效的加成只贡献它自己的加成部分,然后把这些部分相加:
totalMultiplier = 1.0 + (m1 - 1.0) + (m2 - 1.0) + (m3 - 1.0) + ...
因此三个各为 1.2 倍的加成得到的是 1.6 倍,而不是相乘复利会给出的 1.73 倍。这对每一种武器类型都一致适用。
这与此前的行为不同:以前只有斧使用"最大者胜"的规则 —— 只有最大的那一个加成生效,并且任何一次熟练度超过 1.5 倍的斧类命中都会静默地把暴击整个丢弃。让某一个武器族系跑在不同的叠加规则上,也让斧类伤害无法与其他一切进行比较。
同样的加法合并也涵盖了从目标(而非攻击者)身上读取的跨技能减益 —— 猎人印记、死亡印记、审判、破绽以及已就绪的还击,全都作为额外的加法项被折算进来。
实际影响: 一名带着三个精挑细选的进攻型加成的玩家,在触发特效之前实际输出大致在已公布曲线的 1.4 倍到 2 倍之间,冷却类能力命中时还会更高。"3 次剑击"这个设计目标描述的是一名没有选择任何加成的玩家。
防御型加成有两个上限
护甲熟练度加成会降低受到的伤害,而与进攻侧不同,它们是按相乘方式复合的 —— 每一个都把已经减免过的伤害再送进 damage * (1 - reduction)。这正是需要两个独立限制的原因:
| 限制 | 数值 | 作用范围 |
|---|---|---|
| 单技能钳制 | 80% | 约束任何单个技能的减伤 |
| 总量上限 | 85% | 约束每次命中中所有技能来源的合计减伤 |
仅有单技能钳制是不够的:三个各自处于 80% 的来源相乘后会得到 0.2 x 0.2 x 0.2 = 99.2% 的总减伤 —— 实际上就是免疫,而每一个单独的钳制却仍然完好无损。
总量上限堵住了这个缺口。它在最后一步只应用一次:比较进入熟练度流程之前的伤害与流程输出后的伤害,并拒绝让这个比值低于 1 - 0.85:
finalDamage = max(damageAfterSkills, incomingDamage * 0.15)
基于比值而不是基于减伤量的累加求和,正是它稳健的原因。各个分支的形态各不相同 —— 有的相乘、有的直接赋值、有的叠层、有的读取配置 —— 而贡献者的顺序和数量对结果都毫无影响。一套堆满防御的构筑,每次受击都至少要吃下 15%。
完全免伤是被刻意排除在该上限之外的。 闪避、背水一战和圣盾会直接取消伤害事件,而不是降低伤害。它们是全有或全无的机制,不是叠加式减伤,因此无论 85% 的下限如何,它们都会把伤害带到零。
一个一刀切的总量上限是把钝器:所有堆叠防御的构筑都会撞上同一堵墙,而一旦撞到,玩家塞进去的第三个加成就一文不值了。未来的预期方向是对连续减伤采用收益递减,而不是硬性上限。
计算示例
示例 1:Lv25 匹配剑 对 Lv25 精英怪(近战)
玩家: weaponSkillLevel=25, weapon=精英剑 (itemLevel=25)
怪物: level=25, healthMultiplier=1.0
步骤 1 -- 基础伤害: mobHP(25) = 2.1875 * 2^5 = 70.0, baseDamage = 70.0/3 = 23.33
步骤 2 -- 攻击速度因子: 剑速度=1.6, factor = 1.6/1.6 = 1.0
步骤 3 -- 熟练度调整: 2^((25-25)/7.5) = 2^0 = 1.0
步骤 4 -- 武器调整: weaponLevel(25) == mobLevel(25), bonus=0.50, adj = 1.0
步骤 5 -- 冷却: 蓄满 = 1.0
步骤 6 -- 横扫: 主目标 = 1.0
formulaDamage = 23.33 * 1.0 * 1.0 * 1.0 * 1.0 * 1.0 = 23.33
怪物 HP = 70.0 -> 击杀所需击数 = 70.0 / 23.33 = 3.0
示例 2:Lv25 斧 对 Lv25 精英怪(受抑制的爆发补偿)
玩家: weaponSkillLevel=25, weapon=精英斧 (itemLevel=25)
怪物: level=25, healthMultiplier=1.0
步骤 1 -- 基础伤害: 23.33(同上)
步骤 2 -- 传统攻击速度因子: 1.6/1.0 = 1.6
步骤 3 -- 斧爆发抑制: sqrt(1.6) = 1.265
步骤 4 -- 熟练度调整: 1.0(匹配)
步骤 5 -- 武器调整: 1.0(匹配)
步骤 6 -- 冷却: 蓄满 = 1.0
formulaDamage = 23.33 * 1.265 * 1.0 * 1.0 * 1.0 = 29.52
击杀所需击数 = 70.0 / 29.52 = 2.37
示例 3:Lv25 锄 对 Lv25 精英怪(传统快速武器因子)
玩家: weaponSkillLevel=25, weapon=精英锄 (itemLevel=25)
怪物: level=25, healthMultiplier=1.0
步骤 1 -- 基础伤害: 23.33(同上)
步骤 2 -- 攻击速度因子: 锄速度=4.0, factor = 1.6/4.0 = 0.4
步骤 3 -- 熟练度调整: 1.0(匹配)
步骤 4 -- 武器调整: 1.0(匹配)
步骤 5 -- 冷却: 蓄满 = 1.0
formulaDamage = 23.33 * 0.4 * 1.0 * 1.0 * 1.0 = 9.33
击杀所需击数 = 70.0 / 9.33 = 7.5
示例 4:Lv20 弓 对 healthMultiplier=2.0 的 Lv25 精英怪(远程,等级偏低)
玩家: weaponSkillLevel=20, weapon=精英弓 (itemLevel=20)
怪物: level=25, healthMultiplier=2.0, 实际 HP = 70.0 * 2 = 140.0
步骤 1 -- 基础伤害: 23.33(来自归一化 HP,而非实际 HP)
步骤 2 -- 攻击速度因子: 远程,不适用 = 1.0
步骤 3 -- 熟练度调整: 2^((20-25)/7.5) = 2^(-0.667) = 0.63
步骤 4 -- 武器调整: weaponLevel(20) < mobLevel(25), bonus = 0.5*(20/25) = 0.4, adj = 0.9
步骤 5 -- 箭矢速度: 满拉弓 = 1.0
formulaDamage = 23.33 * 1.0 * 0.63 * 0.9 * 1.0 = 13.23
击杀所需击数 = 140.0 / 13.23 = 10.6 击
(熟练度和武器都等级偏低,对抗 healthMultiplier=2.0 的怪物)
DamageBreakdown 调试工具
EliteMobs 内置了一个 DamageBreakdown 调试工具,可实时追踪并显示伤害公式的每个组成部分。为某玩家启用后,它会记录每一层(基础伤害、攻击速度因子、熟练度调整、武器调整、冷却、横扫、荆棘等),并可输出:
- 完整的格式化分解,显示所有等级、公式组成部分、倍率以及最终计算出的伤害。
- 紧凑的单行摘要,便于游戏内快速参考。
- 预期值与实际值的对比,标记出大于 10% 的差异,有助于诊断插件冲突或配置错误的 Boss 文件。
这主要是一个开发和测试工具。服务器管理员可以用它来验证特定遭遇战中的战斗是否按预期运作。
熟练度经验进度
武器和护甲熟练度通过击杀精英怪赚取经验来升级。经验系统使用三次方的等级需求,以创造平滑的进度,并在 100 级以上设有软上限。
击杀获得的经验: 从一个怪物获得的经验等于 mobLevel^2。等级越高的怪物按比例授予越多经验。
升到下一级所需经验:
对于 1 到 100 级:
xpToNextLevel = 8.5 * L^3
对于 100 级以上(软上限):
xpToNextLevel = 8.5 * L^3 * (1 + ((L - 100)^2 / 100))
软上限倍率在 100 级处是连续的(倍率 = 1.0),并在其之上呈二次方增长。在 150 级时,倍率约为 26 倍,使进一步进度几乎不可能。出于实用目的,最高熟练度等级为 100,尽管系统允许以指数级递增的代价超越它继续进度。
其他战斗机制
防止秒杀
EliteMobs 防止 Boss 一击秒杀玩家。无论伤害计算结果如何,伤害都被限制在(玩家的 generic_max_health 属性 - 1),确保玩家总能以至少 1 点生命值存活。该上限使用 generic_max_health 属性而非当前生命值,因此它考虑了所有最大生命值修饰量(护甲熟练度加成、药水效果等)。
盾牌格挡
当玩家用盾牌格挡时,传入伤害减少 80%(在 MobCombatSettings 中配置为 blockingDamageReduction)。格挡会完全抵消远程弹射物攻击(弹射物会被移除)。
护甲熟练度生命值加成
玩家根据其护甲熟练度等级获得额外的最大生命值。每超过 1 级授予 +2 点生命值(+1 颗心)。这作为属性修饰量应用,是玩家在更高等级提高生存能力的主要方式。
等级缩放总结
下表总结了等级差如何在两个方向上影响战斗:
| 等级差 | Boss 生命值修饰量 | Boss 伤害修饰量 | 难度 |
|---|---|---|---|
| -10(玩家越级) | 0.25x 生命值 | 约 0.4x 伤害 | 微不足道 |
| -5(玩家越级) | 0.5x 生命值 | 约 0.6x 伤害 | 非常简单 |
| 0(同级) | 1.0x 生命值 | 1.0x 伤害 | 平衡 |
| +5(玩家欠级) | 2.0x 生命值 | 约 1.6x 伤害 | 有挑战 |
| +10(玩家欠级) | 4.0x 生命值 | 约 2.5x 伤害 | 非常困难 |
缩放战斗
缩放战斗是一种替代战斗模式,专为主世界的自然精英怪和事件 Boss而设计。它让 Boss 模拟成与玩家同等级,使装备和熟练度仍然重要,但怪物显示的等级并不重要。其结果是,无论进度等级如何,每位玩家面对同一只主世界怪物时都面临一场同样公平的战斗。
缩放战斗与归一化战斗有何不同
EliteMobs 有三种战斗模式:
| 模式 | 用于 | 等级是否重要? | 配置键 |
|---|---|---|---|
| 标准 | 没有特殊标志的基础怪物 | 是——伤害和生命值随怪物的实际等级缩放 | damageToEliteMobMultiplierV2 / damageToPlayerMultiplierV2 |
| 归一化 | 副本和区域 Boss(normalizedCombat: true) | 是——但 Boss 使用单独的归一化基准,以实现一致的副本平衡 | normalizedDamageToEliteMultiplier / normalizedDamageToPlayerMultiplier |
| 缩放 | 自然的主世界精英怪和事件 Boss(scaledCombat: true 或全局配置) | 否——Boss 被模拟为玩家的等级 | scaledDamageToEliteMultiplier / scaledDamageToPlayerMultiplier |
关键区别:在归一化战斗中,50 级 Boss 比 10 级 Boss 更难。在缩放战斗中,两者都感觉像同等级战斗,因为系统假装 Boss 就是玩家所处的任意等级。
工作原理
伤害(Boss 对玩家)
当一个缩放战斗的 Boss 伤害玩家时,伤害公式将 Boss 的等级设为等于玩家的护甲熟练度等级:
mobLevel = armorSkillLevel (而非 Boss 的实际等级)
这意味着熟练度调整变为 1.0(因为 bossLevel - armorSkillLevel = 0),并且伤害完全取决于玩家的装备和护甲熟练度——而非怪物存储的等级。公式的其余部分(基础伤害、装备调整、药水等)与上文各节所述完全相同。
伤害(玩家对 Boss)
当玩家攻击一个缩放战斗的 Boss 时,公式会:
- 将 Boss 模拟为玩家的武器熟练度等级 —— 暂时把怪物当作与玩家武器熟练度同等级来对待。
- 针对该模拟等级运行标准伤害公式 —— 产生一个“对抗同等级怪物的伤害”结果。
- 重新缩放到 Boss 的实际生命值 —— 将公式伤害从模拟怪物生命值的百分比转换为 Boss 实际生命值池的相同百分比。
simulatedMobLevel = playerWeaponSkillLevel
formulaDamage = playerToEliteDamageFormula(player, eliteEntity at simulatedMobLevel)
damagePercentage = formulaDamage / simulatedMobHP
actualDamage = damagePercentage * actualBossMaxHP
这意味着,无论 Boss 被存储为什么等级,装备恰当的玩家总能以相同的、与武器相关的击数击杀一个缩放战斗的 Boss。对于 healthMultiplier: 1.0,基准大约是 3 次剑击;其他武器族系遵循上文所述的攻击速度因子。
战利品与奖励
对于缩放战斗的怪物,战利品奖励基于玩家的战斗等级而非怪物的等级。这意味着高等级玩家击杀一个缩放的主世界精英怪会获得与其进度相称的战利品,而低等级玩家击杀同一只怪物则获得相应较低等级的战利品。
等级显示
缩放战斗的实体在其名牌中显示一个符号而非数字等级,因为它们的实际等级对玩家而言无关紧要:
- 标准缩放实体(healthMultiplier 1.0 或更低):显示一个剑符号(默认:
「⚔」) - 高威胁缩放实体(healthMultiplier 高于 1.0):显示一个骷髅符号(默认:
☠)
这些符号可在 MobCombatSettings.yml 中通过 scaledStandardLevelSymbol 和 scaledHighThreatLevelSymbol 自定义。
启用缩放战斗
用于所有自然精英怪(全局配置)
在 MobCombatSettings.yml 中:
useScaledCombatForNaturalElites: true
这在 EliteMobs 10 中默认启用。启用后,主世界中所有自然生成的精英怪会自动使用缩放战斗。使用 normalizedCombat 的副本 Boss 不受此设置影响。
用于单个自定义 Boss
在自定义 Boss 配置文件中:
scaledCombat: true
这会强制某个特定的自定义 Boss 使用缩放战斗,无视全局设置。适用于事件 Boss 或应对所有玩家都同样公平的自定义主世界遭遇战。
注意: 如果一个 Boss 有 normalizedCombat: true(或者它是一个在全局启用了归一化的区域/实例 Boss),归一化战斗优先,该 Boss 将不会使用缩放战斗——除非在 Boss 文件中明确设置了 scaledCombat: true,在这种情况下缩放战斗获胜。
配置键
以下 MobCombatSettings.yml 键控制缩放战斗的行为:
| Key | 默认值 | 描述 |
|---|---|---|
useScaledCombatForNaturalElites | true | 为所有自然生成的精英怪启用缩放战斗 |
scaledDamageToEliteMultiplier | 1.0 | 玩家对缩放战斗 Boss 伤害的全局倍率 |
scaledDamageToPlayerMultiplier | 1.0 | 缩放战斗 Boss 对玩家伤害的全局倍率 |
scaledStandardLevelSymbol | 「⚔」 | 标准缩放实体名牌中显示的符号 |
scaledHighThreatLevelSymbol | ☠ | healthMultiplier 高于 1.0 的缩放实体显示的符号 |
useRecommendedHealthScaling | true | 为自然精英怪使用 EliteMobs 10 的指数式生命值缩放(false = 传统线性值,见下文) |
何时使用各种战斗模式
- 归一化战斗(
normalizedCombat: true):用于副本、实例和区域 Boss,在这些场合你希望对难度进行精确控制,且 Boss 有一个期望玩家与之匹配的固定等级。 - 缩放战斗(
scaledCombat: true或全局设置):用于主世界内容、事件 Boss,以及任何应让所有等级玩家拥有相同体验的遭遇战。 - 标准战斗(两个标志都不设):用于那些原始等级应直接决定难度的怪物,例如出生点附近随距离缩放的精英怪。
传统生命值缩放(useRecommendedHealthScaling: false)
当 MobCombatSettings.yml 中的 useRecommendedHealthScaling 设为 false 时,自然精英怪(非副本或区域 Boss)会使用一个简化的传统公式,而非指数缩放:
baseDamage = level * 2
mobHealth = baseDamage * 3 (TARGET_HITS_TO_KILL_MOB)
这会产生小得多的生命值和伤害数值,更接近 EliteMobs 9 的行为。此设置的存在是为了向后兼容那些围绕旧版 EliteMobs 战斗数值构建集成的服务器。不推荐使用,因为它会使玩家进度感觉更平淡。此设置不影响归一化的区域 Boss 战斗。
将这些数据用于副本
注意:这里假设你正在使用 normalizedCombat 数值! 那些数值是专门为更轻松地平衡副本而设的。
Boss 难度的一部分在于让它拥有适合该遭遇战的生命值和伤害。然而,请记住这只是其中一部分,技能同样重要。
以下内容以自定义 Boss 文件的正确格式呈现。
简易快速算法
借助指数缩放系统,healthMultiplier 和 damageMultiplier 会直接缩放基础值:
-
healthMultiplier为 1.0 意味着同等级玩家大约需要 3 次剑击才能杀死该 Boss。其他近战武器因攻击速度因子而异:受抑制的爆发武器(如斧、重锤和近战三叉戟)所需击数比剑少,而锄所需击数更多,因为它们保留了传统的快速武器因子。倍率为 2.0 时生命值翻倍,0.5 时减半,以此类推。 -
damageMultiplier为 1.0 意味着该 Boss 大约 5 击就能杀死一名装备恰当的同等级玩家。倍率越高 Boss 越致命,倍率越低则越安全。
由于缩放是指数式的,这些与武器相关的击数无论 Boss 等级如何都保持一致——一个 healthMultiplier: 2.0 的 10 级 Boss,被同等级玩家攻击时,所需的相对于剑的击数与一个 healthMultiplier: 2.0 的 80 级 Boss 相同。
请记住,玩家往往优先升级武器,最终常常装备远逊于武器的护甲。除非你设计非常特定的远程战斗竞技场,否则你大概不会想让每次受击造成大量伤害。 请试玩测试你的内容!
这些击数有两点没有计入:
- 熟练度加成。 上面每一个击数都假设没有任何加成生效。带着三个进攻型加成的玩家明显杀得更快,而带着三个防御型加成的玩家明显活得更久(直到 85% 的总量上限)。请把这些数字当作玩家战力的下限,而不是预测值。
- 最大生命值上限。 超过 Minecraft 的最大生命值上限中列出的等级之后,
healthMultiplier就完全不再增加生命值了。尤其是世界 Boss 预设,在默认服务器上从 23 级起就会被钳制。
创建一个普通副本怪物
借助 normalizedCombat 的缩放,你可以应用一个极其简约的配置:
normalizedCombat: true
healthMultiplier: 1.0 #约 3 次剑击杀死
damageMultiplier: 1.0 #存活约 5 击
注意:由于 1.0 是默认值,这意味着你也可以什么都不定义。
创建杂兵群
杂兵群数量众多但不太危险:
normalizedCombat: true
healthMultiplier: 0.7 #约 2 次剑击杀死
damageMultiplier: 0.5 #存活约 10 击
创建增援
增援应该很容易死亡,但在伤害上构成威胁(这些数值推荐用于 4 个以上的近战实体,实际使用可能有所不同):
normalizedCombat: true
healthMultiplier: 0.25 #约 1 次剑击杀死
damageMultiplier: 0.6 #存活约 8 击
创建小 Boss
小 Boss 应能稳住阵脚,对玩家构成机制上的挑战。它应该是一场持续片刻的技术考验,但不至于极其致命:
normalizedCombat: true
healthMultiplier: 3.0 #约 10 次剑击杀死
damageMultiplier: 1.2 #存活约 4 击
创建 Boss
Boss 是真正的挑战,是副本中层层铺垫的高潮,是一场倾其所有的真正技术考验。遭遇战应该漫长,死亡应是当下的威胁。
normalizedCombat: true
healthMultiplier: 7.0 #约 23 次剑击杀死
damageMultiplier: 1.4 #存活约 3.5 击
创建世界 Boss
世界 Boss 很危险,但最重要的是它们拥有大量生命值,并召唤大量增援/拥有大量范围攻击。它们旨在让大批玩家用一场精英遭遇战所应持续的最长时间来对抗。它们不太致命,但拥有大量能让准备不足的玩家应接不暇的机制。
normalizedCombat: true
healthMultiplier: 40.0 #约 120 次剑击杀死
damageMultiplier: 1.5 #存活约 3 击
这些只是粗略的推荐值,任何最终数值都应围绕遭遇战本身进行调整。