Lanlng-LCC icon

LCC

让怪物按概率获得强化词条(吸血、反弹、盗贼、天劫、死斗、双子星等 40 余种),并按星级放大普通怪 / 小Boss / Boss 的战斗差异;附全局血量、伤害、移速、攻速、攻击冷却倍率,体型缩放,感知与追击距离,以及掉落收益调整。星级与词条由服务器权威抽取并全网同步,支持配置下发与开关即时回收。

By Lanlng

CHANGELOG

懒濑:LCC 更新说明

GUID:lanlng_LCC · 目标框架:.NET Framework 4.8.1


1.1.2(2026-09-27)

调整:双刀流改为「两段伤害」

旧实现是「一次攻击、单段增伤」,表现上只弹一个伤害数字。现改为每次攻击打出两段等伤伤害(弹两个伤害数字):

  • 每段 = 原伤害 × 总伤害倍率 ÷ 2,两段合计 = 配置的总倍率(默认 2 倍,即每段就是原伤害)。
  • 拆段只在攻击发起端做一次,避免多点重复结算;对建筑、树木等非 Character 目标仍保持原版单段。

新增:怪物体型随星级增大(与词条体型叠加)

原版体型缩放由 LevelEffects 的档位表决定(m_levelSetups[level-2].m_scale,且要求档位数量 ≥ 等级 - 1):档位耗尽就完全不缩放、LCC 直跳高星时连低档都不生效;它写的又是 m_visual 同一个 transform,会与词条体型互相覆盖。

现改为「单一倍率、单一出口」:

  • 总体型倍率 = 星级倍率 × 词条倍率。星级倍率 = 1 + (等级-1) × 每星体型增幅(新增配置,默认 0.1 = 每星 +10%,填 0 即关闭星级体型),走 ZDO s_level,各端一致。
  • 原版 LevelEffects 的缩放赋值被抵消(保留它的材质变色与附加模型切换),体型统一由 BodyScale 施加,不再互相覆盖。
  • 视觉(m_visual)、受击碰撞体(m_collider)、近战攻击判定与 AI 攻击距离随同一倍率同步缩放(远程投射物不处理)。

调整:掉落收敛(高星怪掉落过多)

高星怪掉落爆炸的主因是原版 num = 2^(等级-1) 会同时放大掉落概率与数量(2 星 = ×4,3 星 = ×8),本 Mod 又在其上叠加了概率加成。本次新增上限收敛:

配置项 默认 说明
星级掉落倍率上限 4(新增) 给原版 2^星级 倍率封顶,3 星及以上按 2 星(×4)计算。8 = 保留 3 星原版倍率,1 = 完全取消星级放大,0 = 不限制
稀有物数量加成 1 → 0 默认不再给稀有物额外加数量,避免高星怪稀有物泛滥
单个物品掉落上限 20(替代原「单次掉落总量上限 500」) 每种物品各自封顶、超出直接截断,互不影响;不再像旧的「总量上限」那样把正常物品一起按比例削减

修复:词条开关关闭后,重启游戏仍然生效

挂载入口 AttachSingle 未校验词条开关,配置里关掉某个词条后,重进游戏 / 怪重新加载 zone 时又会被挂上。已在挂载入口加闸门:开关关闭即不挂载(存量怪仍由配置变更时的回收逻辑处理)。

修复:头顶血条文字刷 LiberationSans SDF 警告

TMP 组件随 GameObject 一起创建并激活,Awake 时字体仍为空 → TMP 走 Resources 兜底加载 LiberationSans SDF(Valheim 未打包该资源)→ 每次创建都刷警告。改为「先建未激活对象 → AddComponent → 赋字体 → 再激活」。

1.1.1(2026-09-26)

修复:多人下盗贼「偷了不还」

多人(尤其主机 + 客机/专服 + 客机)时,怪物的 ZDO 常由就近客户端持有(原版 ZDOMan 按活动区域分配 owner),而旧实现一律用 ZNet.instance.IsServer() 判据,两端都认为自己不该处理:

  • 偷取:客机端(它才是怪的 owner)以为自己不是服务器 → 不偷;服务器端既没有该怪的场景实例、也不执行该怪的伤害/死亡结算 → 永远收不到。表现就是「背包里东西没了,怪身上没有记录,击杀也不掉落」。
  • 归还:掉落挂在 Character.OnDeath 的 Postfix,而 OnDeath 最后一句是 ZNetScene.instance.Destroy(gameObject) → ZNetView.ResetZDO() 把 m_zdo 置空 → Postfix 读箱子 ZDO 直接空引用异常,归还代码一句都没执行。

修复:

  • 判据由「是否服务器」改为「是否怪的 owner」(m_nview.IsOwner()),与偷取触发点(受害者玩家 owner 端)对齐;两端不同 owner 时用 RPC 转交怪 owner 端处理。
  • 归还改为 Character.OnDeath 的 Prefix,在 ZDO 被销毁前完成掉落。

单机/主机下怪与玩家同 owner,行为与 1.1.0 完全一致。

修复:lcc_test 刷怪客户端看不到

刷怪基准位置原取 ZNet.GetPlayerList 里的 PlayerInfo.m_position,该字段只在玩家勾选小地图「公开位置」时才被填充,否则恒为世界原点 → 怪被刷到 (0,0,0),客户端 zone 外不加载。改为取 ZNetPeer.GetRefPos()(客户端周期性上报的参考位置,无条件有效)。

1.1.0(2026-09-20)

新增:掉落调整(强化怪终于有击杀收益)

新分组 7-掉落调整,让带星级/词条的怪掉得更多。只对怪物死亡生效,玩家死亡掉落不受影响。

配置项 默认 说明
掉落加成总开关 开 关闭后完全走原版掉落
每星掉落概率加成 0.2 每多一星,所有掉落项概率 +20%
词条掉落概率加成 0.5 怪带词条时再 +50%
掉落概率封顶 1 概率封顶 100%,避免 >1 破坏原版伪掉落判定
每星额外掉落数量 0 每个实际掉出的掉落项 + 星级 × 此值(0 = 与原版一致)
稀有物数量加成 1 稀有物掉出时个数 +1,在「每星额外掉落数量」之上叠加
堆叠掉落开关 开 同类掉落合并成堆(解决大量掉落物卡顿)
单次掉落总量上限 500 单只怪一次死亡的掉落总数兜底,0 = 不限制
  • 稀有物判定口径:掉落表中概率最低者视为稀有(概率并列则全算),并列多个时再取掉落数量最少者;稀有物可同时存在多个。
  • 未强化怪(无星级且无词条)完全走原版,不给任何加成。
  • 性能:原版对每个单位都生成一个掉落物 GameObject,高星级被 2^星级 放大数量后单帧可实例化数百个物体。开启堆叠后按物品堆叠上限合并(如 50 个一堆只生成 1 个物体),拾取时一次拿一整堆。

新增:文本提示双总开关

配置分组 1-通用 下新增:

  • 屏幕中间文字总开关(默认开)
  • 怪物头顶气泡总开关(默认开)

各词条自身的文本小开关仍独立生效,总开关是它们之上的总闸。

行为变化:屏幕中央文字现在只有 Boss 级怪物会弹。小怪、小Boss 的台词只走头顶气泡,且需要玩家在其附近才会显示——不会再出现"没看见怪、屏幕中间就刷出一行字"的情况。

调整:配置分组重新编号

分组 变化
7-掉落调整 新增
8-词条(盗贼 / 吸血 / 毒爪 / …) 由原 7-* 改为 8-*

分组在 cfg 文件里的显示顺序由段名排序决定,重编号后顺序为:1-通用 → 2-星级控制 → 3-每星成长 → 4-全局属性 → 5-攻击欲望 → 6-强化系统 → 7-掉落调整 → 8-各词条。

调整:默认数值

  • 吞噬:属性加成比例 20% → 40%(每吞噬一个友军,最大生命/攻击伤害/攻速 +40%、攻击冷却 -40%,层数累积)。

文档

  • 使用说明.md 更名为 LCC使用说明.md。
  • 新增 LCC强化效果说明.md / LCC强化效果说明.txt:全部词条的触发条件、效果、玩家应对、视觉提示,各含速查概览表。
  • 强化效果参考.csv 同步更新。

升级注意事项

词条分组段名由 7-* 变为 8-*,BepInEx 会把这些段当作新配置。你原来在 7-* 段里调过的数值不会自动迁移,会回落到默认值,需要重调一次(旧段会在下次保存配置时被清掉)。1- ~ 6- 段的配置不受影响。


1.0.0

首个版本:怪物强化词条系统(40+ 词条)、星级控制与每星成长、全局属性倍率、攻击欲望调整、强化抽取权重、配置服务器同步。