技能升到三级之后的成长没有终点:觉醒系统让烈火剑法、施毒术这些招牌技能继续进阶,觉醒一阶附加灼烧效果、二阶扩大作用范围。觉醒的判定走技能信息接口的双位设计,等级位与觉醒位分开管理互不干扰。
local AWAKE_COST = { stone = 30, gold = 2000000 }
function awakeSkill(actor, skillName)
local lv = getskillinfo(actor, skillName, 0) or 0
if lv < 3 then return false, "技能需先到 3 级" end
local awake = getskillinfo(actor, skillName, 1) or 0
if awake >= 2 then return false, "已达觉醒上限" end
if not actor:TakeItemByName("觉醒石", AWAKE_COST.stone) then
return false, "觉醒石不足"
end
setskillinfo(actor, skillName, 1, awake + 1)
sendmsg(actor, 1, skillName .. " 觉醒成功,当前觉醒 " .. (awake + 1) .. " 阶")
return true
end
getskillinfo 的第二个参数区分查询位:0 查等级、1 查觉醒阶。觉醒两级封顶,每级消耗 30 颗觉醒石与 200 万金币,双资源的设计让觉醒石与金币两条消耗线都有意义。觉醒后的技能效果变化由技能表的觉醒列驱动,烈火一觉附加灼烧、二觉扩大范围,效果表与客户端的表现资源同步更新。
function onAwake2(actor, skillName)
if skillName == "施毒术" then
addbuff(actor, 10086, 3600, 1, actor, { [7] = 50 })
sendmsg(actor, 1, "毒素亲和:施毒范围扩大")
end
if skillName == "烈火剑法" then
setplayvar(actor, "HUMAN", "fire_burn", 1, 1)
end
end
二阶觉醒附带被动属性(体力加成等),属性走 addbuff 的长时效通道,与技能等级解耦管理。觉醒石的双渠道投放(BOSS 掉落与活动兑换)让养成节奏可控,觉醒的每一步都有明确的数值回报,觉醒石枯竭的预警触发兑换活动的补位。
觉醒消耗与阶位提升的流水成对记录,觉醒率的分布按技能分层统计。
觉醒上限的判断曾经漏掉并发,两颗觉醒石同时点击触发了两次进阶,条件校验与消耗的原子化修复。觉醒被动的属性在洗技能时没有回收,觉醒保留但被动残留,属性来源的登记清单补上后一致。觉醒石的产出断档曾让中期玩家卡壳,双渠道的投放节奏按觉醒率的周报动态校准,产出与消耗的剪刀差控制在两成以内。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 成就点数不该只是数字摆设:点数商店兑换永久属性加成,50分换百分之一攻击,上限百分之五。兑换接口管三件事…
实战应用:用在哪里 UI 合图(把零散小图打包成图集)是 DrawCall 合批的前提(合批原理参考前篇)。手工打包的问题:…
实战应用:用在哪里 SQLite 默认的回滚日志模式在写入时会阻塞读取(写锁独占),游戏服务端“边写日志边查配置”的场景会出…
实战应用:用在哪里 烈火剑法甩出去的瞬间最怕砍到队友:PK 模式是攻击的准星开关——和平、组队、行会、全体四种模式决定谁的技…
实战应用:用在哪里 把大逃杀的缩圈机制搬进沙巴克野区:五十人无阵营乱斗,安全区每六十秒收缩一圈,圈外持续掉血,终局幸存者独享…
停服更新最怕撞上在线高峰,踢掉几百人换来一片抱怨。选对发布窗口,同样的更新内容,玩家体验是两回事。本文讲如何用996引擎的在…