GSServer-CBT/soggy_resources/lua/Actor/Quest/SQ405.lua

268 lines
8.0 KiB
Lua
Raw Permalink Normal View History

2022-11-21 11:30:31 +03:00
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