mirror of
https://gitlab.com/YuukiPS/GSServer-CBT.git
synced 2025-01-12 16:19:22 +03:00
268 lines
8.0 KiB
Lua
268 lines
8.0 KiB
Lua
|
require('Actor/ActorCommon')
|
||
|
local questActorProxy = require('Actor/Quest/QuestActorProxy')
|
||
|
local Quest405 = class("Quest405", questActorProxy)
|
||
|
Quest405.defaultAlias = "Quest405"
|
||
|
|
||
|
local this = nil
|
||
|
local super = nil
|
||
|
local uActor = nil
|
||
|
local questID = 0
|
||
|
|
||
|
function Quest405:OnPreInit()
|
||
|
this = self
|
||
|
super = self.__super
|
||
|
questID = this.mainQuestID
|
||
|
super:OnPreInit()
|
||
|
end
|
||
|
function Quest405:OnPostInit()
|
||
|
uActor = self.uActor
|
||
|
super:OnPostInit()
|
||
|
end
|
||
|
|
||
|
-- local config begin
|
||
|
local q404Cfg = require('Actor/Quest/Q404/Q404Config')
|
||
|
local q405Cfg = require('Actor/Quest/Q405/Q405Config')
|
||
|
local subIDs = q405Cfg.SubIDs
|
||
|
local amborData = q404Cfg.AmborData
|
||
|
|
||
|
-- local config end
|
||
|
|
||
|
function Quest405:CreateUActor(alias)
|
||
|
local uActor = actorUtils.CreateActor(self, ActorType.QUEST_ACTOR, alias)
|
||
|
uActor = actorUtils.CreateQuestActor(questID, uActor)
|
||
|
return uActor
|
||
|
end
|
||
|
|
||
|
local function ModifyY(AccDir)
|
||
|
if AccDir.y >= 8 then
|
||
|
AccDir.y = AccDir.y + 6
|
||
|
elseif AccDir.y >= 5 and AccDir.y < 8 then
|
||
|
AccDir.y = AccDir.y + 2.5
|
||
|
elseif AccDir.y >= 3 and AccDir.y < 5 then
|
||
|
AccDir.y = AccDir.y + 1
|
||
|
elseif AccDir.y >= -5 and AccDir.y < -3 then
|
||
|
AccDir.y = AccDir.y - 0
|
||
|
elseif AccDir.y >= -7 and AccDir.y < -5 then
|
||
|
AccDir.y = AccDir.y - 0
|
||
|
elseif AccDir.y < -7 then
|
||
|
AccDir.y = AccDir.y - 0
|
||
|
end
|
||
|
end
|
||
|
|
||
|
local function DrunkFlyPrepare()
|
||
|
print("DrunkFlyPrepare")
|
||
|
for i=1, #q405Cfg.AccPos1-1 do
|
||
|
local AccDir = { x = q405Cfg.AccPos1[i+1].x-q405Cfg.AccPos1[i].x, y = q405Cfg.AccPos1[i+1].y-q405Cfg.AccPos1[i].y, z = q405Cfg.AccPos1[i+1].z-q405Cfg.AccPos1[i].z }
|
||
|
ModifyY(AccDir)
|
||
|
this:SpawnGadget(70690001, q405Cfg.AccPos1[i], M.Dir2Euler(AccDir), "Acc1" .. tostring(i))
|
||
|
end
|
||
|
-- for i=1, #q405Cfg.AccPos2-1 do
|
||
|
-- if q405Cfg.AccPos2[i].x ~= 0 then
|
||
|
-- if q405Cfg.AccPos2[i+1].x ~= 0 then
|
||
|
-- local AccDir = { x = q405Cfg.AccPos2[i+1].x-q405Cfg.AccPos2[i].x, y = q405Cfg.AccPos2[i+1].y-q405Cfg.AccPos2[i].y, z = q405Cfg.AccPos2[i+1].z-q405Cfg.AccPos2[i].z }
|
||
|
-- ModifyY(AccDir)
|
||
|
-- this:SpawnGadget(70690001, q405Cfg.AccPos2[i], M.Dir2Euler(AccDir), "Acc2" .. tostring(i))
|
||
|
-- else
|
||
|
-- local AccDir = { x = q405Cfg.AccPos1[i+1].x-q405Cfg.AccPos2[i].x, y = q405Cfg.AccPos1[i+1].y-q405Cfg.AccPos2[i].y, z = q405Cfg.AccPos1[i+1].z-q405Cfg.AccPos2[i].z }
|
||
|
-- ModifyY(AccDir)
|
||
|
-- this:SpawnGadget(70690001, q405Cfg.AccPos2[i], M.Dir2Euler(AccDir), "Acc2" .. tostring(i))
|
||
|
-- end
|
||
|
-- end
|
||
|
-- end
|
||
|
local RiseDir = {x=0,y=0,z=0}
|
||
|
this:SpawnGadget(40200001, q405Cfg.RisePos1[1], M.Dir2Euler(RiseDir), "Rise1")
|
||
|
-- this:SpawnGadget(40200001, q405Cfg.RisePos2[1], M.Dir2Euler(RiseDir), "Rise2")
|
||
|
end
|
||
|
|
||
|
local function DrunkFlyDestroy()
|
||
|
print("DrunkFlyDestroy")
|
||
|
for i=1, #q405Cfg.AccPos1-1 do
|
||
|
globalActor:UnSpawn("Acc1" .. tostring(i))
|
||
|
end
|
||
|
for i=1, #q405Cfg.AccPos2-1 do
|
||
|
if q405Cfg.AccPos2[i].x ~= 0 then
|
||
|
globalActor:UnSpawn("Acc2" .. tostring(i))
|
||
|
end
|
||
|
end
|
||
|
local RiseDir = {x=0,y=0,z=0}
|
||
|
globalActor:UnSpawn("Rise1")
|
||
|
-- globalActor:UnSpawn("Rise2")
|
||
|
end
|
||
|
|
||
|
function Quest405:CountDown()
|
||
|
print("CountDown Finished")
|
||
|
DrunkFlyDestroy()
|
||
|
if q405Cfg.gotKey == false then
|
||
|
local GoalMarker405 = actorMgr:GetActor("GoalMarker405")
|
||
|
if GoalMarker405 ~= nil then
|
||
|
GoalMarker405:DestroySelf()
|
||
|
end
|
||
|
local quest = actorMgr:GetActor(q405Cfg.ActorAlias)
|
||
|
if quest ~= nil then
|
||
|
print("isFinished == false")
|
||
|
quest:FinishQuest(true, nil)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
-- local param begin
|
||
|
-- local param end
|
||
|
|
||
|
-- local method begin
|
||
|
local function AbleQuit()
|
||
|
this:ShowQuestQuitUI(subIDs.q40502)
|
||
|
end
|
||
|
|
||
|
local function StartCount(actor)
|
||
|
this:CountDownUIStart(q405Cfg.MatchTime, 10, 3)
|
||
|
this:CallDelay(q405Cfg.MatchTime+4,this.CountDown)
|
||
|
this:CallDelay(13,AbleQuit)
|
||
|
end
|
||
|
|
||
|
-- local function PreStartCount()
|
||
|
-- this:CountDownUIStart(3, 3)
|
||
|
-- this:CallDelay(3,StartCount)
|
||
|
-- end
|
||
|
|
||
|
local function MovePlayer()
|
||
|
this:TransmitPlayer(0, M.Pos(1916, 220, -693), sceneData:GetDummyPoint(3,"Q405DrunkJudge").rot)
|
||
|
end
|
||
|
|
||
|
local function FailCount()
|
||
|
this:HideQuestQuitUI()
|
||
|
this:CountDownUITerminate()
|
||
|
this:UnCallFunc(this.CountDown)
|
||
|
DrunkFlyDestroy()
|
||
|
MovePlayer()
|
||
|
local GoalMarker405 = actorMgr:GetActor("GoalMarker405")
|
||
|
if GoalMarker405 ~= nil then
|
||
|
GoalMarker405:DestroySelf()
|
||
|
end
|
||
|
end
|
||
|
|
||
|
local function SuccCount()
|
||
|
this:HideQuestQuitUI()
|
||
|
this:CountDownUITerminate()
|
||
|
this:UnCallFunc(this.CountDown)
|
||
|
DrunkFlyDestroy()
|
||
|
local GoalMarker405 = actorMgr:GetActor("GoalMarker405")
|
||
|
if GoalMarker405 ~= nil then
|
||
|
GoalMarker405:DestroySelf()
|
||
|
end
|
||
|
end
|
||
|
|
||
|
local function AmborToJudgePos(actor)
|
||
|
actorMgr:CreateActorWithPos(amborData.Ambor, amborData.AmborScript, amborData.AmborID, 0, sceneData:GetDummyPoint(3,"Q405DrunkJudge").pos, sceneData:GetDummyPoint(3,"Q405DrunkJudge").rot, true, false)
|
||
|
end
|
||
|
|
||
|
local function OnStart40501(quest)
|
||
|
print("OnStart40501")
|
||
|
this:ActionSafeCall(AmborToJudgePos)
|
||
|
-- DrunkFlyDestroy()
|
||
|
-- DrunkFlyPrepare()
|
||
|
-- local GoalMarkerFake405 = actorMgr:GetActor("GoalMarkerFake405")
|
||
|
-- if GoalMarkerFake405 ~= nil then
|
||
|
-- GoalMarkerFake405:DestroySelf()
|
||
|
-- end
|
||
|
-- actorMgr:CreateActorWithPos("GoalMarkerFake405", "Actor/Gadget/GoalMarkerAS", 70300004, 0, q405Cfg.KeyPos, q405Cfg.KeyDir, true, false)
|
||
|
end
|
||
|
|
||
|
local function OnFinished40501()
|
||
|
-- print("40501 finish: UnSpawn fake Key")
|
||
|
-- local GoalMarkerFake405 = actorMgr:GetActor("GoalMarkerFake405")
|
||
|
-- if GoalMarkerFake405 ~= nil then
|
||
|
-- GoalMarkerFake405:DestroySelf()
|
||
|
-- end
|
||
|
end
|
||
|
|
||
|
local function OnStart40502(quest)
|
||
|
print("40502 start: Spawn Key")
|
||
|
DrunkFlyPrepare()
|
||
|
q405Cfg.gotKey = false
|
||
|
actorMgr:CreateActorWithPos("GoalMarker405", "Actor/Gadget/GoalMarker405", 70300004, 0, q405Cfg.KeyPos, q405Cfg.KeyDir, true, false)
|
||
|
this:ActionSafeCall(StartCount)
|
||
|
end
|
||
|
|
||
|
local function OnFinished40502()
|
||
|
print("OnFinished40502")
|
||
|
SuccCount()
|
||
|
end
|
||
|
|
||
|
local function OnStart40503()
|
||
|
print("OnStart40503")
|
||
|
FailCount()
|
||
|
end
|
||
|
|
||
|
local function OnStart40505()
|
||
|
print("40505 start: fail the task")
|
||
|
local quest = actorMgr:GetActor(q405Cfg.ActorAlias)
|
||
|
if quest ~= nil then
|
||
|
quest:FinishQuest(true, nil)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
local function OnRewind40501()
|
||
|
print("OnRewind40501: Ambor Create")
|
||
|
actorMgr:CreateActorWithPos(amborData.Ambor, amborData.AmborScript, amborData.AmborID, 0, sceneData:GetDummyPoint(3,"Q405DrunkJudge").pos, sceneData:GetDummyPoint(3,"Q405DrunkJudge").rot, true, false)
|
||
|
end
|
||
|
|
||
|
local function OnRewind40504()
|
||
|
print("OnRewind40504: Ambor Create")
|
||
|
actorMgr:CreateActorWithPos(amborData.Ambor, amborData.AmborScript, amborData.AmborID, 0, sceneData:GetDummyPoint(3,"Q405DrunkJudge").pos, sceneData:GetDummyPoint(3,"Q405DrunkJudge").rot, true, false)
|
||
|
end
|
||
|
|
||
|
|
||
|
-- local method end
|
||
|
|
||
|
function Quest405:OnMainStart(quest)
|
||
|
|
||
|
end
|
||
|
|
||
|
function Quest405:OnSubStart(quest)
|
||
|
local questID = quest.QuestId
|
||
|
if questID == subIDs.q40502 then
|
||
|
OnStart40502(quest)
|
||
|
elseif questID == subIDs.q40505 then
|
||
|
OnStart40505()
|
||
|
elseif questID == subIDs.q40501 then
|
||
|
OnStart40501(quest)
|
||
|
elseif questID == subIDs.q40503 then
|
||
|
OnStart40503()
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function Quest405:OnSubFinished(quest)
|
||
|
local questID = quest.QuestId
|
||
|
if questID == subIDs.q40502 then
|
||
|
OnFinished40502()
|
||
|
elseif questID == subIDs.q40501 then
|
||
|
OnFinished40501()
|
||
|
end
|
||
|
end
|
||
|
|
||
|
-- Quest405.OnSubFailed(quest)
|
||
|
-- local questID = quest.QuestId
|
||
|
-- if questID == subIDs.q40502 then
|
||
|
-- OnFailed40502()
|
||
|
-- end
|
||
|
-- end
|
||
|
|
||
|
function Quest405:OnRewind(quest)
|
||
|
local questID = quest.QuestId
|
||
|
if questID == subIDs.q40501 then
|
||
|
OnRewind40501()
|
||
|
elseif questID == subIDs.q40504 then
|
||
|
OnRewind40504()
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function Quest405:OnMainFinished(quest)
|
||
|
end
|
||
|
|
||
|
function Quest405:Start()
|
||
|
end
|
||
|
|
||
|
function Quest405:OnDestroy()
|
||
|
end
|
||
|
|
||
|
return Quest405
|