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

379 lines
12 KiB
Lua
Raw Normal View History

2022-11-21 11:30:31 +03:00
require('Actor/ActorCommon')
local questActorProxy = require('Actor/Quest/QuestActorProxy')
local Quest390 = class("Quest390", questActorProxy)
Quest390.defaultAlias = "Quest390"
local q390Cfg = require('Quest/Client/Q390ClientConfig')
local wendyData = q390Cfg.WendyData
local dilucData = q390Cfg.DilucData
local qinData = q390Cfg.QinData
local paimonData = q390Cfg.PaimonData
local organData = q390Cfg.OrganData
--@region Generated
function Quest390:OnSubStartHandlerBuild()
self.subStartHandlers = {}
self.subStartHandlers["39001"] = self.OnSubStart39001
self.subStartHandlers["39002"] = self.OnSubStart39002
self.subStartHandlers["39003"] = self.OnSubStart39003
self.subStartHandlers["39004"] = self.OnSubStart39004
self.subStartHandlers["39005"] = self.OnSubStart39005
self.subStartHandlers["39006"] = self.OnSubStart39006
self.subStartHandlers["39007"] = self.OnSubStart39007
self.subStartHandlers["39008"] = self.OnSubStart39008
self.subStartHandlers["39009"] = self.OnSubStart39009
self.subStartHandlers["39010"] = self.OnSubStart39010
self.subStartHandlers["39011"] = self.OnSubStart39011
end
function Quest390:OnSubFinishHandlerBuild()
self.subFinishHandlers = {}
self.subFinishHandlers["39001"] = self.OnSubFinish39001
self.subFinishHandlers["39002"] = self.OnSubFinish39002
self.subFinishHandlers["39003"] = self.OnSubFinish39003
self.subFinishHandlers["39004"] = self.OnSubFinish39004
self.subFinishHandlers["39005"] = self.OnSubFinish39005
self.subFinishHandlers["39006"] = self.OnSubFinish39006
self.subFinishHandlers["39007"] = self.OnSubFinish39007
self.subFinishHandlers["39008"] = self.OnSubFinish39008
self.subFinishHandlers["39009"] = self.OnSubFinish39009
self.subFinishHandlers["39010"] = self.OnSubFinish39010
self.subFinishHandlers["39011"] = self.OnSubFinish39011
end
--@endregion
-- local param begin
-- local param end
--@region sub start & finish 内调用的函数
-- 发现机关的开车
-- 已发现机关光束的数量(任务完成数量),进行不同的开车对话
function Quest390:FindOrganNarrator()
local firstorganstate = self:GetSubQuestState(39001)
local secondorganstate = self:GetSubQuestState(39101)
local thirdorganstate = self:GetSubQuestState(39201)
local organstate = firstorganstate + secondorganstate + thirdorganstate
print(firstorganstate.."|"..secondorganstate.."|"..thirdorganstate)
if organstate == 7 then
self:NarratorOnlyTask(q390Cfg.NarratorData.FindOrgan1)
self:EnterSceneLookCamera(organData.bornPos, 0, 3, true)
-- elseif organstate == 8 then
-- self:NarratorOnlyTask(q390Cfg.NarratorData.FindOrgan2)
-- elseif organstate == 9 then
-- self:NarratorOnlyTask(q390Cfg.NarratorData.FindOrgan3)
end
end
-- 第一次发现机关的talk
-- 根据玩家找到的机关数量不同进行不同的talk
-- 通过与不同npc对话实现
-- 没找到机关:与温迪对话
-- 找到一个机关:与琴对话
-- 找到两个机关:与迪卢克对话
function Quest390:FindOrganTalk()
-- 生成众多NPC
local task = curtainUtils.CreateEntityCreateTask({wendyData.Wendy, qinData.Qin, dilucData.Diluc, paimonData.Paimon})
self:TransmitPlayer(3, sceneData:GetDummyPoint(3,"Q390Player").pos, sceneData:GetDummyPoint(3,"Q390Player").rot,
self.RequestTalk,
function (self)
actorMgr:CreateActorWithPos(wendyData.Wendy, wendyData.WendyScript, wendyData.WendyID, 0, wendyData.bornPos, wendyData.bornDir, true)
actorMgr:CreateActorWithPos(qinData.Qin, qinData.QinScript, qinData.QinID, 0, qinData.bornPos, qinData.bornDir, true)
actorMgr:CreateActorWithPos(dilucData.Diluc, dilucData.DilucScript, dilucData.DilucID, 0, dilucData.bornPos, dilucData.bornDir, true)
actorMgr:CreateActorWithPos(paimonData.Paimon, paimonData.PaimonScript, paimonData.PaimonID, 0, paimonData.bornPos, paimonData.bornDir, true)
end,
task
)
end
function Quest390:RequestTalk()
-- 获取任务状态 未完成 = 2, 已完成 = 3
local firstorganstate = self:GetSubQuestState(39003)
local secondorganstate = self:GetSubQuestState(39103)
local thirdorganstate = self:GetSubQuestState(39203)
print(firstorganstate.."|"..secondorganstate.."|"..thirdorganstate)
-- 修正,未领取的状态 = 未完成
if firstorganstate == 0 then
firstorganstate = 2
end
if secondorganstate == 0 then
secondorganstate = 2
end
if thirdorganstate == 0 then
thirdorganstate = 2
end
local organstate = firstorganstate + secondorganstate + thirdorganstate
print(firstorganstate.."|"..secondorganstate.."|"..thirdorganstate.."|"..organstate)
-- 根据任务状态的和判断玩家完成了几个任务对应不同的talk
if organstate == 6 then
self:RequestInteraction(wendyData.Wendy)
elseif organstate == 7 then
self:RequestInteraction(qinData.Qin)
elseif organstate == 8 then
self:RequestInteraction(dilucData.Diluc)
end
end
-- 采集光束的开车
-- 根据玩家采集光束的数量(任务完成数量),进行不同的开车对话
function Quest390:FindClueNarrator()
-- 获取任务状态 未完成 = 2, 已完成 = 3
local firstcluestate = self:GetSubQuestState(39004)
local secondcluestate = self:GetSubQuestState(39005)
local thirdcluestate = self:GetSubQuestState(39006)
local cluestate = firstcluestate + secondcluestate + thirdcluestate
print("光束数量"..firstcluestate.."|"..secondcluestate.."|"..thirdcluestate.."|"..cluestate)
local firstorganstate = self:GetSubQuestState(39007)
local secondorganstate = self:GetSubQuestState(39107)
local thirdorganstate = self:GetSubQuestState(39207)
-- 修正,未领取的状态 = 未完成
if firstorganstate == 0 then
firstorganstate = 2
end
if secondorganstate == 0 then
secondorganstate = 2
end
if thirdorganstate == 0 then
thirdorganstate = 2
end
local organstate = firstorganstate + secondorganstate + thirdorganstate
print("机关数量"..firstorganstate.."|"..secondorganstate.."|"..thirdorganstate.."|"..organstate)
-- 根据任务状态的和,判断玩家完成了几个任务,对应不同的开车
if organstate == 6 then
if cluestate == 7 then
self:NarratorOnlyTask(q390Cfg.NarratorData.FindClue1_1)
elseif cluestate == 9 then
self:PlayCutscene(q390Cfg.SealAppearTimeCfg,
function (self)
self:NarratorOnlyTask(q390Cfg.NarratorData.FindClue1_3)
end
)
end
elseif organstate == 7 then
if cluestate == 8 then
self:NarratorOnlyTask(q390Cfg.NarratorData.FindClue2_2)
elseif cluestate == 9 then
self:PlayCutscene(q390Cfg.SealAppearTimeCfg)
end
elseif organstate == 8 then
if cluestate == 9 then
self:PlayCutscene(q390Cfg.SealAppearTimeCfg,
function (self)
self:NarratorOnlyTask(q390Cfg.NarratorData.FindClue3_3)
end
)
end
end
end
-- 开启封印的开车
-- 判断封印解开的数量,对应不同开车和镜头表现
function Quest390:SealOpenCutscene()
-- 获取任务状态 未完成 = 2, 已完成 = 3
local firstorganstate = self:GetSubQuestState(39008)
local secondorganstate = self:GetSubQuestState(39108)
local thirdorganstate = self:GetSubQuestState(39208)
print(firstorganstate.."|"..secondorganstate.."|"..thirdorganstate)
-- 修正,未领取的状态 = 未完成
if firstorganstate == 0 then
firstorganstate = 2
end
if secondorganstate == 0 then
secondorganstate = 2
end
if thirdorganstate == 0 then
thirdorganstate = 2
end
local organstate = firstorganstate + secondorganstate + thirdorganstate
print(firstorganstate.."|"..secondorganstate.."|"..thirdorganstate.."|"..organstate)
-- 根据任务状态的和,判断玩家完成了几个任务
if organstate == 7 then
self:PlayCutscene(q390Cfg.SealOpenTimeCfg1,
function (self)
self:NarratorOnlyTask(q390Cfg.NarratorData.OpenOrgan1)
end
)
elseif organstate == 8 then
self:PlayCutscene(q390Cfg.SealOpenTimeCfg2,
function (self)
self:NarratorOnlyTask(q390Cfg.NarratorData.OpenOrgan2)
end
)
elseif organstate == 9 then
self:PlayCutscene(q390Cfg.SealOpenTimeCfg3,
function (self)
self:CallDelay(1,
function (self)
self:NarratorOnlyTask(q390Cfg.NarratorData.OpenOrgan3)
self:EnterSceneLookCamera(sceneData:GetDummyPoint(3,"Q389VentiPos2").pos, 0, 3, true)
end
)
end
)
end
end
function Quest390:DestroyNPC()
self:ShowBlackScreen(0.5, 1, 0.5,
function(self)
local wendy = actorMgr:GetActor(wendyData.Wendy)
local diluc = actorMgr:GetActor(dilucData.Diluc)
local qin = actorMgr:GetActor(qinData.Qin)
local paimon = actorMgr:GetActor(paimonData.Paimon)
if wendy ~= nil then
wendy:Destroy(false)
end
if diluc ~= nil then
diluc:Destroy(false)
end
if qin ~= nil then
qin:Destroy(false)
end
if paimon ~= nil then
paimon:Destroy(false)
end
end
)
end
--@endregion
-- local method begin
--@region sub start handlers
function Quest390:OnSubStart39001(quest)
print("39001 start ")
end
function Quest390:OnSubStart39002(quest)
print("39002 start:...")
end
function Quest390:OnSubStart39003(quest)
print("39003 start:...")
end
function Quest390:OnSubStart39004(quest)
print("39004 start:...")
end
function Quest390:OnSubStart39005(quest)
print("39005 start:...")
end
function Quest390:OnSubStart39006(quest)
print("39006 start:...")
end
function Quest390:OnSubStart39007(quest)
print("39007 start:play cutscene & finish quest")
local quest = actorMgr:GetActor(q390Cfg.ActorAlias)
if quest ~= nil then
quest:FinishQuestID(false, 39010)
quest:FinishQuestID(false, 39011)
quest:FinishQuest(false, nil)
end
end
function Quest390:OnSubStart39008(quest)
print("39008 start:...")
end
function Quest390:OnSubStart39009(quest)
print("39009 start:...")
local quest = actorMgr:GetActor(q390Cfg.ActorAlias)
if quest ~= nil then
self:CallDelay(1.5,
function (self)
quest:FinishQuest(false, nil)
end
)
end
end
function Quest390:OnSubStart39010(quest)
print("39010 start:...")
end
--@endregion
--@region sub finish handlers
function Quest390:OnSubFinish39001(quest)
print("39001 Finish:Focus Camera & Narrator")
self:FindOrganNarrator()
end
function Quest390:OnSubFinish39002(quest)
print("39002 Finish:...")
self:FindOrganTalk()
end
function Quest390:OnSubFinish39003(quest)
print("39003 Finish:...")
self:ActionSafeCall(self.DestroyNPC)
end
function Quest390:OnSubFinish39004(quest)
print("39004 Finish:...")
self:FindClueNarrator()
end
function Quest390:OnSubFinish39005(quest)
print("39005 Finish:...")
self:FindClueNarrator()
end
function Quest390:OnSubFinish39006(quest)
print("39006 Finish:...")
self:FindClueNarrator()
end
function Quest390:OnSubFinish39007(quest)
print("39007 Finish:...")
end
function Quest390:OnSubFinish39008(quest)
print("39008 Finish:...")
self:SealOpenCutscene()
end
function Quest390:OnSubFinish39009(quest)
print("39009 Finish:...")
end
function Quest390:OnSubFinish39010(quest)
print("39010 Finish:...")
end
--@endregion
function Quest390:Start()
end
function Quest390:OnDestroy()
end
return Quest390