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
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
|
|
|