增益效果的四个经典事故:同名 buff 叠了两层时间翻倍、攻防buff互相覆盖顺序看脸、烈火剑法加成和药水加成乘出十倍攻击、下线重登 buff 全丢。buff 系统设计的目标:叠加、互斥、优先级、持久化四件事各有一套明确规则,任何新 buff 接入系统时只填配置不改逻辑,事故从源头消失。
叠加规则三选一(按 buff 配置):刷新型(同名刷新时长不叠层,攻击类默认)、叠加型(可叠 N 层,如叠加 5 层每层 +3% 攻)、独立型(各自独立计时,药水类)。互斥表:同槽位 buff 互斥(攻击类一个槽、防御类一个槽、移动类一个槽),新 buff 优先级高于旧 buff 时顶替、低则被拒,同优先级则刷新。数值上限:同槽位实际生效值设上限(攻击类槽位总加成不超过 50%),防止多来源相加失控。持久化:持续超过 5 分钟的长 buff 落库(下线重登恢复剩余时长),短 buff 不落库。数值验证:互斥表上线后"双攻buff"类 bug 归零,同槽位加成越界事故从月均 4 起降到 0。
叠加参数单独一节。配置如下:
[BuffStack]
ModeRefresh = 1
ModeStackMax = 5
ModeIndependent = 1
AtkSlotCap = 50
互斥参数单独一节。配置如下:
[SlotRule]
AtkSlot = 1
DefSlot = 1
MoveSlot = 1
KeepMinSec = 300
变种方向:一是 buff 冲突可视化,被顶替的 buff 在飘字里提示"被 XX 覆盖",玩家理解为什么自己的增益没了;二是增益共享,组队时队长的某增益按 30% 效果共享给队友,团队增益战术化;三是增益图鉴,玩家当前身上所有 buff 的来源明细一览,数值透明化。设计纪律一条:新 buff 接入只允许填配置(叠加模式、槽位、优先级、时长),逻辑层不为任何一个具体 buff 写 if——第一个特例出现时系统就开始腐烂。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
一、抛坑提问:三方增强插件直接 getmetatable(weapon) 拿到元表,把裁决之杖攻击改到 9999。元表能不能…
一、一行代码拆解:rawget(PriceList, name) —— 这一行绕过元表直达表本体,价目查询不走 __inde…
一、隐蔽陷阱:沙巴克守城名单清理离线成员,正序 for 循环里 table.remove(list, i),删一个后续整体前…
一、线上事故:运营要按供需公式浮动裁决之杖价格,某次把表达式字符串直接塞进裸 loadstring 执行,串里夹带未知全局调…
一、线上事故:红名洗白进度按 10 段槽位刷新,GM 修正过 PK 值的玩家带着 -8 的负值进来,进度槽算出 -2,进度条…
一、抛坑提问:烈火剑法连招表存着 4 段延时 {200, 400, 600, 900},算总窗要逐个相加。段数扩到 6 段,…