mirror of
https://gitlab.com/YuukiPS/GSServer-CBT.git
synced 2024-12-25 15:29:22 +03:00
222 lines
6.8 KiB
Lua
222 lines
6.8 KiB
Lua
require('Actor/ActorCommon')
|
||
local questActorProxy = require('Actor/Quest/QuestActorProxy')
|
||
|
||
local Quest352 = class("Quest352", questActorProxy)
|
||
|
||
Quest352.defaultAlias = "Quest352"
|
||
|
||
local q352Cfg = require('Quest/Client/Q352ClientConfig')
|
||
local warningTask = nil
|
||
local stayWarningTask = nil
|
||
|
||
-- Generated
|
||
function Quest352:OnSubStartHandlerBuild()
|
||
self.subStartHandlers = {}
|
||
self.subStartHandlers["35200"] = self.OnSubStart35200
|
||
self.subStartHandlers["35201"] = self.OnSubStart35201
|
||
self.subStartHandlers["35202"] = self.OnSubStart35202
|
||
self.subStartHandlers["35203"] = self.OnSubStart35203
|
||
self.subStartHandlers["35204"] = self.OnSubStart35204
|
||
self.subStartHandlers["35205"] = self.OnSubStart35205
|
||
end
|
||
|
||
function Quest352:OnSubFinishHandlerBuild()
|
||
self.subFinishHandlers = {}
|
||
self.subFinishHandlers["35200"] = self.OnSubFinish35200
|
||
self.subFinishHandlers["35201"] = self.OnSubFinish35201
|
||
self.subFinishHandlers["35202"] = self.OnSubFinish35202
|
||
self.subFinishHandlers["35203"] = self.OnSubFinish35203
|
||
self.subFinishHandlers["35204"] = self.OnSubFinish35204
|
||
self.subFinishHandlers["35205"] = self.OnSubFinish35205
|
||
end
|
||
|
||
---sub start & finish 内调用的函数
|
||
function Quest352:PaimonCreat()
|
||
local PaimonData = self.clientData.PaimonData
|
||
actorMgr:CreateActorWithPos(PaimonData.Paimon, PaimonData.PaimonScript, PaimonData.PaimonID, 0, PaimonData.Pos1, PaimonData.Dir1, true, false)
|
||
self:NarratorOnlyTask(self.clientData.NarratorData.Story1)
|
||
end
|
||
|
||
function Quest352:On35201CutsceneFinish()
|
||
local PaimonData = self.clientData.PaimonData
|
||
self:RequestInteraction(PaimonData.Paimon)
|
||
end
|
||
|
||
---隐藏女神像写法待程序换处理方式后可干掉
|
||
local goddessActor;
|
||
local goddessInitPos;
|
||
function Quest352:ShowGoddess()
|
||
if goddessActor ~= nil then
|
||
goddessActor:SetPos(goddessInitPos)
|
||
goddessActor = nil
|
||
end
|
||
end
|
||
|
||
function Quest352:HideGoddess()
|
||
goddessActor = actorMgr:GetActor("Goddess_3003")
|
||
if goddessActor == nil or goddessActor == actorMgr.dummyActor then
|
||
goddessActor = nil
|
||
print("can not find Goddess_3003")
|
||
else
|
||
goddessInitPos = goddessActor:GetPos()
|
||
goddessActor:SetPos(M.Pos(goddessInitPos.x, goddessInitPos.y + 100, goddessInitPos.z))
|
||
end
|
||
end
|
||
---
|
||
|
||
function Quest352:On35204CutsceneDestroy()
|
||
print("On35204CutsceneDestroy")
|
||
self:ShowGoddess() --还原女神像
|
||
end
|
||
|
||
function Quest352:On35204CutsceneFinish()
|
||
self:ShowGoddess() --还原女神像
|
||
--完成任务35309开地图
|
||
local quest = actorMgr:GetActor(q352Cfg.ActorAlias)
|
||
if quest ~= nil then
|
||
quest:FinishQuestID(false, 35205)
|
||
end
|
||
self:CallDelay(1, self.Actionsafe)
|
||
--self:ActionSafeCall(self.InteractPaimon)
|
||
--[[ local PaimonData = self.clientData.PaimonData
|
||
self:RequestInteraction(PaimonData.Paimon) ]]
|
||
end
|
||
function Quest352:Actionsafe()
|
||
self:ActionSafeCall(self.InteractPaimon)
|
||
end
|
||
function Quest352:InteractPaimon()
|
||
local PaimonData = self.clientData.PaimonData
|
||
self:RequestInteraction(PaimonData.Paimon)
|
||
end
|
||
|
||
|
||
--@region sub start & finish handlers
|
||
---按流程触发顺序
|
||
---当OnSubFinish当前环和OnSubStart下一环等效时,写在OnSubFinish内,否则断线重连流程可能和OnSubStart流程重复执行
|
||
function Quest352:OnSubFinish35200(quest)
|
||
print("35200 Finish: Paimon shimo to NPC")
|
||
self.uActor:AvatarPaimonDisappear(nil, false)
|
||
self:CallDelay(2, self.PaimonCreat)
|
||
end
|
||
|
||
function Quest352:OnSubFinish35201(quest)
|
||
print("35201 Finish : Cs_BigWorldShow_Cutscene")
|
||
self:PlayCutscene(self.clientData.InterData.Cutscene1, self.On35201CutsceneFinish)
|
||
self:CallDelay(3,
|
||
function()
|
||
globalActor:ChangeDay24Time(9, true)
|
||
end
|
||
)
|
||
if stayWarningTask ~= nil then
|
||
stayWarningTask:FinishTask()
|
||
end
|
||
if warningTask ~= nil then
|
||
warningTask:FinishTask()
|
||
end
|
||
end
|
||
|
||
function Quest352:OnSubStart35202(quest)
|
||
globalActor:ChangeDay24Time(9, true)
|
||
globalActor:PlayerBackButtonOn(1, 3, "Q352View", 40, 9)
|
||
|
||
end
|
||
|
||
function Quest352:OnSubStart35203(quest)
|
||
print("35203 Start: Follow Paimon")
|
||
globalActor:PlayerBackButtonOff(1)
|
||
local Paimon = actorMgr:GetActor(self.clientData.PaimonData.Paimon)
|
||
self:CallDelay(5,
|
||
function()
|
||
Paimon:NarratorTask(q352Cfg.NarratorFlow, q352Cfg.FollowLen, q352Cfg.FollowLen, nil, "Story")
|
||
end
|
||
)
|
||
Paimon:BeFollowTaskByRoutePoints(q352Cfg.RoutePoints, q352Cfg.FollowLen, q352Cfg.FollowTransLen,
|
||
function(Paimon, task)
|
||
if Paimon.BeFollowState == BeFollowState.FAILED then
|
||
local quest = actorMgr:GetActor(q352Cfg.ActorAlias)
|
||
if quest ~= nil then
|
||
print("35203 failed1111111")
|
||
quest:FinishQuestID(true, 35203)
|
||
end
|
||
Paimon:StopPerformNarrator()
|
||
elseif Paimon.BeFollowState == BeFollowState.SUCCESS then
|
||
Paimon:Standby()
|
||
Paimon:TurnTo(M.Euler2DirXZ(self.clientData.PaimonData.Dir5))
|
||
local quest = actorMgr:GetActor(q352Cfg.ActorAlias)
|
||
if quest ~= nil then
|
||
quest:FinishQuestID(false, 35203)
|
||
end
|
||
end
|
||
end,
|
||
function(Paimon, task)
|
||
Paimon:Standby(false)
|
||
end
|
||
-- ,nil,nil,nil,
|
||
-- function(Paimon, task)
|
||
-- local quest = actorMgr:GetActor(q352Cfg.ActorAlias)
|
||
-- if quest ~= nil then
|
||
-- print("35203 failed22222222")
|
||
-- quest:FinishQuest(true, nil)
|
||
-- end
|
||
-- end
|
||
)
|
||
-- Paimon:BeLockTask(q352Cfg.FollowTransLen, 1,
|
||
-- function(Paimon)
|
||
-- Paimon:TransFinishCallBack(q352Cfg)
|
||
-- end,
|
||
-- function(Paimon)
|
||
-- Paimon:TransPreCallBack(q352Cfg)
|
||
-- end
|
||
-- )
|
||
stayWarningTask = Paimon:WarningNarratorTask(0, q352Cfg.NarratorStayWarning, function(Paimon)
|
||
local selfPos = Paimon:GetPos()
|
||
local avatarPos = actorUtils.GetAvatarPos()
|
||
local currLen = M.Dist(selfPos, avatarPos)
|
||
return currLen > q352Cfg.FollowLen + 5 and currLen <= q352Cfg.FollowLen + 15 and Paimon:IsInIdle()
|
||
end, nil, "StoryWarning")
|
||
warningTask = Paimon:WarningNarratorTask(1, q352Cfg.NarratorWarning, function(Paimon)
|
||
local selfPos = Paimon:GetPos()
|
||
local avatarPos = actorUtils.GetAvatarPos()
|
||
local currLen = M.Dist(selfPos, avatarPos)
|
||
return currLen > q352Cfg.FollowLen + 15 and currLen < q352Cfg.FollowLen + 1000
|
||
end, nil, "StoryWarning")
|
||
end
|
||
|
||
function Quest352:OnSubFinish35203(quest)
|
||
print("35203 Finish : Clear Task")
|
||
if stayWarningTask ~= nil then
|
||
stayWarningTask:FinishTask()
|
||
end
|
||
if warningTask ~= nil then
|
||
warningTask:FinishTask()
|
||
end
|
||
local Paimon = actorMgr:GetActor(self.clientData.PaimonData.Paimon)
|
||
-- Paimon:ClearBeLockTask()
|
||
end
|
||
|
||
function Quest352:OnSubStart35204(quest)
|
||
print("35204 Start: ByQueen")
|
||
local Paimon = actorMgr:GetActor(self.clientData.PaimonData.Paimon)
|
||
Paimon:NarratorTask(q352Cfg.NarratorFlow2, 20, 20, nil)
|
||
Paimon:AirModeOn()
|
||
Paimon:ByQueen()
|
||
end
|
||
|
||
function Quest352:On35204CutsceneStart()
|
||
self:HideGoddess() --隐藏女神像,用导演自己的
|
||
end
|
||
|
||
function Quest352:OnSubFinish35204(quest)
|
||
print("35204 Finish: Cs_MDAQ010_UnlockSkill")
|
||
self:PlayCutscene(self.clientData.InterData.Cutscene2, self.On35204CutsceneFinish, self.On35204CutsceneStart, self.On35204CutsceneDestroy)
|
||
end
|
||
|
||
--@endregion
|
||
|
||
function Quest352:Start()
|
||
end
|
||
|
||
function Quest352:OnDestroy()
|
||
end
|
||
|
||
return Quest352 |