跳转到内容

元素与状态效果

四元素(火/冰/毒/电)叠层状态系统:元素命中投色子叠层(每元素最多 3 层),满 3 层再判定一次触发单元素质变,异种元素相遇立即引爆双元素反应;火/毒/电状态还会自行向周围蔓延、生成区域危害,并以“主导元素着色”直接画在目标模型上。

元素与状态效果是航海战斗的纵深层:物理伤害解决“打掉多少血”,元素系统解决“用什么打、怎么打”。每种怪物的护甲与抗性差异(见 怪物)逼迫玩家在战斗中切换弹药元素——高火抗的炽鳞蛇火点不着,要换冰或毒;厚物理甲的钢壳鲎可以用“冰+毒霜蚀脆化”直接削甲。

玩家接触本系统的路径:

  1. 选弹药:装填带元素载荷的弹药。动能弹附带少量元素(4 点),元素弹以元素为主(10 点、物理减弱到 40%);测试模式下数字键 1-8 全船切换八种代表性弹药(AmmoCatalog.cs),详见 武器与弹药
  2. 喷射式武器:火焰喷射等持续喷射武器按“浓度 × 距离衰减”高频投色子叠层(FlameProjectile.cs),连续喷射自然把低几率累积成必然。
  3. 看反馈:被叠层的目标整体着色(火红/冰蓝/毒绿/电紫),层数越高颜色越重;质变与反应产生范围爆发、毒雾、蒸汽云等区域效果。

承受方:怪物(生成时自动挂状态控制器与着色组件,BaseMonster.cs)和建筑(初始化时自动挂,Building.cs,生物与建筑处于同一传播网络)。船员不承受元素状态(未挂载状态控制器,施加时静默落空),但元素伤害通道的直伤和区域危害照常扣船员血。

元素 英文标识 单元素状态名 持续效果 满 3 层质变
Fire(索引 0) 点燃 持续火伤,向邻近目标蔓延 失控烈焰(自爆+范围点燃)
Ice(索引 1) 冷冻 动作效率降低 冻结(定身+易碎)
Poison(索引 2) 腐蚀 持续毒伤,近距接触传播 溃烂引爆(爆发+毒雾)
Lightning(索引 3) 麻痹 动作效率降低+间歇打断,远距传导 过载放电(链式麻痹)

出处:CombatEnums.cs。每个目标身上四元素各自独立记层数(0~3 层,上限 MaxLayers = 3)与剩余持续时间(ElementalStatusState.cs)。

元素施加:先判反应,再投色子

Section titled “元素施加:先判反应,再投色子”

每次元素命中(子弹元素载荷、喷射、毒雾区域、点燃蔓延等)走唯一入口(StatusEngine.cs),顺序固定:

  1. 先判反应:目标身上若存在能与入射元素构成反应对的异种活跃元素,立即触发双元素反应(不投色子、不受抗性影响),双方元素全部清层,本次命中结束。多个可反应对时取对方层数最高者(同层按火→冰→毒→电的枚举序取先者)。
  2. 否则投色子升层
升层成功几率 = 下一层基础几率 × (1 − 元素抗性) × 浓度 (最终封顶 100%)
当前层数 升层基础几率 含义
0 层 → 1 层 90% 第 1 层好上
1 层 → 2 层 50% 第 2 层麻烦
2 层 → 3 层 25% 第 3 层难
已满 3 层 25% 再成功一次 → 质变并清空该元素

出处:StatusTuning.csLayerChanceL1/L2/L3TransformChance),代码常量。设计意图是“靠高命中频率把低几率累积成必然”,质变无免疫、可反复触发,频率由抗性与浓度控制。

补充规则(StatusEngine.cs):

  • 同元素命中刷新持续时间:只要目标该元素已有层数,每次同元素命中(无论升层成功与否)都把剩余持续刷新为“当前剩余”与“新持续”中的较大值;升层成功时同样刷新。
  • 反应触发时入射元素本身有没有层数无所谓——副元素只需补 1 发即可引爆

浓度来源(决定“越浓越容易施加”):

来源 数值 来源类型
子弹“元素浓度”字段 默认 1,范围 0.1~5 Unity Inspector 序列化字段(弹丸 prefab,Bullet.cs
喷射“浓度”字段 默认 1,范围 0.1~5 Unity Inspector 序列化字段(FlameProjectile.cs
喷射距离衰减 实际浓度 = 浓度 × max(0, 1 − 每米衰减度 × 距喷口米数);“元素衰减度”字段范围 0~0.2/米,0=不衰减 Unity Inspector 序列化字段(FlameProjectile.cs
区域危害(毒雾)、点燃蔓延、腐蚀传播 固定 1 代码常量(HazardZone.csStatusEffectController.cs

注意一个不对称:子弹的元素伤害通道数值随飞行距离衰减(与物理伤害同比例),但其施加浓度不随距离变化Bullet.cs);喷射武器则相反——浓度随距离衰减、几率变低(FlameProjectile.cs)。

  • 施加持续时间固定 4 秒:所有生产路径(子弹、喷射、毒雾、蔓延、反应扩散、开发者工具)目前都传 StatusTuning.DefaultDuration = 4 秒。代码注释明确这是占位值,“Phase 4 运行时按武器/浓度细化”。代码常量。
  • 每元素独立倒计时:每帧按真实时间衰减;某元素剩余时间归零时一次性清空该元素全部层数(不是逐层掉落)。出处:ElementalStatusState.cs
  • 冻结定身、易碎倍率各有独立计时器,到时恢复(易碎恢复为 ×1)。
  • 持续期间被同元素再次命中即刷新(见上节),所以持续火力压制下状态实际不会掉。

分层效果数值(被叠层后发生什么)

Section titled “分层效果数值(被叠层后发生什么)”
状态 1 层 2 层 3 层 单位/说明
点燃 DoT 2 5 10 点/秒,火元素通道,经完整伤害结算
腐蚀 DoT 1 2 4 点/秒,毒元素通道,封顶仍低于同层火(偏缠绵)
冷冻减速 −30% −60% −90% 动作效率降低比例
麻痹减速 −10% −25% −50% 动作效率降低比例
麻痹打断几率 10% 25% 50% 每次判定的触发概率

出处:StatusTuning.csFireDotPerSecondPoisonDotPerSecondIceSlowLightningSlowLightningInterruptChance),代码常量。

动作效率合成公式StatusEffectRuntime.cs):

动作效率乘子 = (1 − 冷冻减速) × (1 − 麻痹减速)
冻结期间动作效率 = 0(完全定身,覆盖上式)

例:2 层冰 + 1 层电 → (1−0.6) × (1−0.1) = 0.36 倍速。

麻痹间歇打断(当前仅怪物实现,NormalMonster.cs):

  • 每 0.6 秒判定一次(ParalysisInterruptCheckInterval),按当前麻痹层的打断几率投色子。
  • 命中则 0.35 秒完全定身(ParalysisInterruptDuration)——移动暂停且攻击行为暂停(打断窗口内怪物的攻击逻辑直接跳过:远程怪不吐射、不重新瞄准)。
  • 出处:StatusTuning.cs 代码常量;接入点 NormalMonster.cs

怪物最终移速公式NormalMonster.csLocomotionScale):

怪物移速倍率 = 元素动作效率乘子 × 麻痹打断瞬时乘子(0 或 1) × 平行 debuff 移动乘子

该倍率每帧写入怪物的移动/转向动画时间缩放,0 即原地停滞。

DoT 结算细节:点燃/腐蚀伤害每帧按时间切片打包成元素伤害包,走 DamageResolver.cs 完整结算——元素护甲未破时按 20% × (1 − 抗性) 渗透到 HP、护甲按 伤害 × (1 − 抗性) 消耗,护甲已破则全额进 HP。DoT 走专用入口 DamageableComponent.TakeStatusDamage:不触发状态叠层、不发伤害归因消息(不计声望/击杀归因)、受无敌模式拦截。详见 伤害与护甲

满 3 层后再通过一次 25% 判定(同样乘抗性与浓度修正)即质变,清空该元素层数。具体效果(StatusEffectController.cs + StatusOutcomeResolver.cs + StatusTuning.cs,全部代码常量):

质变 对自身 对周围(半径 4 米)
火 → 失控烈焰 一次性 30 点火元素爆发伤害 范围内每个目标无视抗性随机获得 0~3 层点燃(0/1/2/3 层各 25%,覆盖式设置,可能压低甚至清掉邻居已有点燃层数),持续 4 秒
冰 → 冻结 定身 2 秒 + 易碎 ×3(物理受伤 +200%)持续 2 秒
毒 → 溃烂引爆 一次性 20 点毒元素爆发伤害 原地生成毒雾(见区域危害一节)
电 → 过载放电 自身定身 1 秒 对范围内邻居逐个 +1 层麻痹:至少波及 1 个,之后每个 30% 概率终止(平均约 3.3 个),安全上限 32 个;被波及者无视抗性直接 +1 层麻痹,持续 4 秒

注意:过载放电的“链式”是简化实现——对 4 米球形范围内收集到的前 N 个邻居各 +1 层,没有真实的逐跳传导路径与跳间距离判定。

打法范式:“先用主元素叠到高层,最后补一发副元素引爆”。反应威力 P = 对方(已在目标身上的元素)层数 + 1,取值 2~4;触发后双方元素全部清层、反应立即生效、不受抗性影响。

反应对 名称 效果(威力记为 P)
火 + 毒 爆炸 对周围 4 米内所有邻居造成 10 × P 点物理伤害(走物理护甲结算,受目标易碎放大);反应宿主自身不受爆炸伤害
冰 + 火 蒸汽灼伤 原地生成蒸汽云(见区域危害一节):每秒伤害 = 3 × P,物理与火元素各一半
冰 + 毒 霜蚀脆化 立即削减目标当前物理护甲 15 × P 点;若物理护甲被削到 0 触发护甲联动(元素护甲再掉其上限的 50%);同时获得易碎 = 1 + 0.2 × P 倍(物理受伤放大),持续 2 秒(与冻结共用时长常量)
任意 + 电 麻痹传播 周围 4 米内每个邻居 +2 层伴随元素(反应对中非电的那个元素,叠加式、上限 3 层)+1 层麻痹,均无视抗性,持续 4 秒——“借麻痹的传播属性加速蔓延”

出处:StatusEngine.cs(反应对判定)、StatusOutcomeResolver.cs(威力换算)、StatusTuning.csExplosionBaseDamage = 10SteamDpsPerPower = 3FrostArmorStripPerPower = 15FrostVulnPerPower = 0.2ParalysisSpreadPartnerLayers = 2),代码常量。

范围类效果(失控烈焰扩散、火毒爆炸、过载链式、麻痹传播)的作用半径统一为状态控制器的 AreaRadius = 4 米(StatusEffectController.cs 字段默认值;该组件由怪物/建筑初始化代码运行时挂载,实际生效的就是代码默认值,prefab 里改不到)。

范围效果不分敌我:用物理球形检测收集范围内所有带状态控制器的目标(怪物与建筑),火毒爆炸会炸到己方建筑,失控烈焰会点燃友方建筑。范围伤害走 TakeStatusDamage,同样无阵营过滤、无击杀归因。

带火/毒/电状态的目标每 1 秒SpreadTickInterval)做一次传播判定,向范围内每个邻居独立投色子(StatusEffectController.cs + StatusSpreadModel.cs)。冰不传播。

传播 范围(米) 每次判定传播几率(按源层数 1/2/3) 邻居侧结算
点燃蔓延 4 15% / 35% / 70% 走标准施加流程(再按邻居抗性投升层色子,可能触发邻居身上的反应/质变)
腐蚀接触 2 20% / 50% / 100%(3 层必传) 同上
麻痹间接传导 按源层 3 / 5 / 8 基础 30% / 50% / 80%,再乘 (1 − 邻居电抗 × 0.5) 直接 +1 层麻痹(叠加式,上限 3 层),不再投升层色子

出处:StatusTuning.csFireSpreadChanceCorrosionContactChanceParalysisConductBaseChanceParalysisConductRangeFireSpreadRadius = 4CorrosionContactRadius = 2ParalysisConductResistanceFactor = 0.5),代码常量。

麻痹传导的抗性只有半效(系数 0.5):即使 100% 电抗,3 层源的传导几率仍有 80% × 0.5 = 40%——设计为“间接麻痹更易传导、高抗不硬免疫”。超出范围则不传导(间接麻痹自然消失)。传播在生物与建筑之间双向有效(怪↔建筑、建筑↔建筑共用同一个传播网络)。

每个目标四元素各有一个抗性值,取值 [0, 1)(DefenseProfile.cs)。抗性在三个正交的位置起作用:

  1. 压低状态施加几率:升层/质变几率 × (1 − 抗性)(StatusEngine.cs)。
  2. 元素护甲消耗效率:元素护甲未破时,该元素伤害对护甲的消耗 = 伤害 × (1 − 抗性)——抗性越高护甲越耐用(DamageResolver.cs)。
  3. 护甲未破时的渗透:漏到 HP 的部分 = 伤害 × 20% × (1 − 抗性)(DamageResolver.csCombatTuning.ElementalLeakBase = 0.2)。

抗性不参与:双元素反应的触发与效果(无视抗性)、质变与反应的效果本身(注意质变的触发判定仍按升层公式乘 (1 − 抗性),见上文)、护甲已破后的元素直伤(全额进 HP)、平行 debuff 词条。麻痹间接传导按半效单独修正(见上节)。

抗性数值当前全部来自怪物战斗档案静态表(MonsterCombatProfile.cs,代码常量)。建筑没有配置入口——Building.cs 初始化时不配置防御档案,落到默认值:双护甲 0、四抗性全 0(元素状态对建筑全额几率施加,DoT 直接进 HP)。

怪物类型 物理护甲 元素护甲 火抗 冰抗 毒抗 电抗
Normal 普通怪 0 0 0 0 0 0
Elite 精英 30 20 0 0 0 0
Boss1 / Boss2 60 40 30% 30% 30% 0
SteelHorseshoe 钢壳鲎 80 0 0 0 0 0
BlazeSerpent 炽鳞蛇 10 20 85% 0 0 0
GlideRay 滑鳐 0 0 0 0 0 0
BarnacleSwarm 藤壶群 0 0 0 0 0 0
AbyssBeast 渊海兽 100 80 30% 30% 30% 30%

HazardZone 区域危害(毒雾 / 蒸汽云)

Section titled “HazardZone 区域危害(毒雾 / 蒸汽云)”

HazardZone.cs 是常驻危害区域的通用载体:存活期间周期性对范围内一切可受击实体施加伤害包(可选附带元素叠层),到期自动销毁。当前两个实例由质变/反应在目标原地生成(区域不移动):

参数 毒雾(毒质变) 蒸汽云(冰+火反应)
半径 4 米(= 源控制器 AreaRadius 4 米
持续时间 4 秒 4 秒(共用 SteamZoneDuration = 4
伤害判定间隔 0.5 秒/tick 0.5 秒/tick
每秒伤害 4 点毒元素(= 3 层腐蚀 DoT 档) 3 × 反应威力 P,物理与火元素各一半
附带状态施加 每 tick 对区域内每个带状态控制器的目标投一次毒叠层色子(受抗性,浓度 1,持续 4 秒)
停留递增 无(恒 ×1) 倍率 = min(3, 1 + 0.5 × 累计停留秒数),停满 4 秒封顶 ×3

出处:StatusEffectController.csSpawnHazardZone 调用参数)、StatusTuning.csSteamRampPerSecond = 0.5SteamMaxMultiplier = 3),代码常量。

行为细节(HazardZone.cs):

  • 每 tick 伤害 = 每秒伤害包 × 本 tick 实际经过秒数 × 停留倍率,走完整伤害结算(护甲门、抗性渗透、易碎放大)。
  • 停留计时按目标个体累计;离开区域即清掉该目标的停留计时,再次进入从 ×1 重新递增。
  • 无阵营过滤:区域内任何可被攻击的目标(敌怪、玩家船员、己方建筑)一律受伤;伤害走 TakeStatusDamage,不计击杀归因,受无敌模式拦截。

独立于元素系统的“属性/能力削减”词条(CombatDebuffState.cs / CombatDebuffController.cs),由发射物命中时直接施加,不经过元素抗性、不投色子、必中

词条 作用目标 效果 当前消费点
Move 移动削减 生物 移速 × 乘子 怪物移速(NormalMonster.csLocomotionScale
Attack 攻击削减 生物 造成伤害 × 乘子 怪物近战/冲撞与溅射伤害(NormalMonster.cs
Accuracy 命中削减 生物 远程瞄点随机偏移,偏移半径 = (1 − 乘子) × 4 米 怪物远程吐射(NormalMonster.csFireRanged
BuildingDisable 建筑停转 建筑 停转期间生产推进完全暂停 生产组件(ProductionComponent.cs),见 生产与制作

规则(CombatDebuffState.cs):

  • 乘子取值 0~1(0 = 完全失能,1 = 无削减),同类词条叠加时取最强(最低乘子),持续时间取最长
  • 到时一次性恢复为 1(无渐变)。
  • 配置入口:弹丸 prefab 上 Bullet.cs 的“平行 debuff 词条”列表(种类/乘子/持续秒数),Unity Inspector 序列化字段。当前没有任何武器 prefab 出厂自带 debuff 词条,属于待武器词条细化后接入的通道。
  • 载体:建筑初始化时预挂载(Building.cs);怪物没有预挂,由命中的子弹首次施加时自动补挂(CombatDebuffController.GetOrAdd)。

StatusEffectVisual.cs 把元素战况直接画在目标身上(怪物与建筑初始化时与状态控制器一起挂载,着色范围 = 目标根节点下所有渲染器):

  • 主导元素 = 当前层数最高的元素;并列时按进攻性优先级 火 > 电 > 毒 > 冰 展示。
  • 颜色(RGB):火 = 橙红 (1, 0.35, 0.1),冰 = 浅蓝 (0.4, 0.8, 1),毒 = 绿 (0.35, 0.9, 0.3),电 = 紫 (0.75, 0.4, 1)。
  • 着色强度 = 0.3 + 0.2 × 层数,即 1/2/3 层 = 50% / 70% / 90%(基色向元素色插值的比例),逐档明显加重。
  • 所有元素层数清零后恢复基色;只有主导元素或层数变化时才重涂。
  • 基色在首次着色前采样缓存;若外观被外部整体改写(如渊海兽破物理甲露弱点变红,NormalMonster.cs),由改写方调用重采接口(RecaptureBase)丢弃缓存、下次着色重采,避免状态结束后把弱点变色还原掉。

以上颜色与强度均为 StatusEffectVisual.cs 代码常量。

汇总公式:

升层几率 = 层基础几率(0.9 / 0.5 / 0.25) × (1 − 抗性) × 浓度,封顶 1.0
质变判定几率 = 0.25 × (1 − 抗性) × 浓度
反应威力 P = 引爆时对方元素层数 + 1(取值 2~4)
动作效率 = (1 − 冰减速) × (1 − 电减速);冻结时 = 0
怪物移速倍率 = 动作效率 × 打断瞬时乘子(0/1) × debuff 移动乘子
麻痹传导几率 = 层基础几率(0.3 / 0.5 / 0.8) × (1 − 抗性 × 0.5)
蒸汽云伤害倍率 = min(3, 1 + 0.5 × 区域内累计停留秒数)
区域 tick 伤害 = 每秒伤害包 × tick 实际秒数 × 停留倍率
喷射实际浓度 = 浓度 × max(0, 1 − 每米衰减度 × 距离)
命中偏移半径 = (1 − 命中乘子) × 4 米

元素系统全部可调常量(均为代码常量,文件:StatusTuning.cs,需程序改):

常量 含义
LayerChanceL1 / L2 / L3 0.9 / 0.5 / 0.25 升第 1/2/3 层基础几率
TransformChance 0.25 满层质变判定几率(复用 L3 档)
DefaultDuration 4 秒 元素状态持续时间(占位)
FireDotPerSecond 0 / 2 / 5 / 10 点/秒 点燃 DoT(按层)
PoisonDotPerSecond 0 / 1 / 2 / 4 点/秒 腐蚀 DoT(按层)
IceSlow 0 / 30% / 60% / 90% 冷冻减速(按层)
LightningSlow 0 / 10% / 25% / 50% 麻痹减速(按层)
LightningInterruptChance 0 / 10% / 25% / 50% 麻痹打断几率(按层)
ParalysisInterruptCheckInterval 0.6 秒 麻痹打断判定间隔
ParalysisInterruptDuration 0.35 秒 单次打断定身时长
ExplosionBaseDamage 10 点/威力 火+毒爆炸物理伤害系数
FrostArmorStripPerPower 15 点/威力 冰+毒削物理护甲系数
FrostVulnPerPower 0.2 /威力 冰+毒易碎增量系数
FreezeDuration 2 秒 冰质变冻结时长(霜蚀易碎共用此时长)
FreezeVulnerability ×3 冻结期物理易碎倍率
UncontrolledFlameBurstDamage 30 点 火质变自身火爆发
CorrosionBurstDamage 20 点 毒质变自身毒爆发
SteamZoneDuration 4 秒 蒸汽云/毒雾持续时间(共用)
SteamDpsPerPower 3 点/秒/威力 蒸汽云每秒伤害系数
SteamRampPerSecond +50%/秒 蒸汽云停留递增速率
SteamMaxMultiplier ×3 蒸汽云递增上限
OverloadTerminationChance 30% 过载链式每跳终止概率
OverloadMaxHopsGuard 32 跳 链式跳数安全上限
OverloadSelfImmobilizeDuration 1 秒 过载后自身定身
ParalysisSpreadPartnerLayers 2 层 任意+电反应给邻居叠加的伴随元素层数
SpreadTickInterval 1 秒 被动传播判定间隔
FireSpreadRadius 4 米 点燃蔓延半径
CorrosionContactRadius 2 米 腐蚀接触半径
FireSpreadChance 0 / 15% / 35% / 70% 点燃蔓延几率(按源层)
CorrosionContactChance 0 / 20% / 50% / 100% 腐蚀传播几率(按源层)
ParalysisConductBaseChance 0 / 30% / 50% / 80% 麻痹传导基础几率(按源层)
ParalysisConductRange 0 / 3 / 5 / 8 米 麻痹传导范围(按源层)
ParalysisConductResistanceFactor 0.5 抗性对麻痹传导的半效系数

其他文件中的相关常量:

常量/参数 文件 含义
AreaRadius 4 米 StatusEffectController.cs(字段默认值,组件为运行时挂载) 质变/反应范围施放半径 = 区域危害半径
区域危害 tick 间隔 0.5 秒 StatusEffectController.csSpawnHazardZone 调用参数) 毒雾/蒸汽云伤害判定间隔
ElementalLeakBase 20% CombatTuning.cs 元素护甲未破时基础渗透比例
ArmorLinkDropFraction 50% CombatTuning.cs 护甲联动掉落比例(霜蚀崩甲会触发)
着色强度 0.3 + 0.2 × 层数 StatusEffectVisual.cs 元素着色插值比例
命中偏移系数 4 米 NormalMonster.csFireRanged 内写死) 命中削减词条的最大偏移半径

弹药元素载荷(AmmoCatalog.cs,代码静态表,注释明确“数值定型后可迁 CSV”——当前没有任何元素数值在 CSV 配置表中):

弹种(数字键) 物理伤害乘子 元素载荷 备注
动能火/冰/毒/电弹(1-4) ×1.0 对应元素 4 点 标准弹手感,元素是点缀
火焰/寒霜/剧毒/闪电弹(5-8) ×0.4 对应元素 10 点 叠层/反应主力,破甲乏力
CannonShell 炮弹 ×1.0 附加反建筑词条(对建筑 ×1.5)
AA_Gun_Bullet 防空弹 ×1.0 附加反生物词条(对生物 ×1.5)

弹药档案在装填/切档时由 WeaponConsumption.cs 查表应用到投射策略,发射时逐颗弹丸注入(ProjectileShootingStrategy.csBullet.ApplyAmmoModifiers)。

  • 武器与弹药:元素的主要施加来源。弹药档案(AmmoProfile.cs / AmmoCatalog.cs)决定每发弹丸附带的元素类型与载荷量;喷射式武器按浓度持续施加。
  • 伤害与护甲:所有元素 DoT、质变爆发、反应爆炸、区域伤害都走同一个伤害结算管线(护甲门、抗性渗透、护甲联动、易碎);冻结/霜蚀的易碎倍率每帧由状态控制器同步进防御档案,放大物理通道伤害;霜蚀脆化直接削物理护甲并可触发护甲联动。
  • 怪物:怪物生成时自动挂状态控制器与着色组件;护甲/抗性按怪物类型查静态表;冷冻/麻痹/冻结通过移速倍率作用于怪物移动与攻击节奏;渊海兽破甲露弱点的变色与元素着色共用渲染器,靠重采基色接口协调。
  • 建筑:建筑同样承受元素状态(可被点燃/腐蚀/冻结并着色),与生物处于同一传播网络——着火的怪可以点燃建筑,着火的建筑可以再点燃路过的怪;建筑无护甲无抗性(默认全 0)。
  • 船员:船员不承受元素状态(无状态控制器),但弹药元素通道直伤与区域危害(毒雾/蒸汽云)照常扣血;火+毒爆炸等范围效果只作用于带状态控制器的目标,波及不到船员。
  • 生产与制作:建筑停转词条期间生产组件完全暂停推进。
  • 开发者工具DevToolsManager.cs 提供“对附近怪施加元素”调试命令——以玩家船为中心 30 米内全部怪各做一次指定元素的强制成功命中(色子固定投 0,走标准入口,因此连续调用可以驱动叠层→质变→反应全链路)。
想调什么 改哪里 类型
叠层几率、各层 DoT/减速/打断、质变与反应全部数值、传播几率/半径/间隔、状态持续时间 Assets/Scripts/Service/Combat/Model/StatusTuning.cs 代码常量,需程序改
某弹药的元素类型/载荷量/物理乘子/附加词条 Assets/Scripts/Service/Weapon/Model/AmmoCatalog.cs 静态表 代码常量,需程序改
某弹丸的元素浓度、出厂元素构成、平行 debuff 词条、物理词条 对应弹丸 prefab 上 Bullet.cs 的序列化字段 Unity Inspector
喷射武器的元素类型、浓度、每米衰减度、每秒伤害、最大喷射距离 对应喷射 prefab 上 FlameProjectile.cs 的序列化字段 Unity Inspector
某怪物的元素抗性/双护甲 Assets/Scripts/Service/Monster/Combat/MonsterCombatProfile.cs 代码常量,需程序改
质变/反应/区域危害的作用半径 StatusEffectController.csAreaRadius 字段默认值(组件为运行时挂载,prefab/Inspector 改不到) 代码常量,需程序改
区域危害 tick 间隔 StatusEffectController.csSpawnHazardZone 调用参数(当前 0.5 秒) 代码常量,需程序改
元素着色的颜色与层数强度 Assets/Scripts/Service/Combat/Core/StatusEffectVisual.cs 代码常量,需程序改
元素护甲渗透比例、护甲联动比例 Assets/Scripts/Service/Combat/Model/CombatTuning.cs 代码常量,需程序改

注意:本系统目前零 CSV 配置——所有数值都在代码里(设计阶段粗调策略,playtest 后定型再考虑迁表,AmmoCatalog.csMonsterCombatProfile.cs 注释均有此说明)。

  • 船员不承受元素状态:船员没有挂载状态控制器,叠层/质变/反应/传播对船员一律静默落空;但元素伤害通道的直伤和区域危害照常扣船员血。设计文档中“点燃在生物与生物间传播”“腐蚀从建筑传给使用它的生物”对船员尚未生效。
  • 持续时间是占位值:所有路径固定 4 秒(StatusTuning.DefaultDuration),代码注释标明“Phase 4 运行时按武器/浓度细化”,尚未与武器/弹药参数挂钩。设计文档中腐蚀“持续时间长/超长持续”按层数递增的设定也未实现——四元素全部统一 4 秒。
  • 范围效果与区域危害不分敌我:质变扩散、火毒爆炸、蒸汽云、毒雾、被动传播全部用物理球形检测、无阵营过滤——己方建筑会被波及(直伤+状态);己方船员只被区域危害(毒雾/蒸汽云)扣血,质变扩散/火毒爆炸/被动传播因只收集带状态控制器的目标而波及不到船员。
  • 范围/区域/DoT 伤害不计归因:这些伤害走 TakeStatusDamageDamageableComponent.cs),不发伤害归因消息——不计入声望系统与击杀归因;同时受无敌模式拦截。
  • 火+毒爆炸不伤反应宿主:爆炸伤害只施加给 4 米内的邻居,被引爆的目标自身只损失身上的元素层数,不吃这 10 × P 点物理伤害。
  • 失控烈焰扩散是覆盖式:对邻居随机 0~3 层点燃是直接设置层数而非叠加——25% 概率投出 0 层,会把邻居已有的点燃直接清掉;投出的层数低于邻居现有层数时也会压低。
  • 腐蚀传播与设计文档有差异:设计为“生物移动/交互时传播给建筑、从建筑传给使用者”,实现为简单的 2 米近距接触周期判定(不区分是否在交互)。
  • 麻痹“所有动作效率减益”只接入了怪物:动作效率乘子目前仅怪物移动/攻击消费;麻痹打断也只在 NormalMonster.cs 实现(打断期间移动与攻击同时暂停)。建筑/船员的工作效率不受麻痹影响。
  • 建筑停转词条只停生产BuildingDisable 的唯一消费点是 ProductionComponent.cs;武器建筑、其他功能建筑不受停转影响(没有消费点)。
  • 过载链式是简化实现:对 4 米范围内收集到的前 N 个邻居各 +1 层麻痹,没有真实的逐跳传导路径与跳间距离判定(设计文档描述为“电击在物体之间来回传播”)。
  • 元素层数到期一次清空:没有逐层衰减曲线,3 层状态在最后一刻仍是满强度。
  • 着色直接改材质颜色:与受击闪白、渊海兽弱点变红等其他变色逻辑共用渲染器,外观被整体改写后必须调用重采接口(RecaptureBase),否则状态结束恢复时会回到错误的基色。
  • 测试弹药不进经济循环TestAmmo_* 八种弹药仅配合无限弹药测试用,不消耗物品、不进生产链(AmmoCatalog.cs)。
  • 无敌模式已知 TODODamageableComponent.cs):建筑无敌模式不检查阵营,开启后敌方建筑也免疫元素 DoT 与一切伤害。