|
|
|
|
require( "common" )
|
|
|
|
|
require( "ID/WarNH/WarNHData" )
|
|
|
|
|
require( "ID/WarNH/WarNHFunc" )
|
|
|
|
|
require( "ID/WarNH/WarNHRoutine" )
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 ) -- <EFBFBD>ʸ<EFBFBD>ŷ ó<EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
local CurSec = cCurrentSecond()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- <EFBFBD>ʱ<EFBFBD>ȭ, <EFBFBD>⺻ <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
if Var["Step"] == nil then
|
|
|
|
|
|
|
|
|
|
Var["Step"] = 1
|
|
|
|
|
Var["StepFunc"] = InitInstanceDungeon -- <EFBFBD>ʱ<EFBFBD>ȭ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ȯ<EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- <EFBFBD><EFBFBD><EFBFBD≯<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|
|
|
|
-- ElementClearEvent -> CenterSetting -> NormalClearEvent -> ElementSetting
|
|
|
|
|
-- <EFBFBD>Լ<EFBFBD> <EFBFBD>ݺ<EFBFBD>
|
|
|
|
|
if Var["Step"] == 1 then
|
|
|
|
|
|
|
|
|
|
Var["Step"] = Var["Step"] + 1
|
|
|
|
|
Var["StepFunc"] = ElementClearEvent
|
|
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> üũ
|
|
|
|
|
-- <EFBFBD><EFBFBD><EFBFBD≯<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>濡<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD> <EFBFBD>̵<EFBFBD> ó<EFBFBD><EFBFBD>
|
|
|
|
|
if Var["Step"] == 2 then
|
|
|
|
|
|
|
|
|
|
local OreNum = 0
|
|
|
|
|
|
|
|
|
|
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ǵ<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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- <EFBFBD><EFBFBD><EFBFBD≯<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ÿ<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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- <EFBFBD><EFBFBD>ȭ 1<EFBFBD><EFBFBD>
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- <EFBFBD><EFBFBD><EFBFBD≯<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ѹ<EFBFBD> <EFBFBD><EFBFBD> <EFBFBD>̵<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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- <EFBFBD><EFBFBD><EFBFBD≯<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ÿ<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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- <EFBFBD><EFBFBD><EFBFBD≯<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ִϸ<EFBFBD><EFBFBD>̼<EFBFBD>
|
|
|
|
|
if Var["Step"] == 7 then
|
|
|
|
|
|
|
|
|
|
if Var["Airi"] == nil then
|
|
|
|
|
Var["Step"] = 99
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- <EFBFBD><EFBFBD><EFBFBD≯<EFBFBD> <EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ִϸ<EFBFBD><EFBFBD>̼<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ٽ<EFBFBD> <EFBFBD>ٲ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ð<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- <EFBFBD><EFBFBD>ȭ 2<EFBFBD><EFBFBD>
|
|
|
|
|
if Var["Step"] == 8 then
|
|
|
|
|
|
|
|
|
|
if WarN_Dialog( Var, DialogInfo["WarN_Clear_2"] ) ~= nil then
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- <EFBFBD>ⱸ <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <EFBFBD><EFBFBD><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"] -- <EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><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
|