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.
CHANGELOG
Changelog
1.0.3(版本号更新)
- 版本号 1.0.2 → 1.0.3,用于区分重新分发的安装包
- 文案、数值、图标、模型、音效均未改动
1.0.2(描述文案调整)
- 模组简介(manifest description)精简为一句:新增一件月球主动装备「瓶中蜂蜜」,效果是弱化版的尖晶强心剂
- README 改为分三行的完整说明:七项属性、持续 20 秒 / 冷却 45 秒、永续搭配方案,并注明所有数值可在 Config editor 中修改
- 模组功能、数值、图标、模型、音效均未改动
1.0.1(README 精简)
- README 正文改为单段简介:月球主动装备「瓶中蜂蜜」,列出七项属性、持续 20 秒 / 冷却 45 秒,以及「2 个溺亡者的心意」或「1 个溺亡者的心意 + 1 个燃料电池」的永续方案
- 去掉了原 README 里的 YAML 头信息与安装说明,正文即简介
- 模组功能、数值、图标、模型、音效均未改动
1.0.0(更名为 BearHoney)
本版起模组由 CannedHoney 更名为 BearHoney,版本号重新从 1.0.0 开始。
- 程序集 / 命名空间 / 插件 GUID 全部改为 BearHoney,GUID 现为
com.bearhoney.RoR2 - 配置文件变为
com.bearhoney.RoR2.cfg(旧配置文件不会自动迁移,需要重新设置) - 安装目录:
BepInEx/plugins/BearHoney/BearHoney.dll - 内部名称:装备
BearHoney、副作用BearHoneyAffliction、增益bdBearHoney - 冷却 40 秒 → 45 秒
- 游戏内显示名「瓶中蜂蜜」、图标、模型、属性数值均未改动
1.0.0 以下的版本属于更名前的 CannedHoney 时期,仅作历史记录。
1.8.3(全量代码审计)
模型渲染:双面网格的法线被平均掉
ObjModelLoader做双面时只复制了三角形索引,没有复制顶点。结果vertexNormals.Count != vertices.Count,会走RecalculateNormals;而正反两面共享顶点,法线互相抵消,整件模型会偏黑、光照发平- 修复:双面时同步复制顶点,背面法线取反;备用车削模型(
MeshData.ToMesh)同样处理 - 顶点数翻倍后仍在 Unity 单网格上限内(最大单件约 9.7k)
护盾缓存
baseShieldAdd的基数反推依赖「上次自己加了多少」。如果护盾装备在增益期间被移除,maxShield归零但旧 bonus 还留在缓存里,下一次重新获得护盾时反推基数会偏小。现在基数为 0 时一并清掉缓存
拾取模型加载
- 尖晶强心剂 prefab 增加缓存,避免重试协程每 0.5 秒重复
LoadAssetAsync造成 Addressables 句柄堆积
1.8.2(代码审查修复)
护盾 +15% 之前实际上没生效
- 原因:
StatHookEventArgs.shieldTotalMult在 R2API 的 IL 注入里只乘在「基础护盾 + 等级护盾」这一段;护盾类物品(个人护盾发生器、超越等)的加成是在这之后用num93 +=累加的,乘不到 - 现在改用
baseShieldAdd注入固定增量,并用ConditionalWeakTable记住上次加的数值,从body.maxShield反推原始护盾,避免每次重算把加成算进基数导致指数增长 - 不触碰
maxShield,所以原版num146 = 新上限 - 旧上限的补盾 / 削盾逻辑仍然正常
其他修复
- 死亡时漏结算:
CharacterBody销毁时不一定走SetBuffCount,待发放的副作用层数会留在 master 上,被算到下一次喝药(等于一次喝药吃两次副作用)。现在监听GlobalEventManager.onCharacterDeathServer,死亡时也结算 - 结算逻辑抽成
SettlePending(),先销毁 tracker 再发放,重复调用安全 Activate增加HoneyAffliction.itemIndex != None判断,物品尚未注册时不记录无效层数,并打出明确日志LoadPickupModelRoutine在HoneyEquipment为空时增加空引用保护- 副作用物品描述补上「额外承受 +10% 诅咒(降低最大生命值)」,与实际的
baseCurseAdd一致
1.8.1(护盾隐藏 / 拾取红字 / 音量对齐)
- 详细描述里移除护盾一行:护盾 +15% 照常生效,只是不再写进文字
- 拾取文本改用原版尖晶强心剂同款颜色:副作用那句包在
<color=#FF7F7F>里(取自EQUIPMENT_TONIC_PICKUP) - 音效改为走原版同一条路径:
NetworkSoundEventCatalog.FindNetworkSoundEventIndex("Play_item_use_tonic")→EntitySoundManager.EmitSoundServer,挂载对象与音量与尖晶强心剂完全一致,多人客户端也能听到;catalog 未注册时回退Util.PlaySound - 移除了 1.8.0 里手动补播的客户端 RPC 补丁(不再需要)
1.8.0(两套描述 + 音效修正)
描述分成两套(对齐尖晶强心剂)
pickupToken(地上 / 商店 / 标记 ping / 拾取提示):立即获得小幅全属性加成。效果结束后有几率产生所有属性降低的副作用。descriptionToken(拿到身上后的装备栏详细描述):恢复逐项数值 —— 伤害 +30%、攻速 +20%、护甲 +10、最大生命 +15%、护盾 +15%、回血 +50%、移速 +20%,并保留 20% 几率与副作用效果说明- 运气影响的文字仍然不显示
音效:找到真正的事件了
- 上一版复制
TonicBuff.startSfx的做法无效——尖晶强心剂的使用音效实际是 Wwise 事件Play_item_use_tonic(资源Audio/GeneratedSoundBanks/Windows/use_tonic.bnk,事件 ID 2813300389) - 现在改为显式播放该事件:
- 服务器 / 单人:在
Activate里Util.PlaySound("Play_item_use_tonic", body.gameObject) - 多人客户端:在
RpcOnClientEquipmentActivationRecieved之后补播(主机已播过,不重复)
- 服务器 / 单人:在
- 移除了无效的
startSfx协程
1.7.0(描述简化 + 使用音效)
描述
- 装备描述改为概括文字:「立即获得小幅全属性加成。效果结束后有几率产生所有属性降低的副作用。」
- 不再罗列各项数值、触发几率
- 运气影响的说明从界面移除,但判定逻辑完全保留(仍按
master.luck做多骰取最优/最劣) - 拾取提示同步改为「小幅全属性加成」
音效
- 新增:使用瓶中蜂蜜时播放尖晶强心剂的使用音效
- 实现方式:把
RoR2Content.Buffs.TonicBuff.startSfx复制到自定义 buff 的startSfx上。RoR2 的AddTimedBuff会在每次添加限时增益时自动通过EntitySoundManager播放该音效,所以每次使用都会响 - 若
TonicBuff.startSfx在启动阶段尚未加载,会在后台等待并在就绪后补上
1.6.1(副作用图标改色)
- 按反馈只改颜色、不动形状:以主物品图标的同一张图为源,做渐变映射重上色
- 色阶取自参考图实测:#2D2A43(暗部)→ #3E3D5D(中调)→ #435676(亮部),两端做合理延伸
- 原金色蜂蜜在同一色阶里被推到最高光,变成浅灰蓝(#889AC2),轮廓与位置完全保留
- 轮廓光由青色改为灰蓝,蜂巢纹理、晶体塞、瓶身切面均未改动一个像素
- 主物品图标与增益图标仍是金色蜂蜜版,未改动
1.6.0(副作用图标 + 运气机制)
副作用图标
- 重画为冷色调:深蓝近黑瓶身 + 浅灰蓝六瓣浮雕纹样 + 淡蓝晶体塞 + 少量飘散碎片
- 与主物品「瓶中蜂蜜」(深蓝瓶身 + 金色蜂蜜)在物品栏里一眼可分
- 128×128 透明底;导出时只保留瓶身主体,角标与背景全部丢弃
副作用几率现在受运气影响
- 之前直接用
CheckRoll(20)判定,等于绕过了运气。现改为与原版尖晶强心剂相同的写法:!CheckRoll(100 − 基础几率) master.luck每层四叶草 +1、每层纯净 −1- 实际概率按 RoR2 的「多骰取最优/最劣」规则换算:
- 运气 ≥ 0:
P = p^(luck+1) - 运气 < 0:
P = 1 − (1−p)^(|luck|+1)
- 运气 ≥ 0:
- 基础 20% 时:运气 +1 → 4%,0 → 20%,−1 → 36%,−3 → 59%,−10 → 91.4%
- 装备描述里补上了「受运气影响」的说明
- 日志会打印基础几率、当前运气、换算后的实际几率
1.5.2(副作用修复)
修复:副作用道具不再从物品栏消失
- 根因:副作用物品一直使用
hidden = true。RoR2 物品栏的显示判定是ItemIsVisible() => !itemDef.hidden,所以物品其实已经被发放进背包,却永远不会被画出来 - 修改:
hidden改为false,物品栏会正常显示图标与叠加层数,发放时也会弹出获得通知(GenericPickupController.SendPickupMessage,与原版一致) - 图鉴仍然不显示:日志的收录条件是「品质对应的
ItemTierDef.isDroppable」。本物品品质为NoTier,而游戏里根本不存在NoTier的ItemTierDef,因此天然被排除;另外补了一个 Harmony 兜底 - 宝箱 / 三选一 / 打印机 / 净化池仍然不会出现:
ItemTag.IgnoreForDropList+canRemove = false,两条独立保险 - 稳定性:待结算层数从
CharacterBody移到CharacterMaster,玩家死亡 / 重生重建 body 时不会丢层数 - 可观测性:每次使用都会在日志里打印是否触发副作用,结算时打印发放层数与当前总层数
1.5.1(代码审查修复)
- 修正资源地址:Addressables 地址应写成
RoR2/Base/<名称>/<文件>.prefab(去掉Assets/与Equipment、Items等分类目录)。1.3.0 误改成了带Equipment/的路径,会导致拾取模型加载失败,现已回退 - 地址加载改为多级回退:Tonic 与材质模板各准备多个候选地址,逐个尝试
- 网格双面化:OBJ 是逆时针绕序、Unity 以顺时针为正面,为避免绕序判断错误导致整件模型被剔除(看不见),所有部件正反两面都生成;备用车削模型同样处理
- 补写顶点色(全白):部分拾取物 shader 会乘顶点色,缺 COLOR 流时可能整件变黑
- 修复:自定义模型因 Addressables 未就绪而失败时,即使回退到原生瓶子也会继续重试,不会一直停在原生模型
- 增益结束时的副作用记录组件会及时销毁;若结算时无法发放(inventory / ItemIndex 不可用)会丢弃层数并告警,避免残留层数被算到下一次增益上
- 清理了未使用的蜂巢贴图生成代码
1.5.0
模型按图标重建
- 瓶身改为12 面切面低模(倒角 2.6mm),和图标的多边形轮廓一致
- 瓶腹新增6 块六边形浮雕板(正面最大),用略深的藏蓝材质区分
- 晶体塞改为六棱柱 + 锥尖;颈环、蜜环、挂蜜按图标比例调整
- 全部部件硬面着色,拆成 11 个 OBJ 嵌入 DLL(body / collar / stopper / ring / drop / panel_0~5)
1.4.0
3D 模型换成 Blender 建模
- 用 Blender 5.2 重新建模并导出 OBJ(内嵌进 DLL),共 6 个部件:瓶身 / 金属颈环 / 六面双锥晶体塞 / 瓶口蜜环 / 蜜池 / 挂蜜
- 瓶身轮廓用 Catmull-Rom 插值 + 64 段车削,肩线与瓶底过渡更顺;法线为 Blender 平滑法线
- 运行时由模组内置的极简 OBJ 解析器生成网格,并按圆柱投影生成 UV(蜂巢刻纹贴图可正常显示)
- 原来的程序化车削模型保留为备用:OBJ 读取失败时自动回退
1.3.0
3D 拾取模型(新)
- 新增程序化生成的拾取模型:不透明深蓝瓶身(28 段车削低模)+ 蜂巢刻纹贴图 + 金属颈环 + 六面双锥晶体瓶塞 + 瓶口蜂蜜环与挂蜜
- 模型在运行时用代码生成,不需要任何 assetbundle;材质取自原生不透明拾取物,保证 shader 可用
- 拾取模型:优先用自定义模型,失败时退回尖晶强心剂的原生瓶子模型
- 新增配置
General.UseCustomModel(默认 true)与General.UseTonicModelFallback(默认 true),可随时退回原生瓶子模型
1.2.3
图标(重新绘制)
- 全新绘制的不透明瓶身:深蓝近黑漆面,带分面与蜂巢刻纹("有一点纹路")
- 蜂蜜只在瓶口:塞口溢出小小一圈 + 挂在颈环上的一小滴,瓶腹、瓶肩完全无蜜
- 晶体瓶塞 + 金属颈环 + 青色月球边光,构图/尺寸/配色对齐尖晶强心剂
- 导出前抠掉纯黑背景并裁掉主体以外所有像素,右下角「AI生成 / WORKBUDDY」角标随之丢弃,成品无任何文字
1.2.2
图标
- 按最新提供的图重新导出:右下角「AI生成 / WORKBUDDY」文字已完全剔除
- 导出时只保留瓶身主体(抠黑底 + 最大连通区域裁剪),主体以外的像素全部丢弃,水印、角标不可能残留
- 128×128 游戏内图标 + 256×256 商店图标都来自同一张干净图
1.2.1
图标
- 按反馈调整:蜂蜜只留在瓶口(塞口周围一小圈 + 颈环处一点点),瓶身完全干净,不再有挂壁的蜂蜜
- 瓶身仍为不透明的深蓝漆面,青蓝月球边光、构图与配色不变
1.2.0
改名
- 物品名:罐装蜂蜜 → 瓶中蜂蜜(英文名 Bottled Honey)
- 描述、拾取提示、日志文案全部同步为「瓶中蜂蜜」
图标
- 重画为瓶形:窄颈、圆肩、圆腹,瓶身完全不透明(实色深蓝漆面,不再有玻璃透光)
- 尖晶石瓶塞 + 金属瓶颈环,金色蜂蜜从塞口溢出并顺瓶身流下
- 128×128,深蓝近黑 + 电解青边光 + 蜂蜜金,构图/配色对齐尖晶强心剂
- 装备落地模型继续复用尖晶强心剂(本身就是瓶子)
1.1.0
数值调整
- 最大生命值:+20% → +15%
- 护盾:+20% → +15%,仍然照常生效,但不再写进道具描述文字
- 其余数值不变:伤害 +30%、攻速 +20%、护甲 +10、被动回血 +50%、移速 +20%、冷却 40 秒、持续 20 秒
副作用道具修复
- 修复:「蜂蜜副作用」被当成普通 1 级物品,会出现在图鉴、箱子和三选一机器里
- 现在该物品为 NoTier + hidden + IgnoreForDropList:
- 不进图鉴(日志)
- 不进任何箱子 / 商店 / 三选一的掉落池
不弹拾取提示、不显示在物品栏→ 1.5.2 已修正:hidden会让物品栏不绘制,现改为正常显示
- 副作用效果保持不变(每层 -5% 伤害/攻速/移速/回复,+10% 诅咒,可叠加)
图标
- 重画图标:不透明的深蓝色金属罐(不再是透明瓶身),蓝色月球光边 + 金色蜂蜜,尺寸 128×128
1.0.0
- 首个版本