伤害
伤害是从某个实体的当前生命中所减去的生命值的数值。有众多实体都可以造成它,最显著的是武器、敌怪、和 NPC(以及所有相关的射弹)。此外,它也可能是由环境危险(例如多刺灌木、机关、或熔岩)和游戏机制(例如掉落伤害、溺水、或减益)所造成的。通常只能对具有生命属性的实体造成伤害,即玩家、大多数敌怪、和 NPC。大多数伤害还会对受伤害的实体造成击退,并使实体变得短暂无敌。
当实体受到伤害时,在伤害实际应用于实体之前,会执行若干增减伤害量的计算(取决于多个因素;参见下文)。因此,任何造成伤害的实体的伤害属性数据通常都只是其所造成的平均伤害。大多数打击的伤害都会偏离此平均值。
玩家所持的武器所造成的伤害分为四种:近战、远程、魔法、和召唤。配饰、增益、和其他强化伤害或降低伤害的效果常常只会影响这些伤害类型其中之一。有几种武器以及所有其他伤害性实体未被归类为这四种类型中的任何一种。
伤害类型
近战
近战武器用于近程至中程战斗。它们的主要特征是使用时不消耗弹药或魔力。它们大致分为剑、矛、连枷、回旋镖、和悠悠球(电脑版、主机版、和移动版)。还有其他几种近战武器无法被分类到上述类型中。
总共有 189 种不同的近战武器。
远程
远程武器用于远距离战斗。它们的主要特征是需要有弹药才能使用此武器。它们大致可分为弓、连弩、枪、和发射器。所有消耗品武器也被分类为远程武器。虽然回旋镖是丢出的,但泰拉瑞亚将它们归类为近战武器。
总共有 113 种不同的远程武器。
魔法
魔法武器用于中程至远程战斗。它们的主要特征是每次使用时都会消耗魔力。由于它们有非同寻常的独特攻击形式,大部分魔法武器都难以对其进行分类。
总共有 77 种不同的魔法武器。
召唤
召唤武器包含召唤法杖和鞭(电脑版、主机版、和移动版)。使用召唤法杖会生成通过自动攻击敌怪来在战斗中帮助玩家的次要角色。被召唤的角色要么是可移动的,即跟随玩家移动(仆从),要么是静止的,即停在其被召唤的位置(哨兵)。鞭是近程至中程武器,会提高仆从对被击中的敌怪的伤害,且会将其标记,使得仆从集中攻击这些敌怪。
在 1.4.4(电脑版、主机版、和移动版) 前,召唤伤害在大部分工具提示中被称为“仆从伤害”。
总共有 47 种不同的召唤武器。
计算
武器伤害
首先,应用武器的修饰语的效果:
武器伤害 = 基础武器伤害 × 修饰语伤害倍率
之后,所有伤害奖励(来自配饰、盔甲、增益、配饰的修饰语、坐骑,等等)会被添加到对应伤害类型(近战、远程、魔法、或召唤)的伤害倍率中。默认伤害倍率为 1,意味着武器在没有任何奖励时造成 100% 基础伤害。[2]
- 例如,装备游侠徽章会使远程伤害倍率增加 0.15;激活灵视增益会使魔法伤害倍率增加 0.05。
- 对于全体伤害奖励(即“伤害提高x%”),奖励数值会被增加到所有伤害类型中。例如,装备毁灭者徽章会使近战、远程、魔法、和召唤伤害倍率均增加 0.1。
伤害值随后使用下列公式计算,向下取整。
- 对于近战、魔法、和召唤武器:[3]
最终伤害 = 武器伤害 × 对应伤害倍率
- 对于远程武器,武器伤害和弹药伤害伤害会分别计算:
在计算武器的伤害时,远程伤害倍率会先被蘑菇矿盔甲头盔和魔法箭袋及其升级的奖励更改:[4]
- 此后计算武器伤害:
最终武器伤害 = 武器伤害 × 武器远程倍率
在计算武器的伤害时,首先会直接使用远程伤害倍率:[5]
提高后的远程伤害 = 远程武器伤害 × 远程伤害倍率
蘑菇矿奖励
为 0.15;魔法箭袋会提供 0.1 的箭袋奖励
。
如果武器使用的弹药物品造成高于 0 伤害且造成远程伤害,远程伤害倍率会直接用于计算其伤害:[6][7]
弹药伤害 = 基础弹药伤害× 远程伤害倍率
如果弹药造成 0 伤害或更低(即拥有默认为 -1 的伤害值[8][9])或不造成远程伤害,弹药伤害
将直接为弹药物品的伤害值。因此,坠落之星、凝胶、和沙块实际上会使最终伤害降低 1。
在检查弹药物品的伤害时,部分效果会提供额外伤害
,会直接加入伤害值中:[10][11]
最终伤害将会是武器伤害、弹药伤害、和额外伤害的总和。如果激活了箭术增益且弹药是箭或尖桩,最终伤害会被乘以 1.1(电脑版、主机版、和移动版) / 1.2(前代主机版、和3DS版):[10][11]
最终伤害 = (最终武器伤害 + 弹药伤害 + 额外伤害) × 箭术增益
此外,在远程武器的工具提示中所示的伤害具有不同的公式:[12][13]
- (电脑版、主机版、和移动版)
工具提示伤害 = 武器伤害 × 武器远程倍率 × 箭术增益
- (前代主机版、和3DS版)
工具提示伤害 = 武器伤害 × 远程伤害倍率 × (1 + 蘑菇矿奖励 + 箭袋奖励) × 箭术增益
示例
神级彩虹猫之刃(电脑版、主机版、和移动版)、海龟盔甲、险恶战士徽章、险恶复仇者徽章、险恶毁灭者徽章、险恶机械手套、险恶天界石、和吃得好增益。
神级叶绿连弩和木箭、使用蘑菇矿头饰的蘑菇矿盔甲、险恶游侠徽章、险恶复仇者徽章、险恶毁灭者徽章、险恶魔法箭袋、和箭术增益。
|
对实体的伤害
除了武器伤害以外,对实体造成的伤害会被许多其他因素影响:,附近是否有相关的敌怪旗、玩家的盔甲穿透、和目标的防御,等等。下列公式被用于计算中:[14][15]
- 无旗帜时的伤害:
考虑旗帜后的伤害 = 最终伤害
; - 有旗帜时的伤害:
考虑旗帜后的伤害 = 系数 × 最终伤害
; - 计算伤害时,防御的效果:
防御对伤害的减免量 = ⌈敌怪防御/2⌉
- 计算随机的伤害浮动:
伤害浮动 = 伤害 × 系数2
,其中系数2
是 0.85 和 1.15 之间的随机值(闭区间)。- 结果取整到最近的整数。如果小数部分为 0.5,则改为取整到最近的偶数。
游戏使用不同的方法来决定近战武器和射弹的伤害。[16]
近战武器
- 应用旗帜的效果来获得
考虑旗帜后的伤害
。计算使用的是上方计算得到的最终伤害
。 - 应用惊人一刻增益的效果,将
考虑旗帜后的伤害
乘以 5。 - 应用武器效果对伤害的影响(例:(电脑版、主机版、和移动版) 毁灭刃的效果)。
- 应用随机伤害浮动。
- 应用盔甲穿透的效果。
- (前代主机版、和3DS版) 应用灵液减益的效果。
- 应用防御的效果,从伤害中减去
防御对伤害的减免量
。若结果少于 1,将伤害设为 1。 - 若攻击是暴击,将伤害乘以 2。
- 如果目标是旋转中的火月怪,将伤害乘以 3。[17]
射弹
- 计算射弹的基础伤害,使用上方计算得到的
最终伤害
。默认情况下这等于最终伤害
,但对于随着额外召唤来变强的仆从(例:星尘之龙),伤害则由其对应页面上的公式计算得到。 - 应用随机伤害浮动。
- 应用旗帜的效果来获得
考虑旗帜后的伤害
。 - 若射弹是近战射弹,应用惊人一刻增益的效果,将
考虑旗帜后的伤害
乘以 5。 - 应用盔甲穿透的效果。
- (前代主机版、和3DS版) 应用灵液减益的效果。
- 应用防御的效果,从伤害中减去
防御对伤害的减免量
。若结果少于 1,将伤害设为 1。 - 若攻击是暴击,将伤害乘以 2。
- 如果目标是旋转中的火月怪,将伤害乘以 3。[17]
坐骑
部分坐骑拥有其自己的攻击方式(发射射弹)。其伤害计算和射弹的相同,但它们不受到伤害类型强化影响,且仅受到特定类型的暴击率影响。没有设定伤害类型的射弹无法造成暴击。[18]
坐骑 | 基础伤害 | 伤害类型 | |
---|---|---|---|
矿车升级包(电脑版、主机版、和移动版)(任何矿车) | 60 | 无 | |
鳞甲怪坐骑(电脑版、主机版、和移动版) | 150 | 无 | |
圣诞老人坦克坐骑(电脑版、主机版、和移动版)(子弹) | 100 | 远程 | |
圣诞老人坦克坐骑(电脑版、主机版、和移动版)(火箭) | 120 | 远程 |
特定的坐骑在接触时会对实体造成伤害。其伤害计算如下(部分公式和上方的相同):[19]
- 若受召唤伤害影响,则将
基础伤害
乘以玩家的召唤伤害。 - 应用旗帜的效果。
- 应用盔甲穿透的效果。
- (前代主机版、和3DS版) 应用灵液减益的效果。
- 应用防御的效果,从伤害中减去
防御对伤害的减免量
。若结果少于 1,将伤害设为 1。 - 如果目标是旋转中的火月怪,将伤害乘以 3。[17]
- 注意没有伤害浮动,且这些伤害不能造成暴击。
坐骑 | 基础伤害 | 受召唤伤害影响 | |
---|---|---|---|
史莱姆坐骑(电脑版、主机版、前代主机版、和移动版) | 40 | ✔️ | |
羽翼史莱姆坐骑(电脑版、主机版、和移动版) | |||
高尔夫球车(电脑版、主机版、和移动版)(撞上实体) | |||
高尔夫球车(电脑版、主机版、和移动版)(落到实体上) | 40 | ❌ | |
花马坐骑(电脑版、主机版、和移动版) | 30 | ✔️ | |
骏马坐骑(电脑版、主机版、和移动版) | |||
黑马坐骑(电脑版、主机版、和移动版) | |||
独角兽坐骑(电脑版、主机版、和移动版) | 60 | ✔️ | |
山羊坐骑(电脑版、主机版、和移动版) | |||
海盗船坐骑(电脑版、主机版、和移动版) | 100 | ✔️ | |
阴森树坐骑(电脑版、主机版、和移动版) | 120 | ✔️ | |
蛇蜥怪坐骑(电脑版、主机版、和移动版) | 90 | ✔️ |
矿车
矿车造成的接触伤害的计算如下:
- 通过矿车 § 备注中的公式计算基础伤害。
- 应用随机伤害浮动。
- 应用旗帜的效果。
- (前代主机版、和3DS版) 应用灵液减益的效果。
- 应用盔甲穿透的效果。
- 应用防御的效果,从伤害中减去
防御对伤害的减免量
。若结果少于 1,将伤害设为 1。 - 如果目标是旋转中的火月怪,将伤害乘以 3。[17]
另见
参考
- ↑ 信息来自 电脑版 1.4.4.9 源代码,
Terraria.Item.cs
中的Prefix()
,Terraria.Player.cs
中的GetWeaponDamage()
,Terraria.Player.cs
中的GrantArmorBenefits()
,Terraria.Player.cs
中的GrantPrefixBenefits()
,Terraria.Player.cs
中的ItemCheck_Shoot()
,和Terraria.Player.cs
中的PickAmmo()
方法。 - ↑ 信息来自 电脑版 1.4.4.9 源代码,
Terraria.Mount.cs
中的UpdateEffects()
,Terraria.Player.cs
中的ApplyEquipFunctional()
,Terraria.Player.cs
中的GrantArmorBenefits()
,和Terraria.Player.cs
中的GrantPrefixBenefits()
方法。 - ↑ 信息来自 电脑版 1.4.4.9 源代码,
Terraria.Player.cs
中的ItemCheck()
,Terraria.Player.cs
中的GetWeaponDamage()
,和Terraria.Player.cs
中的ItemCheck_OwnerOnlyCode()
方法。 - ↑ 信息来自 电脑版 1.4.4.9 源代码,
Terraria.Player.cs
中的ItemCheck()
和Terraria.Player.cs
中的GetWeaponDamage()
方法。 - ↑ 信息来自 电脑版 1.4.3.6 源代码,
Terraria.Player.cs
中的ItemCheck()
和Terraria.Player.cs
中的GetWeaponDamage()
方法。 - ↑ 信息来自 电脑版 1.4.4.9 源代码,
Terraria.Player.cs
中的ItemCheck()
,Terraria.Player.cs
中的GetWeaponDamage()
,Terraria.Player.cs
中的ItemCheck_OwnerOnlyCode()
,Terraria.Player.cs
中的ItemCheck_Shoot()
,和Terraria.Player.cs
中的PickAmmo()
方法。 - ↑ 信息来自 电脑版 1.4.3.6 源代码,
Terraria.Player.cs
中的ItemCheck()
,Terraria.Player.cs
中的GetWeaponDamage()
,Terraria.Player.cs
中的ItemCheck_Shoot()
,和Terraria.Player.cs
中的PickAmmo()
方法。 - ↑ 信息来自 电脑版 1.4.4.9 源代码,
Terraria.Item.cs
中的ResetStats()
方法。 - ↑ 信息来自 电脑版 1.4.3.6 源代码,
Terraria.Item.cs
中的ResetStats()
方法。 - ↑ 10.0 10.1 信息来自 电脑版 1.4.4.9 源代码,
Terraria.Player.cs
中的PickAmmo()
方法。 - ↑ 11.0 11.1 信息来自 电脑版 1.4.3.6 源代码,
Terraria.Player.cs
中的PickAmmo()
方法。 - ↑ 信息来自 电脑版 1.4.4.9 源代码,
Terraria.Main.cs
中的MouseText_DrawItemTooltip_GetLinesInfo()
方法。 - ↑ 信息来自 电脑版 1.4.3.6 源代码,
Terraria.Main.cs
中的MouseText_DrawItemTooltip_GetLinesInfo()
方法。 - ↑ 信息来自 电脑版 1.4.4.9 源代码,
Terraria.Player.cs
中的ApplyDamageToNPC()
和Terraria.NPC.cs
中的StrikeNPC()
方法。 - ↑ 信息来自 电脑版 1.4.3.6 源代码,
Terraria.NPC.cs
中的StrikeNPC()
方法。 - ↑ 信息来自 电脑版 1.4.4.9 源代码,
Terraria.Player.cs
中的ProcessHitAgainstNPC()
和Terraria.Player.cs
中的Damage()
方法。 - ↑ 17.0 17.1 17.2 17.3 信息来自 电脑版 1.4.4.9 源代码,
Terraria.NPC.cs
中的AI_003_Fighters()
方法。 - ↑ 信息来自 电脑版 1.4.4.9 源代码,
Terraria.Projectile.cs
中的Damage()
,Terraria.Mount.cs
中的CastSuperCartLaser()
,和Terraria.Mount.cs
中的UseAbility()
方法。 - ↑ 信息来自 电脑版 1.4.4.9 源代码,
Terraria.Player.cs
中的JumpMovement()
和Terraria.Player.cs
中的HorizontalMovement()
方法。