裁决之杖强化连败十次没有任何补偿:连续失败的挫败感让玩家流失集中在强化页面。强化保护封装:强化失败累计保底计数,计数达到阈值下次必成;成功后计数清零——挫败有兜底,成功有价值。
强化与保底。示例代码如下:
local PITY = 5
local function enhance(actor)
local pity = tonumber(getplayvar(actor, 1, "EnhPity")) or 0
local lv = tonumber(getplayvar(actor, 1, "EnhLv")) or 0
local success = pity + 1 >= PITY or math.random(1, 100) <= 60
if success then
setplayvar(actor, 1, "EnhLv", lv + 1, 1)
setplayvar(actor, 1, "EnhPity", 0, 1)
sendmsg(actor, 1, "强化成功,等级 " .. lv + 1 .. "。")
else
setplayvar(actor, 1, "EnhPity", pity + 1, 1)
sendmsg(actor, 1, "强化失败,保底 " .. pity + 1 .. "/" .. PITY .. "。")
end
end
消耗与校验。示例代码如下:
local function tryEnhance(actor)
if not takeitem(actor, "强化石", 2, 0, "强化消耗") then
sendmsg(actor, 1, "强化石不足。")
return
end
enhance(actor)
end
enhance 的成败二分支共享同一对变量——EnhLv 持久保存强化等级,EnhPity 累计失败次数;pity + 1 >= PITY 的判断写在随机之前,保底必成的优先级高于概率判定。tryEnhance 先 takeitem 扣强化石(返回布尔表示是否扣到),扣不到直接返回——先扣料后结算的顺序保证消耗与产出对账。
强化保护踩过三个坑:一是保底计数没有按强化部位分键,武器保底被首饰消耗掉,键改为 EnhPity_部位分部位累计;二是 success 的随机判定写了两处导致概率翻倍,判定收敛为一处赋值布尔;三是保底达成时的成功没有区分概率成功与保底成功,提示文案统一为强化成功,避免玩家推断出保底机制后钻概率空窗。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏】 一、业务场景 帮会人少时打不死召唤的目标,人多时又抢不到,时机全靠会长手点,纠纷不断。改为每日一次的定时召唤加伤害…
【游戏】 一、业务场景 30 人团本开荒,伤害按个人目标结算,近战几秒就把目标打空,后排毫无参与感。改为全团共享血池:目标总…
【语法】 一、隐蔽陷阱 账目表频繁单点改值又要频繁查前 n 项合计:朴素写法改值一步、查询要扫 n 个元素,查询一多整体就慢…
【游戏】 一、业务场景 想拉动日活,登录礼包要跟着连登天数走:第 1 天小奖,第 7 天大奖。发放核心就一行:按连登天数查阶…
【语法】 一、隐蔽陷阱 大数加法用字符串竖式解决了失真,两笔大数相乘怎么办?tonumber 相乘在 9 位乘 9 位时结果…
【语法】 一、隐蔽陷阱 两批任务分别每 6 分钟与每 8 分钟刷新一次,想知道它们同帧刷新的间隔,从 1 开始逐个试除到 4…