# 战斗机制进阶扩展 (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)。 通过引入这些维度,可以将简单的“数值比拼”转化为策略构筑游戏。例如构建一个“击退流”玩法:利用高击退把敌人推到涂满油的墙上,配合火属性子弹造成环境爆炸。