道士的施毒术一次一层、可叠五层,每层每两秒掉一次血,层数随时间自然衰减。叠毒机制让道士的持续输出有了操作层次:卡毒层、补毒时机成为手法的一部分。
施毒命中时层数加一封顶五层,全局定时器每两秒按层数结算掉血并自然衰减一层。actor是字符串,转对象后结算毒层。
local POISON_CAP = 5
function applyPoison(actor)
local player = class(actor)
local stacks = tonumber(getplayvar(actor, 2, "POISON_STK") or "0")
if stacks >= POISON_CAP then
sendmsg(actor, 0, "毒层已满5层")
return
end
setplayvar(actor, "HUMAN", "POISON_STK", stacks + 1, 1)
end
setontimerex(106, 2)
function ontimer106()
for _, name in ipairs(poisonedList()) do
local a = getplayerbyname(name)
if a ~= nil and isplayer(a) then
local s = tonumber(getplayvar(a, 2, "POISON_STK") or "0")
if s > 0 then
humanhp(a, "-", s * 15)
setplayvar(a, "HUMAN", "POISON_STK", s - 1, 1)
end
end
end
end
毒层层数在目标头顶以绿点呈现,客户端按层叠数渲染绿点数量,施毒者能读出补毒时机。
local function refreshDots(name)
local a = getplayerbyname(name)
if a == nil then return end
local s = tonumber(getplayvar(a, 2, "POISON_STK") or "0")
for i = 1, 5 do
GUI:setVisible(dots[i], i <= s)
end
end
五连施毒验证封顶、两秒衰减节奏、归零停止扣血三条路径。上线后统计五层满毒的覆盖率,道士对高血量目标的满毒覆盖率超过六成说明毒伤偏强,数值组按覆盖率调单层伤害。
POISON_STK键在目标身上,同一目标被两名道士施毒时层数混记,按“施毒者+目标”分键再按目标聚合显示,归属与伤害才清晰。humanhp的扣血走毒伤通道要与攻击伤害区分,红名值、成就击杀等按伤害来源统计的系统才不会算错账。poisonedList全服遍历要切片,中毒玩家上千时两秒一轮全扫扛不住。客户端绿点刷新按层数变化事件驱动,轮询刷新浪费渲染。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 行会建设需要资金,成员的投入却看不到回报。行会发展基金让成员按份投入行会基金,基金用于行会建设与集体活动…
实战应用:用在哪里 占领沙巴克后的日常维护靠几个人,城内挂机广告无人管,安全区成了法外之地。沙城巡逻队把城防日常做成排班玩法…
实战应用:用在哪里 行会仓库运营数月后杂物堆积:过期活动道具、低级材料、重复装备混杂在贵重物资之间。仓库整理接口按价值与用途…
实战应用:用在哪里 一次活动奖励少发,三名客服给出三种答复:补发、不补发、等通知。玩家把三张截图拼在一起发到论坛,一场本可善…
实战应用:用在哪里 玩家拥有多个称号,切换佩戴后效果不符预期又要来回换。称号预览在切换前展示佩戴效果:名字上方的称号样式、属…
实战应用:用在哪里 赤月巢穴的魔龙教主血量降至三成会进入狂暴:攻击翻倍、召唤赤月护卫、周期性释放全屏魔龙血域。狂暴触发把 b…