幽灵 Ghost
“我是一名科学家,这种东西冒犯了我。”—— 威尔逊检查它时说
幽灵是从死亡玩家或相关墓地机制中出现的敌对灵体。它会在附近寻找活着的角色并跟随,通过范围攻击持续造成伤害,同时带有负面的理智光环;若没有合适的目标,游荡一段时间后会消散。威尔逊的评价是:“我是一名科学家,这种东西冒犯了我。”
概述
幽灵使用 ghost 代码实体,带有 ghost、hostile、monster、flying 和 noauradamage 标签。普通幽灵的状态图从 appear 开始,出现动画结束后启用范围攻击光环;死亡时进入 dissipate 状态,动画结束后移除实体。
幽灵可以被带有 reviver 标签的物品尝试交互,但代码只将这类交互用于失败时的专属检查文本,并不会接受该物品。
属性
| 属性 | 数值 |
|---|---|
| 生命值 | 200 |
| 攻击力 | 15 |
| 攻击方式 | 半径 1.5 的范围攻击,每 1.2 秒检查一次 |
| 移动速度 | 行走与奔跑均为 2 |
| 理智光环 | -40 /分钟 |
| 跟随距离上限 | 900(代码使用距离平方) |
幽灵的攻击伤害由 combat.defaultdamage 设置;对玩家的伤害倍率由 GHOST_DMG_PLAYER_PERCENT 设置。攻击光环由 aura 组件周期执行,并不是普通的单次近战攻击。
行为
索敌与跟随
普通幽灵每次重新寻找跟随目标时,会在自身周围 1.5×0(代码实际使用固定搜索半径 10)范围内寻找带有 character 标签、可见且存活的目标;搜索会排除 INLIMBO 与 noauradamage。代码中的搜索半径为局部常量 10,不能用 TUNING 占位符表示。
通常情况下,找到的活着角色会成为跟随目标。带有 ghostlyfriend 或 abigail 标签的角色不会被普通幽灵主动跟随,除非幽灵已经以其为目标,或该角色正在攻击幽灵。目标离幽灵超过 GHOST_FOLLOW_DSQ 所代表的距离后,幽灵会放弃跟随目标。
范围攻击与理智影响
幽灵的 aura 组件每 1.2 秒执行一次范围攻击。攻击范围为 1.5;默认排除带有 noauradamage、INLIMBO、notarget、noattack、flight、invisible 或 playerghost 标签的单位。幽灵自身的 AuraTest 还会允许双方互为战斗目标的单位,并排除阿比盖尔、幽灵友方和 ghost_ally 单位,除非双方已经建立战斗目标关系。
幽灵带有负面的理智光环,数值为 -40 /分钟。光环攻击到目标时,状态图会将幽灵切换为发红的 angry 表现;没有单位受到光环攻击时则恢复普通外观。
作息与消散
幽灵没有睡眠状态。普通幽灵在没有可跟随目标时会执行游荡行为;行为树同时等待 10 秒,等待结束后切换到 dissipate。因此,若附近没有合适的活着角色,幽灵不会永久停留。
受到攻击时,幽灵会设置攻击者为战斗目标;如果攻击事件没有攻击者,则清除目标。受击会进入短暂的 hit 状态。死亡或主动消散都会移除幽灵;死亡时还会关闭理智光环。
应对
- 幽灵的攻击是周期性范围攻击,看到它变红并播放攻击音效时,应立即离开 1.5 范围,而不是继续贴身输出。
- 带有
flight、invisible、playerghost或noauradamage标签的单位不会被通用范围攻击命中;普通玩家不能仅凭走位获得这些标签提供的免疫效果。 - 幽灵会优先跟随附近活着的角色。若不想让它持续追击,可拉开超过代码设定的跟随距离,或让它找不到合适的目标;没有目标时它会在游荡后消散。
- 幽灵会降低理智值,处理它时应避免在其范围内停留。
变体
同一文件还定义了墓地守卫幽灵 graveguard_ghost,它使用相同的生命值、攻击力、移动速度、攻击间隔和理智光环,但范围攻击半径改为 2.5。墓地守卫幽灵带有 graveghost 标签,并由温蒂的装饰墓地相关机制生成;它还可以与其他幽灵进行短暂的玩耍互动。
动画

大惊吓
阿比盖尔