# 战斗机制进阶扩展 (Advanced Combat Mechanics Extensions - Part 2)

为了构建一个具备极高重玩价值（Replayability）的 Roguelike 系统，除了基础的伤害和弹射，我们还可以引入物理、环境、触发链等更多维度的交互。

以下是可供扩展的 5 个额外维度：

## 1. 物理与运动学维度 (Physics & Kinematics Dimensions)【P2/P3 扩展，非当前实现目标】

> ⚠️ **实现状态说明**：本节所有维度均为**设计扩展提案（P2/P3）**，
> 当前 BulletManager SoA、ProjectileDef、EnemyManager SoA **均无对应字段**。
> 实现时需要：
> - `ProjectileDef` 增加 `knockback_force: float`（冷数据，存入 `_bullet_contexts`）
> - `EnemyManager` SoA 增加 `mass: float`（或冷数据中存储），`ENEMY_STRIDE` 相应扩展
> - 否则引用本节代码片段将在运行时找不到字段

让投射物不仅仅是”飞行的数字”，而是具有物理实体的对象。

### 1.1 冲量与质量 (Impulse & Mass)【P3】
*   **Knockback Force (击退力)**: 子弹应携带“击退值”。
*   **Entity Mass (实体质量)**: 怪物应有“质量”属性。
*   **Resistance (抗性)**: 小蝙蝠被打中会飞很远，而石头人哪怕受到高伤也纹丝不动。
*   **维度**: `KnockbackVector = (BulletVelocity.normalize() * KnockbackForce) / TargetMass`

### 1.2 轨迹调制 (Trajectory Modulation)
除了直线飞行，子弹的运动模式可以参数化：
*   **Acceleration (加速度)**: 子弹可以越飞越快（狙击），或越飞越慢（能量球停留）。
*   **Curvature (曲率/归航)**: `HomingStrength` (归航强度) 和 `TurnRate` (原本直飞，靠近敌人时转弯)。
*   **Oscillation (震荡)**: 正弦波飞行（Sine Wave），用于扩大打击面。

## 2. 环境场与交互维度 (Environment & Interaction Dimensions)

战斗不仅仅发生在“子弹”和“敌人”之间，还包括“环境”。

### 2.1 地表效果 (Surface/Ground Effects)
*   **Persistence (残留)**: 毒瓶炸开后在地面留下 `PoisonPool`，持续 5 秒。
*   **Conductivity (传导性)**:
    *   水面 + 闪电 = 全屏感电。
    *   油面 + 火焰 = 不灭之火（延长燃烧时间）。
    *   冰面 + 物理撞击 = 滑行距离增加。

### 2.2 障碍物交互 (Obstacle Interaction)
*   **Ricochet (跳弹)**: 击中墙壁时，根据入射角计算反射角。
*   **Phasing (相位)**: 是否能穿墙（穿墙子弹通常伤害较低或无法穿透敌人）。
*   **Embedding (嵌入)**: 箭矢击中墙壁后保留实体，可被玩家回收或作为后续法术的引雷针。

## 3. 触发器与事件链系统 (Trigger System / Proc Chains)

参考《Risk of Rain 2》或《Path of Exile》的 Proc（Process on Cast/Hit）机制。

### 3.1 触发钩子 (Event Hooks)
不仅仅是“命中”，需要更细的粒度：
*   **OnHit**: 命中敌人时。
*   **OnCrit**: 暴击时（如：暴击时召唤落雷）。
*   **OnKill**: 击杀时（如：敌人产生尸爆）。
*   **OnExpire**: 子弹自然销毁/达到最大射程时（如：榴弹并在尽头爆炸）。
*   **OnHurt**: 玩家受击时（如：受击释放尖刺）。

### 3.2 触发系数 (Proc Coefficient)
为了平衡高频攻击（如加特林）和低频攻击（如狙击枪）：
*   **ProcRate**: 这是一个 0.0 - 1.0 的系数。
*   *例子*: "攻击有 10% 概率触发导弹"。
    *   狙击枪 (Proc: 1.0) -> 每次判定都是 10%。
    *   加特林 (Proc: 0.1) -> 每次判定实际概率是 10% * 0.1 = 1%。
    *   防止高攻速武器过于变态地触发特效。

## 4. 属性转换与快照机制 (Conversion & Snapshotting)

处理复杂的数值计算规则。

### 4.1 伤害转换 (Damage Conversion)
*   **Shift**: "将 50% 的物理伤害转化为火焰伤害"。
*   **Gain**: "获得等同于物理伤害 20% 的额外混沌伤害"。
*   **Priority (优先级)**: 转换通常有固定顺序（物理 -> 元素 -> 混沌），防止循环转换。

### 4.2 快照机制 (Snapshotting)
*   **Dynamic vs Static**:
    *   如果玩家发射了一个持续 10 秒的火龙卷，然后在第 5 秒喝了药水（增加智力）。
    *   **Snapshot**: 火龙卷伤害不变（取发射瞬间的数值）。这通常更符合直觉且性能更好。
    *   **Dynamic**: 火龙卷伤害随之增加。这就要求子弹必须持有 Player 引用并在每帧重新计算属性。

## 5. 控制与免疫维度 (Crowd Control & Diminishing Returns)

并不是所有的“负面效果”都是伤害（DoT）。

### 5.1 硬控制与软控制 (Hard/Soft CC)
*   **Soft CC**: 减速 (Slow)、致盲 (Blind - 降低命中率/索敌范围)。
*   **Hard CC**: 眩晕 (Stun - 停止行动)、冻结 (Freeze - 停止动画)、恐惧 (Fear - 反向逃跑)、魅惑 (Charm - 攻击友军)。

### 5.2 收益递减 (Diminishing Returns - DR)
为了防止 Boss 被永久晕在原地：
*   **DR Meter**: 怪物有一个隐藏的抗性条。
*   **机制**: 第一次眩晕 2秒 -> 第二次 1秒 -> 第三次 免疫。
*   **Recovery**: 抗性条随时间慢慢恢复。

## 6. 斩杀与处决 (Culling & Execution)

*   **Threshold Execution**: "立即消灭生命值低于 10% 的非 Boss 敌人"。
*   **Low/High Health Scaling**:
    *   "对生命值 > 90% 的敌人必定暴击" (First Strike)。
    *   "敌人生命值每降低 1%，造成额外 1% 伤害" (Executioner)。

通过引入这些维度，可以将简单的“数值比拼”转化为策略构筑游戏。例如构建一个“击退流”玩法：利用高击退把敌人推到涂满油的墙上，配合火属性子弹造成环境爆炸。
