PGRData/Script/matrix/xdlcfight/level/9001.lua

150 lines
4.9 KiB
Lua
Raw Normal View History

2024-09-01 20:49:41 +00:00
---Hunt01Boss战专用测试关
local XLevel9001 = XDlcScriptManager.RegLevelScript(9001, "XLevel9001")
local FuncSet = CS.StatusSyncFight.XFightScriptFuncs
local Tool = require("XDLCFight/Level/Common/XLevelTools")
local _cameraResRefTable = {
}
function XLevel9001.GetCameraResRefTable()
return _cameraResRefTable
end
---@param proxy StatusSyncFight.XScriptLuaProxy
function XLevel9001:Ctor(proxy)
self._proxy = proxy
self._levelSigh = 599013
self._jumpFunDebug = false
self._jumpFunStarted = false
self._jumpFunLetBoss2Ready = false
self._jumpFunStartSign = 5990130
self._localPlayerNpcId = FuncSet.GetLocalPlayerNpcId()
self._bossId = nil ---boss的id
self._switches = {
{
placeId = 4,
agent = nil,
object = self,
func = self.JumpFunDebugEnable,
param = nil,
times = -1,
defaultEnable = true
},
}
end
function XLevel9001:Init()
FuncSet.AddBuff(self._localPlayerNpcId, self._levelSigh)
-- 配置场景中开关
self._switches = Tool.InitSwitch(self._switches)
XLog.Debug("初始化场景中开关完成")
self._proxy:RegisterSceneObjectTriggerEvent(18, 1) --boss跳到中央塔的位置的检测
self._proxy:RegisterSceneObjectTriggerEvent(19, 1) --boss停留在场地中央等待的区域检测
end
---@param dt number @ delta time
function XLevel9001:Update(dt)
--调试功能:强制关闭跳跳乐
if self._jumpFunDebug then
if FuncSet.IsKeyDown(18) then
XLog.Debug("按键输入信号球5,boss退出被操状态2#9000=0")
FuncSet.SetNpcNoteInt(self._bossId, 90000, 0)
elseif FuncSet.IsKeyDown(19) then
XLog.Debug("按键输入信号球6boss进入被操状态2#9000=1")
FuncSet.SetNpcNoteInt(self._bossId, 90000, 1)
elseif FuncSet.IsKeyDown(20) then
XLog.Debug("按键输入信号球7boss放大绝2#9000=10")
FuncSet.SetNpcNoteInt(self._bossId, 90000, 10)
elseif FuncSet.IsKeyDown(21) then
XLog.Debug("按键输入信号球8boss蓄力失败被肛2#9000=20")
FuncSet.SetNpcNoteInt(self._bossId, 90000, 20)
end
end
end
---@param eventType number
---@param eventArgs userdata
function XLevel9001:HandleEvent(eventType, eventArgs)
self.Super.HandleEvent(self, eventType, eventArgs)
if eventType == EScriptEvent.SceneObjectTrigger then
XLog.Debug("XLevelBossFight1 SceneObjectTriggerEvent:"
.. " TouchType " .. tostring(eventArgs.TouchType)
.. " SourceActorId " .. tostring(eventArgs.SourceActorId)
.. " SceneObjectId " .. tostring(eventArgs.SceneObjectId)
.. " TriggerId " .. tostring(eventArgs.TriggerId)
.. " TriggerState " .. tostring(eventArgs.TriggerState)
.. " Log自关卡"
)
if self._jumpFunLetBoss2Ready then
if eventArgs.SceneObjectId == 18 and eventArgs.TriggerState == 1 and
not self._jumpFunStarted and eventArgs.SourceActorId == self._bossId then
self:StartJumpFun()
end
end
if eventArgs.SceneObjectId == 19 and eventArgs.TriggerState == 1 and
eventArgs.SourceActorId == self._localPlayerNpcId then
FuncSet.SetNpcNoteInt(self._localPlayerNpcId, 30011, self._bossId) --设置目标
FuncSet.SetNpcNoteInt(self._localPlayerNpcId, 2409, 3) --模拟手动点击
XLog.Debug("自动锁定目标")
end
end
end
function XLevel9001:JumpFunDebugEnable()
self._jumpFunDebug = not self._jumpFunDebug
if self._jumpFunDebug then
if self._bossId == nil then
self._allNpc = FuncSet.GetNpcList()
for i, v in pairs(self._allNpc) do
if FuncSet.GetNpcCamp(v) == 2 then
self._bossId = v
break
end
end
end
self._jumpFunLetBoss2Ready = true
FuncSet.SetNpcNoteFloat3(self._bossId, 9001, 60, 3, 60)
FuncSet.AddBuff(self._localPlayerNpcId, self._jumpFunStartSign)
XLog.Debug("测试版跳跳乐开始")
else
self:EndJumpFun()
end
end
---开始跳跳乐
function XLevel9001:StartJumpFun()
self._jumpFunStarted = true
-- 怪物开始蓄力可以被qte
FuncSet.SetNpcNoteInt(self._bossId, 90000, 1)
XLog.Debug("boss已就位")
end
---结束跳跳乐
function XLevel9001:EndJumpFun()
self._jumpFunLetBoss2Ready = false
self._jumpFunStarted = false
--boss解除状态
FuncSet.SetNpcNoteInt(self._bossId, 90000, 0)
FuncSet.SetNpcNoteFloat3(self._bossId, 9001, 0, 0, 0)
--玩家回复锁定能力
FuncSet.RemoveBuff(self._localPlayerNpcId, self._jumpFunStartSign)
XLog.Debug("测试版跳跳乐结束")
end
function XLevel9001:Terminate()
end
return XLevel9001