传奇的异常状态家族庞大:绿毒、红毒、紫毒、麻痹、冰冻、蛛网,每种状态都有自己的解除需求。detoxifcation 接口按类型清除状态,道士的解毒术、药剂的净化效果、BOSS 战的驱散机制全部走这一个出口。
---解毒 opt:-1解所有毒 0绿毒 1红毒 3紫毒 5麻痹 6冰冻 7蛛网
function detoxifcation(actor, opt) end
-- 解毒术:清除全部毒素
detoxifcation(actor, -1)
-- 净化药水:只解麻痹
detoxifcation(actor, 5)
opt 参数是状态的类型编码:-1 一步清除所有毒,单独的编码对应绿毒、红毒、紫毒、麻痹、冰冻、蛛网六类。按类型清除的设计让解药有了细分空间:普通解毒药只解绿毒红毒,高级净化能解麻痹冰冻,药剂的档位与状态的威胁程度对应。
-- BOSS 的麻痹豁免:麻痹类状态免疫
function BossState.tryPoison(boss, poisonType)
if boss:IsBoss() and poisonType == 5 then
sendmsg(actor, 1, "该 BOSS 免疫麻痹")
return false
end
makeposion(boss, poisonType, 15, 8, 0)
return true
end
状态的施加与解除是一对接口:makeposion 挂状态,detoxifcation 清状态,两边的类型编码必须同源。BOSS 的状态免疫表在施加入口拦截,豁免的类型在图鉴里公示。异常状态的时间轴显示在目标头顶:绿毒的剩余秒数、麻痹的冻结进度条,状态的可见性让团队协作有信息基础。
异常状态的施加与解除流水成对审计,状态残留(解除后仍在生效)即为引擎级异常,出现即上报。
解毒的类型编码曾经与施毒的类型编码错位:施毒的 0 是绿毒,解毒的 0 也是绿毒但 1 是红毒,两表混用后解红毒变成了解绿毒,红毒残留的投诉推动了编码表的统一文档。蛛网状态的解除曾经遗漏在 -1 的全清逻辑里,玩家带着蛛网减速走出安全区,全清的遍历清单补齐了全部状态类型。
异常状态的施加、查询、解除三个接口的类型编码同源自一张状态表,新增状态只改表不改代码。状态的可视化:头顶图标与剩余时间条的样式按状态类型区分,信息设计 precedes 数值设计。解毒道具的定价按可解状态的威胁度分级,麻痹解毒剂比绿毒解毒剂贵十倍是合理的。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 新值班排查“玩家丢装备”,翻日志的关键词全靠问老员工。检索模板库把常见故障的日志关键词、过滤条件、排查步…
实战应用:用在哪里 玩家申诉“我的宝石昨天还在”,没有昨天的数据就无从核对。快照比对方案:每日零点给热键做快照存档,申诉时拿…
实战应用:用在哪里 值班早上一上班先手动点一圈服务状态,漏检一项就是隐患过夜。夜间巡检把健康检查脚本化:凌晨四点自动跑十四项…
实战应用:用在哪里 副本里的语音指引报点很贴心,但老玩家听八百遍“注意走位”只想静音。语音指引开关方案:总开关加分类开关两级…
实战应用:用在哪里 新服开荒四千人同时挤登录,服务器只放得下两千。排队系统把超出部分编队:客户端每十秒收一次排队位置推送,回…
实战应用:用在哪里 异地登录的提醒邮件玩家未必看得到,短信验证码是触达率最高的确认通道。方案:陌生设备登录触发短信验证,验证…