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.
 
 
SigFiesta/LuaScript/ID/WarLH/WarLHEventRoutine.lua

3111 lines
70 KiB

require( "ID/WarLH/WarLHData" )
function EVENT_NO1_ROUTINE( EventMemory )
cExecCheck( "EVENT_NO1_ROUTINE" )
if EventMemory == nil then
return
end
if EventMemory["EventNumber"] ~= 1 then
return
end
local EventState = EventMemory[EventMemory["EventNumber"]]["EventState"]
if EventState == ES_STATE["State1"] then
return
elseif EventState == ES_STATE["State2"] then
return EVENT_ROUTINE_END
end
end
function EVENT_NO2_ROUTINE( EventMemory )
cExecCheck( "EVENT_NO2_ROUTINE" )
if EventMemory == nil then
return
end
if EventMemory["EventNumber"] ~= 2 then
return
end
local EventState = EventMemory[EventMemory["EventNumber"]]["EventState"]
if EventState == ES_STATE["State1"] then
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State2"]
EventMemory["DialogCheckTime"] = EventMemory["CurrentTime"] + 1
return
elseif EventState == ES_STATE["State2"] then
if EventMemory["DialogCheckTime"] > EventMemory["CurrentTime"] then
return
end
local ForasChief = { }
ForasChief = EventMemory["ForasChief"]
cMobDialog( EventMemory["MapIndex"], DIALOGINFO[2]["FACECUT"], DIALOGINFO[2]["FILENAME"], DIALOGINFO[2]["INDEX"] )
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State3"]
return
elseif EventState == ES_STATE["State3"] then
cNotice( EventMemory["MapIndex"], NOTICEINFO[1]["FILENAME"], NOTICEINFO[1]["INDEX"] )
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State4"]
return
elseif EventState == ES_STATE["State4"] then
local DavildomList
DavildomList = EventMemory[EventMemory["EventNumber"]]["EventData"]["DavildomList"]
for index, value in pairs( DavildomList ) do
return
end
cNotice( EventMemory["MapIndex"], NOTICEINFO[2]["FILENAME"], NOTICEINFO[2]["INDEX"] )
return EVENT_ROUTINE_END
end
end
function EVENT_NO3_ROUTINE( EventMemory )
cExecCheck( "EVENT_NO3_ROUTINE" )
if EventMemory == nil then
return
end
if EventMemory["EventNumber"] ~= 3 then
return
end
local EventState = EventMemory[EventMemory["EventNumber"]]["EventState"]
if EventState == ES_STATE["State1"] then
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State2"]
EventMemory["DialogCheckTime"] = EventMemory["CurrentTime"] + 2
return
elseif EventState == ES_STATE["State2"] then
if EventMemory["DialogCheckTime"] > EventMemory["CurrentTime"] then
return
end
cMobDialog( EventMemory["MapIndex"], DIALOGINFO[3]["FACECUT"], DIALOGINFO[3]["FILENAME"], DIALOGINFO[3]["INDEX"] )
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State3"]
return
elseif EventState == ES_STATE["State3"] then
cNotice( EventMemory["MapIndex"], NOTICEINFO[1]["FILENAME"], NOTICEINFO[1]["INDEX"] )
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State4"]
return
elseif EventState == ES_STATE["State4"] then
local DavildomList
DavildomList = EventMemory[EventMemory["EventNumber"]]["EventData"]["DavildomList"]
for index, value in pairs( DavildomList ) do
return
end
cNotice( EventMemory["MapIndex"], NOTICEINFO[2]["FILENAME"], NOTICEINFO[2]["INDEX"] )
EventMemory["DialogCheckTime"] = EventMemory["CurrentTime"] + 2
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State5"]
return
elseif EventState == ES_STATE["State5"] then
if EventMemory["DialogCheckTime"] > EventMemory["CurrentTime"] then
return
end
EventMemory["DialogCheckTime"] = EventMemory["CurrentTime"] + DIALOGINFO[2]["DELAY"]
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State6"]
return
elseif EventState == ES_STATE["State6"] then
if EventMemory["DialogCheckTime"] > EventMemory["CurrentTime"] then
return
end
cMobDialog( EventMemory["MapIndex"], DIALOGINFO[4]["FACECUT"], DIALOGINFO[4]["FILENAME"], DIALOGINFO[4]["INDEX"] )
EventMemory["DialogCheckTime"] = EventMemory["CurrentTime"] + DIALOGINFO[4]["DELAY"]
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State7"]
return
elseif EventState == ES_STATE["State7"] then
if EventMemory["DialogCheckTime"] > EventMemory["CurrentTime"] then
return
end
local PlayerList
local DoorLocation = { }
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cSetAbstate( PlayerList[i], BASE_CAMERAMOVE_DATA["ABSTATE"], 1, BASE_CAMERAMOVE_DATA["ABSTATETIME"] )
end
DoorLocation = DOOR_BLOCK_DATA[1]["REGEN_POSITION"]
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local tmpdir = (DoorLocation["DIR"] + 180) * (-1)
tmpdir = tmpdir % 360
cCameraMove( EventMemory["MapIndex"], DoorLocation["X"], DoorLocation["Y"], tmpdir, DOOR1_CAMERAMOVE["AngleY"], DOOR1_CAMERAMOVE["Distance"], 1 )
EventMemory["CameraCheckTime"] = EventMemory["CurrentTime"] + BASE_CAMERAMOVE_DATA["KEEPTIME"] + 2
EventMemory["DoorCheckTime"] = EventMemory["CurrentTime"] + DOOR_CHECK_TIME
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State8"]
return
elseif EventState == ES_STATE["State8"] then
if EventMemory["DoorCheckTime"] > EventMemory["CurrentTime"] then
return
end
EventMemory["DoorCheckTime"] = nil
local DoorInfo
DoorInfo = EventMemory["DoorList"][1]
cDoorAction( DoorInfo["Handle"], DoorInfo["Index"], "open" )
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State9"]
return
elseif EventState == ES_STATE["State9"] then
if EventMemory["CameraCheckTime"] > EventMemory["CurrentTime"] then
return
end
local PlayerList
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cResetAbstate( PlayerList[i], BASE_CAMERAMOVE_DATA["ABSTATE"] )
end
EventMemory["CameraCheckTime"] = nil
cCameraMove( EventMemory["MapIndex"], 0, 0, 0, 0, 0, 0 )
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State7"]
return EVENT_ROUTINE_END
end
end
function EVENT_NO4_ROUTINE( EventMemory )
cExecCheck( "EVENT_NO4_ROUTINE" )
if EventMemory == nil then
return
end
if EventMemory["EventNumber"] ~= 4 then
return
end
if EventMemory[EventMemory["EventNumber"]]["EventData"]["RegenCheckTime"] > EventMemory["CurrentTime"] then
return
end
local EventState = EventMemory[EventMemory["EventNumber"]]["EventState"]
if EventState == ES_STATE["State1"] then
local EventData = { }
local DavildomData = { }
local PlayerAggroList = { }
local PlayerList
local Count = 1
EventData = EVNET_DATA[EventMemory["EventNumber"]]
DavildomData = EventData["DAVILDOM"]
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i = 1, #PlayerList do
local CurPlayerPos = { }
local DavildomPos = { }
CurPlayerPos["X"], CurPlayerPos["Y"] = cObjectLocate( PlayerList[i] )
DavildomPos = DavildomData["REGENPOSITION"]
if cDistanceSquar( DavildomPos["X"], DavildomPos["Y"], CurPlayerPos["X"], CurPlayerPos["Y"] ) < ( DavildomData["SEARCH_RANGE"] * DavildomData["SEARCH_RANGE"] ) then
PlayerAggroList[Count] = PlayerList[i]
Count = Count + 1
end
end
local Davildom = { }
Davildom["Handle"] = cMobRegen_XY( EventMemory["MapIndex"], DavildomData["MOBINDEX"],
DavildomData["REGENPOSITION"]["X"], DavildomData["REGENPOSITION"]["Y"], 0 )
if Davildom["Handle"] ~= nil then
local PlayerHandle
cSetAIScript ( SCRIPT_MAIN, Davildom["Handle"] )
cAIScriptFunc ( Davildom["Handle"], "Entrance", "EVENT_NO4_DAVILDOM_ROUTINE" )
Davildom["AggroDistance"] = DavildomData["AGGRO_DISTANCE"]
Davildom["D_State"] = D_STATE["Aggro"]
Davildom["CheckTime"] = EventMemory["CurrentTime"] + 1
PlayerHandle = cRandomInt(1, #PlayerAggroList)
Davildom["AggroPlayer"] = PlayerAggroList[PlayerHandle]
end
EventMemory[EventMemory["EventNumber"]]["EventData"]["DavildomList"][Davildom["Handle"]] = Davildom
EventMemory[EventMemory["EventNumber"]]["EventData"]["RegenDavildomCount"] = EventMemory[EventMemory["EventNumber"]]["EventData"]["RegenDavildomCount"] + 1
if EventMemory[EventMemory["EventNumber"]]["EventData"]["RegenDavildomCount"] > DavildomData["MOBCOUNT"] then
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State2"]
end
EventMemory[EventMemory["EventNumber"]]["EventData"]["RegenCheckTime"] = EventMemory[EventMemory["EventNumber"]]["EventData"]["RegenCheckTime"] + DavildomData["DELAYTIME"]
return
elseif EventState == ES_STATE["State2"] then
local DavildomList
DavildomList = EventMemory[EventMemory["EventNumber"]]["EventData"]["DavildomList"]
for index, value in pairs (DavildomList) do
return
end
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State3"]
return
elseif EventState == ES_STATE["State3"] then
local PlayerList
local EventData = { }
local BrainWashData = { }
local BrainWashPosition = { }
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cSetAbstate( PlayerList[i], BASE_CAMERAMOVE_DATA["ABSTATE"], 1, BASE_CAMERAMOVE_DATA["ABSTATETIME"] )
end
EventData = EVNET_DATA[EventMemory["EventNumber"]]
BrainWashData = EventData["BRAINWASH"]
BrainWashPosition = BrainWashData["REGENPOSITION"]
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local tmpdir = (BrainWashPosition["DIR"] + 180)
tmpdir = tmpdir % 360
cCameraMove( EventMemory["MapIndex"], BrainWashPosition["X"], BrainWashPosition["Y"], tmpdir, BRAINWASH_CAMERAMOVE["AngleY"], BRAINWASH_CAMERAMOVE["Distance"], 1 )
EventMemory["CameraCheckTime"] = EventMemory["CurrentTime"] + BASE_CAMERAMOVE_DATA["KEEPTIME"]
EventMemory["DialogCheckTime"] = EventMemory["CurrentTime"] + 1
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State4"]
return
elseif EventState == ES_STATE["State4"] then
if EventMemory["DialogCheckTime"] > EventMemory["CurrentTime"] then
return
end
cMobDialog( EventMemory["MapIndex"], DIALOGINFO[6]["FACECUT"], DIALOGINFO[6]["FILENAME"], DIALOGINFO[6]["INDEX"] )
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State5"]
return
elseif EventState == ES_STATE["State5"] then
if EventMemory["CameraCheckTime"] > EventMemory["CurrentTime"] then
return
end
local PlayerList
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cResetAbstate( PlayerList[i], BASE_CAMERAMOVE_DATA["ABSTATE"] )
end
EventMemory["CameraCheckTime"] = nil
cCameraMove( EventMemory["MapIndex"], 0, 0, 0, 0, 0, 0 )
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State6"]
return
elseif EventState == ES_STATE["State6"] then
local PlayerList
local EventData = { }
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cSetAbstate( PlayerList[i], BASE_CAMERAMOVE_DATA["ABSTATE"], 1, BASE_CAMERAMOVE_DATA["ABSTATETIME"] )
end
EventData = EVNET_DATA[EventMemory["EventNumber"]]
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local tmpdir = (LINE_DATA["LEFT_POSITION"]["DIR"] + 180) * (-1)
tmpdir = tmpdir % 360
cCameraMove( EventMemory["MapIndex"], LINE_DATA["LEFT_POSITION"]["X"], LINE_DATA["LEFT_POSITION"]["Y"], tmpdir,LINE_CAMERAMOVE["AngleY"], LINE_CAMERAMOVE["Distance"], 1 )
EventMemory["CameraCheckTime"] = EventMemory["CurrentTime"] + BASE_CAMERAMOVE_DATA["KEEPTIME"]
EventMemory["DialogCheckTime"] = EventMemory["CurrentTime"] + 1
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State7"]
return
elseif EventState == ES_STATE["State7"] then
if EventMemory["DialogCheckTime"] > EventMemory["CurrentTime"] then
return
end
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State8"]
return
elseif EventState == ES_STATE["State8"] then
if EventMemory["CameraCheckTime"] > EventMemory["CurrentTime"] then
return
end
local PlayerList
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cResetAbstate( PlayerList[i], BASE_CAMERAMOVE_DATA["ABSTATE"] )
end
EventMemory["CameraCheckTime"] = nil
cCameraMove( EventMemory["MapIndex"], 0, 0, 0, 0, 0, 0 )
return EVENT_ROUTINE_END
end
end
function EVENT_NO5_ROUTINE( EventMemory )
cExecCheck( "EVENT_NO5_ROUTINE" )
if EventMemory == nil then
return
end
if EventMemory["EventNumber"] ~= 5 then
return
end
local EventState = EventMemory[EventMemory["EventNumber"]]["EventState"]
if EventState == ES_STATE["State1"] then
local PlayerList
local DoorLocation = { }
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cSetAbstate( PlayerList[i], BASE_CAMERAMOVE_DATA["ABSTATE"], 1, BASE_CAMERAMOVE_DATA["ABSTATETIME"] )
end
DoorLocation = DOOR_BLOCK_DATA[2]["REGEN_POSITION"]
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local tmpdir = (DoorLocation["DIR"] + 180)
tmpdir = tmpdir % 360
cCameraMove( EventMemory["MapIndex"], DoorLocation["X"], DoorLocation["Y"], tmpdir, DOOR_CAMERAMOVE["AngleY"], DOOR_CAMERAMOVE["Distance"], 1 )
EventMemory["CameraCheckTime"] = EventMemory["CurrentTime"] + 8
EventMemory["DoorCheckTime"] = EventMemory["CurrentTime"] + DOOR_CHECK_TIME
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State2"]
return
elseif EventState == ES_STATE["State2"] then
if EventMemory["DoorCheckTime"] > EventMemory["CurrentTime"] then
return
end
EventMemory["DoorCheckTime"] = nil
local DoorInfo
DoorInfo = EventMemory["DoorList"][2]
cDoorAction( DoorInfo["Handle"], DoorInfo["Index"], "open" )
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State3"]
return
elseif EventState == ES_STATE["State3"] then
if EventMemory["CameraCheckTime"] > EventMemory["CurrentTime"] then
return
end
local PlayerList
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cResetAbstate( PlayerList[i], BASE_CAMERAMOVE_DATA["ABSTATE"] )
end
EventMemory["CameraCheckTime"] = nil
cCameraMove( EventMemory["MapIndex"], 0, 0, 0, 0, 0, 0 )
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State4"]
return
elseif EventState == ES_STATE["State4"] then
if EventMemory[EventMemory["EventNumber"]]["EventData"]["RSState"] == RS_STATE["Aggro"] then
return
end
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State5"]
return
elseif EventState == ES_STATE["State5"] then
local PlayerList
local PoreLocation = { }
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cSetAbstate( PlayerList[i], BASE_CAMERAMOVE_DATA["ABSTATE"], 1, BASE_CAMERAMOVE_DATA["ABSTATETIME"] )
end
PoreLocation = EVNET_DATA[EventMemory["EventNumber"]]["PORE"]["REGENPOSITION"]
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local tmpdir = (PoreLocation["DIR"] + 180)
tmpdir = tmpdir % 360
cCameraMove( EventMemory["MapIndex"], PoreLocation["X"], PoreLocation["Y"], tmpdir, DOOR_CAMERAMOVE["AngleY"], DOOR_CAMERAMOVE["Distance"], 1 )
EventMemory["CameraCheckTime"] = EventMemory["CurrentTime"] + BASE_CAMERAMOVE_DATA["KEEPTIME"]
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State6"]
cNotice( EventMemory["MapIndex"], NOTICEINFO[3]["FILENAME"], NOTICEINFO[3]["INDEX"] )
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State6"]
return
elseif EventState == ES_STATE["State6"] then
if EventMemory["CameraCheckTime"] > EventMemory["CurrentTime"] then
return
end
local PlayerList
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cResetAbstate( PlayerList[i], BASE_CAMERAMOVE_DATA["ABSTATE"] )
end
EventMemory["CameraCheckTime"] = nil
cCameraMove( EventMemory["MapIndex"], 0, 0, 0, 0, 0, 0 )
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State7"]
return
elseif EventState == ES_STATE["State7"] then
local DavildomList
local ForasList
DavildomList = EventMemory[EventMemory["EventNumber"]]["EventData"]["DavildomList"]
ForasList = EventMemory[EventMemory["EventNumber"]]["EventData"]["ForasList"]
if (next( DavildomList ) == nil) and (next(ForasList) == nil) then
local PlayerList
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cStaticDamage( PlayerList[i], STATICDAMAGE )
end
else
return
end
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State8"]
return
elseif EventState == ES_STATE["State8"] then
if EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"] ~= nil then
if EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"]["PR_State"] ~= PR_STATE["Damage1"] then
return
end
local PlayerList
local PoreLocation = { }
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cSetAbstate( PlayerList[i], BRAINWASH_CAMERAMOVE_DAMGE["ABSTATE"], 1, BASE_CAMERAMOVE_DATA["ABSTATETIME"] )
cStaticDamage( PlayerList[i], 0 )
end
cSetAbstate( EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"]["Handle"], STA_NEGLECT, 1, 99999999 )
PoreLocation = EVNET_DATA[EventMemory["EventNumber"]]["PORE"]["REGENPOSITION"]
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local tmpdir = (PoreLocation["DIR"] + 180)
tmpdir = tmpdir % 360
cCameraMove( EventMemory["MapIndex"], PoreLocation["X"], PoreLocation["Y"], tmpdir, DOOR_CAMERAMOVE["AngleY"], DOOR_CAMERAMOVE["Distance"], 1 )
end
EventMemory["CameraCheckTime"] = EventMemory["CurrentTime"] + BASE_CAMERAMOVE_DATA["KEEPTIME"]
EventMemory["DamageCheckTime"] = EventMemory["CurrentTime"] + 2
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State9"]
return
elseif EventState == ES_STATE["State9"] then
if EventMemory["DamageCheckTime"] > EventMemory["CurrentTime"] then
return
end
local Pore
local PlayerList
local Damage
Pore = EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"]
if Pore ~= nil then
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
cDamaged( Pore["Handle"], Pore["BaseDamage"], PlayerList[1] )
end
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State10"]
return
elseif EventState == ES_STATE["State10"] then
if EventMemory["CameraCheckTime"] > EventMemory["CurrentTime"] then
return
end
local PlayerList
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cResetAbstate( PlayerList[i], BRAINWASH_CAMERAMOVE_DAMGE["ABSTATE"] )
cStaticDamage( PlayerList[i], STATICDAMAGE )
end
EventMemory["CameraCheckTime"] = nil
cCameraMove( EventMemory["MapIndex"], 0, 0, 0, 0, 0, 0 )
if EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"] ~= nil then
cResetAbstate( EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"]["Handle"], STA_NEGLECT )
end
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State11"]
return
elseif EventState == ES_STATE["State11"] then
if EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"] ~= nil then
if EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"]["PR_State"] ~= PR_STATE["Damage2"] then
return
end
local PlayerList
local PoreLocation = { }
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cSetAbstate( PlayerList[i], BRAINWASH_CAMERAMOVE_DAMGE["ABSTATE"], 1, BASE_CAMERAMOVE_DATA["ABSTATETIME"] )
cStaticDamage( PlayerList[i], 0 )
end
cSetAbstate( EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"]["Handle"], STA_NEGLECT, 1, 99999999 )
PoreLocation = EVNET_DATA[EventMemory["EventNumber"]]["PORE"]["REGENPOSITION"]
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local tmpdir = (PoreLocation["DIR"] + 180)
tmpdir = tmpdir % 360
cCameraMove( EventMemory["MapIndex"], PoreLocation["X"], PoreLocation["Y"], tmpdir, DOOR_CAMERAMOVE["AngleY"], DOOR_CAMERAMOVE["Distance"], 1 )
end
EventMemory["CameraCheckTime"] = EventMemory["CurrentTime"] + BASE_CAMERAMOVE_DATA["KEEPTIME"]
EventMemory["DamageCheckTime"] = EventMemory["CurrentTime"] + 2
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State12"]
return
elseif EventState == ES_STATE["State12"] then
if EventMemory["DamageCheckTime"] > EventMemory["CurrentTime"] then
return
end
local Pore
local PlayerList
local Damage
Pore = EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"]
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
if Pore ~= nil then
cDamaged( Pore["Handle"], Pore["BaseDamage"], PlayerList[1] )
end
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State13"]
return
elseif EventState == ES_STATE["State13"] then
if EventMemory["CameraCheckTime"] > EventMemory["CurrentTime"] then
return
end
local PlayerList
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cResetAbstate( PlayerList[i], BRAINWASH_CAMERAMOVE_DAMGE["ABSTATE"] )
cStaticDamage( PlayerList[i], STATICDAMAGE )
end
EventMemory["CameraCheckTime"] = nil
cCameraMove( EventMemory["MapIndex"], 0, 0, 0, 0, 0, 0 )
if EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"] ~= nil then
cResetAbstate( EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"]["Handle"], STA_NEGLECT )
end
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State14"]
return
elseif EventState == ES_STATE["State14"] then
if EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"] ~= nil then
if EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"]["PR_State"] ~= PR_STATE["Damage3"] then
return
end
local PlayerList
local PoreLocation = { }
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cSetAbstate( PlayerList[i], BRAINWASH_CAMERAMOVE_DAMGE["ABSTATE"], 1, BASE_CAMERAMOVE_DATA["ABSTATETIME"] )
cStaticDamage( PlayerList[i], 0 )
end
cSetAbstate( EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"]["Handle"], STA_NEGLECT, 1, 99999999 )
PoreLocation = EVNET_DATA[EventMemory["EventNumber"]]["PORE"]["REGENPOSITION"]
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local tmpdir = (PoreLocation["DIR"] + 180)
tmpdir = tmpdir % 360
cCameraMove( EventMemory["MapIndex"], PoreLocation["X"], PoreLocation["Y"], tmpdir, DOOR_CAMERAMOVE["AngleY"], DOOR_CAMERAMOVE["Distance"], 1 )
end
EventMemory["CameraCheckTime"] = EventMemory["CurrentTime"] + BASE_CAMERAMOVE_DATA["KEEPTIME"] + 2
EventMemory["DamageCheckTime"] = EventMemory["CurrentTime"] + 2
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State15"]
return
elseif EventState == ES_STATE["State15"] then
if EventMemory["DamageCheckTime"] > EventMemory["CurrentTime"] then
return
end
local Pore
local PlayerList
local Damage
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
Pore = EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"]
if Pore ~= nil then
cDamaged( Pore["Handle"], Pore["BaseDamage"], PlayerList[1] )
end
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State16"]
return
elseif EventState == ES_STATE["State16"] then
if EventMemory["CameraCheckTime"] > EventMemory["CurrentTime"] then
return
end
local PlayerList
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cResetAbstate( PlayerList[i], BRAINWASH_CAMERAMOVE_DAMGE["ABSTATE"] )
cStaticDamage( PlayerList[i], STATICDAMAGE )
end
EventMemory["CameraCheckTime"] = nil
cCameraMove( EventMemory["MapIndex"], 0, 0, 0, 0, 0, 0 )
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State17"]
return
elseif EventState == ES_STATE["State17"] then
local DoorInfo
local PlayerList
local EventData = { }
DoorInfo = EventMemory["DoorList"][4]
cDoorAction( DoorInfo["Handle"], DoorInfo["Index"], "open" )
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cSetAbstate( PlayerList[i], BASE_CAMERAMOVE_DATA["ABSTATE"], 1, BASE_CAMERAMOVE_DATA["ABSTATETIME"] )
end
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local tmpdir = (LINE_DATA["LEFT_POSITION"]["DIR"] + 180) * (-1)
tmpdir = tmpdir % 360
cCameraMove( EventMemory["MapIndex"], LINE_DATA["LEFT_POSITION"]["X"], LINE_DATA["LEFT_POSITION"]["Y"], tmpdir, LINE_CAMERAMOVE["AngleY"], LINE_CAMERAMOVE["Distance"], 1 )
EventMemory["CameraCheckTime"] = EventMemory["CurrentTime"] + BASE_CAMERAMOVE_DATA["KEEPTIME"]
EventMemory["ObjectDeleteTime"] = EventMemory["CurrentTime"] + 3
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State18"]
return
elseif EventState == ES_STATE["State18"] then
if EventMemory["ObjectDeleteTime"] > EventMemory["CurrentTime"] then
return
end
-- <EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State19"]
cMapObjectControl( EventMemory["MapIndex"], "L_Line", 0, 1 )
EventMemory["ObjectState"]["L_Line"] = 0
return
elseif EventState == ES_STATE["State19"] then
if EventMemory["CameraCheckTime"] > EventMemory["CurrentTime"] then
return
end
local PlayerList
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cStaticDamage( PlayerList[i], 0 )
cResetAbstate( PlayerList[i], BASE_CAMERAMOVE_DATA["ABSTATE"] )
end
EventMemory["CameraCheckTime"] = nil
cCameraMove( EventMemory["MapIndex"], 0, 0, 0, 0, 0, 0 )
return EVENT_ROUTINE_END
end
end
function EVENT_NO6_ROUTINE( EventMemory )
cExecCheck( "EVENT_NO6_ROUTINE" )
if EventMemory == nil then
return
end
if EventMemory["EventNumber"] ~= 6 then
return
end
local EventState = EventMemory[EventMemory["EventNumber"]]["EventState"]
if EventState == ES_STATE["State1"] then
local PlayerList
local EventData = { }
local CitrieData = { }
local CitriePosition = { }
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cSetAbstate( PlayerList[i], BASE_CAMERAMOVE_DATA["ABSTATE"], 1, BASE_CAMERAMOVE_DATA["ABSTATETIME"] )
end
EventData = EVNET_DATA[EventMemory["EventNumber"]]
CitrieData = EventData["CITRIE"]
CitriePosition = CitrieData["REGENPOSITION"]
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local tmpdir = (CitriePosition["DIR"] + 180)
tmpdir = tmpdir % 360
cCameraMove( EventMemory["MapIndex"], CitriePosition["X"], CitriePosition["Y"], tmpdir, CITRIE_CAMERAMOVE2["AngleY"], CITRIE_CAMERAMOVE2["Distance"], 1 )
EventMemory["CameraCheckTime"] = EventMemory["CurrentTime"] + 3
EventMemory["DialogCheckTime"] = EventMemory["CurrentTime"] + 1
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State2"]
return
elseif EventState == ES_STATE["State2"] then
if EventMemory["DialogCheckTime"] > EventMemory["CurrentTime"] then
return
end
cMobDialog( EventMemory["MapIndex"], DIALOGINFO[5]["FACECUT"], DIALOGINFO[5]["FILENAME"], DIALOGINFO[5]["INDEX"] )
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State3"]
return
elseif EventState == ES_STATE["State3"] then
if EventMemory["CameraCheckTime"] > EventMemory["CurrentTime"] then
return
end
local PlayerList
local EventData = { }
local CitrieData = { }
local CitriePosition = { }
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cSetAbstate( PlayerList[i], BASE_CAMERAMOVE_DATA["ABSTATE"], 1, BASE_CAMERAMOVE_DATA["ABSTATETIME"] )
end
EventData = EVNET_DATA[EventMemory["EventNumber"]]
CitrieData = EventData["CITRIE"]
CitriePosition = CitrieData["REGENPOSITION"]
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local tmpdir = (CitriePosition["DIR"] + 180)
tmpdir = tmpdir % 360
cCameraMove( EventMemory["MapIndex"], CitriePosition["X"], CitriePosition["Y"], tmpdir, CITRIE_CAMERAMOVE["AngleY"], CITRIE_CAMERAMOVE["Distance"], 1 )
EventMemory["CameraCheckTime"] = EventMemory["CurrentTime"] + 3
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State4"]
return
elseif EventState == ES_STATE["State4"] then
if EventMemory["CameraCheckTime"] > EventMemory["CurrentTime"] then
return
end
local PlayerList
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cResetAbstate( PlayerList[i], BASE_CAMERAMOVE_DATA["ABSTATE"] )
end
EventMemory["CameraCheckTime"] = nil
cCameraMove( EventMemory["MapIndex"], 0, 0, 0, 0, 0, 0 )
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State5"]
return
elseif EventState == ES_STATE["State5"] then
if EventMemory[EventMemory["EventNumber"]]["EventData"]["Citrie"]["C_State"] == CT_STATE["Aggro"] then
return
end
cNotice( EventMemory["MapIndex"], NOTICEINFO[1]["FILENAME"], NOTICEINFO[1]["INDEX"] )
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State6"]
return
elseif EventState == ES_STATE["State6"] then
if EventMemory[EventMemory["EventNumber"]]["EventData"]["Citrie"] == nil then
cNotice( EventMemory["MapIndex"], NOTICEINFO[2]["FILENAME"], NOTICEINFO[2]["INDEX"] )
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State7"]
EventMemory[EventMemory["EventNumber"]]["EventData"]["DavildomList"] = nil
return
end
if EventMemory[EventMemory["EventNumber"]]["EventData"]["RegenTime"] > EventMemory["CurrentTime"] then
return
end
local EventData = { }
local DavildomData = { }
local PlayerAggroList = { }
local PlayerList
local Count = 1
EventData = EVNET_DATA[EventMemory["EventNumber"]]
DavildomData = EventData["DAVILDOM"]
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i = 1, #PlayerList do
local CurPlayerPos = { }
local DavildomPos = { }
CurPlayerPos["X"], CurPlayerPos["Y"] = cObjectLocate( PlayerList[i] )
DavildomPos = DavildomData["REGENPOSITION"]
if cDistanceSquar( DavildomPos["X"], DavildomPos["Y"], CurPlayerPos["X"], CurPlayerPos["Y"] ) < ( DavildomData["SEARCH_RANGE"] * DavildomData["SEARCH_RANGE"] ) then
PlayerAggroList[Count] = PlayerList[i]
Count = Count + 1
end
end
local Davildom = { }
Davildom["Handle"] = cMobRegen_XY( EventMemory["MapIndex"], DavildomData["MOBINDEX"],
DavildomData["REGENPOSITION"]["X"], DavildomData["REGENPOSITION"]["Y"], 0 )
if Davildom["Handle"] ~= nil then
local PlayerHandle
cSetAIScript ( SCRIPT_MAIN, Davildom["Handle"] )
cAIScriptFunc ( Davildom["Handle"], "Entrance", "EVENT_NO6_DAVILDOM_ROUTINE" )
Davildom["AggroDistance"] = DavildomData["AGGRO_DISTANCE"]
Davildom["D_State"] = D_STATE["Aggro"]
Davildom["CheckTime"] = EventMemory["CurrentTime"] + 1
PlayerHandle = cRandomInt(1, #PlayerAggroList)
Davildom["AggroPlayer"] = PlayerAggroList[PlayerHandle]
Davildom["DeleteTime"] = EventMemory["CurrentTime"] + 60
end
EventMemory[EventMemory["EventNumber"]]["EventData"]["DavildomList"][Davildom["Handle"]] = Davildom
EventMemory[EventMemory["EventNumber"]]["EventData"]["RegenTime"] = EventMemory["CurrentTime"] + DavildomData["DELAYTIME"]
return
elseif EventState == ES_STATE["State7"] then
local PlayerList
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cSetAbstate( PlayerList[i], BASE_CAMERAMOVE_DATA["ABSTATE"], 1, BASE_CAMERAMOVE_DATA["ABSTATETIME"] )
end
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local tmpdir = (LINE_DATA["RIGHT_POSITION"]["DIR"] + 180) * (-1)
tmpdir = tmpdir % 360
cCameraMove( EventMemory["MapIndex"], LINE_DATA["RIGHT_POSITION"]["X"], LINE_DATA["RIGHT_POSITION"]["Y"], tmpdir, LINE_CAMERAMOVE["AngleY"], LINE_CAMERAMOVE["Distance"], 1 )
EventMemory["CameraCheckTime"] = EventMemory["CurrentTime"] + BASE_CAMERAMOVE_DATA["KEEPTIME"]
EventMemory["DialogCheckTime"] = EventMemory["CurrentTime"] + 1
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State8"]
return
elseif EventState == ES_STATE["State8"] then
if EventMemory["DialogCheckTime"] > EventMemory["CurrentTime"] then
return
end
cMobDialog( EventMemory["MapIndex"], DIALOGINFO[8]["FACECUT"], DIALOGINFO[8]["FILENAME"], DIALOGINFO[8]["INDEX"] )
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State9"]
return
elseif EventState == ES_STATE["State9"] then
if EventMemory["CameraCheckTime"] > EventMemory["CurrentTime"] then
return
end
local PlayerList
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cResetAbstate( PlayerList[i], BASE_CAMERAMOVE_DATA["ABSTATE"] )
end
EventMemory["CameraCheckTime"] = nil
cCameraMove( EventMemory["MapIndex"], 0, 0, 0, 0, 0, 0 )
return EVENT_ROUTINE_END
end
end
function EVENT_NO7_ROUTINE( EventMemory )
cExecCheck( "EVENT_NO7_ROUTINE" )
if EventMemory == nil then
return
end
if EventMemory["EventNumber"] ~= 7 then
return
end
local EventState = EventMemory[EventMemory["EventNumber"]]["EventState"]
if EventState == ES_STATE["State1"] then
local PlayerList
local DoorLocation = { }
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cSetAbstate( PlayerList[i], BASE_CAMERAMOVE_DATA["ABSTATE"], 1, BASE_CAMERAMOVE_DATA["ABSTATETIME"] )
end
DoorLocation = DOOR_BLOCK_DATA[3]["REGEN_POSITION"]
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local tmpdir = (DoorLocation["DIR"] + 180) * (-1)
tmpdir = tmpdir % 360
cCameraMove( EventMemory["MapIndex"], DoorLocation["X"], DoorLocation["Y"], tmpdir, DOOR_CAMERAMOVE["AngleY"], DOOR_CAMERAMOVE["Distance"], 1 )
EventMemory["CameraCheckTime"] = EventMemory["CurrentTime"] + 8
EventMemory["DoorCheckTime"] = EventMemory["CurrentTime"] + DOOR_CHECK_TIME
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State2"]
return
elseif EventState == ES_STATE["State2"] then
if EventMemory["DoorCheckTime"] > EventMemory["CurrentTime"] then
return
end
EventMemory["DoorCheckTime"] = nil
local DoorInfo
DoorInfo = EventMemory["DoorList"][3]
cDoorAction( DoorInfo["Handle"], DoorInfo["Index"], "open" )
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State3"]
return
elseif EventState == ES_STATE["State3"] then
if EventMemory["CameraCheckTime"] > EventMemory["CurrentTime"] then
return
end
local PlayerList
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cResetAbstate( PlayerList[i], BASE_CAMERAMOVE_DATA["ABSTATE"] )
end
EventMemory["CameraCheckTime"] = nil
cCameraMove( EventMemory["MapIndex"], 0, 0, 0, 0, 0, 0 )
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State4"]
return
elseif EventState == ES_STATE["State4"] then
if EventMemory[EventMemory["EventNumber"]]["EventData"]["RSState"] == RS_STATE["Aggro"] then
return
end
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State5"]
return
elseif EventState == ES_STATE["State5"] then
local PlayerList
local PoreLocation = { }
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cSetAbstate( PlayerList[i], BASE_CAMERAMOVE_DATA["ABSTATE"], 1, BASE_CAMERAMOVE_DATA["ABSTATETIME"] )
end
PoreLocation = EVNET_DATA[EventMemory["EventNumber"]]["PORE"]["REGENPOSITION"]
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local tmpdir = (PoreLocation["DIR"] + 180)
tmpdir = tmpdir % 360
cCameraMove( EventMemory["MapIndex"], PoreLocation["X"], PoreLocation["Y"], tmpdir, DOOR_CAMERAMOVE["AngleY"], DOOR_CAMERAMOVE["Distance"], 1 )
EventMemory["CameraCheckTime"] = EventMemory["CurrentTime"] + BASE_CAMERAMOVE_DATA["KEEPTIME"]
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State6"]
cNotice( EventMemory["MapIndex"], NOTICEINFO[3]["FILENAME"], NOTICEINFO[3]["INDEX"] )
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State6"]
return
elseif EventState == ES_STATE["State6"] then
if EventMemory["CameraCheckTime"] > EventMemory["CurrentTime"] then
return
end
local PlayerList
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cResetAbstate( PlayerList[i], BASE_CAMERAMOVE_DATA["ABSTATE"] )
end
EventMemory["CameraCheckTime"] = nil
cCameraMove( EventMemory["MapIndex"], 0, 0, 0, 0, 0, 0 )
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State7"]
return
elseif EventState == ES_STATE["State7"] then
local DavildomList
local ForasList
DavildomList = EventMemory[EventMemory["EventNumber"]]["EventData"]["DavildomList"]
ForasList = EventMemory[EventMemory["EventNumber"]]["EventData"]["ForasList"]
if (next( DavildomList ) == nil) and (next(ForasList) == nil) then
local PlayerList
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cStaticDamage( PlayerList[i], STATICDAMAGE )
end
else
return
end
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State8"]
return
elseif EventState == ES_STATE["State8"] then
if EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"] ~= nil then
if EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"]["PR_State"] ~= PR_STATE["Damage1"] then
return
end
local PlayerList
local PoreLocation = { }
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cSetAbstate( PlayerList[i], BRAINWASH_CAMERAMOVE_DAMGE["ABSTATE"], 1, BASE_CAMERAMOVE_DATA["ABSTATETIME"] )
cStaticDamage( PlayerList[i], 0 )
end
cSetAbstate( EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"]["Handle"], STA_NEGLECT, 1, 99999999 )
PoreLocation = EVNET_DATA[EventMemory["EventNumber"]]["PORE"]["REGENPOSITION"]
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local tmpdir = (PoreLocation["DIR"] + 180)
tmpdir = tmpdir % 360
cCameraMove( EventMemory["MapIndex"], PoreLocation["X"], PoreLocation["Y"], tmpdir, DOOR_CAMERAMOVE["AngleY"], DOOR_CAMERAMOVE["Distance"], 1 )
end
EventMemory["CameraCheckTime"] = EventMemory["CurrentTime"] + BASE_CAMERAMOVE_DATA["KEEPTIME"]
EventMemory["DamageCheckTime"] = EventMemory["CurrentTime"] + 2
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State9"]
return
elseif EventState == ES_STATE["State9"] then
if EventMemory["DamageCheckTime"] > EventMemory["CurrentTime"] then
return
end
local Pore
local PlayerList
local Damage
Pore = EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"]
if Pore ~= nil then
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
cDamaged( Pore["Handle"], Pore["BaseDamage"], PlayerList[1] )
end
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State10"]
return
elseif EventState == ES_STATE["State10"] then
if EventMemory["CameraCheckTime"] > EventMemory["CurrentTime"] then
return
end
local PlayerList
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cResetAbstate( PlayerList[i], BRAINWASH_CAMERAMOVE_DAMGE["ABSTATE"] )
cStaticDamage( PlayerList[i], STATICDAMAGE )
end
EventMemory["CameraCheckTime"] = nil
cCameraMove( EventMemory["MapIndex"], 0, 0, 0, 0, 0, 0 )
if EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"] ~= nil then
cResetAbstate( EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"]["Handle"], STA_NEGLECT )
end
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State11"]
return
elseif EventState == ES_STATE["State11"] then
if EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"] ~= nil then
if EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"]["PR_State"] ~= PR_STATE["Damage2"] then
return
end
local PlayerList
local PoreLocation = { }
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cSetAbstate( PlayerList[i], BRAINWASH_CAMERAMOVE_DAMGE["ABSTATE"], 1, BASE_CAMERAMOVE_DATA["ABSTATETIME"] )
cStaticDamage( PlayerList[i], 0 )
end
cSetAbstate( EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"]["Handle"], STA_NEGLECT, 1, 99999999 )
PoreLocation = EVNET_DATA[EventMemory["EventNumber"]]["PORE"]["REGENPOSITION"]
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local tmpdir = (PoreLocation["DIR"] + 180)
tmpdir = tmpdir % 360
cCameraMove( EventMemory["MapIndex"], PoreLocation["X"], PoreLocation["Y"], tmpdir, DOOR_CAMERAMOVE["AngleY"], DOOR_CAMERAMOVE["Distance"], 1 )
end
EventMemory["CameraCheckTime"] = EventMemory["CurrentTime"] + BASE_CAMERAMOVE_DATA["KEEPTIME"]
EventMemory["DamageCheckTime"] = EventMemory["CurrentTime"] + 2
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State12"]
return
elseif EventState == ES_STATE["State12"] then
if EventMemory["DamageCheckTime"] > EventMemory["CurrentTime"] then
return
end
local Pore
local PlayerList
local Damage
Pore = EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"]
if Pore ~= nil then
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
cDamaged( Pore["Handle"], Pore["BaseDamage"], PlayerList[1] )
end
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State13"]
return
elseif EventState == ES_STATE["State13"] then
if EventMemory["CameraCheckTime"] > EventMemory["CurrentTime"] then
return
end
local PlayerList
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cResetAbstate( PlayerList[i], BRAINWASH_CAMERAMOVE_DAMGE["ABSTATE"] )
cStaticDamage( PlayerList[i], STATICDAMAGE )
end
EventMemory["CameraCheckTime"] = nil
cCameraMove( EventMemory["MapIndex"], 0, 0, 0, 0, 0, 0 )
if EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"] ~= nil then
cResetAbstate( EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"]["Handle"], STA_NEGLECT )
end
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State14"]
return
elseif EventState == ES_STATE["State14"] then
if EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"] ~= nil then
if EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"]["PR_State"] ~= PR_STATE["Damage3"] then
return
end
local PlayerList
local PoreLocation = { }
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cSetAbstate( PlayerList[i], BRAINWASH_CAMERAMOVE_DAMGE["ABSTATE"], 1, BASE_CAMERAMOVE_DATA["ABSTATETIME"] )
cStaticDamage( PlayerList[i], 0 )
end
cSetAbstate( EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"]["Handle"], STA_NEGLECT, 1, 99999999 )
PoreLocation = EVNET_DATA[EventMemory["EventNumber"]]["PORE"]["REGENPOSITION"]
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local tmpdir = (PoreLocation["DIR"] + 180)
tmpdir = tmpdir % 360
cCameraMove( EventMemory["MapIndex"], PoreLocation["X"], PoreLocation["Y"], tmpdir, DOOR_CAMERAMOVE["AngleY"], DOOR_CAMERAMOVE["Distance"], 1 )
end
EventMemory["CameraCheckTime"] = EventMemory["CurrentTime"] + BASE_CAMERAMOVE_DATA["KEEPTIME"] + 2
EventMemory["DamageCheckTime"] = EventMemory["CurrentTime"] + 2
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State15"]
return
elseif EventState == ES_STATE["State15"] then
if EventMemory["DamageCheckTime"] > EventMemory["CurrentTime"] then
return
end
local Pore
local PlayerList
local Damage
Pore = EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"]
if Pore ~= nil then
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
cDamaged( Pore["Handle"], Pore["BaseDamage"], PlayerList[1] )
end
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State16"]
return
elseif EventState == ES_STATE["State16"] then
if EventMemory["CameraCheckTime"] > EventMemory["CurrentTime"] then
return
end
local PlayerList
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cResetAbstate( PlayerList[i], BRAINWASH_CAMERAMOVE_DAMGE["ABSTATE"] )
cStaticDamage( PlayerList[i], STATICDAMAGE )
end
EventMemory["CameraCheckTime"] = nil
cCameraMove( EventMemory["MapIndex"], 0, 0, 0, 0, 0, 0 )
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State17"]
return
elseif EventState == ES_STATE["State17"] then
local DoorInfo
local PlayerList
DoorInfo = EventMemory["DoorList"][5]
cDoorAction( DoorInfo["Handle"], DoorInfo["Index"], "open" )
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cSetAbstate( PlayerList[i], BASE_CAMERAMOVE_DATA["ABSTATE"], 1, BASE_CAMERAMOVE_DATA["ABSTATETIME"] )
end
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local tmpdir = (LINE_DATA["RIGHT_POSITION"]["DIR"] + 180) * (-1)
tmpdir = tmpdir % 360
cCameraMove( EventMemory["MapIndex"], LINE_DATA["RIGHT_POSITION"]["X"], LINE_DATA["RIGHT_POSITION"]["Y"], tmpdir, LINE_CAMERAMOVE["AngleY"], LINE_CAMERAMOVE["Distance"], 1 )
EventMemory["CameraCheckTime"] = EventMemory["CurrentTime"] + BASE_CAMERAMOVE_DATA["KEEPTIME"]
EventMemory["ObjectDeleteTime"] = EventMemory["CurrentTime"] + 3
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State18"]
return
elseif EventState == ES_STATE["State18"] then
if EventMemory["ObjectDeleteTime"] > EventMemory["CurrentTime"] then
return
end
-- <EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State19"]
cMapObjectControl( EventMemory["MapIndex"], "R_Line", 0, 1 )
EventMemory["ObjectState"]["R_Line"] = 0
return
elseif EventState == ES_STATE["State19"] then
if EventMemory["CameraCheckTime"] > EventMemory["CurrentTime"] then
return
end
local PlayerList
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cResetAbstate( PlayerList[i], BASE_CAMERAMOVE_DATA["ABSTATE"] )
cStaticDamage( PlayerList[i], 0 )
end
EventMemory["CameraCheckTime"] = nil
cCameraMove( EventMemory["MapIndex"], 0, 0, 0, 0, 0, 0 )
return EVENT_ROUTINE_END
end
end
function EVENT_NO8_ROUTINE( EventMemory )
cExecCheck( "EVENT_NO8_ROUTINE" )
if EventMemory == nil then
return
end
if EventMemory["EventNumber"] ~= 8 then
return
end
local EventState = EventMemory[EventMemory["EventNumber"]]["EventState"]
if EventState == ES_STATE["State1"] then
local PlayerList
local EventData = { }
local CitrieData = { }
local CitriePosition = { }
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cSetAbstate( PlayerList[i], BASE_CAMERAMOVE_DATA["ABSTATE"], 1, BASE_CAMERAMOVE_DATA["ABSTATETIME"] )
end
EventData = EVNET_DATA[EventMemory["EventNumber"]]
CitrieData = EventData["CITRIE"]
CitriePosition = CitrieData["REGENPOSITION"]
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local tmpdir = (CitriePosition["DIR"] + 180)
tmpdir = tmpdir % 360
cCameraMove( EventMemory["MapIndex"], CitriePosition["X"], CitriePosition["Y"], tmpdir, CITRIE_CAMERAMOVE2["AngleY"], CITRIE_CAMERAMOVE2["Distance"], 1 )
EventMemory["CameraCheckTime"] = EventMemory["CurrentTime"] + 3
EventMemory["DialogCheckTime"] = EventMemory["CurrentTime"] + 1
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State2"]
return
elseif EventState == ES_STATE["State2"] then
if EventMemory["DialogCheckTime"] > EventMemory["CurrentTime"] then
return
end
cMobDialog( EventMemory["MapIndex"], DIALOGINFO[7]["FACECUT"], DIALOGINFO[7]["FILENAME"], DIALOGINFO[7]["INDEX"] )
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State3"]
return
elseif EventState == ES_STATE["State3"] then
if EventMemory["CameraCheckTime"] > EventMemory["CurrentTime"] then
return
end
local PlayerList
local EventData = { }
local CitrieData = { }
local CitriePosition = { }
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cSetAbstate( PlayerList[i], BASE_CAMERAMOVE_DATA["ABSTATE"], 1, BASE_CAMERAMOVE_DATA["ABSTATETIME"] )
end
EventData = EVNET_DATA[EventMemory["EventNumber"]]
CitrieData = EventData["CITRIE"]
CitriePosition = CitrieData["REGENPOSITION"]
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local tmpdir = (CitriePosition["DIR"] + 180)
tmpdir = tmpdir % 360
cCameraMove( EventMemory["MapIndex"], CitriePosition["X"], CitriePosition["Y"], tmpdir, CITRIE_CAMERAMOVE["AngleY"], CITRIE_CAMERAMOVE["Distance"], 1 )
EventMemory["CameraCheckTime"] = EventMemory["CurrentTime"] + 3
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State4"]
return
elseif EventState == ES_STATE["State4"] then
if EventMemory["CameraCheckTime"] > EventMemory["CurrentTime"] then
return
end
local PlayerList
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cResetAbstate( PlayerList[i], BASE_CAMERAMOVE_DATA["ABSTATE"] )
end
EventMemory["CameraCheckTime"] = nil
cCameraMove( EventMemory["MapIndex"], 0, 0, 0, 0, 0, 0 )
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State5"]
return
elseif EventState == ES_STATE["State5"] then
if EventMemory[EventMemory["EventNumber"]]["EventData"]["Citrie"]["C_State"] == CT_STATE["Aggro"] then
return
end
cNotice( EventMemory["MapIndex"], NOTICEINFO[1]["FILENAME"], NOTICEINFO[1]["INDEX"] )
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State6"]
return
elseif EventState == ES_STATE["State6"] then
if EventMemory[EventMemory["EventNumber"]]["EventData"]["Citrie"] == nil then
cNotice( EventMemory["MapIndex"], NOTICEINFO[2]["FILENAME"], NOTICEINFO[2]["INDEX"] )
EventMemory[EventMemory["EventNumber"]]["EventData"]["DavildomList"] = nil
return EVENT_ROUTINE_END
end
if EventMemory[EventMemory["EventNumber"]]["EventData"]["RegenTime"] > EventMemory["CurrentTime"] then
return
end
local EventData = { }
local DavildomData = { }
local PlayerAggroList = { }
local PlayerList
local Count = 1
EventData = EVNET_DATA[EventMemory["EventNumber"]]
DavildomData = EventData["DAVILDOM"]
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i = 1, #PlayerList do
local CurPlayerPos = { }
local DavildomPos = { }
CurPlayerPos["X"], CurPlayerPos["Y"] = cObjectLocate( PlayerList[i] )
DavildomPos = DavildomData["REGENPOSITION"]
if cDistanceSquar( DavildomPos["X"], DavildomPos["Y"], CurPlayerPos["X"], CurPlayerPos["Y"] ) < ( DavildomData["SEARCH_RANGE"] * DavildomData["SEARCH_RANGE"] ) then
PlayerAggroList[Count] = PlayerList[i]
Count = Count + 1
end
end
local Davildom = { }
Davildom["Handle"] = cMobRegen_XY( EventMemory["MapIndex"], DavildomData["MOBINDEX"],
DavildomData["REGENPOSITION"]["X"], DavildomData["REGENPOSITION"]["Y"], 0 )
if Davildom["Handle"] ~= nil then
local PlayerHandle
cSetAIScript ( SCRIPT_MAIN, Davildom["Handle"] )
cAIScriptFunc ( Davildom["Handle"], "Entrance", "EVENT_NO8_DAVILDOM_ROUTINE" )
Davildom["AggroDistance"] = DavildomData["AGGRO_DISTANCE"]
Davildom["D_State"] = D_STATE["Aggro"]
Davildom["CheckTime"] = EventMemory["CurrentTime"] + 1
PlayerHandle = cRandomInt(1, #PlayerAggroList)
Davildom["AggroPlayer"] = PlayerAggroList[PlayerHandle]
Davildom["DeleteTime"] = EventMemory["CurrentTime"] + 60
end
EventMemory[EventMemory["EventNumber"]]["EventData"]["DavildomList"][Davildom["Handle"]] = Davildom
EventMemory[EventMemory["EventNumber"]]["EventData"]["RegenTime"] = EventMemory["CurrentTime"] + DavildomData["DELAYTIME"]
return
end
end
function EVENT_NO9_ROUTINE( EventMemory )
cExecCheck( "EVENT_NO9_ROUTINE" )
if EventMemory == nil then
return
end
if EventMemory["EventNumber"] ~= 9 then
return
end
local EventState = EventMemory[EventMemory["EventNumber"]]["EventState"]
if EventState == ES_STATE["State1"] then
local PlayerList
local EventData = { }
local BrainWashData = { }
local BrainWashPosition = { }
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cStaticDamage( PlayerList[i], STATICDAMAGE )
cSetAbstate( PlayerList[i], BASE_CAMERAMOVE_DATA["ABSTATE"], 1, BASE_CAMERAMOVE_DATA["ABSTATETIME"] )
end
EventData = EVNET_DATA[4]
BrainWashData = EventData["BRAINWASH"]
BrainWashPosition = BrainWashData["REGENPOSITION"]
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local tmpdir = (BrainWashPosition["DIR"] + 180)
tmpdir = tmpdir % 360
cCameraMove( EventMemory["MapIndex"], BrainWashPosition["X"], BrainWashPosition["Y"], tmpdir, BRAINWASH_CAMERAMOVE["AngleY"], BRAINWASH_CAMERAMOVE["Distance"], 1 )
EventMemory["CameraCheckTime"] = EventMemory["CurrentTime"] + BRAINWASH_CAMERAMOVE["KEEPTIME"]
EventMemory["DialogCheckTime"] = EventMemory["CurrentTime"] + 2
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State2"]
return
elseif EventState == ES_STATE["State2"] then
if EventMemory["DialogCheckTime"] > EventMemory["CurrentTime"] then
return
end
cMobDialog( EventMemory["MapIndex"], DIALOGINFO[9]["FACECUT"], DIALOGINFO[9]["FILENAME"], DIALOGINFO[9]["INDEX"] )
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State3"]
return
elseif EventState == ES_STATE["State3"] then
if EventMemory["CameraCheckTime"] > EventMemory["CurrentTime"] then
return
end
local PlayerList
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cResetAbstate( PlayerList[i], BASE_CAMERAMOVE_DATA["ABSTATE"] )
cStaticDamage( PlayerList[i], STATICDAMAGE )
end
cCameraMove( EventMemory["MapIndex"], 0, 0, 0, 0, 0, 0 )
if EventMemory["BrainWash"] ~= nil then
EventMemory["BrainWash"]["BW_State"] = BW_SATATE["Damage1"]
end
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State4"]
return
elseif EventState == ES_STATE["State4"] then
if EventMemory["BrainWash"] ~= nil then
if EventMemory["BrainWash"]["BW_State"] ~= BW_SATATE["Damage2"] then
return
end
local PlayerList
local EventData = { }
local BrainWashData = { }
local BrainWashPosition = { }
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cSetAbstate( PlayerList[i], BRAINWASH_CAMERAMOVE_DAMGE["ABSTATE"], 1, BASE_CAMERAMOVE_DATA["ABSTATETIME"] )
cStaticDamage( PlayerList[i], 0 )
end
cSetAbstate( EventMemory["BrainWash"]["Handle"], STA_NEGLECT, 1, 99999999 )
EventData = EVNET_DATA[4]
BrainWashData = EventData["BRAINWASH"]
BrainWashPosition = BrainWashData["REGENPOSITION"]
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local tmpdir = (BrainWashPosition["DIR"] + 180)
tmpdir = tmpdir % 360
cCameraMove( EventMemory["MapIndex"], BrainWashPosition["X"], BrainWashPosition["Y"], tmpdir, BRAINWASH_CAMERAMOVE_DAMGE["AngleY"], BRAINWASH_CAMERAMOVE_DAMGE["Distance"], 1 )
end
EventMemory["CameraCheckTime"] = EventMemory["CurrentTime"] + BRAINWASH_CAMERAMOVE["KEEPTIME"]
EventMemory["DamageCheckTime"] = EventMemory["CurrentTime"] + 2
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State5"]
return
elseif EventState == ES_STATE["State5"] then
if EventMemory["DamageCheckTime"] > EventMemory["CurrentTime"] then
return
end
local BrainWash
local PlayerList
local Damage
BrainWash = EventMemory["BrainWash"]
if BrainWash ~= nil then
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
cDamaged( BrainWash["Handle"], BrainWash["BaseDamage"], PlayerList[1] )
end
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State6"]
return
elseif EventState == ES_STATE["State6"] then
if EventMemory["CameraCheckTime"] > EventMemory["CurrentTime"] then
return
end
local PlayerList
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
cCameraMove( EventMemory["MapIndex"], 0, 0, 0, 0, 0, 0 )
if EventMemory["BrainWash"] ~= nil then
cResetAbstate( EventMemory["BrainWash"]["Handle"], STA_NEGLECT )
end
for i=1, #PlayerList do
cResetAbstate( PlayerList[i], BRAINWASH_CAMERAMOVE_DAMGE["ABSTATE"] )
cStaticDamage( PlayerList[i], STATICDAMAGE )
end
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State7"]
return
elseif EventState == ES_STATE["State7"] then
if EventMemory["BrainWash"] ~= nil then
if EventMemory["BrainWash"]["BW_State"] ~= BW_SATATE["Damage3"] then
return
end
local PlayerList
local EventData = { }
local BrainWashData = { }
local BrainWashPosition = { }
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cSetAbstate( PlayerList[i], BRAINWASH_CAMERAMOVE_DAMGE["ABSTATE"], 1, BASE_CAMERAMOVE_DATA["ABSTATETIME"] )
cStaticDamage( PlayerList[i], 0 )
end
cSetAbstate( EventMemory["BrainWash"]["Handle"], STA_NEGLECT, 1, 99999999 )
EventData = EVNET_DATA[4]
BrainWashData = EventData["BRAINWASH"]
BrainWashPosition = BrainWashData["REGENPOSITION"]
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local tmpdir = (BrainWashPosition["DIR"] + 180)
tmpdir = tmpdir % 360
cCameraMove( EventMemory["MapIndex"], BrainWashPosition["X"], BrainWashPosition["Y"], tmpdir, BRAINWASH_CAMERAMOVE_DAMGE["AngleY"], BRAINWASH_CAMERAMOVE_DAMGE["Distance"], 1 )
end
EventMemory["CameraCheckTime"] = EventMemory["CurrentTime"] + BRAINWASH_CAMERAMOVE["KEEPTIME"]
EventMemory["DamageCheckTime"] = EventMemory["CurrentTime"] + 2
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State8"]
return
elseif EventState == ES_STATE["State8"] then
if EventMemory["DamageCheckTime"] > EventMemory["CurrentTime"] then
return
end
local BrainWash
local PlayerList
local Damage
BrainWash = EventMemory["BrainWash"]
if BrainWash ~= nil then
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
cDamaged( BrainWash["Handle"], BrainWash["BaseDamage"], PlayerList[1] )
end
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State9"]
return
elseif EventState == ES_STATE["State9"] then
if EventMemory["CameraCheckTime"] > EventMemory["CurrentTime"] then
return
end
local PlayerList
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cResetAbstate( PlayerList[i], BRAINWASH_CAMERAMOVE_DAMGE["ABSTATE"] )
cStaticDamage( PlayerList[i], STATICDAMAGE )
end
cCameraMove( EventMemory["MapIndex"], 0, 0, 0, 0, 0, 0 )
if EventMemory["BrainWash"] ~= nil then
cResetAbstate( EventMemory["BrainWash"]["Handle"], STA_NEGLECT )
end
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State10"]
return
elseif EventState == ES_STATE["State10"] then
if EventMemory["BrainWash"] ~= nil then
if EventMemory["BrainWash"]["BW_State"] ~= BW_SATATE["Damage4"] then
return
end
local PlayerList
local EventData = { }
local BrainWashData = { }
local BrainWashPosition = { }
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cSetAbstate( PlayerList[i], BRAINWASH_CAMERAMOVE_DAMGE["ABSTATE"], 1, BASE_CAMERAMOVE_DATA["ABSTATETIME"] )
cStaticDamage( PlayerList[i], 0 )
end
cSetAbstate( EventMemory["BrainWash"]["Handle"], STA_NEGLECT, 1, 99999999 )
EventData = EVNET_DATA[4]
BrainWashData = EventData["BRAINWASH"]
BrainWashPosition = BrainWashData["REGENPOSITION"]
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local tmpdir = (BrainWashPosition["DIR"] + 180)
tmpdir = tmpdir % 360
cCameraMove( EventMemory["MapIndex"], BrainWashPosition["X"], BrainWashPosition["Y"], tmpdir, BRAINWASH_CAMERAMOVE_DAMGE["AngleY"], BRAINWASH_CAMERAMOVE_DAMGE["Distance"], 1 )
end
EventMemory["CameraCheckTime"] = EventMemory["CurrentTime"] + BRAINWASH_CAMERAMOVE["KEEPTIME"]
EventMemory["DamageCheckTime"] = EventMemory["CurrentTime"] + 2
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State11"]
return
elseif EventState == ES_STATE["State11"] then
if EventMemory["DamageCheckTime"] > EventMemory["CurrentTime"] then
return
end
local BrainWash
local PlayerList
local Damage
BrainWash = EventMemory["BrainWash"]
if BrainWash ~= nil then
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
cDamaged( BrainWash["Handle"], BrainWash["BaseDamage"], PlayerList[1] )
end
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State12"]
return
elseif EventState == ES_STATE["State12"] then
if EventMemory["CameraCheckTime"] > EventMemory["CurrentTime"] then
return
end
local PlayerList
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cResetAbstate( PlayerList[i], BRAINWASH_CAMERAMOVE_DAMGE["ABSTATE"] )
cStaticDamage( PlayerList[i], STATICDAMAGE )
end
cCameraMove( EventMemory["MapIndex"], 0, 0, 0, 0, 0, 0 )
if EventMemory["BrainWash"] ~= nil then
cResetAbstate( EventMemory["BrainWash"]["Handle"], STA_NEGLECT )
end
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State13"]
return
elseif EventState == ES_STATE["State13"] then
if EventMemory["BrainWash"] ~= nil then
if EventMemory["BrainWash"]["BW_State"] ~= BW_SATATE["Damage5"] then
return
end
local PlayerList
local EventData = { }
local BrainWashData = { }
local BrainWashPosition = { }
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cSetAbstate( PlayerList[i], BRAINWASH_CAMERAMOVE_DAMGE["ABSTATE"], 1, BASE_CAMERAMOVE_DATA["ABSTATETIME"] )
cStaticDamage( PlayerList[i], 0 )
end
cSetAbstate( EventMemory["BrainWash"]["Handle"], STA_NEGLECT, 1, 99999999 )
EventData = EVNET_DATA[4]
BrainWashData = EventData["BRAINWASH"]
BrainWashPosition = BrainWashData["REGENPOSITION"]
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local tmpdir = (BrainWashPosition["DIR"] + 180)
tmpdir = tmpdir % 360
cCameraMove( EventMemory["MapIndex"], BrainWashPosition["X"], BrainWashPosition["Y"], tmpdir, BRAINWASH_CAMERAMOVE_DAMGE["AngleY"], BRAINWASH_CAMERAMOVE_DAMGE["Distance"], 1 )
end
EventMemory["CameraCheckTime"] = EventMemory["CurrentTime"] + BRAINWASH_CAMERAMOVE["KEEPTIME"]
EventMemory["DamageCheckTime"] = EventMemory["CurrentTime"] + 2
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State14"]
return
elseif EventState == ES_STATE["State14"] then
if EventMemory["DamageCheckTime"] > EventMemory["CurrentTime"] then
return
end
local BrainWash
local PlayerList
local Damage
BrainWash = EventMemory["BrainWash"]
if BrainWash ~= nil then
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
cDamaged( BrainWash["Handle"], BrainWash["BaseDamage"], PlayerList[1] )
end
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State15"]
return
elseif EventState == ES_STATE["State15"] then
if EventMemory["CameraCheckTime"] > EventMemory["CurrentTime"] then
return
end
local PlayerList
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cResetAbstate( PlayerList[i], BRAINWASH_CAMERAMOVE_DAMGE["ABSTATE"] )
cStaticDamage( PlayerList[i], STATICDAMAGE )
end
cCameraMove( EventMemory["MapIndex"], 0, 0, 0, 0, 0, 0 )
if EventMemory["BrainWash"] ~= nil then
cResetAbstate( EventMemory["BrainWash"]["Handle"], STA_NEGLECT )
end
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State16"]
return
elseif EventState == ES_STATE["State16"] then
if EventMemory["BrainWash"] ~= nil then
if EventMemory["BrainWash"]["BW_State"] ~= BW_SATATE["End"] then
return
end
local PlayerList
local EventData = { }
local BrainWashData = { }
local BrainWashPosition = { }
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cSetAbstate( PlayerList[i], BRAINWASH_CAMERAMOVE_DAMGE["ABSTATE"], 1, 99999999 )
cStaticDamage( PlayerList[i], 0 )
end
cSetAbstate( EventMemory["BrainWash"]["Handle"], STA_NEGLECT, 1, BASE_CAMERAMOVE_DATA["ABSTATETIME"] )
EventData = EVNET_DATA[4]
BrainWashData = EventData["BRAINWASH"]
BrainWashPosition = BrainWashData["REGENPOSITION"]
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local tmpdir = (BrainWashPosition["DIR"] + 180)
tmpdir = tmpdir % 360
cCameraMove( EventMemory["MapIndex"], BrainWashPosition["X"], BrainWashPosition["Y"], tmpdir, BRAINWASH_CAMERAMOVE["AngleY"], BRAINWASH_CAMERAMOVE["Distance"], 1 )
end
EventMemory["CameraCheckTime"] = EventMemory["CurrentTime"] + 10
EventMemory["DamageCheckTime"] = EventMemory["CurrentTime"] + 2
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State17"]
return
elseif EventState == ES_STATE["State17"] then
if EventMemory["DamageCheckTime"] > EventMemory["CurrentTime"] then
return
end
local BrainWash
local PlayerList
local Damage
BrainWash = EventMemory["BrainWash"]
if BrainWash ~= nil then
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
cDamaged( BrainWash["Handle"], BrainWash["BaseDamage"], PlayerList[1] )
end
EventMemory["DialogCheckTime"] = EventMemory["CurrentTime"] + 5
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State18"]
return
elseif EventState == ES_STATE["State18"] then
if EventMemory["DialogCheckTime"] > EventMemory["CurrentTime"] then
return
end
cMobDialog( EventMemory["MapIndex"], DIALOGINFO[10]["FACECUT"], DIALOGINFO[10]["FILENAME"], DIALOGINFO[10]["INDEX"] )
EventMemory["DialogCheckTime"] = EventMemory["CurrentTime"] + DIALOGINFO[8]["DELAY"]
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State19"]
return
elseif EventState == ES_STATE["State19"] then
if EventMemory["DialogCheckTime"] > EventMemory["CurrentTime"] then
return
end
cMobDialog( EventMemory["MapIndex"], DIALOGINFO[11]["FACECUT"], DIALOGINFO[11]["FILENAME"], DIALOGINFO[11]["INDEX"] )
EventMemory["DialogCheckTime"] = EventMemory["CurrentTime"] + DIALOGINFO[9]["DELAY"]
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State20"]
elseif EventState == ES_STATE["State20"] then
if EventMemory["DialogCheckTime"] > EventMemory["CurrentTime"] then
return
end
local PlayerList
PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
cStaticDamage( PlayerList[i], STATICDAMAGE )
cResetAbstate( PlayerList[i], BRAINWASH_CAMERAMOVE_DAMGE["ABSTATE"] )
end
EventMemory["CameraCheckTime"] = nil
cCameraMove( EventMemory["MapIndex"], 0, 0, 0, 0, 0, 0 )
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State21"]
EventMemory["DialogCheckTime"] = EventMemory["CurrentTime"] + DIALOGINFO[9]["DELAY"]
if EventMemory["ForasChief"] ~= nil then
EventMemory["ForasChief"] = nil
end
return
elseif EventState == ES_STATE["State21"] then
if EventMemory["DialogCheckTime"] > EventMemory["CurrentTime"] then
return
end
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ġ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ȯ <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̰<EFBFBD>
cMobDialog( EventMemory["MapIndex"], DIALOGINFO[12]["FACECUT"], DIALOGINFO[12]["FILENAME"], DIALOGINFO[12]["INDEX"] )
EventMemory["PForasState"] = PF_STATE["RUNAWAY"]
local ForasCheifData = { }
local ForasChief = { }
ForasCheifData = EVNET_DATA[1]["FORASCHIEF"]
ForasChief["Handle"] = cMobRegen_XY( EventMemory["MapIndex"], ForasCheifData["MOBINDEX"],
GATE_DATA["END_GATE"]["REGEN_POSITION"]["X"], GATE_DATA["END_GATE"]["REGEN_POSITION"]["Y"], GATE_DATA["END_GATE"]["REGEN_POSITION"]["DIR"] )
if ForasChief["Handle"] ~= nil then
cSetAIScript ( SCRIPT_MAIN, ForasChief["Handle"] )
cAIScriptFunc ( ForasChief["Handle"], "Entrance", "FORASCHIEFEND_ROUTINE" )
cSetAbstate ( ForasChief["Handle"], STA_NEGLECT, 1, 99999999 )
cRunTo( ForasChief["Handle"], GATE_DATA["START_GATE"]["REGEN_POSITION"]["X"], GATE_DATA["START_GATE"]["REGEN_POSITION"]["Y"] )
end
EventMemory["ForasChiefEnd"] = ForasChief
return EVENT_ROUTINE_END
end
end
function EVENT_NO10_ROUTINE( EventMemory )
cExecCheck( "EVENT_NO10_ROUTINE" )
if EventMemory == nil then
return
end
if EventMemory["EventNumber"] ~= 10 then
return
end
local EventState = EventMemory[EventMemory["EventNumber"]]["EventState"]
local EndingData = EVENT_ENDING_DATA["KQReturn"]
if EventState == ES_STATE["State1"] then
cNotice( EventMemory["MapIndex"], EndingData[1]["FileName"], EndingData[1]["Index"] )
EventMemory["EndingCheckTime"] = EventMemory["CurrentTime"] + EndingData[1]["WaitTime"]
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State2"]
return
elseif EventState == ES_STATE["State2"] then
if EventMemory["EndingCheckTime"] > EventMemory["CurrentTime"] then
return
end
cNotice( EventMemory["MapIndex"], EndingData[2]["FileName"], EndingData[2]["Index"] )
EventMemory["EndingCheckTime"] = EventMemory["CurrentTime"] + EndingData[2]["WaitTime"]
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State3"]
return
elseif EventState == ES_STATE["State3"] then
if EventMemory["EndingCheckTime"] > EventMemory["CurrentTime"] then
return
end
cNotice( EventMemory["MapIndex"], EndingData[3]["FileName"], EndingData[3]["Index"] )
EventMemory["EndingCheckTime"] = EventMemory["CurrentTime"] + EndingData[3]["WaitTime"]
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State4"]
return
elseif EventState == ES_STATE["State4"] then
if EventMemory["EndingCheckTime"] > EventMemory["CurrentTime"] then
return
end
cNotice( EventMemory["MapIndex"], EndingData[4]["FileName"], EndingData[4]["Index"] )
EventMemory["EndingCheckTime"] = EventMemory["CurrentTime"] + EndingData[4]["WaitTime"]
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State5"]
return
elseif EventState == ES_STATE["State5"] then
if EventMemory["EndingCheckTime"] > EventMemory["CurrentTime"] then
return
end
cLinkToAll( EventMemory["MapIndex"], GATE_DATA["END_GATE"]["LINK"]["FIELD"], GATE_DATA["END_GATE"]["LINK"]["X"], GATE_DATA["END_GATE"]["LINK"]["Y"] )
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State6"]
return
elseif EventState == ES_STATE["State6"] then
return
end
return
end
EVENT_ROUTINE = { }
EVENT_ROUTINE[1] = EVENT_NO1_ROUTINE
EVENT_ROUTINE[2] = EVENT_NO2_ROUTINE
EVENT_ROUTINE[3] = EVENT_NO3_ROUTINE
EVENT_ROUTINE[4] = EVENT_NO4_ROUTINE
EVENT_ROUTINE[5] = EVENT_NO5_ROUTINE
EVENT_ROUTINE[6] = EVENT_NO6_ROUTINE
EVENT_ROUTINE[7] = EVENT_NO7_ROUTINE
EVENT_ROUTINE[8] = EVENT_NO8_ROUTINE
EVENT_ROUTINE[9] = EVENT_NO9_ROUTINE
EVENT_ROUTINE[10] = EVENT_NO10_ROUTINE