|
|
require( "ID/WarBL/WarBLData" )
|
|
|
|
|
|
|
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
|
-- -- -- --
|
|
|
-- -- ´øÀü ÃʱâÈ -- --
|
|
|
-- -- -- --
|
|
|
-- -- ( µµ¾î / °ÔÀÌÆ® ) -- --
|
|
|
-- -- -- --
|
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GATE_MAP_INDEX = { }
|
|
|
|
|
|
function MAPMARK( RoomEvent )
|
|
|
cExecCheck( "MAPMARK" )
|
|
|
|
|
|
if RoomEvent == nil then
|
|
|
|
|
|
return
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
local MapMarkTable = { }
|
|
|
local Num = 0
|
|
|
|
|
|
|
|
|
if RoomEvent["DoorList"] ~= nil then
|
|
|
|
|
|
for index, value in pairs( RoomEvent["DoorList"] ) do
|
|
|
|
|
|
local MapMark = { }
|
|
|
|
|
|
MapMark["Group"] = MAP_MARK_DATA["DOOR"]["GROUP"] + Num
|
|
|
MapMark["x"] = value["X"]
|
|
|
MapMark["y"] = value["Y"]
|
|
|
MapMark["KeepTime"] = MAP_MARK_DATA["DOOR"]["KEEPTIME"]
|
|
|
MapMark["IconIndex"] = MAP_MARK_DATA["DOOR"]["ICON"]
|
|
|
|
|
|
MapMarkTable[MapMark["Group"]] = MapMark
|
|
|
|
|
|
Num = Num + 1
|
|
|
|
|
|
end
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
if RoomEvent["StartGate"] ~= nil then
|
|
|
|
|
|
local MapMark = { }
|
|
|
|
|
|
MapMark["Group"] = MAP_MARK_DATA["LINKTOWN"]["GROUP"]
|
|
|
MapMark["x"] = GATE_DATA["START_GATE"]["REGEN_POSITION"]["X"]
|
|
|
MapMark["y"] = GATE_DATA["START_GATE"]["REGEN_POSITION"]["Y"]
|
|
|
MapMark["KeepTime"] = MAP_MARK_DATA["LINKTOWN"]["KEEPTIME"]
|
|
|
MapMark["IconIndex"] = MAP_MARK_DATA["LINKTOWN"]["ICON"]
|
|
|
|
|
|
MapMarkTable[MapMark["Group"]] = MapMark
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
if RoomEvent["MiddleGate"] ~= nil then
|
|
|
|
|
|
local MapMark = { }
|
|
|
|
|
|
MapMark["Group"] = MAP_MARK_DATA["LINKTOWN"]["GROUP"] + 1
|
|
|
MapMark["x"] = GATE_DATA["MIDDLE_GATE"]["REGEN_POSITION"]["X"]
|
|
|
MapMark["y"] = GATE_DATA["MIDDLE_GATE"]["REGEN_POSITION"]["Y"]
|
|
|
MapMark["KeepTime"] = MAP_MARK_DATA["LINKTOWN"]["KEEPTIME"]
|
|
|
MapMark["IconIndex"] = MAP_MARK_DATA["LINKTOWN"]["ICON"]
|
|
|
|
|
|
MapMarkTable[MapMark["Group"]] = MapMark
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
if RoomEvent["EndGate"] ~= nil then
|
|
|
|
|
|
local MapMark = { }
|
|
|
|
|
|
MapMark["Group"] = MAP_MARK_DATA["LINKTOWN"]["GROUP"] + 2
|
|
|
MapMark["x"] = GATE_DATA["END_GATE"]["REGEN_POSITION"]["X"]
|
|
|
MapMark["y"] = GATE_DATA["END_GATE"]["REGEN_POSITION"]["Y"]
|
|
|
MapMark["KeepTime"] = MAP_MARK_DATA["LINKTOWN"]["KEEPTIME"]
|
|
|
MapMark["IconIndex"] = MAP_MARK_DATA["LINKTOWN"]["ICON"]
|
|
|
|
|
|
MapMarkTable[MapMark["Group"]] = MapMark
|
|
|
|
|
|
end
|
|
|
|
|
|
cMapMark( RoomEvent["MapIndex"], MapMarkTable )
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
function PlayerMapLogin( Field, Player )
|
|
|
|
|
|
local RoomEvent = InstanceField[Field]
|
|
|
|
|
|
if RoomEvent == nil then
|
|
|
|
|
|
return
|
|
|
|
|
|
end
|
|
|
|
|
|
MAPMARK( RoomEvent )
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function DOOR_N_GATE_CREATE( RoomEvent )
|
|
|
cExecCheck( "DOOR_N_GATE_CREATE" )
|
|
|
|
|
|
RoomEvent["DoorList"] = { }
|
|
|
RoomEvent["StartGate"] = { }
|
|
|
|
|
|
|
|
|
local Gate = { }
|
|
|
local i = 1
|
|
|
|
|
|
|
|
|
local Num = 0
|
|
|
for index, value in pairs( DOOR_BLOCK_DATA ) do
|
|
|
|
|
|
local DOOR = { }
|
|
|
|
|
|
DOOR["Handle"] = cDoorBuild( RoomEvent["MapIndex"], value["DOOR_INDEX"],
|
|
|
value["REGEN_POSITION"]["X"], value["REGEN_POSITION"]["Y"], value["REGEN_POSITION"]["DIR"], 1000 )
|
|
|
|
|
|
DOOR["Index"] = value["DOOR_BLOCK"]
|
|
|
DOOR["X"] = value["REGEN_POSITION"]["X"]
|
|
|
DOOR["Y"] = value["REGEN_POSITION"]["Y"]
|
|
|
|
|
|
cDoorAction( DOOR["Handle"], DOOR["Index"], "close" )
|
|
|
|
|
|
RoomEvent["DoorList"][i] = DOOR
|
|
|
i = i + 1
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Gate["Handle"] = cMobRegen_XY( RoomEvent["MapIndex"], GATE_DATA["START_GATE"]["GATE_INDEX"],
|
|
|
GATE_DATA["START_GATE"]["REGEN_POSITION"]["X"], GATE_DATA["START_GATE"]["REGEN_POSITION"]["Y"], GATE_DATA["START_GATE"]["REGEN_POSITION"]["DIR"] )
|
|
|
|
|
|
|
|
|
if Gate["Handle"] ~= nil then
|
|
|
|
|
|
cSetAIScript ( SCRIPT_MAIN, Gate["Handle"] )
|
|
|
cAIScriptFunc ( Gate["Handle"], "Entrance", "GateRoutine" )
|
|
|
cAIScriptFunc ( Gate["Handle"], "NPCClick", "GateClick" )
|
|
|
|
|
|
Gate["X"] = GATE_DATA["START_GATE"]["REGEN_POSITION"]["X"]
|
|
|
Gate["Y"] = GATE_DATA["START_GATE"]["REGEN_POSITION"]["Y"]
|
|
|
|
|
|
GATE_MAP_INDEX[Gate["Handle"]] = RoomEvent["MapIndex"]
|
|
|
|
|
|
end
|
|
|
|
|
|
RoomEvent["StartGate"][Gate["Handle"]] = Gate
|
|
|
|
|
|
end
|
|
|
|
|
|
function GateRoutine( Handle, MapIndex )
|
|
|
cExecCheck( "GateRoutine" )
|
|
|
|
|
|
local RoomEvent
|
|
|
|
|
|
|
|
|
RoomEvent = InstanceField[MapIndex]
|
|
|
|
|
|
if RoomEvent == nil then
|
|
|
|
|
|
cAIScriptSet( Handle )
|
|
|
cNPCVanish( Handle )
|
|
|
GATE_MAP_INDEX[Handle] = nil
|
|
|
|
|
|
return ReturnAI["END"]
|
|
|
|
|
|
end
|
|
|
|
|
|
if RoomEvent["StartGate"] == nil then
|
|
|
|
|
|
cAIScriptSet( Handle )
|
|
|
cNPCVanish( Handle )
|
|
|
GATE_MAP_INDEX[Handle] = nil
|
|
|
|
|
|
return ReturnAI["END"]
|
|
|
|
|
|
end
|
|
|
|
|
|
if RoomEvent["StartGate"][Handle] == nil then
|
|
|
|
|
|
cAIScriptSet( Handle )
|
|
|
cNPCVanish( Handle )
|
|
|
RoomEvent["StartGate"] = nil
|
|
|
GATE_MAP_INDEX[Handle] = nil
|
|
|
|
|
|
return ReturnAI["END"]
|
|
|
|
|
|
end
|
|
|
|
|
|
return ReturnAI["END"]
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
function GateClick( NPCHandle, PlyHandle, RegistNumber )
|
|
|
cExecCheck( "GateClick" )
|
|
|
|
|
|
local MapIndex = GATE_MAP_INDEX[NPCHandle]
|
|
|
|
|
|
if MapIndex == nil then
|
|
|
return
|
|
|
|
|
|
end
|
|
|
|
|
|
if InstanceField[MapIndex] == nil then
|
|
|
return
|
|
|
end
|
|
|
|
|
|
|
|
|
cServerMenu( PlyHandle, NPCHandle, GATE_TITLE["Start"]["Title"],
|
|
|
GATE_TITLE["Start"]["Yes"], "LinkToStart",
|
|
|
GATE_TITLE["Start"]["No"], "GateDummy")
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
function LinkToStart( NPCHandle, PlyHandle, RegistNumber )
|
|
|
cExecCheck( "LinkToStart" )
|
|
|
|
|
|
local MapIndex = GATE_MAP_INDEX[NPCHandle]
|
|
|
|
|
|
if MapIndex == nil then
|
|
|
return
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
local RoomEvent
|
|
|
|
|
|
|
|
|
RoomEvent = InstanceField[MapIndex]
|
|
|
|
|
|
if RoomEvent == nil then
|
|
|
|
|
|
return
|
|
|
|
|
|
end
|
|
|
|
|
|
if RoomEvent["StartGate"] == nil then
|
|
|
|
|
|
return
|
|
|
|
|
|
end
|
|
|
|
|
|
cLinkTo( PlyHandle, GATE_DATA["START_GATE"]["LINK"]["FIELD"], GATE_DATA["START_GATE"]["LINK"]["X"], GATE_DATA["START_GATE"]["LINK"]["Y"] )
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
function GateDummy( NPCHandle, PlyHandle, RegistNumber )
|
|
|
cExecCheck( "GateDummy" )
|
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
function MiddleGateRoutine( Handle, MapIndex )
|
|
|
cExecCheck( "MiddleGateRoutine" )
|
|
|
|
|
|
local RoomEvent
|
|
|
|
|
|
|
|
|
RoomEvent = InstanceField[MapIndex]
|
|
|
|
|
|
if RoomEvent == nil then
|
|
|
|
|
|
cAIScriptSet( Handle )
|
|
|
cNPCVanish( Handle )
|
|
|
GATE_MAP_INDEX[Handle] = nil
|
|
|
|
|
|
return ReturnAI["END"]
|
|
|
|
|
|
end
|
|
|
|
|
|
if RoomEvent["MiddleGate"] == nil then
|
|
|
|
|
|
cAIScriptSet( Handle )
|
|
|
cNPCVanish( Handle )
|
|
|
GATE_MAP_INDEX[Handle] = nil
|
|
|
|
|
|
return ReturnAI["END"]
|
|
|
|
|
|
end
|
|
|
|
|
|
return ReturnAI["END"]
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
function MiddleGateClick( NPCHandle, PlyHandle, RegistNumber )
|
|
|
cExecCheck( "MiddleGateClick" )
|
|
|
|
|
|
local MapIndex = GATE_MAP_INDEX[NPCHandle]
|
|
|
|
|
|
if MapIndex == nil then
|
|
|
return
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
local RoomEvent
|
|
|
|
|
|
|
|
|
RoomEvent = InstanceField[MapIndex]
|
|
|
|
|
|
if RoomEvent == nil then
|
|
|
|
|
|
return
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
if RoomEvent["MiddleGate"] == nil then
|
|
|
|
|
|
return
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
cServerMenu( PlyHandle, NPCHandle, GATE_TITLE["Middle"]["Title"],
|
|
|
GATE_TITLE["Middle"]["Yes"], "LinkToMiddle",
|
|
|
GATE_TITLE["Middle"]["No"], "GateDummy")
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
function LinkToMiddle( NPCHandle, PlyHandle, RegistNumber )
|
|
|
cExecCheck( "LinkToStart" )
|
|
|
|
|
|
local MapIndex = GATE_MAP_INDEX[NPCHandle]
|
|
|
|
|
|
if MapIndex == nil then
|
|
|
return
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
local RoomEvent
|
|
|
|
|
|
|
|
|
RoomEvent = InstanceField[MapIndex]
|
|
|
|
|
|
if RoomEvent == nil then
|
|
|
|
|
|
return
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
if RoomEvent["MiddleGate"] == nil then
|
|
|
|
|
|
return
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
local RegenLocNum
|
|
|
|
|
|
|
|
|
|
|
|
RegenLocNum = RoomEvent["MiddleGate"]["RegenLocNum"]
|
|
|
|
|
|
cLinkTo( PlyHandle, MapIndex, GATE_DATA["MIDDLE_GATE"]["LINK"][RegenLocNum]["X"], GATE_DATA["MIDDLE_GATE"]["LINK"][RegenLocNum]["Y"] )
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
|
-- -- -- --
|
|
|
-- -- Room 1 -- --
|
|
|
-- -- -- --
|
|
|
-- -- ( ÃʱâÈ ) -- --
|
|
|
-- -- -- --
|
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
|
|
|
|
function EVENT_ROOM_ONE_INIT( RoomEvent )
|
|
|
cExecCheck( "EVENT_ROOM_ONE_INIT" )
|
|
|
|
|
|
local Event_Foras_Data = { }
|
|
|
local Event_Foras_List = { }
|
|
|
local Event_Foras_Position = { }
|
|
|
|
|
|
|
|
|
|
|
|
Event_Foras_List["List"] = { }
|
|
|
Event_Foras_Data = EVENT_ROOM_DATA[RoomEvent["Room"]["RoomNumber"]]["ENVENT_FORAS"]
|
|
|
Event_Foras_Position = Event_Foras_Data["FORAS_POSITION"]
|
|
|
|
|
|
|
|
|
for i = 1, #Event_Foras_Position do
|
|
|
|
|
|
|
|
|
local Event_Foras = { }
|
|
|
|
|
|
|
|
|
Event_Foras["Handle"] = cMobRegen_XY( RoomEvent["MapIndex"], Event_Foras_Data["MOB_INDEX"],
|
|
|
Event_Foras_Position[i]["REGEN_POS"]["X"], Event_Foras_Position[i]["REGEN_POS"]["Y"], Event_Foras_Position[i]["REGEN_POS"]["DIR"] )
|
|
|
|
|
|
if Event_Foras["Handle"] ~= nil then
|
|
|
|
|
|
cSetAIScript ( SCRIPT_MAIN, Event_Foras["Handle"] )
|
|
|
cAIScriptFunc ( Event_Foras["Handle"], "Entrance", "ROOM_ONE_FORAS_ROUTINE" )
|
|
|
cAnimate ( Event_Foras["Handle"], "start", Event_Foras_Data["ANIMATION"] )
|
|
|
cSetAbstate ( Event_Foras["Handle"], STA_IMMORTAL, 1, 20000000 )
|
|
|
|
|
|
Event_Foras["Path"] = Event_Foras_Position[i]["PATH"]
|
|
|
Event_Foras["PathNumber"] = 1
|
|
|
Event_Foras["SearchRange"] = Event_Foras_Data["SEARCH_RANGE"]
|
|
|
Event_Foras["DelayTime"] = Event_Foras_Data["DELAY_TIME"]
|
|
|
Event_Foras["CheckTime"] = RoomEvent["CurrentTime"]
|
|
|
Event_Foras["ChatCheckTime"] = RoomEvent["CurrentTime"]
|
|
|
Event_Foras["MobChatData"] = Event_Foras_Data["MOB_CHAT"]
|
|
|
Event_Foras["IsSurprise"] = 0
|
|
|
|
|
|
end
|
|
|
|
|
|
Event_Foras_List["List"][Event_Foras["Handle"]] = Event_Foras
|
|
|
Event_Foras_List["List"]["FindPlayer"] = nil
|
|
|
end
|
|
|
|
|
|
|
|
|
Event_Foras_List["CheckTime"] = nil
|
|
|
Event_Foras_List["FL_State"] = FL_SEARCH
|
|
|
RoomEvent["Room"]["Data"]["ForasList"] = Event_Foras_List
|
|
|
|
|
|
|
|
|
|
|
|
local Event_Davildom_Data = { }
|
|
|
local Event_Davildom = { }
|
|
|
|
|
|
|
|
|
Event_Davildom_Data = EVENT_ROOM_DATA[RoomEvent["Room"]["RoomNumber"]]["EVNET_DAVILDOM"]
|
|
|
|
|
|
|
|
|
Event_Davildom["List"] = { }
|
|
|
Event_Davildom["SearchRange"] = Event_Davildom_Data["SEARCH_RANGE"]
|
|
|
Event_Davildom["RegenCount"] = 1
|
|
|
Event_Davildom["RegenCheckTime"] = RoomEvent["CurrentTime"]
|
|
|
|
|
|
RoomEvent["Room"]["Data"]["Davildom"] = Event_Davildom
|
|
|
RoomEvent["Room"]["Data"]["NoticeCheckTime"] = RoomEvent["CurrentTime"]
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
|
-- -- -- --
|
|
|
-- -- Room 2 -- --
|
|
|
-- -- -- --
|
|
|
-- -- ( ÃʱâÈ ) -- --
|
|
|
-- -- -- --
|
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
|
|
|
|
|
|
|
function EVENT_ROOM_TWO_INIT( RoomEvent )
|
|
|
cExecCheck( "EVENT_ROOM_TWO_INIT" )
|
|
|
|
|
|
local Icitrie_Data = { }
|
|
|
local Icitrie = { }
|
|
|
|
|
|
|
|
|
Icitrie_Data = EVENT_ROOM_DATA[RoomEvent["Room"]["RoomNumber"]]["ROOM_CITRIE"]
|
|
|
|
|
|
Icitrie["Handle"] = cMobRegen_XY( RoomEvent["MapIndex"], Icitrie_Data["MOB_INDEX"],
|
|
|
Icitrie_Data["START_POSITION"]["X"], Icitrie_Data["START_POSITION"]["Y"], Icitrie_Data["START_POSITION"]["DIR"] )
|
|
|
|
|
|
|
|
|
if Icitrie["Handle"] ~= nil then
|
|
|
|
|
|
cSetAIScript ( SCRIPT_MAIN, Icitrie["Handle"] )
|
|
|
cAIScriptFunc ( Icitrie["Handle"], "Entrance", "ROOM_TWO_CITRIE_ROUTINE" )
|
|
|
|
|
|
RoomEvent["Room"]["Data"]["Citrie"] = Icitrie
|
|
|
|
|
|
end
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
|
-- -- -- --
|
|
|
-- -- Room 3 -- --
|
|
|
-- -- -- --
|
|
|
-- -- ( ÃʱâÈ ) -- --
|
|
|
-- -- -- --
|
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
|
|
|
|
function EVENT_ROOM_THREE_INIT( RoomEvent )
|
|
|
cExecCheck( "EVENT_ROOM_THREE_INIT" )
|
|
|
|
|
|
local EventForasData = { }
|
|
|
local ForasGroupList = { }
|
|
|
local ForasList = { }
|
|
|
|
|
|
|
|
|
EventForasData = EVENT_ROOM_DATA[RoomEvent["Room"]["RoomNumber"]]["EVENT_FORAS"]
|
|
|
|
|
|
for i = 1, #EventForasData["Group"] do
|
|
|
|
|
|
local ForasGroup = { }
|
|
|
local ForasGroupListState = { }
|
|
|
|
|
|
for j = 1, #EventForasData["Group"][i] do
|
|
|
|
|
|
local Foras = { }
|
|
|
|
|
|
|
|
|
Foras["Handle"] = cMobRegen_XY( RoomEvent["MapIndex"], EventForasData["MOB_INDEX"],
|
|
|
EventForasData["Group"][i][j]["REGEN_POS"]["X"],
|
|
|
EventForasData["Group"][i][j]["REGEN_POS"]["Y"],
|
|
|
EventForasData["Group"][i][j]["REGEN_POS"]["DIR"] )
|
|
|
|
|
|
|
|
|
if Foras["Handle"] ~= nil then
|
|
|
|
|
|
cSetAIScript ( SCRIPT_MAIN, Foras["Handle"] )
|
|
|
cAIScriptFunc ( Foras["Handle"], "Entrance", "ROOM_THREE_FORAS_ROUTINE" )
|
|
|
cAnimate ( Foras["Handle"], "start", EventForasData["ANIMATION"] )
|
|
|
cSetAbstate ( Foras["Handle"], STA_IMMORTAL, 1, 20000000 )
|
|
|
|
|
|
Foras["Path"] = EventForasData["PATH"]
|
|
|
Foras["PathNumber"] = 1
|
|
|
Foras["CheckTime"] = RoomEvent["CurrentTime"] + 1
|
|
|
Foras["MobChat"] = EventForasData["MOB_CHAT"]
|
|
|
ForasGroup[Foras["Handle"]] = Foras
|
|
|
|
|
|
ForasList[Foras["Handle"]] = i
|
|
|
|
|
|
end
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
ForasGroupListState["List"] = ForasGroup
|
|
|
ForasGroupListState["FG_State"] = FG_WORKING
|
|
|
ForasGroupList[i] = ForasGroupListState
|
|
|
|
|
|
end
|
|
|
|
|
|
RoomEvent["Room"]["Data"]["ForasList"] = ForasList
|
|
|
RoomEvent["Room"]["Data"]["ForasGroupList"] = ForasGroupList
|
|
|
RoomEvent["Room"]["Data"]["EscapeStateNum"] = 0
|
|
|
|
|
|
|
|
|
local EventDavildomData = { }
|
|
|
local DavildomGroupList = { }
|
|
|
local DavildomList = { }
|
|
|
|
|
|
|
|
|
EventDavildomData = EVENT_ROOM_DATA[RoomEvent["Room"]["RoomNumber"]]["EVENT_DAVILDOM"]
|
|
|
|
|
|
for i = 1, #EventDavildomData["Group"] do
|
|
|
|
|
|
local DavildomGroup = { }
|
|
|
local DavildomGroupListState = { }
|
|
|
|
|
|
|
|
|
for j = 1, #EventDavildomData["Group"][i] do
|
|
|
|
|
|
local Davildom = { }
|
|
|
|
|
|
|
|
|
Davildom["Handle"] = cMobRegen_XY( RoomEvent["MapIndex"], EventDavildomData["MOB_INDEX"],
|
|
|
EventDavildomData["Group"][i][j]["REGEN_POS"]["X"],
|
|
|
EventDavildomData["Group"][i][j]["REGEN_POS"]["Y"],
|
|
|
EventDavildomData["Group"][i][j]["REGEN_POS"]["DIR"] )
|
|
|
|
|
|
if Davildom["Handle"] ~= nil then
|
|
|
|
|
|
cSetAIScript ( SCRIPT_MAIN, Davildom["Handle"] )
|
|
|
cAIScriptFunc ( Davildom["Handle"], "Entrance", "ROOM_THREE_DAVILDOM_ROUTINE" )
|
|
|
Davildom["D_State"] = D_NORMAL
|
|
|
Davildom["AggroPoint"] = EventDavildomData["AGGRO_POINT"]
|
|
|
Davildom["SearchRange"] = EventDavildomData["SEARCH_RANGE"]
|
|
|
Davildom["CheckTime"] = RoomEvent["CurrentTime"] + 1
|
|
|
|
|
|
if EventDavildomData["Group"][i][j]["ANIMATION"] == 1 then
|
|
|
|
|
|
cAnimate ( Davildom["Handle"], "start", EventDavildomData["ANIMATION"] )
|
|
|
|
|
|
end
|
|
|
|
|
|
DavildomGroup[Davildom["Handle"]] = Davildom
|
|
|
DavildomList[Davildom["Handle"]] = i
|
|
|
|
|
|
end
|
|
|
|
|
|
end
|
|
|
|
|
|
DavildomGroupListState["List"] = DavildomGroup
|
|
|
DavildomGroupListState["DG_State"] = DG_NORMAL
|
|
|
DavildomGroupList[i] = DavildomGroupListState
|
|
|
|
|
|
end
|
|
|
|
|
|
RoomEvent["Room"]["Data"]["DavildomList"] = DavildomList
|
|
|
RoomEvent["Room"]["Data"]["DavildomGroupList"] = DavildomGroupList
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
|
-- -- -- --
|
|
|
-- -- Room 4 -- --
|
|
|
-- -- -- --
|
|
|
-- -- ( ÃʱâÈ ) -- --
|
|
|
-- -- -- --
|
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
|
|
|
|
function EVENT_ROOM_FOUR_INIT( RoomEvent )
|
|
|
cExecCheck( "EVENT_ROOM_FOUR_INIT" )
|
|
|
|
|
|
local ForasChiefData = { }
|
|
|
local ForasChief = { }
|
|
|
local DavildomData = { }
|
|
|
local DavildomList = { }
|
|
|
|
|
|
|
|
|
ForasChiefData = EVENT_ROOM_DATA[RoomEvent["Room"]["RoomNumber"]]["FORAS_CHIEF"]
|
|
|
DavildomData = EVENT_ROOM_DATA[RoomEvent["Room"]["RoomNumber"]]["EVENT_DAVILDOM"]
|
|
|
|
|
|
|
|
|
|
|
|
ForasChief["Handle"] = cMobRegen_XY( RoomEvent["MapIndex"], ForasChiefData["MOB_INDEX"],
|
|
|
ForasChiefData["REGEN_POSITION"]["X"],
|
|
|
ForasChiefData["REGEN_POSITION"]["Y"],
|
|
|
ForasChiefData["REGEN_POSITION"]["DIR"] )
|
|
|
|
|
|
if ForasChief["Handle"] ~= nil then
|
|
|
|
|
|
cSetAIScript ( SCRIPT_MAIN, ForasChief["Handle"] )
|
|
|
cAIScriptFunc ( ForasChief["Handle"], "Entrance", "ROOM_FOUR_FORAS_CHIEF_ROUTINE" )
|
|
|
cSetAbstate ( ForasChief["Handle"], STA_IMMORTAL, 1, 60000000 )
|
|
|
cAnimate ( ForasChief["Handle"], "start", ForasChiefData["ANIMATION"]["DAMAGE"] )
|
|
|
|
|
|
ForasChief["FC_State"] = FC_DAMAGE
|
|
|
ForasChief["CheckTime"] = RoomEvent["CurrentTime"] + 1
|
|
|
ForasChief["HealCheckTime"] = RoomEvent["CurrentTime"] + 5
|
|
|
|
|
|
|
|
|
ForasChief["MasterPlayer"] = nil
|
|
|
ForasChief["FollowData"] = ForasChiefData["FOLLOW_DATA"]
|
|
|
ForasChief["MaskItem"] = ForasChiefData["MASKITEM"]
|
|
|
ForasChief["EndPosition"] = ForasChiefData["END_POSITION"]
|
|
|
ForasChief["MobChatData"] = ForasChiefData["MOB_CHAT"]
|
|
|
|
|
|
end
|
|
|
|
|
|
RoomEvent["Room"]["Data"]["ForasChief"] = ForasChief
|
|
|
|
|
|
|
|
|
|
|
|
for i = 1, #DavildomData["DAVILDOM_POSITION"] do
|
|
|
|
|
|
local Davildom = { }
|
|
|
|
|
|
Davildom["Handle"] = cMobRegen_XY( RoomEvent["MapIndex"], DavildomData["MOB_INDEX"],
|
|
|
DavildomData["DAVILDOM_POSITION"][i]["X"],
|
|
|
DavildomData["DAVILDOM_POSITION"][i]["Y"],
|
|
|
DavildomData["DAVILDOM_POSITION"][i]["DIR"] )
|
|
|
|
|
|
if Davildom["Handle"] ~= nil then
|
|
|
|
|
|
local RandTime
|
|
|
|
|
|
|
|
|
cSetAIScript ( SCRIPT_MAIN, Davildom["Handle"] )
|
|
|
cAIScriptFunc ( Davildom["Handle"], "Entrance", "ROOM_FOUR_DEVILDOM_ROUTINE" )
|
|
|
--cAnimate ( Davildom["Handle"], "start", DavildomData["ANIMATION"] )
|
|
|
|
|
|
RandTime = cRandomInt(0, 2)
|
|
|
|
|
|
Davildom["AnimateStartTime"] = RoomEvent["CurrentTime"] + RandTime
|
|
|
Davildom["D_State"] = D_AnimateStart
|
|
|
Davildom["CheckTime"] = RoomEvent["CurrentTime"] + 1
|
|
|
|
|
|
|
|
|
DavildomList[Davildom["Handle"]] = Davildom
|
|
|
|
|
|
end
|
|
|
|
|
|
end
|
|
|
|
|
|
RoomEvent["Room"]["Data"]["DavildomList"] = DavildomList
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
|
-- -- -- --
|
|
|
-- -- Room 5 -- --
|
|
|
-- -- -- --
|
|
|
-- -- ( ÃʱâÈ ) -- --
|
|
|
-- -- -- --
|
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
|
|
|
|
function EVENT_ROOM_FIVE_INIT( RoomEvent )
|
|
|
cExecCheck( "EVENT_ROOM_FIVE_INIT" )
|
|
|
|
|
|
local CitrieData = { }
|
|
|
local Citrie = { }
|
|
|
|
|
|
|
|
|
CitrieData = EVENT_ROOM_DATA[RoomEvent["Room"]["RoomNumber"]]["SCITRIE"]
|
|
|
|
|
|
|
|
|
Citrie["Handle"] = cMobRegen_XY( RoomEvent["MapIndex"], CitrieData["MOB_INDEX"],
|
|
|
CitrieData["REGEN_POSITION"]["X"],
|
|
|
CitrieData["REGEN_POSITION"]["Y"],
|
|
|
CitrieData["REGEN_POSITION"]["DIR"] )
|
|
|
|
|
|
|
|
|
if Citrie["Handle"] ~= nil then
|
|
|
|
|
|
cSetAIScript ( SCRIPT_MAIN, Citrie["Handle"] )
|
|
|
cAIScriptFunc ( Citrie["Handle"], "Entrance", "ROOM_FIVE_SCITRIE_ROUTINE" )
|
|
|
|
|
|
Citrie["C_State"] = C_HP_90_UNDER
|
|
|
Citrie["AI"] = CitrieData["AI_DATA"]
|
|
|
Citrie["SUMMON"] = CitrieData["SUMMON"]
|
|
|
|
|
|
end
|
|
|
|
|
|
RoomEvent["Room"]["Data"]["Citrie"] = Citrie
|
|
|
RoomEvent["Room"]["Data"]["RegenDavildom"] = { }
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
|
-- -- -- --
|
|
|
-- -- ENDING -- --
|
|
|
-- -- -- --
|
|
|
-- -- ( ÃʱâÈ ) -- --
|
|
|
-- -- -- --
|
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
|
|
|
|
function EVENT_ROOM_ENDING_INIT( RoomEvent )
|
|
|
cExecCheck( "EVENT_ROOM_ENDING_INIT" )
|
|
|
|
|
|
local EndingData
|
|
|
|
|
|
|
|
|
EndingData = EVENT_ROOM_DATA[RoomEvent["Room"]["RoomNumber"]]["KQReturn"]
|
|
|
RoomEvent["Room"]["Data"]["EndingData"] = EndingData
|
|
|
RoomEvent["Room"]["Data"]["EndingCheckTime"] = RoomEvent["CurrentTime"]
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
EVENT_ROOM_INIT_FUNC = { }
|
|
|
|
|
|
|
|
|
EVENT_ROOM_INIT_FUNC[1] = EVENT_ROOM_ONE_INIT
|
|
|
EVENT_ROOM_INIT_FUNC[2] = EVENT_ROOM_TWO_INIT
|
|
|
EVENT_ROOM_INIT_FUNC[3] = EVENT_ROOM_THREE_INIT
|
|
|
EVENT_ROOM_INIT_FUNC[4] = EVENT_ROOM_FOUR_INIT
|
|
|
EVENT_ROOM_INIT_FUNC[5] = EVENT_ROOM_FIVE_INIT
|
|
|
EVENT_ROOM_INIT_FUNC[6] = EVENT_ROOM_ENDING_INIT
|
|
|
|
|
|
|