PGRData/Script/matrix/xdlcfight/level/9001.lua
2024-09-01 22:49:41 +02:00

150 lines
No EOL
4.9 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---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