沃玛教主血量每降一档触发一次全服播报,播报逻辑散在伤害结算里,改一条文案翻三个文件。时间轴框架把阶段播报做成数据:血量阈值、播报文案、音效一次性登记,教主的每一个阶段都在计划之内。
阶段表登记血量阈值与播报内容,伤害结算处只调框架的检查入口,按当前血量比对未播报的阶段。
local TIMELINE = {
{ hp = 70, text = "沃玛教主发出了愤怒的咆哮!" },
{ hp = 40, text = "沃玛教主进入狂暴状态!" },
{ hp = 15, text = "沃玛教主摇摇欲坠,全力以赴!" },
}
local fired = {}
local function checkStage(actor, hpPct)
for i, st in ipairs(TIMELINE) do
if hpPct <= st.hp and fired[i] ~= true then
fired[i] = true
sendcentermsg(st.text)
playsound(actor, "boss_stage" .. i .. ".wav")
end
end
end
教主重置或重生时清空播报标记,时间轴对每一任教主都完整播放一轮。
local function resetTimeline()
fired = {}
setsysvar("BOSS_STAGE_TS", os.time())
end
血量从满打到空验证三条播报各触发一次且顺序正确;教主重生后复播验证复位。上线后看各阶段的平均击杀间隔,四十档到十五档的间隔过长说明狂暴阶段难度过高,反馈数值组。
fired标记是全局表,多只带时间轴的BOSS同场时互相覆盖,标记要按BOSS实例分表。sendcentermsg的播报间隔太近会互相顶掉,两条阶段阈值相邻时合并播报或延后第二条。playsound的音效资源要预加载,战斗中现加载会卡一拍,音效与资源包一起进预载清单。血量百分比的计算口径以最大血量为分母,教主被加血后百分比回升,已播报的标记不回退,播报只进不退。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 装备回收商 NPC 每天按评分收购玩家的装备,裁决之杖、骨玉权杖按攻击、持久加权打分,榜上只要前五名。数…
实战应用:用在哪里 沙巴克攻城是全服行会战的最高舞台:攻方砸开城门、抢占皇宫,守方依托城墙与复活点反打。规则设计的关键是节奏…
实战应用:用在哪里 影分身玩法给法师职业补上生存短板:危急时刻召唤四个影分身分担仇恨,敌人需要在六格范围内分辨真身,猜错就浪…
实战应用:用在哪里 组队邀请、行会宣战这类关键信令丢了没有兜底,玩家只能反复手点,高峰期体验很差。重试机制给信令加确认回执:…
实战应用:用在哪里 新资料片上线首日预约量常是日常十倍,一口气全开会让数据库与登录网关同时过载。滚动开区把开区动作排成队列:…
实战应用:用在哪里 百人同屏的沙巴克外围战场,每个玩家每秒跑动会触发数次位置更新,全部即时下发时广播量随人数平方增长,网关先…