You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1174 lines
31 KiB
1174 lines
31 KiB
--------------------------------------------------------------------------------
|
|
-- Progress Func --
|
|
--------------------------------------------------------------------------------
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- InitDungeon
|
|
--------------------------------------------------------------------------------
|
|
-- 던전 초기화
|
|
function InitDungeon( Var )
|
|
cExecCheck "InitDungeon"
|
|
|
|
|
|
if Var == nil
|
|
then
|
|
ErrorLog( "InitDungeon :: Var == nil" )
|
|
return
|
|
end
|
|
|
|
|
|
-- 인스턴스 던전 시작 전에 플레이어의 첫 로그인을 기다린다.
|
|
if Var["bPlayerMapLogin"] == nil
|
|
then
|
|
if Var["InitialSec"] + WAIT_PLAYER_MAP_LOGIN_SEC_MAX <= cCurrentSecond()
|
|
then
|
|
--GoToFail( Var )
|
|
return
|
|
end
|
|
|
|
return
|
|
end
|
|
|
|
|
|
if Var["InitDungeon"] == nil
|
|
then
|
|
DebugLog( "InitDungeon :: Start InitDungeon" )
|
|
|
|
Var["InitDungeon"] = {}
|
|
Var["InitDungeon"]["WaitSecDuringInit"] = Var["CurSec"] + DelayTime["AfterInit"]
|
|
|
|
|
|
-- 문 생성
|
|
DebugLog( "InitDungeon :: Door Build Start" )
|
|
for i = 1, #RegenInfo["Stuff"]["Door"]
|
|
do
|
|
local CurRegenDoor = RegenInfo["Stuff"]["Door"][ i ]
|
|
|
|
if CurRegenDoor == nil
|
|
then
|
|
ErrorLog( "InitDungeon::Door CurRegenDoor == nil : "..i )
|
|
else
|
|
local nCurDoorHandle = cDoorBuild( Var["MapIndex"], CurRegenDoor["Index"], CurRegenDoor["x"], CurRegenDoor["y"], CurRegenDoor["dir"], CurRegenDoor["scale"] )
|
|
|
|
if nCurDoorHandle == nil
|
|
then
|
|
ErrorLog( "InitDungeon::Door was not created. : "..i )
|
|
else
|
|
cDoorAction( nCurDoorHandle, CurRegenDoor["Block"], "close" )
|
|
|
|
-- 문 정보 보관
|
|
Var["Door"][ nCurDoorHandle ] = {}
|
|
Var["Door"][ nCurDoorHandle ]["Info"] = CurRegenDoor
|
|
Var["Door"][ CurRegenDoor["Name"] ] = nCurDoorHandle
|
|
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
-- 입구쪽 출구게이트 생성
|
|
local RegenExitGate = RegenInfo["Stuff"]["StartExitGate"]
|
|
local nExitGateHandle = cDoorBuild( Var["MapIndex"], RegenExitGate["Index"], RegenExitGate["x"], RegenExitGate["y"], RegenExitGate["dir"], RegenExitGate["scale"] )
|
|
|
|
if nExitGateHandle ~= nil
|
|
then
|
|
DebugLog("InitDungeon::입구쪽 출구게이트 생성")
|
|
|
|
if cSetAIScript ( MainLuaScriptPath, nExitGateHandle ) == nil
|
|
then
|
|
ErrorLog( "InitDungeon::cSetAIScript ( MainLuaScriptPath, nExitGateHandle ) == nil" )
|
|
end
|
|
|
|
if cAIScriptFunc( nExitGateHandle, "NPCClick", "Click_ExitGate" ) == nil
|
|
then
|
|
ErrorLog( "InitDungeon::cAIScriptFunc( nExitGateHandle, \"NPCClick\", \"Click_ExitGate\" ) == nil" )
|
|
end
|
|
end
|
|
|
|
|
|
-- A, B 영역 몬스터 그룹별 생성
|
|
local RegenMobGroupList = DoorMobRegenInfo["start"]
|
|
if RegenMobGroupList == nil
|
|
then
|
|
ErrorLog( "DoorMobRegenInfo[\"start\"] == nil" )
|
|
end
|
|
|
|
if RegenMobGroupList ~= nil
|
|
then
|
|
DebugLog("InitDungeon :: A 영역, B영역 몬스터 생성")
|
|
|
|
for i = 1, #RegenMobGroupList
|
|
do
|
|
local MobGroupNum = RegenMobGroupList[i]["MobGroupNum"]
|
|
local MobGroupIdx = Var["AreaMobGroup"][MobGroupNum]
|
|
local RegenX = RegenMobGroupList[i]["x"]
|
|
local RegenY = RegenMobGroupList[i]["y"]
|
|
|
|
DebugLog( MobGroupNum..", Regen MobGroupIdx: \""..MobGroupIdx.."\" is Success" )
|
|
|
|
if cGroupRegenInstance_XY( Var["MapIndex"], MobGroupIdx, RegenX, RegenY ) == nil
|
|
then
|
|
ErrorLog( "InitDungeon :: MobGroup Regen Fail"..MobGroupIdx )
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
-- 밀드윈 소환
|
|
local MildWinInfo = RegenInfo["Mob"]["InitDungeon"]["MildWin"]
|
|
local MildWinHandle = cMobRegen_XY( Var["MapIndex"], MildWinInfo["Index"], MildWinInfo["x"], MildWinInfo["y"] )
|
|
if MildWinHandle == nil
|
|
then
|
|
ErrorLog( "InitDungeon :: MildWin Regen Fail" )
|
|
else
|
|
Var["Enemy"]["MildWin"] = MildWinHandle
|
|
end
|
|
|
|
end
|
|
|
|
|
|
-- 대기 후 다음 단계로
|
|
if Var["InitDungeon"]["WaitSecDuringInit"] > Var["CurSec"]
|
|
then
|
|
return
|
|
end
|
|
|
|
|
|
Var["StepFunc"] = WayToBossRoom_FaceCut
|
|
Var["InitDungeon"] = nil
|
|
DebugLog( "End InitDungeon" )
|
|
|
|
end
|
|
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- WayToBossRoom
|
|
--------------------------------------------------------------------------------
|
|
|
|
function WayToBossRoom_FaceCut( Var )
|
|
cExecCheck "WayToBossRoom_FaceCut"
|
|
|
|
|
|
if Var == nil
|
|
then
|
|
ErrorLog( "WayToBossRoom_FaceCut :: Var == nil" )
|
|
return
|
|
end
|
|
|
|
|
|
|
|
if Var["WayToBossRoom_FaceCut"] == nil
|
|
then
|
|
DebugLog( "Start WayToBossRoom_FaceCut" )
|
|
|
|
Var["WayToBossRoom_FaceCut"] = {}
|
|
Var["WayToBossRoom_FaceCut"]["DidFaceCut"] = { false, false, false, false, false }
|
|
Var["WayToBossRoom_FaceCut"]["Info"] = {}
|
|
end
|
|
|
|
|
|
|
|
local AStep = Var["RootManager"]["RootA"]
|
|
local BStep = Var["RootManager"]["RootB"]
|
|
local Step
|
|
|
|
if AStep >= BStep
|
|
then
|
|
Step = AStep
|
|
else
|
|
Step = BStep
|
|
end
|
|
|
|
|
|
local CurStepDidFaceCut = Var["WayToBossRoom_FaceCut"]["DidFaceCut"][Step]
|
|
if CurStepDidFaceCut == true
|
|
then
|
|
return
|
|
end
|
|
|
|
|
|
-- 대사 처리완료했다고 변수 세팅
|
|
if Var["WayToBossRoom_FaceCut"]["Info"][Step] == nil
|
|
then
|
|
Var["WayToBossRoom_FaceCut"]["Info"][Step] = {}
|
|
Var["WayToBossRoom_FaceCut"]["Info"][Step]["DialogTime"] = Var["CurSec"]
|
|
Var["WayToBossRoom_FaceCut"]["Info"][Step]["DialogStep"] = 1
|
|
end
|
|
|
|
|
|
|
|
-- 대사처리
|
|
if Var["WayToBossRoom_FaceCut"]["Info"][Step]["DialogTime"] ~= nil
|
|
then
|
|
|
|
if Var["WayToBossRoom_FaceCut"]["Info"][Step]["DialogTime"] > Var["CurSec"]
|
|
then
|
|
return
|
|
else
|
|
local CurMsg = ChatInfo["WayToBossRoom_FaceCut"][Step]
|
|
local DialogStep = Var["WayToBossRoom_FaceCut"]["Info"][Step]["DialogStep"]
|
|
local MaxDialogStep = #ChatInfo["WayToBossRoom_FaceCut"][Step]
|
|
|
|
--[[
|
|
DebugLog( "CurMsg[1] : " ..CurMsg[1] )
|
|
DebugLog( "DialogStep : " ..DialogStep )
|
|
DebugLog( "MaxDialogStep : " ..MaxDialogStep )
|
|
--]]
|
|
|
|
if DialogStep <= MaxDialogStep
|
|
then
|
|
cScriptMessage( Var["MapIndex"], CurMsg[DialogStep] )
|
|
Var["WayToBossRoom_FaceCut"]["Info"][Step]["DialogTime"] = Var["CurSec"] + DelayTime["GapDialog"]
|
|
Var["WayToBossRoom_FaceCut"]["Info"][Step]["DialogStep"] = DialogStep + 1
|
|
return
|
|
end
|
|
|
|
if Var["WayToBossRoom_FaceCut"]["Info"][Step]["DialogStep"] > MaxDialogStep
|
|
then
|
|
Var["WayToBossRoom_FaceCut"]["Info"][Step] = nil
|
|
Var["WayToBossRoom_FaceCut"]["DidFaceCut"][Step] = true
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
|
|
-- 1단계까지 페이스컷 출력완료시, 밀드윈은 삭제 처리
|
|
if Var["WayToBossRoom_FaceCut"]["DidFaceCut"][1] == true
|
|
then
|
|
if Var["Enemy"]["MildWin"] ~= nil
|
|
then
|
|
cNPCVanish( Var["Enemy"]["MildWin"] )
|
|
Var["Enemy"]["MildWin"] = nil
|
|
end
|
|
end
|
|
|
|
|
|
|
|
-- 4단계까지 모두 페이스컷 출력완료시, 다음 단계로 이동
|
|
if Var["WayToBossRoom_FaceCut"]["DidFaceCut"][5] == true
|
|
then
|
|
Var["StepFunc"] = BossRoom_Stairway
|
|
Var["WayToBossRoom_FaceCut"] = nil
|
|
DebugLog( "End WayToBossRoom_FaceCut" )
|
|
end
|
|
|
|
return
|
|
|
|
end
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- BossRoom_Stairway
|
|
--------------------------------------------------------------------------------
|
|
function BossRoom_Stairway( Var )
|
|
cExecCheck "BossRoom_Stairway"
|
|
|
|
|
|
if Var == nil
|
|
then
|
|
ErrorLog( "BossRoom_Stairway :: Var == nil" )
|
|
return
|
|
end
|
|
|
|
|
|
if Var["BossRoom_Stairway"] == nil
|
|
then
|
|
|
|
DebugLog( "Start BossRoom_Stairway" )
|
|
Var["BossRoom_Stairway"] = {}
|
|
|
|
-- 블라칸 소환 및 루틴함수 부착
|
|
local BlakanInfo = RegenInfo["Mob"]["BossRoom_Stairway"]["Blakan"]
|
|
local nBlakanHandle = cMobRegen_XY( Var["MapIndex"], BlakanInfo["Index"], BlakanInfo["x"], BlakanInfo["y"] )
|
|
|
|
if nBlakanHandle == nil
|
|
then
|
|
ErrorLog( "BossRoom_Stairway :: Blakan was not created." )
|
|
end
|
|
|
|
if cSetAIScript ( MainLuaScriptPath, nBlakanHandle ) == nil
|
|
then
|
|
ErrorLog( "BossRoom_Blakan::cSetAIScript ( nBlakanHandle ) == nil" )
|
|
else
|
|
if cAIScriptFunc( nBlakanHandle, "Entrance", "Routine_Blakan" ) == nil
|
|
then
|
|
ErrorLog( "BossRoom_Blakan::cAIScriptFunc ( Routine_Blakan ) == nil" )
|
|
end
|
|
end
|
|
|
|
|
|
Var["Enemy"]["Blakan"] = nBlakanHandle
|
|
Var["RoutineTime"]["Routine_Blakan"] = Var["CurSec"]
|
|
|
|
DebugLog( "BossRoom_Stairway :: nBlakanHandle = "..Var["Enemy"]["Blakan"] )
|
|
|
|
|
|
|
|
-- 봉인석 소환 및 루틴함수 부착
|
|
local SealInfo = RegenInfo["Mob"]["BossRoom_Stairway"]["Seal"]
|
|
|
|
for i = 1, #SealInfo
|
|
do
|
|
local CurRegenSeal = SealInfo[ i ]
|
|
local nCurSealHandle = cMobRegen_XY( Var["MapIndex"], CurRegenSeal["Index"], CurRegenSeal["x"], CurRegenSeal["y"] )
|
|
|
|
if nCurSealHandle == nil
|
|
then
|
|
ErrorLog( "BossRoom_Stairway :: Seal was not created. : "..i )
|
|
else
|
|
|
|
if Var["Enemy"]["Seal"] == nil
|
|
then
|
|
Var["Enemy"]["Seal"] = {}
|
|
Var["Enemy"]["Seal"]["SealNum"] = 0
|
|
end
|
|
|
|
if Var["Enemy"]["Seal"] ~= nil
|
|
then
|
|
|
|
if cSetAIScript ( MainLuaScriptPath, nCurSealHandle ) == nil
|
|
then
|
|
ErrorLog( "BossRoom_Stairway::cSetAIScript ( nCurSealHandle ) == nil.."..i )
|
|
else
|
|
if cAIScriptFunc( nCurSealHandle, "Entrance", "Routine_Seal" ) == nil
|
|
then
|
|
ErrorLog( "BossRoom_Stairway::cAIScriptFunc ( Routine_Seal ) == nil.."..i )
|
|
end
|
|
end
|
|
|
|
|
|
if Var["RoutineTime"]["Routine_Seal"] == nil
|
|
then
|
|
DebugLog( "BossRoom_Stairway :: Routine_Seal 테이블 생성" )
|
|
Var["RoutineTime"]["Routine_Seal"] = {}
|
|
end
|
|
|
|
Var["Enemy"]["Seal"][i] = nCurSealHandle
|
|
Var["Enemy"]["Seal"]["SealNum"] = Var["Enemy"]["Seal"]["SealNum"] + 1
|
|
Var["RoutineTime"]["Routine_Seal"][nCurSealHandle] = Var["CurSec"]
|
|
|
|
DebugLog( "BossRoom_Stairway :: nCurSealHandle ["..i.."] = "..nCurSealHandle )
|
|
|
|
end
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
if Var["TimeList"]["FaceCutArea"] == nil
|
|
then
|
|
|
|
local FaceCutAreaInfo = AreaInfo["Zone5_FaceCut"]
|
|
|
|
local IsPlayerInArea_1 = cIsMobTypeInArea( Var["MapIndex"], FaceCutAreaInfo[1], ObjectType["Player"] )
|
|
local IsPlayerInArea_2 = cIsMobTypeInArea( Var["MapIndex"], FaceCutAreaInfo[2], ObjectType["Player"] )
|
|
|
|
if IsPlayerInArea_1 == 1 or IsPlayerInArea_2 == 1
|
|
then
|
|
|
|
DebugLog( "페이스컷 지역에 유저입장!" )
|
|
|
|
Var["TimeList"]["FaceCutArea"] = {}
|
|
Var["TimeList"]["FaceCutArea"]["PlayerEntrance"] = Var["CurSec"]
|
|
Var["TimeList"]["FaceCutArea"]["Dialog_Blakan"] = Var["CurSec"]
|
|
|
|
|
|
Var["BossRoom_Stairway"]["DialogStep"] = 1
|
|
Var["BossRoom_Stairway"]["DialogTime"] = Var["TimeList"]["FaceCutArea"]["Dialog_Blakan"]
|
|
|
|
else
|
|
return
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
if Var["BossRoom_Stairway"]["DialogTime"] ~= nil
|
|
then
|
|
|
|
if Var["BossRoom_Stairway"]["DialogTime"] > Var["CurSec"]
|
|
then
|
|
|
|
return
|
|
|
|
end
|
|
|
|
|
|
local CurMsg = ChatInfo["BossRoom_Stairway"]
|
|
local DialogStep = Var["BossRoom_Stairway"]["DialogStep"]
|
|
local MaxDialogStep = #ChatInfo["BossRoom_Stairway"]
|
|
|
|
|
|
if DialogStep <= MaxDialogStep
|
|
then
|
|
|
|
cScriptMessage( Var["MapIndex"], CurMsg[DialogStep] )
|
|
Var["BossRoom_Stairway"]["DialogTime"] = Var["CurSec"] + DelayTime["GapDialog"]
|
|
Var["BossRoom_Stairway"]["DialogStep"] = DialogStep + 1
|
|
return
|
|
|
|
end
|
|
|
|
|
|
if Var["BossRoom_Stairway"]["DialogStep"] > MaxDialogStep
|
|
then
|
|
|
|
Var["BossRoom_Stairway"]["DialogStep"] = nil
|
|
Var["BossRoom_Stairway"]["DialogTime"] = nil
|
|
|
|
end
|
|
|
|
|
|
Var["StepFunc"] = BossRoom_CenterHall
|
|
Var["BossRoom_Stairway"] = nil
|
|
DebugLog( "End BossRoom_Stairway" )
|
|
|
|
end
|
|
|
|
|
|
return
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- BossRoom_CenterHall
|
|
--------------------------------------------------------------------------------
|
|
function BossRoom_CenterHall( Var )
|
|
cExecCheck "BossRoom_CenterHall"
|
|
|
|
|
|
if Var == nil
|
|
then
|
|
ErrorLog( "BossRoom_CenterHall :: Var == nil" )
|
|
return
|
|
end
|
|
|
|
|
|
if Var["TimeList"]["TeleportArea"] == nil
|
|
then
|
|
return
|
|
end
|
|
|
|
|
|
if Var["TimeList"]["TeleportArea"]["PlayerEntrance"] == nil
|
|
then
|
|
return
|
|
end
|
|
|
|
|
|
if Var["TimeList"]["TeleportArea"]["PlayerEntrance"] > Var["CurSec"]
|
|
then
|
|
return
|
|
end
|
|
|
|
|
|
if Var["BossRoom_CenterHall"] == nil
|
|
then
|
|
Var["BossRoom_CenterHall"] = {}
|
|
|
|
DebugLog( "Start BossRoom_CenterHall" )
|
|
|
|
Var["BossRoom_CenterHall"]["Dialog_Blakan"] = {}
|
|
Var["BossRoom_CenterHall"]["Dialog_Blakan"]["DialogStep"] = 1
|
|
Var["BossRoom_CenterHall"]["Dialog_Blakan"]["DialogTime"] = Var["TimeList"]["TeleportArea"]["Dialog_Blakan"]
|
|
|
|
Var["BossRoom_CenterHall"]["Stun"] = {}
|
|
Var["BossRoom_CenterHall"]["Stun"]["StartTime"] = Var["BossRoom_CenterHall"]["Dialog_Blakan"]["DialogTime"]
|
|
Var["BossRoom_CenterHall"]["Stun"]["EndTime"] = Var["BossRoom_CenterHall"]["Dialog_Blakan"]["DialogTime"] + ( DelayTime["GapDialog"] * #ChatInfo["BossRoom_CenterHall"] )
|
|
|
|
--[[
|
|
Var["BossRoom_CenterHall"]["Dialog_Fagels"] = {}
|
|
Var["BossRoom_CenterHall"]["Dialog_Fagels"]["DialogStep"] = 1
|
|
Var["BossRoom_CenterHall"]["Dialog_Fagels"]["DialogTime"] = Var["TimeList"]["TeleportArea"]["Dialog_Fagels"]
|
|
--]]
|
|
|
|
end
|
|
|
|
|
|
|
|
-- 스턴 시간 확인
|
|
local Stun_StartTime = Var["BossRoom_CenterHall"]["Stun"]["StartTime"]
|
|
local Stun_EndTime = Var["BossRoom_CenterHall"]["Stun"]["EndTime"]
|
|
|
|
local Stun_Area = AreaInfo["Zone5_BossRoom"]
|
|
local Stun_Idx = AbStateInfo["Stun"]["Index"]
|
|
local Stun_Strength = AbStateInfo["Stun"]["Strength"]
|
|
local Stun_KeepTime = 1 * 1000
|
|
|
|
if Stun_StartTime <= Var["CurSec"] and Var["CurSec"] < Stun_EndTime
|
|
then
|
|
|
|
local PlayerList = { cGetAreaObjectList( Var["MapIndex"], Stun_Area, ObjectType["Player"] ) }
|
|
for i = 1, #PlayerList
|
|
do
|
|
cSetAbstate( PlayerList[i], Stun_Idx, Stun_Strength, Stun_KeepTime, PlayerList[i] )
|
|
--DebugLog( "BossRoom_CenterHall :: SetAbState" .. PlayerList[i] )
|
|
end
|
|
|
|
local MobList = { cGetAreaObjectList( Var["MapIndex"], Stun_Area, ObjectType["Mob"] ) }
|
|
for i = 1, #MobList
|
|
do
|
|
cSetAbstate( MobList[i], Stun_Idx, Stun_Strength, Stun_KeepTime, MobList[i] )
|
|
--DebugLog( "BossRoom_CenterHall :: SetAbState" .. MobList[i] )
|
|
end
|
|
|
|
local ServantList = { cGetAreaObjectList( Var["MapIndex"], Stun_Area, ObjectType["Servant"] ) }
|
|
for i = 1, #ServantList
|
|
do
|
|
cSetAbstate( ServantList[i], Stun_Idx, Stun_Strength, Stun_KeepTime, ServantList[i] )
|
|
--DebugLog( "BossRoom_CenterHall :: SetAbState" .. ServantList[i] )
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
-- 블라칸 대사 시간 확인
|
|
local Dialog_Blakan = Var["BossRoom_CenterHall"]["Dialog_Blakan"]
|
|
|
|
if Dialog_Blakan["DialogTime"] ~= nil
|
|
then
|
|
if Dialog_Blakan["DialogTime"] > Var["CurSec"]
|
|
then
|
|
return
|
|
end
|
|
|
|
local CurMsg = ChatInfo["BossRoom_CenterHall"]
|
|
local DialogStep = Dialog_Blakan["DialogStep"]
|
|
local MaxDialogStep = #ChatInfo["BossRoom_CenterHall"]
|
|
|
|
--[[
|
|
DebugLog( "CurMsg[1] : " ..CurMsg[1] )
|
|
DebugLog( "DialogStep : " ..DialogStep )
|
|
DebugLog( "MaxDialogStep : " ..MaxDialogStep )
|
|
--]]
|
|
|
|
if DialogStep <= MaxDialogStep
|
|
then
|
|
cScriptMessage( Var["MapIndex"], CurMsg[DialogStep] )
|
|
Dialog_Blakan["DialogTime"] = Var["CurSec"] + DelayTime["GapDialog"]
|
|
Dialog_Blakan["DialogStep"] = DialogStep + 1
|
|
return
|
|
end
|
|
|
|
|
|
if Dialog_Blakan["DialogStep"] > MaxDialogStep
|
|
then
|
|
Dialog_Blakan["DialogStep"] = nil
|
|
Dialog_Blakan["DialogTime"] = nil
|
|
end
|
|
|
|
end
|
|
|
|
|
|
Var["StepFunc"] = BossRoom_Blakan
|
|
Var["BossRoom_CenterHall"] = nil
|
|
DebugLog( "End BossRoom_CenterHall" )
|
|
|
|
end
|
|
|
|
|
|
---[[
|
|
--------------------------------------------------------------------------------
|
|
-- BossRoom_Blakan
|
|
--------------------------------------------------------------------------------
|
|
function BossRoom_Blakan( Var )
|
|
cExecCheck "BossRoom_Blakan"
|
|
|
|
if Var == nil
|
|
then
|
|
ErrorLog( "BossRoom_Blakan :: Var == nil" )
|
|
return
|
|
end
|
|
|
|
if Var["BossRoom_Blakan"] == nil
|
|
then
|
|
|
|
DebugLog( "BossRoom_Blakan :: Start BossRoom_Blakan" )
|
|
Var["BossRoom_Blakan"] = {}
|
|
|
|
Var["BossRoom_Blakan"]["BlakanState"] = "Sealed" --"Free" --"Dead"
|
|
Var["BossRoom_Blakan"]["FagelsDialogTime"] = Var["TimeList"]["TeleportArea"]["Dialog_Fagels"]
|
|
|
|
Var["BossRoom_Blakan"]["Summon1"] = {}
|
|
Var["BossRoom_Blakan"]["Summon1"]["StartTime"] = Var["TimeList"]["TeleportArea"]["SummonStart"] + Blakan_Data_Info["WaitFirstSummon"]
|
|
Var["BossRoom_Blakan"]["Summon1"]["EndTime"] = Var["BossRoom_Blakan"]["Summon1"]["StartTime"] + Blakan_Data_Info["SummonInfo1"]["KeepTime"]
|
|
Var["BossRoom_Blakan"]["Summon1"]["SummonTick"] = Var["BossRoom_Blakan"]["Summon1"]["StartTime"]
|
|
|
|
end
|
|
|
|
----------------------------------------------------------------------------------------------
|
|
-- [경우 1] 블라칸 죽었을 경우
|
|
----------------------------------------------------------------------------------------------
|
|
if Var["BossRoom_Blakan"]["BlakanState"] == "Dead"
|
|
then
|
|
|
|
if Var["BossRoom_Blakan"]["Dialog_BlakanDead"] == nil
|
|
then
|
|
DebugLog( "실패 : 블라칸 사망" )
|
|
Var["BossRoom_Blakan"]["Dialog_BlakanDead"] = {}
|
|
Var["BossRoom_Blakan"]["Dialog_BlakanDead"]["DialogTime"] = Var["CurSec"]
|
|
Var["BossRoom_Blakan"]["Dialog_BlakanDead"]["DialogStep"] = 1
|
|
end
|
|
|
|
if Var["BossRoom_Blakan"]["Dialog_BlakanDead"] ~= nil
|
|
then
|
|
if Var["BossRoom_Blakan"]["Dialog_BlakanDead"]["DialogTime"] > Var["CurSec"]
|
|
then
|
|
return
|
|
else
|
|
local CurMsg = ChatInfo["Boss_Blakan_Dead"]
|
|
local DialogStep = Var["BossRoom_Blakan"]["Dialog_BlakanDead"]["DialogStep"]
|
|
local MaxDialogStep = #ChatInfo["Boss_Blakan_Dead"]
|
|
|
|
--[[
|
|
DebugLog( "CurMsg[1] : " ..CurMsg[1] )
|
|
DebugLog( "DialogStep : " ..DialogStep )
|
|
DebugLog( "MaxDialogStep : " ..MaxDialogStep )
|
|
--]]
|
|
|
|
if DialogStep <= MaxDialogStep
|
|
then
|
|
cScriptMessage( Var["MapIndex"], CurMsg[DialogStep] )
|
|
Var["BossRoom_Blakan"]["Dialog_BlakanDead"]["DialogTime"] = Var["CurSec"] + DelayTime["GapDialog"]
|
|
Var["BossRoom_Blakan"]["Dialog_BlakanDead"]["DialogStep"] = DialogStep + 1
|
|
return
|
|
end
|
|
|
|
if Var["BossRoom_Blakan"]["Dialog_BlakanDead"]["DialogStep"] > MaxDialogStep
|
|
then
|
|
DebugLog( "대사 전부 함, Dialog_Dead 테이블 nil 처리" )
|
|
Var["BossRoom_Blakan"]["Dialog_BlakanDead"] = nil
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
|
|
-- 몹과 캐릭터 죽이기
|
|
local PlayerList = { cGetPlayerList( Var["MapIndex"] ) }
|
|
if PlayerList ~= nil
|
|
then
|
|
for i = 1, #PlayerList
|
|
do
|
|
cKillObject( PlayerList[i], Var["Enemy"]["Blakan"] )
|
|
end
|
|
end
|
|
|
|
|
|
|
|
Var["StepFunc"] = ReturnToHome
|
|
Var["BossRoom_Blakan"] = nil
|
|
DebugLog( "End BossRoom_Blakan ... Fail : Blakan Dead .." )
|
|
|
|
return
|
|
end
|
|
|
|
|
|
|
|
----------------------------------------------------------------------------------------------
|
|
-- [경우 2] 모든 봉인석 파괴했을 경우
|
|
----------------------------------------------------------------------------------------------
|
|
if Var["BossRoom_Blakan"]["BlakanState"] == "Free"
|
|
--if Var["BossRoom_Blakan"]["IsDead"] == false and Var["Enemy"]["Seal"]["SealNum"] == 0
|
|
then
|
|
|
|
if Var["BossRoom_Blakan"]["Dialog_BlakanSave"] == nil
|
|
then
|
|
|
|
DebugLog( "BossRoom_Blakan :: Blakan Freed! Good Job!" )
|
|
|
|
Var["BossRoom_Blakan"]["Dialog_BlakanSave"] = {}
|
|
Var["BossRoom_Blakan"]["Dialog_BlakanSave"]["DialogTime"] = Var["CurSec"]
|
|
Var["BossRoom_Blakan"]["Dialog_BlakanSave"]["DialogStep"] = 1
|
|
|
|
|
|
local nBlakanHandle = Var["Enemy"]["Blakan"]
|
|
local Stun_Idx = AbStateInfo["Stun_ToBlakan_WhenSave"]["Index"]
|
|
local Stun_Strength = AbStateInfo["Stun_ToBlakan_WhenSave"]["Strength"]
|
|
local Stun_KeepTime = AbStateInfo["Stun_ToBlakan_WhenSave"]["KeepTime"]
|
|
|
|
|
|
DebugLog( "nBlakanHandle" .. nBlakanHandle )
|
|
DebugLog( "Stun_Idx" .. Stun_Idx )
|
|
DebugLog( "Stun_Strength" .. Stun_Strength )
|
|
DebugLog( "Stun_KeepTime" .. Stun_KeepTime )
|
|
|
|
if cSetAbstate( nBlakanHandle, Stun_Idx, Stun_Strength, Stun_KeepTime, nBlakanHandle ) == nil
|
|
then
|
|
ErrorLog( "BossRoom_Blakan :: Fail Set Abstate To Blakan" .. Stun_Idx)
|
|
end
|
|
|
|
end
|
|
|
|
|
|
if Var["BossRoom_Blakan"]["Dialog_BlakanSave"]["DialogTime"] ~= nil
|
|
then
|
|
if Var["BossRoom_Blakan"]["Dialog_BlakanSave"]["DialogTime"] > Var["CurSec"]
|
|
then
|
|
return
|
|
else
|
|
local CurMsg = ChatInfo["Boss_Blakan_Save"]
|
|
local DialogStep = Var["BossRoom_Blakan"]["Dialog_BlakanSave"]["DialogStep"]
|
|
local MaxDialogStep = #ChatInfo["Boss_Blakan_Save"]
|
|
|
|
--[[
|
|
DebugLog( "CurMsg[1] : " ..CurMsg[1] )
|
|
DebugLog( "DialogStep : " ..DialogStep )
|
|
DebugLog( "MaxDialogStep : " ..MaxDialogStep )
|
|
--]]
|
|
|
|
if DialogStep <= MaxDialogStep
|
|
then
|
|
cScriptMessage( Var["MapIndex"], CurMsg[DialogStep] )
|
|
Var["BossRoom_Blakan"]["Dialog_BlakanSave"]["DialogTime"] = Var["CurSec"] + DelayTime["GapDialog"]
|
|
Var["BossRoom_Blakan"]["Dialog_BlakanSave"]["DialogStep"] = DialogStep + 1
|
|
return
|
|
end
|
|
|
|
if Var["BossRoom_Blakan"]["Dialog_BlakanSave"]["DialogStep"] > MaxDialogStep
|
|
then
|
|
-- 블라칸 삭제처리
|
|
cAIScriptSet( Var["Enemy"]["Blakan"] )
|
|
cNPCVanish( Var["Enemy"]["Blakan"] )
|
|
Var["BossRoom_Blakan"]["Dialog_BlakanSave"]["DialogTime"] = nil
|
|
Var["BossRoom_Blakan"]["Dialog_BlakanSave"]["WaitNextStepFunc"] = Var["CurSec"] + Blakan_Data_Info["WaitNextFagelsStep"]
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
|
|
if Var["BossRoom_Blakan"]["Dialog_BlakanSave"]["WaitNextStepFunc"] ~= nil
|
|
then
|
|
|
|
if Var["BossRoom_Blakan"]["Dialog_BlakanSave"]["WaitNextStepFunc"] > Var["CurSec"]
|
|
then
|
|
return
|
|
end
|
|
|
|
Var["StepFunc"] = BossRoom_Fagels
|
|
Var["BossRoom_Blakan"]["Dialog_BlakanSave"] = nil
|
|
Var["BossRoom_Blakan"] = nil
|
|
|
|
DebugLog( "End BossRoom_Blakan ... Success : All Seal Brake .." )
|
|
|
|
end
|
|
|
|
return
|
|
end
|
|
|
|
|
|
|
|
----------------------------------------------------------------------------------------------
|
|
-- [경우 3] 전투진행중 ( 블라칸이 죽지 않았고, 봉인석도 다 파괴못한 상황 )
|
|
----------------------------------------------------------------------------------------------
|
|
if Var["BossRoom_Blakan"]["BlakanState"] == "Sealed"
|
|
then
|
|
|
|
-- 블라칸 상태 확인
|
|
if cIsObjectDead( Var["Enemy"]["Blakan"] ) ~= nil
|
|
then
|
|
DebugLog("BossRoom_Blakan :: Blakan Dead....")
|
|
Var["BossRoom_Blakan"]["BlakanState"] = "Dead"
|
|
return
|
|
else
|
|
if Var["Enemy"]["Seal"]["SealNum"] == 0
|
|
then
|
|
DebugLog("BossRoom_Blakan :: Blakan Free....")
|
|
Var["BossRoom_Blakan"]["BlakanState"] = "Free"
|
|
return
|
|
end
|
|
end
|
|
|
|
|
|
if Var["BossRoom_Blakan"]["FagelsDialogTime"] ~= nil
|
|
then
|
|
if Var["BossRoom_Blakan"]["FagelsDialogTime"] < Var["CurSec"]
|
|
then
|
|
cScriptMessage( Var["MapIndex"], ChatInfo["BossRoom_Fagels_Show"][1] )
|
|
|
|
Var["BossRoom_Blakan"]["FagelsDialogTime"] = nil
|
|
end
|
|
end
|
|
|
|
|
|
|
|
local Summon1DataInfo = Blakan_Data_Info["SummonInfo1"]
|
|
local Summon2DataInfo = Blakan_Data_Info["SummonInfo2"]
|
|
|
|
-- 3. 첫번째 소환 관련( 20초마다 소환 )
|
|
if Var["BossRoom_Blakan"]["Summon1"] ~= nil
|
|
then
|
|
|
|
-- Summon1 끝낼 시간인 경우, 테이블 초기화 및 Summon2 테이블 생성
|
|
if Var["BossRoom_Blakan"]["Summon1"]["EndTime"] < Var["CurSec"]
|
|
then
|
|
DebugLog( "BossRoom_Blakan :: Summon1 End Time" )
|
|
Var["BossRoom_Blakan"]["Summon1"] = nil
|
|
|
|
if Var["BossRoom_Blakan"]["Summon2"] == nil
|
|
then
|
|
Var["BossRoom_Blakan"]["Summon2"] = {}
|
|
Var["BossRoom_Blakan"]["Summon2"]["StartTime"] = Var["CurSec"]
|
|
Var["BossRoom_Blakan"]["Summon2"]["EndTime"] = Var["CurSec"] + Summon2DataInfo["KeepTime"]
|
|
Var["BossRoom_Blakan"]["Summon2"]["SummonTick"] = Var["BossRoom_Blakan"]["Summon2"]["StartTime"]
|
|
end
|
|
end
|
|
|
|
|
|
-- Summon1 진행 시간일 경우, 틱 설정하고, 소환할 시간인지 확인한다.
|
|
if Var["BossRoom_Blakan"]["Summon1"] ~= nil
|
|
then
|
|
|
|
if Var["BossRoom_Blakan"]["Summon1"]["SummonTick"] > Var["CurSec"]
|
|
then
|
|
return
|
|
else
|
|
DebugLog( "BossRoom_Blakan :: Summon1 몹 리젠" )
|
|
|
|
Var["BossRoom_Blakan"]["Summon1"]["SummonTick"] = Var["BossRoom_Blakan"]["Summon1"]["SummonTick"] + Summon1DataInfo["SummonTick"]
|
|
|
|
for i = 1, #Summon1DataInfo["Mob"]
|
|
do
|
|
local CurMobIdx = Summon1DataInfo["Mob"][i]["Index"]
|
|
local CurMobRegenX = Summon1DataInfo["Mob"][i]["x"]
|
|
local CurMobRegenY = Summon1DataInfo["Mob"][i]["y"]
|
|
local CurMobRegenRadius = Summon1DataInfo["Mob"][i]["radius"]
|
|
|
|
--[[
|
|
DebugLog( "====Summon1" )
|
|
DebugLog( "CurMobIdx " .. CurMobIdx )
|
|
DebugLog( "CurMobRegenX " .. CurMobRegenX )
|
|
DebugLog( "CurMobRegenY " .. CurMobRegenY )
|
|
--]]
|
|
|
|
if cMobRegen_Circle( Var["MapIndex"], CurMobIdx, CurMobRegenX, CurMobRegenY, CurMobRegenRadius ) == nil
|
|
then
|
|
ErrorLog( "BossRoom_Blakan :: Summon1 Mob Regen Fail.. "..i )
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
-- 3. 두번째 소환 관련( 60초마다 소환 )
|
|
if Var["BossRoom_Blakan"]["Summon2"] ~= nil
|
|
then
|
|
-- Summon2 끝낼 시간인 경우, 테이블 초기화
|
|
if Var["BossRoom_Blakan"]["Summon2"]["EndTime"] < Var["CurSec"]
|
|
then
|
|
DebugLog( "BossRoom_Blakan :: Summon2 End Time" )
|
|
Var["BossRoom_Blakan"]["Summon2"] = nil
|
|
end
|
|
|
|
-- Summon2 진행 시간일 경우, 틱 설정하고, 소환할 시간인지 확인한다.
|
|
if Var["BossRoom_Blakan"]["Summon2"] ~= nil
|
|
then
|
|
if Var["BossRoom_Blakan"]["Summon2"]["SummonTick"] > Var["CurSec"]
|
|
then
|
|
return
|
|
else
|
|
Var["BossRoom_Blakan"]["Summon2"]["SummonTick"] = Var["BossRoom_Blakan"]["Summon2"]["SummonTick"] + Summon2DataInfo["SummonTick"]
|
|
|
|
DebugLog( "BossRoom_Blakan :: Summon2 몹 리젠" )
|
|
|
|
for i = 1, #Summon2DataInfo["Mob"]
|
|
do
|
|
local CurMobIdx = Summon2DataInfo["Mob"][i]["Index"]
|
|
local CurMobRegenX = Summon2DataInfo["Mob"][i]["x"]
|
|
local CurMobRegenY = Summon2DataInfo["Mob"][i]["y"]
|
|
local CurMobRegenRadius = Summon2DataInfo["Mob"][i]["radius"]
|
|
|
|
--[[
|
|
DebugLog( "====Summon2" )
|
|
DebugLog( "CurMobIdx " .. CurMobIdx )
|
|
DebugLog( "CurMobRegenX " .. CurMobRegenX )
|
|
DebugLog( "CurMobRegenY " .. CurMobRegenY )
|
|
--]]
|
|
|
|
if cMobRegen_Circle( Var["MapIndex"], CurMobIdx, CurMobRegenX, CurMobRegenY, CurMobRegenRadius ) == nil
|
|
then
|
|
ErrorLog( "BossRoom_Blakan :: Summon2 Mob Regen Fail.. "..i )
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
return
|
|
|
|
end
|
|
--]]
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- BossRoom_Fagels
|
|
--------------------------------------------------------------------------------
|
|
function BossRoom_Fagels( Var )
|
|
cExecCheck "BossRoom_Fagels"
|
|
|
|
|
|
if Var == nil
|
|
then
|
|
ErrorLog( "BossRoom_Fagels :: Var == nil" )
|
|
return
|
|
end
|
|
|
|
|
|
if Var["BossRoom_Fagels"] == nil
|
|
then
|
|
Var["BossRoom_Fagels"] = {}
|
|
Var["BossRoom_Fagels"]["DialogTime"] = Var["CurSec"]
|
|
Var["BossRoom_Fagels"]["DialogStep"] = 1
|
|
end
|
|
|
|
|
|
if Var["Enemy"]["Fagels"] == nil
|
|
then
|
|
|
|
Var["Enemy"]["Fagels"] = {}
|
|
Var["Enemy"]["Fagels"]["SkillList"] = {}
|
|
|
|
|
|
for i = 1, #FARGELS_SKILL
|
|
do
|
|
|
|
local Object = Var["Enemy"]["Fagels"]
|
|
|
|
-- skill
|
|
Object["SkillList"][i] = {}
|
|
Object["SkillList"][i]["CheckTime"] = 0
|
|
|
|
-- abstate
|
|
Object["SkillList"][i]["AbstateList"] = {}
|
|
|
|
local AbstateData = FARGELS_SKILL[i]["ABSTATE"]
|
|
|
|
if AbstateData ~= nil then
|
|
|
|
for j = 1, #AbstateData do
|
|
|
|
Object["SkillList"][i]["AbstateList"][j] = { }
|
|
Object["SkillList"][i]["AbstateList"][j]["CheckKeepTime"] = 0
|
|
Object["SkillList"][i]["AbstateList"][j]["CheckPrepareTime"] = 0
|
|
Object["SkillList"][i]["AbstateList"][j]["CheckIntervalTime"] = 0
|
|
Object["SkillList"][i]["AbstateList"][j]["Enable"] = false
|
|
|
|
end
|
|
|
|
end
|
|
|
|
-- Summon Mob
|
|
local SummonData = FARGELS_SKILL[i]["SUMMON_MOBDATA"]
|
|
|
|
if SummonData ~= nil then
|
|
--Object["SkillList"][i]["Enable_Summon"] = true
|
|
Object["SkillList"][i]["Summon"] = {}
|
|
Object["SkillList"][i]["Summon"]["CheckTime"] = 0
|
|
Object["SkillList"][i]["Summon"]["Enable"] = false
|
|
end
|
|
|
|
end
|
|
|
|
|
|
local FagelsInfo = RegenInfo["Mob"]["BossRoom_Fagels"]["Fagels"]
|
|
local nFagelsHandle = cMobRegen_XY( Var["MapIndex"], FagelsInfo["Index"], FagelsInfo["x"], FagelsInfo["y"] )
|
|
|
|
if nFagelsHandle == nil
|
|
then
|
|
ErrorLog( "BossRoom_Fagels :: Fagels was not created." )
|
|
end
|
|
|
|
if cSetAIScript ( MainLuaScriptPath, nFagelsHandle ) == nil
|
|
then
|
|
ErrorLog( "BossRoom_Fagels::cSetAIScript ( nFagelsHandle ) == nil" )
|
|
else
|
|
if cAIScriptFunc( nFagelsHandle, "Entrance", "Routine_Fagels" ) == nil
|
|
then
|
|
ErrorLog( "BossRoom_Fagels::cAIScriptFunc ( Routine_Fagels ) == nil" )
|
|
end
|
|
end
|
|
|
|
Var["Enemy"]["Fagels"]["Handle"] = nFagelsHandle
|
|
Var["RoutineTime"]["Routine_Fagels"] = Var["CurSec"]
|
|
|
|
DebugLog( "BossRoom_Fagels :: nFagelsHandle = "..Var["Enemy"]["Fagels"]["Handle"] )
|
|
|
|
end
|
|
|
|
|
|
if cIsObjectDead( Var["Enemy"]["Fagels"]["Handle"] ) ~= nil
|
|
then
|
|
|
|
if Var["BossRoom_Fagels"]["DialogTime"] ~= nil
|
|
then
|
|
|
|
if Var["BossRoom_Fagels"]["DialogTime"] > Var["CurSec"]
|
|
then
|
|
|
|
return
|
|
|
|
else
|
|
|
|
local CurMsg = ChatInfo["Boss_Fagels_Dead"]
|
|
local DialogStep = Var["BossRoom_Fagels"]["DialogStep"]
|
|
local MaxDialogStep = #ChatInfo["Boss_Fagels_Dead"]
|
|
|
|
--[[
|
|
DebugLog( "CurMsg[1] : " ..CurMsg[1] )
|
|
DebugLog( "DialogStep : " ..DialogStep )
|
|
DebugLog( "MaxDialogStep : " ..MaxDialogStep )
|
|
--]]
|
|
|
|
if DialogStep == 1
|
|
then
|
|
cMobSuicide( Var["MapIndex"] )
|
|
end
|
|
|
|
|
|
if DialogStep == 3
|
|
then
|
|
|
|
local MildWinInfo = RegenInfo["Mob"]["BossRoom_Fagels"]["MildWin"]
|
|
local MildWinHandle = cMobRegen_XY( Var["MapIndex"], MildWinInfo["Index"], MildWinInfo["x"], MildWinInfo["y"] )
|
|
if MildWinHandle == nil
|
|
then
|
|
ErrorLog( "InitDungeon :: MildWin Regen Fail" )
|
|
end
|
|
|
|
Var["Enemy"]["MildWin"] = MildWinHandle
|
|
|
|
end
|
|
|
|
|
|
if DialogStep <= MaxDialogStep
|
|
then
|
|
cScriptMessage( Var["MapIndex"], CurMsg[DialogStep] )
|
|
Var["BossRoom_Fagels"]["DialogTime"] = Var["CurSec"] + DelayTime["GapDialog"]
|
|
Var["BossRoom_Fagels"]["DialogStep"] = DialogStep + 1
|
|
return
|
|
end
|
|
|
|
|
|
if Var["BossRoom_Fagels"]["DialogStep"] > MaxDialogStep
|
|
then
|
|
|
|
Var["BossRoom_Fagels"]["DialogStep"] = nil
|
|
Var["BossRoom_Fagels"]["DialogTime"] = nil
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
Var["StepFunc"] = ReturnToHome
|
|
Var["BossRoom_Fagels"] = nil
|
|
|
|
DebugLog( "End BossRoom_Fagels" )
|
|
end
|
|
|
|
return
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- 귀환
|
|
--------------------------------------------------------------------------------
|
|
function ReturnToHome( Var )
|
|
cExecCheck "ReturnToHome"
|
|
|
|
if Var == nil
|
|
then
|
|
return
|
|
end
|
|
|
|
|
|
if Var["ReturnToHome"] == nil
|
|
then
|
|
DebugLog( "Start ReturnToHome" )
|
|
Var["ReturnToHome"] = {}
|
|
Var["ReturnToHome"]["ReturnStepSec"] = Var["CurSec"]
|
|
Var["ReturnToHome"]["ReturnStepNo"] = 1
|
|
Var["ReturnToHome"]["WaitSecReturnToHome"] = Var["CurSec"] + DelayTime["WaitReturnToHome"]
|
|
|
|
end
|
|
|
|
|
|
if Var["ReturnToHome"]["WaitSecReturnToHome"] > Var["CurSec"]
|
|
then
|
|
return
|
|
end
|
|
|
|
|
|
-- Return : return notice substep
|
|
if Var["ReturnToHome"]["ReturnStepNo"] <= #NoticeInfo["IDReturn"]
|
|
then
|
|
|
|
if Var["ReturnToHome"]["ReturnStepSec"] <= Var["CurSec"]
|
|
then
|
|
|
|
-- Notice of Escape
|
|
if NoticeInfo["IDReturn"][ Var["ReturnToHome"]["ReturnStepNo"] ]["Index"] ~= nil
|
|
then
|
|
cNotice( Var["MapIndex"], NoticeInfo["ScriptFileName"], NoticeInfo["IDReturn"][ Var["ReturnToHome"]["ReturnStepNo"] ]["Index"] )
|
|
end
|
|
|
|
-- Go To Next Notice
|
|
Var["ReturnToHome"]["ReturnStepNo"] = Var["ReturnToHome"]["ReturnStepNo"] + 1
|
|
Var["ReturnToHome"]["ReturnStepSec"] = Var["CurSec"] + DelayTime["GapIDReturnNotice"]
|
|
|
|
end
|
|
|
|
return
|
|
|
|
end
|
|
|
|
|
|
-- Return : linkto substep
|
|
if Var["ReturnToHome"]["ReturnStepNo"] > #NoticeInfo["IDReturn"]
|
|
then
|
|
|
|
if Var["ReturnToHome"]["ReturnStepSec"] <= Var["CurSec"]
|
|
then
|
|
--Finish_KQ
|
|
cLinkToAll( Var["MapIndex"], LinkInfo["ReturnMap"]["MapIndex"], LinkInfo["ReturnMap"]["x"], LinkInfo["ReturnMap"]["y"] )
|
|
|
|
cMobSuicide( Var["MapIndex"] )
|
|
Var["StepFunc"] = DummyFunc
|
|
Var["ReturnToHome"] = nil
|
|
|
|
|
|
if Var["TimeList"] ~= nil
|
|
then
|
|
Var["TimeList"] = nil
|
|
end
|
|
|
|
if Var["RootManager"] ~= nil
|
|
then
|
|
Var["RootManager"] = nil
|
|
end
|
|
|
|
if Var["Enemy"] ~= nil
|
|
then
|
|
Var["Enemy"] = nil
|
|
end
|
|
|
|
DebugLog( "End ReturnToHome" )
|
|
|
|
end
|
|
|
|
return
|
|
|
|
end
|
|
end
|
|
|