314 lines
5.2 KiB
Lua
Raw Normal View History

2023-06-26 04:40:53 -07:00
require( "common" )
require( "ID/WarN/WarNData" )
require( "ID/WarN/WarNFunc" )
require( "ID/WarN/WarNRoutine" )
function Main( Field )
cExecCheck( "Main" )
local Var = InstanceField[Field]
if Var == nil then
InstanceField[Field] = {}
Var = InstanceField[Field]
Var["MapIndex"] = Field
Var["StepControl"] = StepControl
Var["StepFunc"] = DummyFunc
cSetFieldScript( Var["MapIndex"], SCRIPT_MAIN )
cFieldScriptFunc( Var["MapIndex"], "MapLogin", "PlayerMapLogin" )
end
Var["StepControl"]( Var )
Var["StepFunc"]( Var )
end
function DummyFunc( Var )
cExecCheck( "DummyFunc" )
end
function StepControl( Var )
cExecCheck( "StepControl" )
if Var == nil then
return
end
MapMarking( Var ) -- <20>ʸ<EFBFBD>ŷ ó<><C3B3>
local CurSec = cCurrentSecond()
-- <20>ʱ<EFBFBD>ȭ, <20><20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
if Var["Step"] == nil then
Var["Step"] = 1
Var["StepFunc"] = InitInstanceDungeon -- <20>ʱ<EFBFBD>ȭ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD> Ȯ<><C8AE>
return
end
-- <20><><EFBFBD≯<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
-- ElementClearEvent -> CenterSetting -> NormalClearEvent -> ElementSetting
-- <20>Լ<EFBFBD> <20>ݺ<EFBFBD>
if Var["Step"] == 1 then
Var["Step"] = Var["Step"] + 1
Var["StepFunc"] = ElementClearEvent
return
end
-- <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD> üũ
-- <20><><EFBFBD≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6BFA1> <20><><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD> <20>̵<EFBFBD> ó<><C3B3>
if Var["Step"] == 2 then
local OreNum = 0
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ǵ<EFBFBD>
for index, value in pairs( Var["OreList"] ) do
OreNum = OreNum + 1
end
if OreNum < Var["RoomNum"] then
return
end
Var["Step"] = Var["Step"] + 1
Var["StepFunc"] = ClearDungeon
return
end
-- <20><><EFBFBD≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ÿ<EFBFBD> üũ
if Var["Step"] == 3 then
if Var["Airi"] == nil then
Var["Step"] = 99
return
end
if Var["BossOre"] == nil then
Var["Step"] = 99
return
end
local CurDistSqr = cDistanceSquar( Var["Airi"], Var["BossOre"] )
local ChkDist = WARN_END_EVENT["Flw_Gap"] + WARN_END_EVENT["EventDist"]
if CurDistSqr < ChkDist * ChkDist then
Var["Step"] = Var["Step"] + 1
Var["StepFunc"] = DummyFunc
end
return
end
-- <20><>ȭ 1<><31>
if Var["Step"] == 4 then
if WarN_Dialog( Var, DialogInfo["WarN_Clear_1"] ) ~= nil then
return
end
Var["Step"] = Var["Step"] + 1
Var["StepFunc"] = DummyFunc
return
end
-- <20><><EFBFBD≯<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ѹ<EFBFBD> <20><> <20>̵<EFBFBD>
if Var["Step"] == 5 then
if Var["Airi"] == nil then
Var["Step"] = 99
return
end
if Var["BossOre"] == nil then
Var["Step"] = 99
return
end
cFollow( Var["Airi"], Var["BossOre"], WARN_END_EVENT["Flw_Airi"], WARN_END_EVENT["Flw_Airi"] + WARN_END_EVENT["Flw_Gap"] )
Var["Step"] = Var["Step"] + 1
Var["StepFunc"] = DummyFunc
return
end
-- <20><><EFBFBD≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ÿ<EFBFBD> üũ
if Var["Step"] == 6 then
if Var["Airi"] == nil then
Var["Step"] = 99
return
end
if Var["BossOre"] == nil then
Var["Step"] = 99
return
end
local CurDistSqr = cDistanceSquar( Var["Airi"], Var["BossOre"] )
local ChkDist = WARN_END_EVENT["Flw_Airi"] + WARN_END_EVENT["EventDist"]
if CurDistSqr < ChkDist * ChkDist then
Var["Step"] = Var["Step"] + 1
Var["StepFunc"] = DummyFunc
end
return
end
-- <20><><EFBFBD≯<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ִϸ<D6B4><CFB8>̼<EFBFBD>
if Var["Step"] == 7 then
if Var["Airi"] == nil then
Var["Step"] = 99
return
end
-- <20><><EFBFBD≯<EFBFBD> <20>̵<EFBFBD><CCB5><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִϸ<D6B4><CFB8>̼<EFBFBD><CCBC><EFBFBD> <20>ٽ<EFBFBD> <20>ٲ<EFBFBD> <20><><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
if Var["StepWait"] == nil then
Var["StepWait"] = CurSec
end
if Var["StepWait"] + WARN_END_EVENT["WaitAiriMove"] > CurSec then
return
end
cAnimate( Var["Airi"], "start", AiriData["ResearchAniIndex"] )
Var["StepWait"] = nil
Var["Step"] = Var["Step"] + 1
Var["StepFunc"] = DummyFunc
return
end
-- <20><>ȭ 2<><32>
if Var["Step"] == 8 then
if WarN_Dialog( Var, DialogInfo["WarN_Clear_2"] ) ~= nil then
return
end
-- <20><20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
if Var["BossOre"] == nil then
Var["Step"] = 99
return
end
if Var["OreList"][Var["BossOre"]] == nil then
Var["Step"] = 99
return
end
local CurRoomNum = Var["RoomOrder"][#Var["RoomOrder"]]
local CenterCoord = RoomCoordDataTable[Var["RoomData"][CurRoomNum]["Data"]["RoomCoordData"]]["CenterCoord"]
local RegenCoord = {}
RegenCoord["x"], RegenCoord["y"] = cGetAroundCoord( Var["BossOre"], CenterCoord["dir"], WARN_END_EVENT["GateDist"] )
local ExitGate = {}
ExitGate["Handle"] = cMobRegen_XY( Var["MapIndex"], GateData["Index"],
RegenCoord["x"],
RegenCoord["y"],
CenterCoord["dir"] )
if ExitGate["Handle"] ~= nil then
ExitGate["Data"] = GateData["LinkTo"]
cSetAIScript( SCRIPT_MAIN, ExitGate["Handle"] )
cAIScriptFunc( ExitGate["Handle"], "Entrance", "GateRoutine" )
cAIScriptFunc( ExitGate["Handle"], "NPCClick", "GateClick" )
Var["ExitGateList"][ExitGate["Handle"]] = ExitGate
GateMapIndex[ExitGate["Handle"]] = Var["MapIndex"] -- <20><><EFBFBD>ε<EFBFBD><CEB5><EFBFBD> <20><><EFBFBD><EFBFBD>
end
Var["Step"] = 99
Var["StepFunc"] = DummyFunc
return
end
if Var["Step"] == 99 then
if WarN_Notice( Var, NoticeInfo["KQReturn"] ) ~= nil then
return
end
Var["Step"] = Var["Step"] + 1
Var["StepFunc"] = DummyFunc
end
if Var["Step"] == 100 then
cLinkToAll( Var["MapIndex"], GateData["LinkTo"]["Field"], GateData["LinkTo"]["x"], GateData["LinkTo"]["y"] )
Var["Step"] = Var["Step"] + 1
Var["StepFunc"] = DummyFunc
return
end
end