Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
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即关闭星级体型),走 ZDOs_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+ 词条)、星级控制与每星成长、全局属性倍率、攻击欲望调整、强化抽取权重、配置服务器同步。