CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
进阶实战游戏功能996引擎

虚弱吼:一声吼软它的刀

2026-09-29 05:56 作者:996 技术组 996引擎Lua教程传奇脚本进阶实战游戏功能996引擎

【游戏功能】

同样一只狼怪,同样的扑击,为什么上一口咬掉二十点血,这一口只掉九点?血没变、防没变、狼也没换——变的只有它身上一层若有若无的紫色雾气。读不懂这层雾的玩家以为自己出了幻觉,读得懂的老玩家已经在它雾里站着输出。虚弱吼这套"砍软敌人的刀"的减攻玩法,今天拆开聊。

一、吼软、轻刀、回劲三段窗口

虚弱吼的窗口三段。吼软:玩家一声吼,三道紫色声波荡出去罩住狼怪,它的爪子上缠起紫雾,头顶浮出向下的箭头加"伤减半"的注记——减攻的告示要挂在它身上而不是挂在玩家身上,全场一眼就知道"这把刀钝了"。轻刀:窗口五秒里狼怪的攻击照常出招——起手、扑咬、收招一拍不差,落下来的伤害从二十掉到九,飘字变小、变紫、尾巴缀着"虚弱"两个字。这份"照常出招"是虚弱和眩晕的分水岭:狼怪该扑照扑,只是扑了个寂寞的力度,玩家站在它爪下不躲也不心慌——刀轻了,胆就肥了。回劲:五秒一到紫雾散尽,下一爪又是实打实的二十点,飘字悄悄变回白色——回劲没有专属提示,全靠玩家对数字的敏感,这份"悄悄变强"反而是虚弱玩法的最后一课:窗口是借来的,不是买断的。

紫雾的画法走的是"缠":紫色的雾丝一圈圈绕着狼怪的爪子和肩颈往上飘,密度跟着剩余窗口递减——最后一秒雾丝稀稀拉拉,眼尖的玩家读得出"快回劲了"。向下的箭头挂在头顶,和血条保持一个拳头的距离,箭头旁边缀着"伤减半"的小字——减攻的告示要连幅度一起公布,玩家知道刀轻一半,才敢做出站桩输出的决定。狼怪的体面也留着:挨吼之后它有一个甩头的动作,甩不掉,但甩了——被削弱的怪也得有怪脾气,温顺地接受削弱反而假。

完整演示在这——点「虚弱吼!」罩它一身紫雾,站着数它爪下的数字:

demo
 fx-weaken

二、幂尔框架实现:出手折算与窗口管理

幂尔框架里减攻是挂在出手结算上的折算系数,窗口由时长管着:

lua
local WeakRoar = {}
local ROAR_TIME, WEAK_PCT = 5, 0.5

function WeakRoar.Cast()
    SL:PlayActorAct("player", "cast")
    SL:PlayWaveArc("player_mouth", "purple_arc", 3)
    SL:ScheduleOnce(function()
        local m = SL:GetNearMonster()
        SL:ApplyModifier(m, "atk_out", 1 - WEAK_PCT)   -- 出手折半
        SL:AttachIcon(m, "down_arrow", ROAR_TIME)
        SL:SetAura(m, "purple_haze", ROAR_TIME)
        SL:ShowTipAbove(m, "虚弱!")
        SL:RegOnce("weak_off", ROAR_TIME, function()
            SL:RemoveModifier(m, "atk_out")             -- 回劲: 静默恢复
            SL:SetAura(m, nil)
        end)
    end, 0.28)
end

local function onMonsterHit(monster, target, raw)
    local factor = SL:GetModifier(monster, "atk_out") or 1
    local dmg = math.floor(raw * factor)
    if factor < 1 then
        SL:PopNumber(target, dmg, "purple_small")
        SL:PopText(target, "虚弱", "purple")
    else
        SL:PopNumber(target, dmg, "red")
    end
    return dmg
end

SL:On("monster_hit", onMonsterHit)
SL:RegClick("roar", WeakRoar.Cast)

return WeakRoar

减攻打在 monster_hit 的结算前段,飘字分色跟着系数走——玩家看到的每一个数字都是折算后的实数,账面和画面不说两套话。

三、减半的分寸与减益家族的分工

减攻的幅度定在一半,是反复试出来的分寸:折三成,玩家几乎读不出差别,窗口形同虚设;折七成,狼怪变成挠痒猫,站着硬吃都能打完——减半刚好卡在"敢站桩、不敢挂机"的位置。窗口五秒配冷却六秒:窗口之间有一秒的空档,狼怪的爪在这空档里是满力的,玩家不能永远泡在虚弱里——减攻是节奏工具不是无敌符。它和减益家族里其他兄弟的分工也要划清:迷眼沙废命中,爪挥得再勤也是 MISS;缴械锁普攻,爪子整个张不开;虚弱吼都不碰——招照出、爪照开,只把刀刃磨钝,三者各管一段,玩家用哪个、什么时候叠,本身就是取舍。重复吼的规则写死"刷新不加层":第二个吼只把五秒时钟拨回去,折半不会变折八成——叠层减攻是数值组的噩梦,也是那次没成型的坑。最后一条是给玩家读的:轻刀的飘字永远比满刀小一号、紫一号,这种"数字自己会说话"的设计比任何状态栏都直观——玩家盯着自己掉的血学打boss,飘字就是他们的课本。

ApplyModifier 和 RemoveModifier 用同一个键成对进出,窗口到期靠一次性回表收尾——玩家死亡、切场景这两个出口也要补收尾,减益跟着人走、失效跟着窗口走,漏一个出口紫雾挂一辈子。GetModifier 查无此键返回空值,兜底成满攻系数——这个兜底是双刃剑,键名打错一个字母,减攻静默失效还不打报错,测试盯着飘字才看得出来。

减攻在整条伤害链上的位置要钉死:它是"出手折算",排在怪的攻击力算完之后、玩家的护甲减伤之前——先折它的刀,再算我的甲,两笔账互不染指。和迷眼、缴械凑成的防御三件套摆在一起,分工就清楚了:迷眼让刀落空,缴械让刀出不来,虚弱让刀软下去——三张牌打出去的顺序本身就是深度:先吼再站桩是保守流,先缴再吼是求稳流,一张不带硬刚是莽夫流。给组队的分账也提前写死:两个玩家先后吼同一只狼,减攻不加层、刷新时长——和血印的刷新纪律同一套语法,全项目的减益家族共用一本刷新词典,谁也别另立规矩——词典统一了,玩家学会一个减益,就等于学会了全家。

作者履历与出处

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

← 返回文章地图返回研学路径

幂尔框架 · 实战干货 · 接口调用

LATEST ARTICLES

全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →

进阶实战游戏功能

影锁:影锁绑你绑它,锁期拼刀

【游戏功能】 控制技能的镜像问题是:锁住了怪,自己是不是也闲着?影锁把这道两难摆上台面:影锁四秒,它动不了、你也动不了——它…

2026-10-01 10:00 996 技术组
进阶实战游戏功能

震魂:震魂入体叠加出招自损

【游戏功能】 打断为什么只有"清读条"一种?震魂偏要反过来——不清招、不断势,打在它读条半途的那一劲顺着招震进腑——中劲十秒…

2026-10-01 10:00 996 技术组
进阶实战游戏功能

蜂王:喂小怪蜂王进化,三阶蜂王蜇翻全场

【游戏功能】 蜂群为什么总是一只一只出?蜂王偏要让它们进化:放一只蜂王出来,杀掉小怪喂它——喂三只升一阶,三阶蜂王的毒刺一秒…

2026-10-01 10:00 996 技术组
进阶实战游戏功能

血刃:每刀扣血换吸血,血刀双刃

【游戏功能】 技能为什么总是不扣自己的血?血刃偏要反着来:开着血刃的每一刀先扣自己二血、命中回三血——净赚一但要打得中,空刀…

2026-10-01 10:00 996 技术组
进阶实战游戏功能

破军旗:旗立三秒圈内加攻,旗倒攻散

【游戏功能】 bn.t = bn.t - dt ——一行旗面倒计时的代码,撑起了破军旗全部的紧迫感:旗立三秒、圈内加攻三成,…

2026-10-01 10:00 996 技术组
进阶实战游戏功能

淬毒刃:淬毒三刀叠一层,一层毒过一秒六

【游戏功能】 淬毒为什么要一毒到底?淬毒刃偏要一层一层叠:一刀淬一层毒、毒层一秒六地烂,六层封顶之后一刀下去毒伤三十六——叠…

2026-10-01 10:00 996 技术组