> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wanyouxi.online/llms.txt
> Use this file to discover all available pages before exploring further.

# 战斗系统详解

> **摘要**：本文档定义了 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) × 暴击区 × 抗性区**

1. **基础区 (Base)**: 技能面板 × 武器伤害。

2. **增伤区 (Additive / Inc)**: `(1 + 物理伤% + 全伤% + 近战伤%)`。所有此类词条相加。

   * *设计意图*: 随着数值堆叠，收益产生**稀释效应**。

3. **独立乘区 (Multiplicative / More)**: `(1 + 额外伤A) × (1 + 额外伤B)`。

   * *设计意图*: 极其珍贵，无稀释，是后期 Build 的核心追求。

4. **抗性区 (Resistance)**: `(1 - (目标抗性 - 穿透))`。

> **💡 业界案例 (Path of Exile)**: PoE 的成功在于通过大量的 "Inc" 词条让新手获得稳定成长，同时用稀有的 "More" 词条奖励深度玩家，创造了极高的 Build 上限。

### 1.3 核心公式

#### 物理护甲 (Armor) - 线性有效生命值

```csharp theme={"theme":{"light":"github-light","dark":"github-dark"}}
// 护甲减伤公式 (DR)
// K 为常数 (推荐 3000)，决定了减伤曲线的陡峭程度
float damageReduction = Armor / (Armor + K);
```

* *原理*: 虽然 DR 随护甲增加而递减，但 **有效生命值 (EHP)** 保持线性增长。每 K 点护甲，EHP 增加 100%。

#### 元素抗性 (Resistance) - 硬上限

```csharp theme={"theme":{"light":"github-light","dark":"github-dark"}}
// 抗性计算
// 穿透 (Penetration) 直接做减法
float finalRes = Mathf.Min(TargetRes - AttackerPen, MaxResCap); // MaxResCap 通常为 75%
float multiplier = 1.0f - finalRes;
```

***

## 2. 异常状态 (Status Ailments)

### 2.1 状态体系

| 状态                       | 来源    | 效果定位  | 核心机制                                |
| :----------------------- | :---- | :---- | :---------------------------------- |
| **点燃 (Ignite)**          | 🔥 火焰 | 持续输出  | **快照机制**: 伤害基于触发时的单次击中伤害。不可叠加，只取最高。 |
| **冰缓/冻结 (Chill/Freeze)** | ❄️ 冰霜 | 控场/窗口 | **阈值机制**: 效果取决于伤害占目标 MaxHP 的比例。     |
| **感电 (Shock)**           | ⚡ 雷电  | 易伤/爆发 | **团队共享**: 增加目标受到的所有伤害 (独立乘区)。       |
| **流血 (Bleed)**           | ⚔️ 物理 | 移动惩罚  | **动态判定**: 目标移动时受到额外 200% 伤害。        |

### 2.2 🧠 核心算法：伪随机分布 (PRD)

为了避免“脸黑”导致的体验断层，所有概率触发的状态（如暴击、异常）**必须**使用 PRD 算法。

> **PRD 原理**: 每次触发失败，下次触发概率提升；触发成功，概率重置。
> *参见: `Tech/Algorithms/Roguelike_RNG_Systems.md`*

```csharp theme={"theme":{"light":"github-light","dark":"github-dark"}}
// 伪代码逻辑
class PRDCounter {
    float C; // 基础概率对应的增量常数
    int N = 1; // 失败计数器

    bool Check(float baseChance) {
        if (Random.value < C * N) {
            N = 1; return true;
        } else {
            N++; return false;
        }
    }
}
```

***

## 3. 硬直与韧性 (Stagger & Poise)

引入类似《黑暗之魂》的韧性系统，赋予战斗“重量感”和“节奏感”。

### 3.1 韧性机制

1. **韧性条 (Poise Bar)**: 所有单位拥有的隐藏属性。

2. **削韧 (Poise Damage)**: 攻击会扣除韧性。`韧性伤害 = 伤害 × 冲击系数`。

3. **硬直 (Stagger)**: 当韧性 \<= 0 时，单位进入硬直状态，动作被打断，受击动画播放。

4. **恢复**: 若一段时间未受击，韧性开始快速恢复。

### 3.2 🧠 设计哲学：节奏控制

韧性系统不仅仅是防御属性，更是**战斗节奏**的控制器。

* **玩家策略**: 必须在 Boss 恢复韧性前保持攻势（贪刀的风险）。
* **Boss 设计**: 高韧性防止被玩家无限连击控制，但破韧后提供巨大的输出窗口 (Reward)。

### 3.3 核心逻辑示例

```csharp theme={"theme":{"light":"github-light","dark":"github-dark"}}
// 韧性伤害处理核心逻辑
void TakePoiseDamage(float amount, bool hasForce) {
    if (isStaggered) return; // 硬直中不重复计算

    currentPoise -= amount;
    resetRecoveryTimer(); // 重置恢复计时器

    if (currentPoise <= 0) {
        TriggerStagger(); // 触发硬直
        if (hasForce) ApplyKnockback(); // 仅在破韧时触发击退
    }
}
```

> **💡 业界案例 (Dark Souls)**: 魂系列通过隐藏的韧性数值和分级的硬直动画（小/中/大），创造了精确的打击反馈。我们需要简化此系统，使其适应快节奏的塔防战斗。

***

## 4. 仇恨系统 (Aggro System)

由于混合了塔防元素，怪物的仇恨逻辑需要平衡“攻击玩家”和“攻击塔/基地”。

### 4.1 优先级堆栈

1. **强制嘲讽 (Taunt)**: 能够强制覆盖所有逻辑（持续 3s）。

2. **路径阻挡**: 若去往基地的路被堵死，攻击阻挡物（破墙）。

3. **动态权重**: 基于伤害和距离的加权计算。

### 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` (待实现)
