⚔️ 战斗系统详解
本文档定义了 Project Vampirefall 的核心战斗规则,包括伤害计算流程、属性相互作用、异常状态及控制机制。设计哲学: 本系统的核心目标是构建一个深度可扩展的数值框架,通过乘区理论和状态机创造多样化的 Build 体验,同时通过韧性和反馈系统保证动作游戏的爽快感。
1. 伤害类型与抗性 (Damage Types & Resistances)
1.1 核心伤害类型
为了保证战斗策略的深度,我们采用经典的“三系”分类。- 物理 (Physical): 基础伤害高,受护甲 (Armor) 减免。
- 元素 (Elemental): 附带异常状态,受元素抗性 (Resistance) 减免。
- 🔥 火焰 (Fire): 纯伤害 / DoT。
- ❄️ 冰霜 (Cold): 控制 / 减速。
- ⚡ 雷电 (Lightning): 群体 / 易伤。
- 混沌 (Chaos): 稀有伤害,无视能量护盾 (Energy Shield),受混沌抗性减免。
1.2 🧠 核心理论:乘区理论 (Bucket Theory)
引用自 PoE 与 Diablo 的数值基石,伤害计算遵循乘区理论以防止数值失控并提供策略深度。 最终伤害 = 基础伤害 × 增伤区(Inc) × 独立乘区(More) × 暴击区 × 抗性区- 基础区 (Base): 技能面板 × 武器伤害。
-
增伤区 (Additive / Inc):
(1 + 物理伤% + 全伤% + 近战伤%)。所有此类词条相加。- 设计意图: 随着数值堆叠,收益产生稀释效应。
-
独立乘区 (Multiplicative / More):
(1 + 额外伤A) × (1 + 额外伤B)。- 设计意图: 极其珍贵,无稀释,是后期 Build 的核心追求。
-
抗性区 (Resistance):
(1 - (目标抗性 - 穿透))。
💡 业界案例 (Path of Exile): PoE 的成功在于通过大量的 “Inc” 词条让新手获得稳定成长,同时用稀有的 “More” 词条奖励深度玩家,创造了极高的 Build 上限。
1.3 核心公式
物理护甲 (Armor) - 线性有效生命值
- 原理: 虽然 DR 随护甲增加而递减,但 有效生命值 (EHP) 保持线性增长。每 K 点护甲,EHP 增加 100%。
元素抗性 (Resistance) - 硬上限
2. 异常状态 (Status Ailments)
2.1 状态体系
| 状态 | 来源 | 效果定位 | 核心机制 |
|---|---|---|---|
| 点燃 (Ignite) | 🔥 火焰 | 持续输出 | 快照机制: 伤害基于触发时的单次击中伤害。不可叠加,只取最高。 |
| 冰缓/冻结 (Chill/Freeze) | ❄️ 冰霜 | 控场/窗口 | 阈值机制: 效果取决于伤害占目标 MaxHP 的比例。 |
| 感电 (Shock) | ⚡ 雷电 | 易伤/爆发 | 团队共享: 增加目标受到的所有伤害 (独立乘区)。 |
| 流血 (Bleed) | ⚔️ 物理 | 移动惩罚 | 动态判定: 目标移动时受到额外 200% 伤害。 |
2.2 🧠 核心算法:伪随机分布 (PRD)
为了避免“脸黑”导致的体验断层,所有概率触发的状态(如暴击、异常)必须使用 PRD 算法。
PRD 原理: 每次触发失败,下次触发概率提升;触发成功,概率重置。
参见: Tech/Algorithms/Roguelike_RNG_Systems.md
3. 硬直与韧性 (Stagger & Poise)
引入类似《黑暗之魂》的韧性系统,赋予战斗“重量感”和“节奏感”。3.1 韧性机制
- 韧性条 (Poise Bar): 所有单位拥有的隐藏属性。
-
削韧 (Poise Damage): 攻击会扣除韧性。
韧性伤害 = 伤害 × 冲击系数。 - 硬直 (Stagger): 当韧性 <= 0 时,单位进入硬直状态,动作被打断,受击动画播放。
- 恢复: 若一段时间未受击,韧性开始快速恢复。
3.2 🧠 设计哲学:节奏控制
韧性系统不仅仅是防御属性,更是战斗节奏的控制器。- 玩家策略: 必须在 Boss 恢复韧性前保持攻势(贪刀的风险)。
- Boss 设计: 高韧性防止被玩家无限连击控制,但破韧后提供巨大的输出窗口 (Reward)。
3.3 核心逻辑示例
💡 业界案例 (Dark Souls): 魂系列通过隐藏的韧性数值和分级的硬直动画(小/中/大),创造了精确的打击反馈。我们需要简化此系统,使其适应快节奏的塔防战斗。
4. 仇恨系统 (Aggro System)
由于混合了塔防元素,怪物的仇恨逻辑需要平衡“攻击玩家”和“攻击塔/基地”。4.1 优先级堆栈
- 强制嘲讽 (Taunt): 能够强制覆盖所有逻辑(持续 3s)。
- 路径阻挡: 若去往基地的路被堵死,攻击阻挡物(破墙)。
- 动态权重: 基于伤害和距离的加权计算。
4.2 🧠 权重公式
AggroScore = (Damage_Dealt_Recent * Weight_Dmg) + (1 / Distance * Weight_Dist)
- 近战怪: 距离权重极高(优先打脸上的)。
- 远程怪: 距离权重较低,倾向于攻击高威胁目标(如输出塔)。
- 滞后阈值 (Hysteresis): 只有新目标的仇恨值超过当前目标 110% 时才切换,防止目标频繁抖动。
5. 连击与评分 (Combo & Style)
5.1 连击设计
连击不仅是数字,更是资源获取效率的倍增器。- 时间窗口: 3 秒。随连击数增加,窗口可略微放宽。
- 中断惩罚: 被硬直打击 (Stagger) 会直接清空连击。这鼓励玩家在进攻的同时保持走位。
5.2 阶段奖励
- Phase 1 (10 Hit): 移速提升(优化走位)。
- Phase 2 (50 Hit): 攻速/资源获取提升(加速循环)。
- Phase 3 (100 Hit): 独立增伤 + 视觉特效(电弧/残影)。
💡 业界案例 (Devil May Cry): 鬼泣的 Style 系统鼓励花样进攻。在我们的设计中,连击主要作为**“高风险高回报”**的状态,奖励维持战斗流 (Flow) 的玩家。
6. 引用与参考 (References)
- 数值体系: 详见
Design/Numerical_Manual.md(PRD 常数表、完整伤害公式)。 - 代码实现:
- 伤害计算:
Code/Combat/DamageCalculator.cs(待实现) - 状态管理:
Code/Combat/StatusSystem.cs(待实现) - 韧性逻辑:
Code/Combat/PoiseSystem.cs(待实现)
- 伤害计算: