【游戏功能】
有玩家在留言区拍桌子:咒明明贴上去了,怪打我怎么还是三十八?管理员回了一句"等它出刀再看",他才知道那三刀软刀已经悄悄挨完了。诅咒术的问题就出在这——它生效的时候不打锣,只把狼怪的爪子悄悄泡软。今天拆诅咒术,看"削弱系"怎么把一次施法演成三刀看不见的账。
一、贴符、软刀、符尽三段
诅咒术的循环三段。贴符段:一道紫咒从指尖追着狼怪去,命中的那一刻它脚下漾开一圈紫环、头顶浮起三枚旋转的咒印,周身罩一层淡淡的紫纱——贴符的瞬间要有动静,紫环加咒印两件事同时落地,玩家才知道"挂上了"。软刀段:狼怪的下一刀落下来,玩家头顶跳出的数字从三十八掉到十五——削弱的证据不在怪身上,在这枚缩水的数字里;每吃一刀软刀,头顶就有一枚咒印烧尽飞散,三枚咒印就是三刀软账。符尽段:第三枚咒印散尽,紫纱当场撤掉,狼怪又硬了回去,下一刀回到三十八,前后两个数字一对照,这门咒的分量全在这三十一点的落差里。三段的核心是"削弱要可数":三枚咒印就是三刀软刀,玩家数得清,怪也"欠"得清。
完整演示在这,默认自动循环:
fx-hexcurse
二、幂尔框架实现:咒印就是计数器
三刀软账的账本挂在一个表里:
local HexCurse = {}
local HEX_PROCS = 3 -- 三枚咒印 = 三刀软刀
local HEX_LIFE = 7.0 -- 七秒不吃刀也过期
local DMG_NORMAL = 38
local DMG_HEXED = 15
local curse = { on = false, procs = 0, life = 0 }
function SL:CastHex(caster, target)
SL:PlayActorAct(caster, "cast")
SL:TossOrb(SL:GetValue("actorX", caster),
SL:GetValue("actorY", caster) - 80,
SL:GetValue("actorX", target), 40, 0.6, function()
curse.on = true
curse.procs = HEX_PROCS
curse.life = HEX_LIFE
SL:RingAt(target, 42, "#8957e5") -- 落地紫环
for i = 1, HEX_PROCS do
SL:AttachRune(target, i) -- 三枚咒印逐枚挂上
end
end)
SL:Cooldown("hex", 3.0)
end
function SL:OnMonsterHit(target, dmg) -- 怪出手时先进这道闸
if not curse.on then return dmg end
curse.procs = curse.procs - 1
SL:BurnRune(target) -- 烧掉一枚咒印
if curse.procs <= 0 then
curse.on = false
SL:DetachAllRunes(target) -- 咒尽:紫纱撤场
end
return DMG_HEXED
end
return HexCurse
闸门的位置是全技能的命门:OnMonsterHit 挂在怪的出手事件上,改的是结算前的伤害值——削弱要落在"账出来之前",账出来再改就是马后炮。
三、紫咒的演出规格
咒印是全技能的脸面:三枚菱形小印绕着狼怪头顶慢转,转速一点六圈每秒,印是紫不用大红——大红是玩家的颜色,紫色才是"来路不明的咒"。软刀的数字也要换装:三十八的挨打数字是亮红十四号,十五的软刀数字是灰紫十二号——数字一缩色一沉,"软了"两个字不用写。咒印烧尽的散场要给戏:印子化作一粒紫屑打着旋飞走,一次一枚,散的顺序就是吃刀的顺序。紫纱的浓度压在零点一六透明度——罩得住"中了咒"的体感,挡不住看清怪的爪子,削弱系的遮罩永远要薄。
四、定价与三条咒规
削弱系的定价一句话:三刀软账、七秒到时——两条上限谁先到谁生效,防的是"挂一次白嫖一辈子"。三条咒规:其一,咒不叠加——第二张符贴上去,提示"咒还挂着",倒计时也不刷新,省得削弱系变永动机;其二,软刀吃满即止——三刀用完咒当场散,剩五秒也是白剩,账本清了符就烧完;其三,咒随尸走——怪换目标咒印跟着人走,咒挂在怪身上不挂在仇恨上。与施毒术对照着看:同为紫色的减益,施毒是把"掉血"挂在怪身上,怪是受害者;诅咒是把"变弱"挂在怪身上,挨刀的玩家才是受益者——一个减怪的血,一个减怪的牙,减益系的两大门派在生效对象上分了家。
五、削弱系的观感学:最好的控制是让它打得轻
削弱系最常被质疑"看不见摸不着",诅咒术的答案是让数字替它说话:前后三十八对十五的落差,玩家的体感比任何说明都牢。咒印更是把抽象的"削弱中"换算成了看得见的余额——三枚印就是三次保险,玩家盯着印子数刀,削弱从状态变成了库存。对观战者这也是好戏:狼怪的爪子明明白白挥下来,落上去的数字却瘪了,这种"凶而不狠"的反差是削弱系独有的黑色幽默。工程收尾记一笔:软刀数字的缩放要跟音效的低八度同步——数字变小、声音变闷,两个通道一起说"这一刀不行",观感才立得住。最后留给数值组的一句话:三十八到十五是六成的削幅,配上三刀与七秒的双上限,账是平的——削弱系的平衡从来不在削多少,在玩家能不能数得清它削了几次。
咒遇上精英怪还有一层暗账:同样的符贴上去,三刀软账只认前两刀,第三刀它硬顶着不受——咒印在精英头顶的转速也要快上三成,快转的印子就是提醒:这只吃咒吃得浅,别把全部指望押在软刀上,手里得留着真本事。一道咒在普通怪身上是三刀的账,在精英身上是两刀的脸色,看印办事,老玩家的功课又多了一行。
写完再留一句给做减益系的同学:减益技能最容易做出"数据对了体感没了"的平账,解法是把余额画在怪头上——玩家看得见的库存,才叫削弱;玩家看不见的,只是后台的一条记录。
补一个演示彩蛋位:咒印只剩最后一枚时转速会变快——快转的印子是催命符,玩家一眼就知道软刀额度见底了,该省的省、该换的换。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【语法算法】 上一版埋了个越用越错的隐蔽报错:长按的计时不在抬手时清零——第一次长按松手后,秒表没归零,第二次轻轻一点直接被…
【语法算法】 接着抛坑:淡入没播完又来一个淡出,会怎样?答不好的界面都会出事——同一个面板的透明度被两个渐变同时抢,一个往上…
【语法算法】 上一版留了排"齐步走"的图标的隐蔽报错:一排波浪排布的图标同起同落——设计稿上是此起彼伏的波浪,实机上整排图标…
【语法算法】 先抛一个坑:按钮太小点不中,为什么不做大热区?界面上那个二十像素的小圆钮,玩家戳三次中一次——把按钮画大又会破…
【语法算法】 vel=vel math.pow(0.01,dt) ——先拆这一行。击退的全部手感都在这一行的衰减里:初速三百…
【语法算法】 上个月一场闪了全屏的事故成了组里的教材:受击闪白上线第一天,玩家一挨打整个界面白一遍——血条、按钮、聊天框全泡…