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

242 lines
6.2 KiB
Lua
Raw Normal View History

2022-11-21 11:30:31 +03:00
require('Actor/ActorCommon')
local questActorProxy = require('Actor/Quest/QuestActorProxy')
local Quest406 = class("Quest406", questActorProxy)
Quest406.defaultAlias = "Quest406"
local this = nil
local super = nil
local uActor = nil
local questID = 0
local success = false
function Quest406:OnPreInit()
this = self
super = self.__super
questID = this.mainQuestID
super:OnPreInit()
end
function Quest406:OnPostInit()
uActor = self.uActor
super:OnPostInit()
end
-- local config begin
local q406Cfg = require('Actor/Quest/Q406/Q406Config')
local subIDs = q406Cfg.SubIDs
local amborData = q406Cfg.AmborData
-- local config end
function Quest406: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 >= 7 then
AccDir.y = AccDir.y + 3
elseif AccDir.y >= 5 and AccDir.y < 7 then
AccDir.y = AccDir.y + 2
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 MengdeFlyPrepare()
print("MengdeFlyPrepare")
local j = 0
for i=1, #q406Cfg.CoinPos do
if i%13==1 or i%13==5 or i%13==9 then
j = j+1
local SpeedFieldDir = { x = q406Cfg.CoinPos[i+1].x-q406Cfg.CoinPos[i].x, y = q406Cfg.CoinPos[i+1].y-q406Cfg.CoinPos[i].y, z = q406Cfg.CoinPos[i+1].z-q406Cfg.CoinPos[i].z }
ModifyY(SpeedFieldDir)
this:SpawnGadget(70690001, q406Cfg.CoinPos[i], M.Dir2Euler(SpeedFieldDir), "SpeedField" .. tostring(j))
else
actorMgr:CreateActorWithPos("CoinTest" .. tostring(i), "Actor/Gadget/CoinTest", 70300003, 0, q406Cfg.CoinPos[i], q406Cfg.CoinDir, true, false)
end
end
end
local function MengdeFlyDestroy()
print("MengdeFlyPrepare")
local j = 0
for i=1, #q406Cfg.CoinPos do
if i%13==1 or i%13==5 or i%13==9 then
j = j+1
globalActor:UnSpawn("SpeedField" .. tostring(j))
else
local coin = actorMgr:GetActor("CoinTest" .. tostring(i))
if coin ~= nil then
coin:DestroySelf()
end
end
end
end
function Quest406:CountDown()
print("CountDown Finished")
this:CountDownUITerminate()
this:CountNumUITerminate()
MengdeFlyDestroy()
if q406Cfg.CoinNum < q406Cfg.CoinRequireNum then
success = false
local quest = actorMgr:GetActor(q406Cfg.ActorAlias)
if quest ~= nil then
print("success == false")
quest:FinishQuest(true, nil)
end
elseif q406Cfg.CoinNum >= q406Cfg.CoinRequireNum then
success = true
local quest = actorMgr:GetActor(q406Cfg.ActorAlias)
if quest ~= nil then
print("success == true")
quest:FinishQuest(false, nil)
end
end
end
-- local param begin
-- local param end
-- local method begin
local function AbleQuit()
this:ShowQuestQuitUI(subIDs.q40602)
end
local function StartCount(actor)
this:CountDownUIStart(q406Cfg.MatchTime, 10, 3)
this:CountNumUIStart()
this:CallDelay(q406Cfg.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(2192, 211, -981), amborData.judgeDir)
end
local function FailCount()
this:HideQuestQuitUI()
this:CountDownUITerminate()
this:CountNumUITerminate()
this:UnCallFunc(this.CountDown)
MengdeFlyDestroy()
MovePlayer()
end
local function SuccCount()
this:HideQuestQuitUI()
this:CountDownUITerminate()
this:CountNumUITerminate()
this:UnCallFunc(this.CountDown)
MengdeFlyDestroy()
this:CallDelay(2,MovePlayer)
end
local function AmborToJudgePos(actor)
actorMgr:CreateActorWithPos(amborData.Ambor, amborData.AmborScript, amborData.AmborID, 0, amborData.judgePos, amborData.judgeDir, true, false)
end
local function OnStart40601(quest)
print("40601 start: Ambor Judge Create")
this:ActionSafeCall(AmborToJudgePos)
end
local function OnStart40602(quest)
print("40602 start: Coin Create")
q406Cfg.CoinNum = 0
MengdeFlyPrepare()
this:ActionSafeCall(StartCount)
end
local function OnFinished40602()
print("OnFinished40602")
SuccCount()
end
local function OnFailed40602()
print("OnFailed40602")
FailCount()
end
local function OnStart40605()
print("40605 start: fail the task")
local quest = actorMgr:GetActor(q406Cfg.ActorAlias)
if quest ~= nil then
quest:FinishQuest(true, nil)
end
end
local function OnRewind40601()
print("OnRewind40601: Ambor Judge Create")
actorMgr:CreateActorWithPos(amborData.Ambor, amborData.AmborScript, amborData.AmborID, 0, amborData.judgePos, amborData.judgeDir, true, false)
end
local function OnRewind40604()
print("OnRewind40601: Ambor Judge Create")
actorMgr:CreateActorWithPos(amborData.Ambor, amborData.AmborScript, amborData.AmborID, 0, amborData.judgePos, amborData.judgeDir, true, false)
end
-- local method end
function Quest406:OnMainStart(quest)
end
function Quest406:OnSubStart(quest)
local questID = quest.QuestId
if questID == subIDs.q40601 then
OnStart40601(quest)
elseif questID == subIDs.q40602 then
OnStart40602(quest)
elseif questID == subIDs.q40605 then
OnStart40605()
end
end
function Quest406:OnSubFinished(quest)
local questID = quest.QuestId
if questID == subIDs.q40602 then
OnFinished40602()
end
end
function Quest406:OnSubFailed(quest)
local questID = quest.QuestId
if questID == subIDs.q40602 then
OnFailed40602()
end
end
function Quest406:OnRewind(quest)
local questID = quest.QuestId
if questID == subIDs.q40601 then
OnRewind40601()
elseif questID == subIDs.q40604 then
OnRewind40604()
end
end
function Quest406:OnMainFinished(quest)
end
function Quest406:Start()
end
function Quest406:OnDestroy()
end
return Quest406