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.
 
 

555 lines
11 KiB

--------------------------------------------------------------------------------
-- Sub Functions --
--------------------------------------------------------------------------------
function DummyFunc( Var )
cExecCheck "DummyFunc"
end
--------------------------------------------------------------------------------
-- RandomRegenMobGroupSetFunc : 18개 영역에 리젠될 몹그룹을 랜덤으로 세팅
--------------------------------------------------------------------------------
function RandomRegenMobGroupSetFunc( Var )
cExecCheck "RandomRegenMobGroupSetFunc"
if Var == nil
then
ErrorLog( "RandomRegenMobGroup::Var == nil" )
return
end
if Var["AreaMobGroup"] == nil
then
ErrorLog( "RandomRegenMobGroup::Var[\"AreaMobGroup\"] == nil" )
return
end
local AreaMobGroupList = {}
for i = 1, #RegenInfo["Mob"]["AreaMobGroup"]
do
AreaMobGroupList[i] = RegenInfo["Mob"]["AreaMobGroup"][i]
end
local Max = 18
local Scope = Max
for i = 1, Max
do
local Randomvalue = cRandomInt( 1, Scope )
Var["AreaMobGroup"][i] = AreaMobGroupList[Randomvalue]
AreaMobGroupList[Randomvalue] = AreaMobGroupList[Scope]
AreaMobGroupList[Scope] = nil
Scope = Scope - 1
end
DebugLog( "RandomRegenMobGroupSetFunc :: Var[\"AreaMobGroup\"] List is ..." )
for i = 1, #Var["AreaMobGroup"]
do
DebugLog(" : "..Var["AreaMobGroup"][i] )
end
return
end
--------------------------------------------------------------------------------
-- KDFargelsSkill01
--------------------------------------------------------------------------------
function KDFargelsSkill01( Var, Handle, Skill, SkillInfo )
cExecCheck( "KDFargelsSkill01" )
if Var == 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"] <= Var["CurSec"] then
if Abstate["CheckIntervalTime"] <= Var["CurSec"] then
local RestTime = Abstate["CheckKeepTime"] - Var["CurSec"]
cSetAbstate_Range( Handle, Range * 0.5 , ObjectType["Player"], AbstateIndex, 1, RestTime * 1000 )
--cDebugLog( "KDFargelsSkill01 :: cSetAbstate_Range : " .. AbstateIndex )
Abstate["CheckIntervalTime"] = Var["CurSec"] + IntervalTime
end
end
if Abstate["CheckKeepTime"] <= Var["CurSec"] then
local PlayerList = { cGetPlayerList( Var["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
--------------------------------------------------------------------------------
-- KDFargelsSkill02
--------------------------------------------------------------------------------
function KDFargelsSkill02( Var, Handle, Skill, SkillInfo )
cExecCheck( "KDFargelsSkill02" )
if Var == 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"] <= Var["CurSec"] then
if Abstate["CheckIntervalTime"] <= Var["CurSec"] then
local RestTime = Abstate["CheckKeepTime"] - Var["CurSec"]
cSetAbstate( Handle, AbstateIndex, 1, RestTime * 1000 )
cDebugLog( "KDFargelsSkill01 :: cSetAbstate : " .. AbstateIndex )
Abstate["CheckIntervalTime"] = Var["CurSec"] + IntervalTime
end
end
if Abstate["CheckKeepTime"] <= Var["CurSec"] then
cResetAbstate( Handle, AbstateIndex )
AbstateList[i]["Enable"] = false
end
end
end
end
end
--------------------------------------------------------------------------------
-- KDFargelsSkill03
--------------------------------------------------------------------------------
function KDFargelsSkill03( Var, Handle, Skill, SkillInfo )
cExecCheck( "KDFargelsSkill03" )
if Var == nil then
return
end
if Handle == nil then
return
end
if Skill == nil then
return
end
if SkillInfo == nil then
return
end
local SummonList = Skill["Summon"]
local SummonData = SkillInfo["SUMMON_MOBDATA"]
if SummonList["Enable"] == true then
if SummonList["CheckTime"] <= Var["CurSec"] then
for i = 1, #SummonData do
local MobIdx = SummonData[i]["Index"]
local RegenX = SummonData[i]["x"]
local RegenY = SummonData[i]["y"]
local Radius = SummonData[i]["radius"]
if cMobRegen_Circle( Var["MapIndex"], MobIdx, RegenX, RegenY, Radius ) == nil then
--ErrorLog( "KDFargelsSkill03 :: MobRegen Fail. MobIdx = " .. MobIdx .. ", i = " ..i )
end
DebugLog( "KDFargelsSkill03 :: MobRegen" .. i )
end
SummonList["Enable"] = false
end
end
end
--------------------------------------------------------------------------------
-- RootManagerFunc
--------------------------------------------------------------------------------
function RootManagerFunc( Var, RootName )
cExecCheck "RootManagerFunc"
if Var == nil
then
ErrorLog( "RootManagerFunc:: Var == nil" )
return
end
if Var["RootManager"] == nil
then
return
end
if Var["RootManager"]["DelayTime"][RootName] > Var["CurSec"]
then
return
else
Var["RootManager"]["DelayTime"][RootName] = Var["RootManager"]["DelayTime"][RootName] + DelayTime["RootManagerFuncTick"]
end
if RootName == nil
then
ErrorLog( "RootManagerFunc:: RootName == nil" )
return
end
if RootInfo[RootName] == nil
then
ErrorLog( "RootManagerFunc:: Invalid RootName" )
return
end
local CurStep = Var["RootManager"][RootName]
if CurStep == 5
then
return
end
if CurStep <= 4
then
local CurCheckArea = RootInfo[RootName][CurStep]["AreaName"]
local CurOpenDoorName = RootInfo[RootName][CurStep]["OpenDoor"]
local CurOpenDoorHandle = Var["Door"][CurOpenDoorName]
if CurOpenDoorHandle == nil
then
ErrorLog( "RootManagerFunc:: Var[\"Door\"][CurOpenDoorName] == nil" )
return
end
local CurOpenDoorInfo = Var["Door"][CurOpenDoorHandle]["Info"]
if CurOpenDoorInfo == nil
then
ErrorLog( "RootManagerFunc:: Var[\"Door\"][CurOpenDoorHandle][\"Info\"] == nil" )
return
end
local CurRegenMobGroupInfo = DoorMobRegenInfo[CurOpenDoorName]
local bIsMobInArea = cIsMobTypeInArea( Var["MapIndex"], CurCheckArea, ObjectType["Mob"] )
if bIsMobInArea == 1
then
return
end
DebugLog( "RootManagerFunc:: Root : "..RootName..", clear Area : ".. CurCheckArea )
if cDoorAction( CurOpenDoorHandle, CurOpenDoorInfo["Block"], "open" ) == nil
then
ErrorLog( "RootManagerFunc:: Root : "..RootName..", Door Open Fail" ..CurOpenDoorName )
--return
end
for i = 1, #CurRegenMobGroupInfo
do
local CurMobGroupNum = CurRegenMobGroupInfo[i]["MobGroupNum"]
local CurMobGroupIdx = Var["AreaMobGroup"][CurMobGroupNum]
local CurMobGroupX = CurRegenMobGroupInfo[i]["x"]
local CurMobGroupY = CurRegenMobGroupInfo[i]["y"]
--[[
DebugLog( " 몹 리젠 : "..CurMobGroupNum )
DebugLog( "CurMobGroupNum ".. CurMobGroupNum )
DebugLog( "CurMobGroupIdx ".. CurMobGroupIdx )
DebugLog( "CurMobGroupX ".. CurMobGroupX )
DebugLog( "CurMobGroupY ".. CurMobGroupY )
--]]
if cGroupRegenInstance_XY( Var["MapIndex"], CurMobGroupIdx, CurMobGroupX, CurMobGroupY ) == nil
then
ErrorLog( "RootManagerFunc:: Root : "..RootName..", MobGroup Regen Fail"..MobGroupIdx )
end
end
Var["RootManager"][RootName] = Var["RootManager"][RootName] + 1
DebugLog( "RootManagerFunc :: Root : "..RootName.."다음 단계로 이동 .. ".. Var["RootManager"][RootName] )
end
return
end
--------------------------------------------------------------------------------
-- TeleportFunc
--------------------------------------------------------------------------------
function TeleportFunc( Var )
cExecCheck "TeleportFunc"
if Var == nil
then
ErrorLog( "RootManagerFunc:: Var == nil" )
return
end
if Var["TimeList"] == nil
then
return
end
if Var["TimeList"]["FaceCutArea"] == nil
then
return
end
if Var["TimeList"]["FaceCutArea"]["PlayerEntrance"] == nil
then
return
end
if Var["TimeList"]["FaceCutArea"]["PlayerEntrance"] > Var["CurSec"]
then
return
else
Var["TimeList"]["FaceCutArea"]["PlayerEntrance"] = Var["TimeList"]["FaceCutArea"]["PlayerEntrance"] + DelayTime["TeleportFuncTick"]
end
local TeleportInfo = AreaInfo["Zone5_Teleport"]
for i = 1, #TeleportInfo
do
local CurAreaName = TeleportInfo[i]["AreaName"]
local CurLinkX = TeleportInfo[i]["LinkX"]
local CurLinkY = TeleportInfo[i]["LinkY"]
local CurPlayerList = { cGetAreaObjectList( Var["MapIndex"], CurAreaName, ObjectType["Player"] ) }
if CurPlayerList ~= nil
then
if #CurPlayerList >= 1
then
for i = 1, #CurPlayerList
do
DebugLog( "TeleportFunc :: 캐릭터 이동 : " ..CurPlayerList[i] )
if cLinkTo( CurPlayerList[i], Var["MapIndex"], CurLinkX, CurLinkY ) == nil
then
ErrorLog( "TeleportFunc :: Link Fail.."..CurPlayerList[i] )
end
end
-- 링크하는 첫 유저일 경우,
if Var["TimeList"]["TeleportArea"] == nil
then
Var["TimeList"]["TeleportArea"] = {}
Var["TimeList"]["TeleportArea"]["PlayerEntrance"] = Var["CurSec"]
Var["TimeList"]["TeleportArea"]["Dialog_Blakan"] = Var["CurSec"] + Blakan_Data_Info["WaitBlakanDialog"]
Var["TimeList"]["TeleportArea"]["Dialog_Fagels"] = Var["CurSec"] + Blakan_Data_Info["WaitFagelsDialog"]
Var["TimeList"]["TeleportArea"]["SummonStart"] = Var["CurSec"] + Blakan_Data_Info["WaitFirstSummon"]
DebugLog( "TeleportFunc :: 첫 유저 진입시간 : " ..Var["TimeList"]["TeleportArea"]["PlayerEntrance"] )
DebugLog( "TeleportFunc :: 블라칸 대사할 시간 : " ..Var["TimeList"]["TeleportArea"]["Dialog_Blakan"] )
DebugLog( "TeleportFunc :: 파겔스 대사할 시간 : " ..Var["TimeList"]["TeleportArea"]["Dialog_Fagels"] )
DebugLog( "TeleportFunc :: 몹소환시작시간 : " ..Var["TimeList"]["TeleportArea"]["SummonStart"] )
end
end
end
end
return
end
--------------------------------------------------------------------------------
-- DebugLog
--------------------------------------------------------------------------------
function DebugLog( String )
if String == nil
then
cAssertLog( "DebugLog::String == nil" )
return
end
--cAssertLog( "Debug - "..String )
end
--------------------------------------------------------------------------------
-- ErrorLog
--------------------------------------------------------------------------------
function ErrorLog( String )
if String == nil
then
cAssertLog( "ErrorLog::String == nil" )
return
end
cAssertLog( "Error - "..String )
end