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.
 
 

606 lines
11 KiB

function FaceCut( EventMemory )
cExecCheck( "FaceCut" )
if EventMemory == nil then
return
end
if EventMemory["FaceCut"] == nil then
return
end
if EventMemory["FaceCut"]["Number"] > #DIALOG_DATA then
return
end
local FacecutData = DIALOG_DATA[EventMemory["FaceCut"]["Number"]]
if FacecutData == nil then
return
end
if FacecutData["FACECUT"] == nil then
cNotice( EventMemory["MapIndex"], FacecutData["FILENAME"], FacecutData["INDEX"] )
elseif FacecutData["FACECUT"] ~= nil then
cMobDialog( EventMemory["MapIndex"], FacecutData["FACECUT"], FacecutData["FILENAME"], FacecutData["INDEX"] )
end
EventMemory["FaceCut"]["CheckTime"] = EventMemory["CurrentTime"] + FacecutData["DELAY"]
EventMemory["FaceCut"]["Number"] = EventMemory["FaceCut"]["Number"] + 1
end
function FaceCutThread( EventMemory )
cExecCheck( "FaceCutThread" )
if EventMemory == nil then
return
end
if EventMemory["FaceCut"] == nil then
return
end
if EventMemory["FaceCut"]["FaceCutThread"] == nil then
return
end
if EventMemory["FaceCut"]["FaceCutThread"]["Working"] == false then
return
end
if EventMemory["FaceCut"]["CheckTime"] == nil then
return
end
if EventMemory["FaceCut"]["CheckTime"] <= EventMemory["CurrentTime"] then
local Length = EventMemory["FaceCut"]["FaceCutThread"]["Length"]
local Count = EventMemory["FaceCut"]["FaceCutThread"]["Count"]
if Count < Length then
FaceCut( EventMemory )
EventMemory["FaceCut"]["FaceCutThread"]["Count"] = Count + 1
else
EventMemory["FaceCut"]["FaceCutThread"]["Working"] = false
end
end
end
function FaceCutThreadStart( EventMemory, Length )
cExecCheck( "FaceCutThreadStart" )
if EventMemory == nil then
return
end
if EventMemory["FaceCut"] == nil then
return
end
if EventMemory["FaceCut"]["FaceCutThread"] == nil then
EventMemory["FaceCut"]["FaceCutThread"] = { }
end
EventMemory["FaceCut"]["FaceCutThread"]["Length"] = Length
EventMemory["FaceCut"]["FaceCutThread"]["Count"] = 0
EventMemory["FaceCut"]["FaceCutThread"]["Working"] = true
end
function DoorCreate( EventMemory )
cExecCheck( "DoorCreate" )
EventMemory["EventData"]["DoorList"] = { }
local DoorList = { }
local DoorCount = 1
for index, value in pairs( DOOR_BLOCK_DATA ) do
local Door = { }
Door["Handle"] = cDoorBuild( EventMemory["MapIndex"], value["DOOR_INDEX"],
value["REGEN_POSITION"]["X"], value["REGEN_POSITION"]["Y"], value["REGEN_POSITION"]["DIR"], value["SCALE"] )
if Door["Handle"] ~= nil then
Door["Index"] = value["DOOR_BLOCK"]
Door["X"] = value["REGEN_POSITION"]["X"]
Door["Y"] = value["REGEN_POSITION"]["Y"]
DoorList[DoorCount] = Door
DoorCount = DoorCount + 1
cDoorAction( Door["Handle"], Door["Index"], "close" )
cSetAIScript( SCRIPT_MAIN, Door["Handle"] )
cAIScriptFunc( Door["Handle"], "Entrance", "DOOR_ROUTINE" )
end
end
EventMemory["EventData"]["DoorList"] = DoorList
end
function CameraMove( EventMemory )
cExecCheck( "CameraMove" )
if EventMemory == nil then
return
end
if EventMemory["CameraMove"] == nil then
return
end
if EventMemory["CameraMove"]["Number"] > #CAMERAMOVE_DATA then
return
end
local CameraData = CAMERAMOVE_DATA[EventMemory["CameraMove"]["Number"]]
if EventMemory["CameraMove"]["CameraState"] == CAMERA_STATE["MOVE"] then
local PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
--if cIsKQJoiner( PlayerList[i] ) == true then
cSetAbstate( PlayerList[i], CameraData["AbstateIndex"], 1, CameraData["AbstateTime"] )
cSetAbstate( PlayerList[i], "StaImmortal", 1, 99999999 )
--end
end
cCameraMove( EventMemory["MapIndex"], EventMemory["CameraMove"]["Focus"]["X"], EventMemory["CameraMove"]["Focus"]["Y"], EventMemory["CameraMove"]["Focus"]["DIR"],
CameraData["AngleY"], CameraData["Distance"], 1 )
EventMemory["CameraMove"]["CheckTime"] = EventMemory["CurrentTime"] + CameraData["KeepTime"]
return
elseif EventMemory["CameraMove"]["CameraState"] == CAMERA_STATE["REMOVE"] then
local PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for i=1, #PlayerList do
--if cIsKQJoiner( PlayerList[i] ) == true then
cResetAbstate( PlayerList[i], "StaImmortal" )
cResetAbstate( PlayerList[i], CameraData["AbstateIndex"] )
--end
end
EventMemory["CameraMove"]["CheckTime"] = nil
cCameraMove( EventMemory["MapIndex"], 0, 0, 0, 0, 0, 0 )
--EventMemory["CameraMove"]["Number"] = EventMemory["CameraMove"]["Number"] + 1
return
elseif EventMemory["CameraMove"]["CameraState"] == CAMERA_STATE["NEXT_STEP"] then
EventMemory["CameraMove"]["Number"] = EventMemory["CameraMove"]["Number"] + 1
return
end
end
function CameraMoveStart( EventMemory )
cExecCheck( "CameraMoveStart" )
if EventMemory == nil then
return
end
local DoorPosition = DOOR_BLOCK_DATA[EventMemory["EventNumber"]]["REGEN_POSITION"]
EventMemory["CameraMove"]["CameraState"] = CAMERA_STATE["MOVE"]
EventMemory["CameraMove"]["Focus"]["X"] = DoorPosition["X"]
EventMemory["CameraMove"]["Focus"]["Y"] = DoorPosition["Y"]
EventMemory["CameraMove"]["Focus"]["DIR"] = ( DoorPosition["DIR"] + 180 ) * (-1)
CameraMove( EventMemory )
local DoorInfo = EventMemory["EventData"]["DoorList"][EventMemory["EventNumber"]]
cDoorAction( DoorInfo["Handle"], DoorInfo["Index"], "open" )
end
function CameraMoveEnd( EventMemory )
cExecCheck( "CameraMoveEnd" )
if EventMemory == nil then
return
end
EventMemory["CameraMove"]["CameraState"] = CAMERA_STATE["REMOVE"]
CameraMove( EventMemory )
EventMemory["CameraMove"]["CameraState"] = CAMERA_STATE["NEXT_STEP"]
CameraMove( EventMemory )
end
function CreateObjectList_XY( EventMemory, DataIndex, ListName, Func )
cExecCheck( "CreateObjectList_XY" )
if EventMemory == nil then
return
end
local ObjectList = EventMemory["EventData"][ListName]
if ObjectList == nil then
ObjectList = {}
end
local EventData = EVENT_DATA[EventMemory["EventNumber"]]
local ObjectData = EventData[DataIndex]
for i = 1, #ObjectData do
local Object = { }
Object["Handle"] = cMobRegen_XY( EventMemory["MapIndex"], ObjectData[i]["MOBINDEX"],
ObjectData[i]["X"], ObjectData[i]["Y"], ObjectData[i]["DIR"] )
if Object["Handle"] ~= nil then
ObjectList[Object["Handle"]] = Object
if Func ~= nil then
Func( Object, ObjectData[i] )
end
end
end
EventMemory["EventData"][ListName] = ObjectList
return EventMemory["EventData"][ListName]
end
function CreateObjectList_Circle( EventMemory, DataIndex, ListName, Func )
cExecCheck( "CreateObjectList_Circle" )
if EventMemory == nil then
return
end
if EventMemory["EventData"][ListName] == nil then
EventMemory["EventData"][ListName] = { }
end
local EventData = EVENT_DATA[EventMemory["EventNumber"]]
local ObjectData = EventData[DataIndex]
local ObjectList = EventMemory["EventData"][ListName]
for i = 1, #ObjectData do
local Object = { }
Object["Handle"] = cMobRegen_Circle( EventMemory["MapIndex"], ObjectData[i]["MOBINDEX"],
ObjectData[i]["X"], ObjectData[i]["Y"], ObjectData[i]["RADIUS"] )
if Object["Handle"] ~= nil then
ObjectList[Object["Handle"]] = Object
if Func ~= nil then
Func( Object, ObjectData[i] )
end
end
end
EventMemory["EventData"][ListName] = ObjectList
return EventMemory["EventData"][ListName]
end
function StunRegenObjectAll( EventMemory )
cExecCheck( "StunRegenObjectAll" )
if EventMemory == nil then
return
end
local ObjectList = EventMemory["EventData"]["ObjectList"]
if ObjectList ~= nil then
for index, value in pairs( ObjectList ) do
local Object = ObjectList[index]
if Object ~= nil then
if Object["Handle"] ~= nil then
cSetAbstate( Object["Handle"], "StaAdlFStun", 1, 1500 )
end
end
end
end
end
function ResetStunRegenObjectAll( EventMemory )
cExecCheck( "StunRegenObjectAll" )
if EventMemory == nil then
return
end
local ObjectList = EventMemory["EventData"]["ObjectList"]
if ObjectList ~= nil then
for index, value in pairs( ObjectList ) do
local Object = ObjectList[index]
if Object ~= nil then
if Object["Handle"] ~= nil then
cResetAbstate( Object["Handle"], "StaAdlFStun" )
end
end
end
end
end
function KDFargelsSkill01( EventMemory, Handle, Skill, SkillInfo )
cExecCheck( "KDFargelsSkill01" )
if EventMemory == nil then
return
end
if Handle == nil then
return
end
if Skill == nil then
return
end
if SkillInfo == nil then
return
end
local Range = SkillInfo["RANGE"]
local AbstateData = SkillInfo["ABSTATE"]
local AbstateList = Skill["AbstateList"]
for i = 1, #AbstateList do
local AbstateIndex = AbstateData[i]["ABSTATE_INDEX"]
local KeepTime = AbstateData[i]["KEEPTIME"]
local PrepareTime = AbstateData[i]["PREPARETIME"]
local IntervalTime = AbstateData[i]["INTERVALTIME"]
local Abstate = AbstateList[i]
if Abstate ~= nil then
if Abstate["Enable"] == true then
if Abstate["CheckPrepareTime"] <= EventMemory["CurrentTime"] then
if Abstate["CheckIntervalTime"] <= EventMemory["CurrentTime"] then
local RestTime = Abstate["CheckKeepTime"] - EventMemory["CurrentTime"]
cSetAbstate_Range( Handle, Range * 0.5 , ObjectType["Player"], AbstateIndex, 1, RestTime * 1000 )
--cDebugLog( "cSetAbstate_Range : " .. AbstateIndex )
Abstate["CheckIntervalTime"] = EventMemory["CurrentTime"] + IntervalTime
end
end
if Abstate["CheckKeepTime"] <= EventMemory["CurrentTime"] then
local PlayerList = { cGetPlayerList( EventMemory["MapIndex"] ) }
for j = 1, #PlayerList do
if PlayerList[j] ~= nil then
cResetAbstate( PlayerList[j], AbstateIndex )
end
end
AbstateList[i]["Enable"] = false
end
end
end
end
end
function KDFargelsSkill02( EventMemory, Handle, Skill, SkillInfo )
cExecCheck( "KDFargelsSkill02" )
if EventMemory == nil then
return
end
if Handle == nil then
return
end
if Skill == nil then
return
end
if SkillInfo == nil then
return
end
local Range = SkillInfo["RANGE"]
local AbstateData = SkillInfo["ABSTATE"]
local AbstateList = Skill["AbstateList"]
for i = 1, #AbstateList do
local AbstateIndex = AbstateData[i]["ABSTATE_INDEX"]
local KeepTime = AbstateData[i]["KEEPTIME"]
local PrepareTime = AbstateData[i]["PREPARETIME"]
local IntervalTime = AbstateData[i]["INTERVALTIME"]
local Abstate = AbstateList[i]
if Abstate ~= nil then
if Abstate["Enable"] == true then
if Abstate["CheckPrepareTime"] <= EventMemory["CurrentTime"] then
if Abstate["CheckIntervalTime"] <= EventMemory["CurrentTime"] then
local RestTime = Abstate["CheckKeepTime"] - EventMemory["CurrentTime"]
cSetAbstate( Handle, AbstateIndex, 1, RestTime * 1000 )
--cDebugLog( "cSetAbstate : " .. AbstateIndex )
Abstate["CheckIntervalTime"] = EventMemory["CurrentTime"] + IntervalTime
end
end
if Abstate["CheckKeepTime"] <= EventMemory["CurrentTime"] then
cResetAbstate( Handle, AbstateIndex )
AbstateList[i]["Enable"] = false
end
end
end
end
end