返回

从伤害计算基础开始,在 Screeps 中施展精准打击

见解分享

Screeps 战场上的精准刀法:伤害计算的艺术

在 Screeps 的竞技场中,每一滴能量都至关重要,而精准的刀法可以让你以最小的代价消灭对手。要掌握这一致命技巧,从伤害计算基础开始至关重要。

伤害计算基础

在 Screeps 中,伤害计算是一个复杂的过程,涉及多个因素:

  • 攻击力(Power): 单位的攻击力,范围从 0 到无穷大。
  • 攻击距离(Range): 单位的攻击距离,决定了它能攻击多远的单位。
  • 攻击类型(Type): 攻击可以分为物理、穿刺、切断或能量四种类型,每种类型对不同类型的单位有不同的效果。
  • 护甲(Armor): 单位的护甲,用于抵消一部分伤害。
  • 盾牌(Shield): 单位的盾牌,用于抵消所有类型的伤害。

伤害公式

根据这些因素,伤害公式如下:

伤害 = 攻击力 * 距离惩罚 * 类型惩罚 * 护甲穿透 * 盾牌穿透

距离惩罚:

  • 如果攻击距离大于等于 5,则距离惩罚为 0.75。
  • 否则,距离惩罚为 1。

类型惩罚:

  • 物理攻击对没有护甲的单位造成 1 倍伤害,对有护甲的单位造成 0.5 倍伤害。
  • 穿刺攻击对有护甲的单位造成 2 倍伤害,对没有护甲的单位造成 1 倍伤害。
  • 切断攻击对盾牌单位造成 2 倍伤害,对没有盾牌的单位造成 1 倍伤害。
  • 能量攻击无视护甲和盾牌,造成 1 倍伤害。

护甲穿透:

  • 如果攻击力大于或等于护甲,则护甲穿透为 1。
  • 否则,护甲穿透为 0.5。

盾牌穿透:

  • 如果攻击类型是切断攻击,则盾牌穿透为 1。
  • 否则,盾牌穿透为 0。

代码示例

让我们用一个代码示例来加深理解:

const attacker = {
  power: 10,
  range: 4,
  type: 'physical',
};

const defender = {
  armor: 5,
  shield: false,
};

const distancePenalty = 1; // 攻击距离小于 5
const typePenalty = 0.5; // 物理攻击对有护甲的单位造成 0.5 倍伤害
const armorPenetration = 1; // 攻击力大于或等于护甲
const shieldPenetration = 0; // 攻击类型不是切断攻击

const damage = attacker.power * distancePenalty * typePenalty * armorPenetration * shieldPenetration;

console.log(`伤害:${damage}`);

在这种情况下,攻击者对防御者造成的伤害为 2.5。

实战应用

掌握伤害计算基础可以让你在战场上获得优势。你可以通过以下方式运用这些知识:

  • 选择正确的攻击类型来对付不同类型的敌人。
  • 针对有护甲的敌人使用穿刺攻击。
  • 针对有盾牌的敌人使用切断攻击。
  • 确保你的单位有足够的攻击力和距离惩罚,以最大化伤害输出。
  • 了解敌人的攻击力和护甲,以优化你的防御策略。

结论

精准的刀法是 Screeps 中成功的关键。通过掌握伤害计算基础,你可以优化你的攻击策略,以更少的能量造成更大的伤害。记住,练习是完美的基础,所以投入战场,用你的刀锋书写胜利的故事吧!

常见问题解答

1. 物理攻击和能量攻击之间有什么区别?

物理攻击受到护甲的影响,而能量攻击无视护甲和盾牌。

2. 为什么盾牌穿透对切断攻击总是为 1?

因为切断攻击专门用于对付盾牌单位,所以它们总是无视盾牌。

3. 距离惩罚如何影响伤害输出?

随着攻击距离的增加,伤害输出会下降。

4. 攻击类型惩罚是如何计算的?

攻击类型惩罚根据攻击类型和目标单位的防御属性(例如护甲或盾牌)而定。

5. 护甲和盾牌是如何保护单位免受伤害的?

护甲抵消物理攻击,而盾牌抵消所有类型的伤害,包括能量攻击。