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

215 lines
5.5 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 npcActorProxy = require('Actor/Npc/NpcActorProxy')
local WendyAudience = class("WendyAudience", npcActorProxy)
WendyAudience.defaultAlias = "WendyAudience"
WendyAudience.seatPos = nil
WendyAudience.seatDir = nil
WendyAudience.bornPos = nil
WendyAudience.bornDir = nil
WendyAudience.returnCallback = nil
WendyAudience.pointID = 1
WendyAudience.currWeather = WeatherType.ClearSky
-- local config begin
local q301Cfg = require('Actor/Quest/Q301/Config/Q301Config')
local q401Cfg = require('Actor/Quest/Q401/Q401Config')
local wendyData = q301Cfg.WendyData
local audienceInter = q301Cfg.AudienceInter
local extrasData = q301Cfg.ExtrasData
function WendyAudience:PreGetAlias()
local extraAlias = extrasData.Extras .. tostring(self.dataIndex)
return extraAlias
end
-- local config end
function WendyAudience:MoveToSeat()
print("move to seat ")
self:AddPriorityInter(InterTimingType.BTN, audienceInter)
self:RunToTask(self.seatPos,
function(self, task)
self:TurnTo(M.Euler2DirXZ(self.seatDir))
self:Standby()
end,
function(self, task)
self:Standby()
end
)
end
function WendyAudience:ReturnToNormal()
--print("ai return " .. tostring(self.configID))
self:ClearPriorityInter(InterTimingType.BTN)
self:WalkToTask(extrasData.ExtrasOriginPos[self.extrasIndex],
function(self, task)
self:TurnTo(M.Euler2DirXZ(extrasData.ExtrasOriginDir[self.extrasIndex]))
self:Standby()
if self.returnCallback ~= nil then
self:returnCallback()
end
end,
function(self, task)
self:Standby()
end
)
end
-- local method begin
function WendyAudience:OnEvent(evt)
if evt.evtType == wendyData.EvtFinishDance then
self:ReturnToNormal()
end
end
function WendyAudience:IsRaining()
if self.currWeather == WeatherType.Rain or
self.currWeather == WeatherType.Storm then
return true
end
return false
end
function WendyAudience:FinishBehave()
if self.pointID == 1 then
self.pointID = 2
self:ClearFollowTask()
self:WalkToTask(extrasData.ExtrasDaily2Pos[self.extrasIndex],self.Behave,self.Standby)
elseif self.pointID == 2 then
self.pointID =3
self:ClearFollowTask()
self:WalkToTask(extrasData.ExtrasDaily3Pos[self.extrasIndex],self.Behave,self.Standby)
elseif self.pointID == 3 then
self.pointID = 4
self:ClearFollowTask()
self:WalkToTask(extrasData.ExtrasDaily4Pos[self.extrasIndex],self.Behave,self.Standby)
elseif self.pointID == 4 then
self.pointID = 1
self:ClearFollowTask()
self:WalkToTask(extrasData.ExtrasDaily1Pos[self.extrasIndex],self.Behave,self.Standby)
end
end
function WendyAudience:Behave()
if self.pointID == 1 or self.pointID == 3 then
self:DoFreeStyle(1)
self:CallDelay(5,self.FinishBehave)
else
self:DoFreeStyle(0)
self:CallDelay(5,self.FinishBehave)
end
end
function WendyAudience:StartDay()
--print("audience StartDay")
-- if IsRaining() then
-- return
-- end
self.pointID = 1
self:ClearFollowTask()
self:WalkToTask(extrasData.ExtrasDaily1Pos[self.extrasIndex],self.Behave,self.Standby)
end
function WendyAudience:StartNight()
--print("audience StartNight")
-- if IsRaining() then
-- return
-- end
--print("天黑了,回家")
self:ClearFollowTask()
self:WalkToTask(extrasData.ExtrasHomePos[self.extrasIndex],self.Standby,self.Standby)
end
function WendyAudience:OnWeather(weatherType)
--print("OnWeather")
--本来就在下雨
if self:IsRaining() then
--现在不下了
if weatherType ~= WeatherType.Rain and
weatherType ~= WeatherType.Storm then
--是白天,就跑出来
if globalActor.isDay then
self.currWeather = weatherType
print("雨停了,是白天,跑出来")
self:StartDay()
end
end
self.currWeather = weatherType
return
end
self.currWeather = weatherType
--本来没下雨,现在也不下雨了
if weatherType ~= WeatherType.Rain and
weatherType ~= WeatherType.Storm then
return
end
--本来没下雨,现在下雨了,而且是白天
if globalActor.isDay then
--print("下雨了,躲雨")
self:ClearFollowTask()
self:WalkToTask(extrasData.ExtrasOriginPos[self.extrasIndex],self.Standby,self.Standby)
end
end
function WendyAudience:MoveHome()
--print("任务401回家")
self:ClearFollowTask()
self:WalkToTask(extrasData.ExtrasHomePos[self.extrasIndex],
function(self,task)
local quest = actorMgr:GetActor(q401Cfg.ActorAlias)
if quest ~= nil then
quest:FinishQuest(false, nil)
end
end
)
end
function WendyAudience:StartDaily()
--print("audience StartDaily")
self:RegisterSelfDayTime(self.StartDay)
self:RegisterSelfNightTime(self.StartNight)
self:RegisterSelfWeatherChange(self.OnWeather)
if globalActor.isDay then
self:StartDay()
else
self:StartNight()
end
end
function WendyAudience:ShowStart()
print("audience ShowStart")
self:SetPos(self.bornPos)
self:RegisterActorEvent(self.OnEvent)
self:MoveToSeat()
end
-- local method end
function WendyAudience:OnPostDataPrepare()
self.extrasIndex = self.dataIndex
self.seatPos = extrasData.ExtrasSeatPos[self.extrasIndex]
self.seatDir = extrasData.ExtrasSeatDir[self.extrasIndex]
self.bornPos = extrasData.ExtrasOriginPos[self.extrasIndex]
self.bornDir = extrasData.ExtrasOriginDir[self.extrasIndex]
self.returnCallback = extrasData.ExtrasReturnCallback[self.extrasIndex]
end
function WendyAudience:Start()
--print("start!wendy audience " .. self.configID)
self:StartDaily()
end
function WendyAudience:OnDestroy()
--print("wendy audience " .. self.configID .. " destroied")
-- self:UnregisterSelfNightTime(self.StartDay)
-- self:UnregisterSelfNightTime(self.StartNight)
-- self:UnregisterSelfWeatherChange(self.OnWeather)
end
return WendyAudience