祖玛教主的标志性机制是召唤:血量每到阈值就高喊"祖玛卫士们,保护我",全场小怪向它聚集围攻玩家。阶段化 BOSS 的实现要点是血量阈值的监听、阶段行为的切换与阶段间的状态隔离。
local CALL_STAGES = { [80] = "祖玛卫士们,保护我!", [50] = "弓箭手,放箭!", [20] = "祖玛的子民们,复仇!" }
function BossAI.onHpRatio(boss, ratio)
local stage = CALL_STAGES[math.floor(ratio / 10) * 10]
if stage and not boss.stageDone[stage] then
boss.stageDone[stage] = true
boss:Say(stage)
BossAI.summonGuards(boss, stage)
end
end
血量 80%、50%、20% 三个阶段各自触发一次召唤,stageDone 表防止同一阶段重复触发。每阶段召唤的怪物组合不同:80% 唤卫士、50% 唤弓箭手、20% 唤近卫全套,压力逐段抬升。
function BossAI.summonGuards(boss, stage)
local spawnPlan = {
["祖玛卫士们,保护我!"] = { { name = "祖玛卫士", n = 6 } },
["弓箭手,放箭!"] = { { name = "祖玛弓箭手", n = 4 } },
["祖玛的子民们,复仇!"] = { { name = "祖玛卫士", n = 4 }, { name = "祖玛弓箭手", n = 4 } },
}
for _, plan in ipairs(spawnPlan[stage]) do
for i = 1, plan.n do
local mob = boss:SummonNear(plan.name, 3)
mob:SetHateTarget(boss.hateTop)
end
end
end
召唤的小怪直接仇恨锁定伤害榜第一的玩家,逼队伍的仇恨管理调整站位。小怪上限 10 只,场上超出时不再召唤,防止无限刷怪拖垮服务器。祖玛教主的掉落表在末段击杀时结算,二十血阶段的召唤把战斗推向高潮,掉落也最丰厚。
阶段触发的时序日志校验阈值命中的一次性,召唤数量与上限的核对防止超刷。
血量阈值的监听早期用轮询,BOSS 血量抖动跨阈值时一帧内触发两次召唤,阈值判定加方向性约束:只在下行穿越时触发。召唤的小怪曾被引走出 BOSS 房间拉到走廊刷装备,小怪绑定房间区域越界即消失,刷怪漏洞随之关闭。
祖玛教主的台词在三阶段各不相同,语音与文字双重播报,BOSS 的人格化塑造让战斗有了叙事的纵深感。召唤的小怪死亡不掉落,经验减半,防刷小怪的规则堵住了把教主战刷成练级场的口子。阶段血量的监听精度做到每 200 毫秒校验一次,跨阈值的下行穿越判定杜绝了回血技能导致的重复触发,阶段状态机的幂等性是 BOSS 系统的工程底线。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 脚本的规范靠人盯盯不过来:命名风格漂移、全局变量乱用、缩进混着来——风格检查器把这些规则的执行自动化。提…
实战应用:用在哪里 拍卖行的出价是一场与时间的博弈:出价的按钮、倒计时的紧迫、截拍瞬间的悬念——拍卖界面的要点是出价的流程、…
实战应用:用在哪里 强化连败七次是什么体验?幸运值机制给失败的玩家一个隐性的承诺:每次失败累加幸运值,幸运值越高下一次的成功…
实战应用:用在哪里 审计日志的价值在于不可抵赖:被改过的日志比没有日志更危险——纠纷的追溯、内部的追责都建立在「日志没被动过…
实战应用:用在哪里 活动结束给 3 万玩家发奖励:一次性群发让邮件表瞬间多 3 万行、投递的队列堵塞正常的通信。批量邮件的分…
实战应用:用在哪里 面对面的交易是传奇最经典的交互:两人面对面、各自放入物品与金币、双方确认后成交。交易的协议要点是会话的建…