GSServer-CBT/soggy_resources/lua/Actor/Quest/MQ392.lua
Akbar Yahya e0d4d8040c melon
2022-11-21 16:30:31 +08:00

380 lines
12 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

require('Actor/ActorCommon')
local questActorProxy = require('Actor/Quest/QuestActorProxy')
local Quest392 = class("Quest392", questActorProxy)
Quest392.defaultAlias = "Quest392"
local q392Cfg = require('Quest/Client/Q392ClientConfig')
local wendyData = q392Cfg.WendyData
local dilucData = q392Cfg.DilucData
local qinData = q392Cfg.QinData
local paimonData = q392Cfg.PaimonData
local organData = q392Cfg.OrganData
--@region Generated
function Quest392:OnSubStartHandlerBuild()
self.subStartHandlers = {}
self.subStartHandlers["39201"] = self.OnSubStart39201
self.subStartHandlers["39202"] = self.OnSubStart39202
self.subStartHandlers["39203"] = self.OnSubStart39203
self.subStartHandlers["39204"] = self.OnSubStart39204
self.subStartHandlers["39205"] = self.OnSubStart39205
self.subStartHandlers["39206"] = self.OnSubStart39206
self.subStartHandlers["39207"] = self.OnSubStart39207
self.subStartHandlers["39208"] = self.OnSubStart39208
self.subStartHandlers["39209"] = self.OnSubStart39209
self.subStartHandlers["39210"] = self.OnSubStart39210
self.subStartHandlers["39211"] = self.OnSubStart39211
end
function Quest392:OnSubFinishHandlerBuild()
self.subFinishHandlers = {}
self.subFinishHandlers["39201"] = self.OnSubFinish39201
self.subFinishHandlers["39202"] = self.OnSubFinish39202
self.subFinishHandlers["39203"] = self.OnSubFinish39203
self.subFinishHandlers["39204"] = self.OnSubFinish39204
self.subFinishHandlers["39205"] = self.OnSubFinish39205
self.subFinishHandlers["39206"] = self.OnSubFinish39206
self.subFinishHandlers["39207"] = self.OnSubFinish39207
self.subFinishHandlers["39208"] = self.OnSubFinish39208
self.subFinishHandlers["39209"] = self.OnSubFinish39209
self.subFinishHandlers["39210"] = self.OnSubFinish39210
self.subFinishHandlers["39211"] = self.OnSubFinish39211
end
--@endregion
-- local param begin
-- local param end
--@region sub start & finish 内调用的函数
-- 发现机关的开车
-- 已发现机关光束的数量(任务完成数量),进行不同的开车对话
function Quest392: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(q392Cfg.NarratorData.FindOrgan1)
self:EnterSceneLookCamera(organData.bornPos, 0, 3, true)
-- elseif organstate == 8 then
-- self:NarratorOnlyTask(q392Cfg.NarratorData.FindOrgan2)
-- elseif organstate == 9 then
-- self:NarratorOnlyTask(q392Cfg.NarratorData.FindOrgan3)
end
end
-- 第一次发现机关的talk
-- 根据玩家找到的机关数量不同进行不同的talk
-- 通过与不同npc对话实现
-- 没找到机关:与温迪对话
-- 找到一个机关:与琴对话
-- 找到两个机关:与迪卢克对话
function Quest392:FindOrganTalk()
-- 生成众多NPC
local task = curtainUtils.CreateEntityCreateTask({wendyData.Wendy, qinData.Qin, dilucData.Diluc, paimonData.Paimon})
self:TransmitPlayer(3, sceneData:GetDummyPoint(3,"Q392Player").pos, sceneData:GetDummyPoint(3,"Q392Player").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 Quest392: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 Quest392:FindClueNarrator()
-- 获取任务状态 未完成 = 2, 已完成 = 3
local firstcluestate = self:GetSubQuestState(39204)
local secondcluestate = self:GetSubQuestState(39205)
local thirdcluestate = self:GetSubQuestState(39206)
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(q392Cfg.NarratorData.FindClue1_1)
elseif cluestate == 9 then
self:PlayCutscene(q392Cfg.SealAppearTimeCfg,
function (self)
self:NarratorOnlyTask(q392Cfg.NarratorData.FindClue1_3)
end
)
end
elseif organstate == 7 then
if cluestate == 8 then
self:NarratorOnlyTask(q392Cfg.NarratorData.FindClue2_2)
elseif cluestate == 9 then
self:PlayCutscene(q392Cfg.SealAppearTimeCfg)
end
elseif organstate == 8 then
if cluestate == 9 then
self:PlayCutscene(q392Cfg.SealAppearTimeCfg,
function (self)
self:NarratorOnlyTask(q392Cfg.NarratorData.FindClue3_3)
end
)
end
end
end
-- 开启封印的开车
-- 判断封印解开的数量,对应不同开车和镜头表现
function Quest392: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(q392Cfg.SealOpenTimeCfg1,
function (self)
self:NarratorOnlyTask(q392Cfg.NarratorData.OpenOrgan1)
end
)
elseif organstate == 8 then
self:PlayCutscene(q392Cfg.SealOpenTimeCfg2,
function (self)
self:NarratorOnlyTask(q392Cfg.NarratorData.OpenOrgan2)
end
)
elseif organstate == 9 then
self:PlayCutscene(q392Cfg.SealOpenTimeCfg3,
function (self)
self:CallDelay(1,
function (self)
self:NarratorOnlyTask(q392Cfg.NarratorData.OpenOrgan3)
self:EnterSceneLookCamera(sceneData:GetDummyPoint(3,"Q389VentiPos2").pos, 0, 3, true)
end
)
end
)
end
end
function Quest392: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 Quest392:OnSubStart39201(quest)
print("39201 start ")
end
function Quest392:OnSubStart39202(quest)
print("39202 start:...")
end
function Quest392:OnSubStart39203(quest)
print("39203 start:...")
end
function Quest392:OnSubStart39204(quest)
print("39204 start:...")
end
function Quest392:OnSubStart39205(quest)
print("39205 start:...")
end
function Quest392:OnSubStart39206(quest)
print("39206 start:...")
end
function Quest392:OnSubStart39207(quest)
print("39207 start:play cutscene & finish quest")
local quest = actorMgr:GetActor(q392Cfg.ActorAlias)
if quest ~= nil then
quest:FinishQuestID(false, 39210)
quest:FinishQuestID(false, 39211)
quest:FinishQuest(false, nil)
end
end
function Quest392:OnSubStart39208(quest)
print("39208 start:...")
end
function Quest392:OnSubStart39209(quest)
print("39209 start:...")
local quest = actorMgr:GetActor(q392Cfg.ActorAlias)
if quest ~= nil then
self:CallDelay(1.5,
function (self)
quest:FinishQuest(false, nil)
end
)
end
end
function Quest392:OnSubStart39210(quest)
print("39210 start:...")
end
--@endregion
--@region sub finish handlers
function Quest392:OnSubFinish39201(quest)
print("39201 Finish:Focus Camera & Narrator")
self:FindOrganNarrator()
end
function Quest392:OnSubFinish39202(quest)
print("39202 Finish:...")
self:FindOrganTalk()
end
function Quest392:OnSubFinish39203(quest)
print("39203 Finish:...")
self:ActionSafeCall(self.DestroyNPC)
end
function Quest392:OnSubFinish39204(quest)
print("39204 Finish:...")
self:FindClueNarrator()
end
function Quest392:OnSubFinish39205(quest)
print("39205 Finish:...")
self:FindClueNarrator()
end
function Quest392:OnSubFinish39206(quest)
print("39206 Finish:...")
self:FindClueNarrator()
end
function Quest392:OnSubFinish39207(quest)
print("39207 Finish:...")
end
function Quest392:OnSubFinish39208(quest)
print("39208 Finish:...")
self:SealOpenCutscene()
end
function Quest392:OnSubFinish39209(quest)
print("39209 Finish:...")
end
function Quest392:OnSubFinish39210(quest)
print("39210 Finish:...")
end
--@endregion
function Quest392:Start()
end
function Quest392:OnDestroy()
end
return Quest392