【游戏功能】
火气 = 火气 + 1 —— 每撩一下涨一格的火,三格烧满它就上头:一头冲过来,收不住脚,穿过你的位置一头扎进身后的坑——自损十五,还懵一秒。这篇把整套模块拆开:配置表、火气表、冲锋结算、定时器、调试按钮,一段一段照抄能跑。
一、效果演示:撩它三下它就上头,一头撞进坑里
演示场的怪本来稳稳当当地走位。点「撩拨!」:指尖一弹,它头顶的火气格亮起一格——它咬着牙忍了。撩第二下、第三下:三格火全烧红,它"嗷"地一声失去耐心——整只怪化作一道冲势直挺挺地撞过来,穿过你的位置根本收不住,一头扎进你身后的刺坑——"自损十五"的红字蹦出来,它懵在坑边转星星。演示里看门道:撩拨的每一手指尖都不沾血,三下的火气全记在它的头上,冲锋的坑是你早就量好的。撩拨玩的是拱火:它上头的每一步,都是你设计好的。
fx-provopoke
二、底层原理:一张火气表加一次失控冲锋
模块的机关是一对搭档。火气表:每次撩拨涨一格、封顶三格——火气认撩不认打,零伤害的撩拨照样涨格,火气的账本里没有血只有气。失控冲锋:三格烧满的那一拍,怪放弃走位直线冲锋——冲锋穿过玩家的位置不停、不转向,一头扎进玩家身后的坑区:自损十五加一秒懵态,懵醒火气清零。和嘲讽那类强制仇恨的分野在"嘲讽骗它打你,撩拨骗它撞墙":嘲讽改它的目标,撩拨改它的判断——上头的怪不是在打你,是在追着火气跑,跑哪儿去了它自己都不知道。
冲锋为什么收不住脚?上头的冲锋没有刹车键——行为套路里的冲锋段本来就是直线到底的设计,平时它舍不得用,撩拨替它按下了这个平时永远不按的按钮。
三、核心代码:完整模块(上·骨架)
-- @file ProvoPoke.lua
-- 撩拨 —— 撩它三下它就上头,一头撞进坑里
local ProvoPoke = {}
local CONST = {
ANGER_CAP = 3,
POKE_CD = 1.5,
CHARGE_SPEED = 420,
PIT_X = 130,
PIT_DMG = 15,
PIT_STUN = 1.0,
COLOR_POKE = "#b08858",
COLOR_DEEP = "#4a3418",
COLOR_GHOST = "#ecd8b8",
ZORDER_ANGER = 133,
ZORDER_FX = 135,
AUTOINC_BASE = 1039000,
}
local _anger = 0
local _chargeT = 0
local _chargeDir = 1
local _stunT = 0
local _cdLeft = 0
local _scheduler = nil
local _autoInc = 0
local function GenID(prefix)
_autoInc = _autoInc + 1
return string.format("%s_%d", prefix or "PVP",
CONST.AUTOINC_BASE + _autoInc)
end
local function GetActorPos(id)
if not id then return nil end
local x = SL:GetValue("ACTOR_POSITION_X", id)
local y = SL:GetValue("ACTOR_POSITION_Y", id)
if not x or not y then return nil end
return { x = x, y = y }
end
local function ShowTip(msg)
if msg and msg ~= "" then SL:ShowSystemTips(msg) end
end
local function BlowUp(tid, myID)
local mp = GetActorPos(myID)
local dir = mp and mp.x > GetActorPos(tid).x and 1 or -1
_chargeT = 1.2
_chargeDir = dir
SL:PlayEnrageFx(tid)
SL:TipAbove(tid, "上头!")
ShowTip("上头了——一头冲过来,坑在它身后等着")
end
function ProvoPoke.Poke()
if _cdLeft > 0 then
ShowTip("手在撩——" .. string.format("%.1f", _cdLeft) .. "秒")
return
end
if _anger >= CONST.ANGER_CAP then
ShowTip("它已经上头了——冲锋马上来")
return
end
_cdLeft = CONST.POKE_CD
_anger = _anger + 1
SL:PlayPokeFx(SL:GetValue("MARK_TARGET_ID"), _anger)
if _anger >= CONST.ANGER_CAP then
BlowUp(SL:GetValue("MARK_TARGET_ID"),
SL:GetValue("USER_ID"))
else
ShowTip("撩了" .. _anger .. "下——它快压不住火了")
end
end
四、核心代码:完整模块(下·定时器与冲锋结算)
-- 冲锋结算:扎坑的自损与懵态
local function HitPit(tid)
SL:ActorHurt(tid, CONST.PIT_DMG)
SL:TipAbove(tid, "-15")
SL:StunActor(tid, CONST.PIT_STUN)
SL:PlayPitCrashFx(tid)
SL:ScreenShake(3.4, 0.22)
_stunT = CONST.PIT_STUN
_anger = 0
ShowTip("一头扎进坑里——自损十五还懵一秒")
if SL:GetValue("ACTOR_DEAD", tid) then
ShowTip("它倒了——上头的代价")
end
end
-- 定时器:冲锋推进与扎坑判定
if not _scheduler then
_scheduler = SL:Schedule(function(dt)
_cdLeft = math.max(0, _cdLeft - dt)
if _chargeT > 0 then
_chargeT = _chargeT - dt
local tid = SL:GetValue("MARK_TARGET_ID")
local tp = GetActorPos(tid)
if tp then
local nx = tp.x + _chargeDir
* CONST.CHARGE_SPEED * dt
SL:SetActorPos(tid, nx, tp.y)
SL:DropChargeGhost(tid)
if nx <= CONST.PIT_X then
_chargeT = 0
SL:SetActorPos(tid, CONST.PIT_X, tp.y)
HitPit(tid)
end
else
_chargeT = 0
end
return
end
if _stunT > 0 then
_stunT = _stunT - dt
if _stunT <= 0 then
_anger = 0
ShowTip("它缓过来了——火气消了,接着撩")
end
end
end, 0.02)
end
SL:ScheduleOnce(function()
SL:BindDebugButton("撩拨", function()
ProvoPoke.Poke()
end)
ShowTip("技能已加载: 撩拨 (调试按钮触发)")
end, 1.0)
function ProvoPoke.Unload()
if _scheduler then SL:Unschedule(_scheduler) end
_chargeT = 0
_stunT = 0
_anger = 0
end
return ProvoPoke
五、机制问答
问:冲锋会撞飞玩家吗?
答:会蹭——冲锋穿过玩家的位置顺带蹭八点,挡路有价,让路白嫖,站坑边的玩家两头赚。
问:坑的位置玩家能选吗?
答:坑是地形不是道具——但撩拨的方向玩家说了算:它朝你冲,你站哪儿坑就在它身后哪儿。
问:撩拨的间隙会消火吗?
答:不会——火气只进不出,撩一下涨一格,涨满之前它一直忍着,忍到上头为止。
问:上头的冲锋能被打断吗?
答:能——冲锋是行动不是状态,硬控照断,断掉的冲锋让它原地愣一秒,火气清零。
问:它冲进坑里死了算谁的击杀?
答:算玩家的——坑是玩家摆的,撩是玩家撩的,因果链一头在玩家手里,账就该记玩家头上。
问:撩拨和嘲讽的区别到底在哪?
答:嘲讽改它的目标,撩拨改它的火气——嘲讽让它打你,撩拨让它撞坑,一个抢仇恨一个借地形,路数完全两开。
问:冲锋扎坑自损能触发斩杀吗?
答:能——自损是实打实的扣血,斩杀线里的它一头扎坑就是自己送终。
六、调参指南与商业服怎么用
第四笔是火气的容量:三格对一点五秒的冷却要四秒半拱满——格太多撩拨变成耐心大赛,太少它一点就着,三格刚好是"撩出节奏"的容量。第三笔是坑的代价:自损十五对它的血池是"冲一次疼一次"的教训——代价太轻它上头白上头,太重三撩一坑直接送走,坑的深浅就是这门机制的道德线。第二笔是冲锋的直线:直线到底不转向是"上头"的注脚——会拐弯的冲锋是追击不是失控,直线的莽才是撩拨赏的戏。第一笔是火气的表情:火气格用烧红的炭色而非常规蓝条——火气的格是它的脸,格越红脸越黑,读脸比读血条有戏。常见坑三个:冲锋穿过坑不停,扎坑判定只认坑心;上头的怪免疫控制,失控加免控成了无解冲锋;撩拨涨火气的判定挂在伤害上,零伤的撩拨白撩。
商业服里撩拨是"拱火流派"的看家嘴:不费一刀一箭,全靠嘴皮子拱火——商城里火气格的样式做成品级,炭格、酒格、怒纹格,头顶三格烧红的火气就是拱火师的战书。运营落地还有两笔:一段是量坑教学——教一句"先量坑再撩人",流派的第一课是工程不是嘴皮;一段是上头榜——按累计诱发的冲锋自损排名,拱火拱得最准的人有碑。变体做成连撩:上头的冲锋扎坑后火气不清零——扎一次涨一格,坑里爬出来又上头,拱到它自己怀疑怪生。这一篇的演示和整套模块照抄能跑,改的就是 CONST 那张表。
拱火师的心得就半句:坑挖好了,撩就是收账。
写完留一句给做控制系的同学:撩拨卖的是"上头是设计出来的"——那三格一格格烧红的火气和坑底躺平的身影,是把它的脾气当杠杆用的四两拨千斤。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 它的拍子一秒六一轮,拍上出刀白给,拍子空当里递刀才是十六点。错拍把"读它的拍"变成递刀的时机学:绿窗一亮,刀递…
【游戏功能】 两刀压进它一拍里——第二刀落定的瞬间它趔趄一秒,趔趄里刀刀翻倍。抢拍把"比它快"做成了机制:它两秒一拍地出手,…
【游戏功能】 按住一点五秒再松手——沉刀的全部仪式就这一按一放:按住时劲往刀上沉,松手那一瞬二十二点的重刀见真章;按不满就松…
【游戏功能】 起手之后零点三秒里再点一下,两刀并成一记十六点的双击斩;没接上,起手就白给了。双击斩把"两击"这个概念拆进输入…
【游戏功能】 它出什么招,你就换什么式——劈克刺、刺克扫、扫克劈,三式相扣的一个圈。挪移换式把猜拳搬进了打架:怪的下一手提前…
【游戏功能】 连珠 = 连珠 + 1 —— 半秒里每按一次涨一格的连珠,五珠攒满就是一记二十五点的重轰。连珠快拳把"手快"直…