【游戏功能】
同样是挨它一爪,怎么第一次疼二十第二次只疼两下?落魄咒的答案飘在数字里:咒印缠上狼怪的爪子之后,它的力气像沙漏一样往外漏——第一爪二十、第二爪十二、第三爪七,数字一路缩水,缩到爪子软得像在给你挠痒。今天拆落魄咒,看"衰减型削弱"怎么把降攻演成一场看得见的力竭。
一、缠爪、力竭、回笼三段
落魄咒的循环三段。缠爪段:灰咒绕上狼怪的双爪,周身罩一层半透明的力竭框——缠爪的位置有讲究:咒不缠身专缠爪,攻从爪出,削攻就削在爪上,因果才对得上。力竭段:诅咒期的每次扑击伤害按次衰减——每次乘零点六,数字越飘越小、字号也越缩越小——衰减是落魄咒的魂:一次性降攻谁都会做,"越打越软"的斜坡只有它有。回笼段:八秒咒散,力气回笼,下一爪恢复原价——回笼要有过程:灰框渐淡、它甩甩爪子重新握紧,力气是攒回来的不是切回来的。三段的核心是"数字即台词":这门咒语全程没有一句说明,玩家读着头顶的数字一路变小,自然懂了它做了什么。
完整演示在这,默认自动循环:
fx-weakcurse
二、幂尔框架实现:出伤钩与衰减表
衰减收口在它的出伤钩上,一函数管全程:
local WeakCurse = {}
local CURSE_TIME, BASE = 8.0, 20
local DECAY = 0.6 -- 每次出伤乘0.6
local curse = { t = 0, hits = 0 }
function SL:CastWeak(caster, target)
SL:PlayActorAct(caster, "cast")
curse = { t = CURSE_TIME, hits = 0 }
SL:AttachFx(target, "grey_grip")
SL:ShowBuffBar(target, "落魄", CURSE_TIME)
end
function WeakCurse.OnOutDamage(target, raw)
if curse.t <= 0 then return raw end
curse.hits = curse.hits + 1
local dmg = math.max(2, math.floor(raw * math.pow(DECAY, curse.hits)))
SL:ShowTipAbove("player", "-" .. dmg .. (dmg <= 5 and " 软" or ""), "#9ca3af")
return dmg
end
function WeakCurse.Tick(dt)
if curse.t > 0 then
curse.t = curse.t - dt
if curse.t <= 0 then
curse.hits = 0
SL:CancelFx(target, "grey_grip")
SL:ShowSystemTips("咒散 — 力气回笼")
end
end
end
return WeakCurse
衰减公式藏在一个 math.pow 里:零点六的衰减底数让三次爪击依次缩到四成、两成一、一成三——斜率是设计出来的体感,底线二点零保住"软但不归零"的尊严。
三、灰框的画法与数字的戏
力竭框是全技能唯一的大视觉:半透明灰框罩住全身、透明度随剩余咒期衰减——框在咒在,框淡咒散,玩家余光读框就知道还剩几秒。衰减的戏全押在数字上:字号随伤害同步缩小(二十的字十四号、两的字九号),颜色从灰白滑向更浅的灰——数字变小这件事本身被放大成演出,"越打越软"四个字不用写出来。爪击的肢体也要跟着软:咒期的扑击速度放慢两成、爪抬得一次比一次低——数值衰减与动作衰减同步,观众的眼睛和耳朵收到同一句话。回笼的收尾不配任何音效:框无声淡去、它攥了攥爪——力气回来这件事让它自己知道就行。
四、削弱系的定价与边界
降攻类技能的定价有一把独家尺子:削的是期望,不是峰值。八秒里它的总输出从一百出头缩到不足四十——期望砍七成,单爪依然存在——落魄咒不创造安全的假象,只把对方的火力曲线压弯。三条边界:其一,只削伤害不削速度——它出爪的频率照旧,落魄咒是力气咒不是迟缓咒,跟减速系划清地盘;其二,衰减不叠——两只道士先后上咒,取最强的一条衰减曲线,不连乘——削弱连乘是数值黑洞,谁碰谁炸;其三,对多目标各立各账——咒是缠爪的,换一只怪换一本账。与净化诀、移花接木摆在驱散与反制的谱系里,落魄咒站的是"预防位"——前两者处理已经发生的问题,它把问题扼杀在对方的爪子里。缠爪有因果、衰减有斜坡、数字会演戏、三条边界不越——四件凑齐,落魄咒才配得上"一爪比一爪轻"。
五、衰减的斜坡学:底数怎么挑
零点六这个衰减底数不是随手填的,值得单独算一遍账。底数越小(零点四),两爪之后伤害趋近于零,落魄咒变成"废爪咒",对方四秒白给;底数越大(零点八),斜坡平得几乎看不出衰减,咒的存在感全靠那层灰框硬撑。零点六的斜率下,四爪依次剩四成、两成一、一成三、一成——前三爪的落差肉眼可辨,第四爪起进入"挠痒区"——观众看得见力气的流失曲线,又不至于觉得它被拔了牙。演示里数字字号同步缩小是点睛的一笔:伤害二十配十四号字、伤害五配九号字,数字越软字越小——视觉的衰减与数值的衰减同一条斜坡,玩家不读数值单看字的个头也能感到它虚了。回笼的设计也有讲究:八秒咒散是硬时长,但被打断可以提前散——这一条让它有了反制面,也让上咒的时机变成博弈:趁它扑击间隙缠爪,八秒吃满;抢在它抬爪前缠,白送。最后是队伍定位的收口:落魄咒在驱散谱系里站的是"预防位"——净化擦屁股、移花寄账单、落魄直接让对方少惹事,三张牌各管一段,防御的完整拼图缺一不可。
落魄咒演完想说:最强的削弱不是把数字打到零,是让对面看着自己的数字一点点变小——恐惧来自看得见的流失,这句留给所有做衰减曲线的同学。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 它的爪子明明挥向了你,怎么落在自己脸上?夺舍的答案邪门到家:道士的魂钻进了狼怪的身子——占据三秒,这三秒里它每…
【游戏功能】 墙又不追人,怪为什么次次撞?水墙的定位写在物理里:它立在路中央六秒,是一块"会推人的地形"——狼怪巡逻的弧线扫…
【游戏功能】 左手五刀右手五刀,怎么就数得清是双刀?双刀交叉斩的答案在弧线上:左刀的弧向右扫,右刀的弧向左扫,两把刀的弧线在…
【游戏功能】 隔着半个屏幕扎草人,狼怪为什么跟着一抽一抽?咒怨娃娃的逻辑古老而瘆人:草人与目标结咒之后,草人就是它——针扎草…
【游戏功能】 雷云的全部机制就这一行:一朵乌云升到目标头顶,慢半拍地跟着挪,每一点二秒掉一道小雷。云不追人——它认的是"头顶…
【游戏功能】 跑赢了的怪,怎么反倒挨了烧?火焰冲刺的账目反直觉就在这:冲刺是位移,火径是遗产——人冲过去了,路留在原地烧三秒…