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.
1093 lines
40 KiB
1093 lines
40 KiB
require( "common" )
|
|
require( "ID/AdlFH/AdlFH_Loussier" ) -- 루시에 관련 스크립트
|
|
require( "ID/AdlFH/AdlFH_MagicStone" ) -- 비상작동마법석 관련 스크립트
|
|
require( "ID/AdlFH/AdlFH_Guarder" ) -- 경비병,마렌느 관련 스크립트
|
|
require( "ID/AdlFH/AdlFH_Gate" ) -- 게이트 관련 스크립트
|
|
require( "ID/AdlFH/AdlFH_Karen" ) -- 카렌 관련 스크립트
|
|
require( "ID/AdlFH/AdlFH_Zone1" )
|
|
require( "ID/AdlFH/AdlFH_Zone2" )
|
|
require( "ID/AdlFH/AdlFH_Zone3" )
|
|
require( "ID/AdlFH/AdlFH_Zone4" )
|
|
|
|
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
|
|
-- 스크립트 처리가 필요한 오브젝트들 리젠 정보
|
|
RegenInfo =
|
|
{
|
|
-- 이동 게이트, ( 인덱스 수정시 AdlF_Gate.lua파일의 진입함수 수정 )
|
|
-- 이동 위치는 AdlF_Gate.lua파일에서 cLinkTo 직접 수정
|
|
ExitGate = { Index = "Gate_ID_Complete", x = 2208, y = 9966, dir = 48, Title = "Exit Gate", Yes = "Exit", No = "Cancel" },
|
|
BossRoomGate= { Index = "Gate_ID_Exit", x = 9412, y = 20075, dir = 48, Title = "Exit Gate", Yes = "Exit", No = "Cancel" },
|
|
ExitBossGate= { Index = "Gate_ID_Exit", x = 12924, y = 6373, dir = 48, Title = "Exit Gate", Yes = "Exit", No = "Cancel" },
|
|
CompleteGate= { Index = "Gate_ID_Complete", x = 12720, y = 8518, dir = 48, Title = "Exit Gate", Yes = "Exit", No = "Cancel" },
|
|
|
|
-- 관문
|
|
Door1 = { Index = "AdlFH_Barrier01", x = 3203, y = 18025, dir = 176, Block = "DoorBlock01", scale = 1000},
|
|
Door2 = { Index = "AdlFH_Barrier02", x = 6144, y = 20229, dir = 270, Block = "DoorBlock02", scale = 1000},
|
|
|
|
-- 어둠의돌
|
|
DStone1 = { Index = "AdlFH_DStone", x = 2040, y = 15921, dir = 0 },
|
|
DStone2 = { Index = "AdlFH_DStone", x = 5091, y = 18970, dir = 0 },
|
|
DStone3 = { Index = "AdlFH_DStone", x = 2026, y = 22448, dir = 0 },
|
|
DStone4 = { Index = "AdlFH_DStone", x = 3450, y = 20235, dir = 0 },
|
|
|
|
-- 중간보스, 보스
|
|
Salare = { Index = "AdlFH_Salare", x = 5159, y = 20960, dir = 0 },
|
|
SalareMan= { Index = "AdlFH_SalareMan", },
|
|
|
|
Eglack = { Index = "AdlFH_Eglack", x = 12925, y = 9654, dir = 0 },
|
|
EglackMad= { Index = "AdlFH_EglackMad", },
|
|
EglackMan= { Index = "AdlFH_EglackMan", },
|
|
|
|
-- 카렌
|
|
Karen = { Index = "AdlFH_Karen", },
|
|
|
|
-- 비상작동마법석, 소환마법석
|
|
MStoneA = { Index = "AdlFH_EStone01", x = 11654, y = 21809, dir = 0 },
|
|
MStoneB = { Index = "AdlFH_EStone02", x = 11226, y = 18783, dir = 0 },
|
|
MStoneC = { Index = "AdlFH_EStone03", x = 8359, y = 21779, dir = 0 },
|
|
SStone = { Index = "AdlFH_RStone", x = 9934, y = 20479, dir = 0 },
|
|
|
|
-- 루시에
|
|
-- 평화상태시 HP가 회복되는 문제 때문에 HPRegen 추가
|
|
Loussier = { Index = "AdlFH_Loussier", x = 4245, y = 10349, dir = 0, BossRoomLoc = { x = 12720, y = 8518, dir = 180}, HPRegen = 0 },
|
|
|
|
-- 루시에 최초 이벤트 마렌느, 경비병
|
|
Marlene = { Index = "AdlFH_Marlene", x = 3620, y = 9549, dir = 0 },
|
|
Guard1 = { Index = "AdlFH_GuardAlber", x = 3584, y = 9418, dir = 0 },
|
|
Guard2 = { Index = "AdlFH_GuardEstelle", x = 3546, y = 9666, dir = 0 },
|
|
|
|
-- 루시에 최초 이벤트 몹들. 타락한 창병, 타락한 격투가
|
|
Zone1_Event = {
|
|
{ Index = "AdlFH_Fspearman", x = 4153, y = 10662, dir = 58 },
|
|
{ Index = "AdlFH_Fspearman", x = 4153, y = 10662, dir = 58 },
|
|
{ Index = "AdlFH_Fspearman", x = 4153, y = 10662, dir = 58 },
|
|
{ Index = "AdlFH_Fknuckleman", x = 4525, y = 10391, dir = 58 },
|
|
{ Index = "AdlFH_Fknuckleman", x = 4525, y = 10391, dir = 58 },
|
|
{ Index = "AdlFH_Fknuckleman", x = 4525, y = 10391, dir = 58 },
|
|
{ Index = "AdlFH_Fknuckleman", x = 4525, y = 10391, dir = 58 },
|
|
},
|
|
|
|
|
|
-- 1지역 리젠 그룹
|
|
Zone1_Regen_Group = {
|
|
"AdlFH_01_SP01",
|
|
"AdlFH_01_SP02",
|
|
"AdlFH_01_SP03",
|
|
"AdlFH_01_SP04",
|
|
"AdlFH_01_SP05",
|
|
"AdlFH_01_SP06",
|
|
"AdlFH_01_SP07",
|
|
"AdlFH_01_SP08",
|
|
"AdlFH_01_KN01",
|
|
"AdlFH_01_DL01",
|
|
},
|
|
Zone1_Regen_Franger = { -- AdlF_01_RA01, AdlF_01_RA02, AdlF_01_RA03
|
|
{ Index = "AdlFH_Franger", x = 4936, y = 15234, dir = 0 },
|
|
{ Index = "AdlFH_Franger", x = 4936, y = 15234, dir = 0 },
|
|
{ Index = "AdlFH_Franger", x = 4936, y = 15234, dir = 0 },
|
|
{ Index = "AdlFH_Franger", x = 3525, y = 16058, dir = 0 },
|
|
{ Index = "AdlFH_Franger", x = 3525, y = 16058, dir = 0 },
|
|
{ Index = "AdlFH_Franger", x = 3525, y = 16058, dir = 0 },
|
|
{ Index = "AdlFH_Franger", x = 2975, y = 16316, dir = 0 },
|
|
{ Index = "AdlFH_Franger", x = 2975, y = 16316, dir = 0 },
|
|
{ Index = "AdlFH_Franger", x = 2975, y = 16316, dir = 0 },
|
|
},
|
|
|
|
-- 2지역 리젠 그룹
|
|
Zone2_Regen_Group = {
|
|
"AdlFH_02_SP01",
|
|
"AdlFH_02_SP02",
|
|
"AdlFH_02_KN01",
|
|
"AdlFH_02_KN02",
|
|
"AdlFH_02_DL01",
|
|
"AdlFH_02_DL02",
|
|
"AdlFH_02_DL03",
|
|
},
|
|
|
|
Zone2_Regen_Franger = { -- AdlF_02_RA01, AdlF_02_RA02, AdlF_02_RA03, AdlF_02_RA04, AdlF_02_RA05, AdlF_02_RA06, AdlF_02_RA07
|
|
{ Index = "AdlFH_Franger", x = 1918, y = 19135, dir = 0 },
|
|
{ Index = "AdlFH_Franger", x = 1918, y = 19135, dir = 0 },
|
|
{ Index = "AdlFH_Franger", x = 1918, y = 19135, dir = 0 },
|
|
{ Index = "AdlFH_Franger", x = 2244, y = 19803, dir = 0 },
|
|
{ Index = "AdlFH_Franger", x = 2244, y = 19803, dir = 0 },
|
|
{ Index = "AdlFH_Franger", x = 2244, y = 19803, dir = 0 },
|
|
{ Index = "AdlFH_Franger", x = 1990, y = 20712, dir = 0 },
|
|
{ Index = "AdlFH_Franger", x = 1990, y = 20712, dir = 0 },
|
|
{ Index = "AdlFH_Franger", x = 1990, y = 20712, dir = 0 },
|
|
{ Index = "AdlFH_Franger", x = 1928, y = 21447, dir = 0 },
|
|
{ Index = "AdlFH_Franger", x = 1928, y = 21447, dir = 0 },
|
|
{ Index = "AdlFH_Franger", x = 1928, y = 21447, dir = 0 },
|
|
{ Index = "AdlFH_Franger", x = 5080, y = 22412, dir = 0 },
|
|
{ Index = "AdlFH_Franger", x = 5080, y = 22412, dir = 0 },
|
|
{ Index = "AdlFH_Franger", x = 5080, y = 22412, dir = 0 },
|
|
{ Index = "AdlFH_Franger", x = 5290, y = 21987, dir = 0 },
|
|
{ Index = "AdlFH_Franger", x = 5290, y = 21987, dir = 0 },
|
|
{ Index = "AdlFH_Franger", x = 5290, y = 21987, dir = 0 },
|
|
{ Index = "AdlFH_Franger", x = 5131, y = 21553, dir = 0 },
|
|
{ Index = "AdlFH_Franger", x = 5131, y = 21553, dir = 0 },
|
|
{ Index = "AdlFH_Franger", x = 5131, y = 21553, dir = 0 },
|
|
},
|
|
|
|
-- 3지역 리젠 그룹
|
|
Zone3_Regen_Group = {
|
|
"AdlFH_03_KN01",
|
|
"AdlFH_03_KN02",
|
|
"AdlFH_03_KN03",
|
|
},
|
|
}
|
|
|
|
|
|
-- 대화 이벤트 관련 내용
|
|
DialogInfo =
|
|
{
|
|
-- 루시에 죽을 때
|
|
Loussier_Death =
|
|
{
|
|
{ Portrait = "AdlLoussier", FileName = "AdlFH", Index = "Loussier_Dead", Delay = 2 },
|
|
},
|
|
|
|
Marlene_Death =
|
|
{
|
|
{ Portrait = "AdlMarlene", FileName = "AdlFH", Index = "Marlene_Dead", Delay = 2 },
|
|
},
|
|
|
|
-- 루시에 구출 이벤트 발생시
|
|
Loussier_Rescue_Event =
|
|
{
|
|
{ Portrait = "EldSpeGuard01", FileName = "AdlFH", Index = "GuardAlber01_01H", Delay = 2 },
|
|
{ Portrait = "AdlMarlene", FileName = "AdlFH", Index = "Marlene01_01H", Delay = 3 },
|
|
{ Portrait = "EldSpeGuard01", FileName = "AdlFH", Index = "GuardAlber01_02H", Delay = 2 },
|
|
},
|
|
|
|
-- 루시에 구출 이벤트 성공시
|
|
Loussier_Rescue_Succ =
|
|
{
|
|
--보스끼리 대화
|
|
{ Portrait = "Salare", FileName = "AdlFH", Index = "Salare01_S01H", Delay = 2 },
|
|
{ Portrait = "Eglack", FileName = "AdlFH", Index = "Eglack01_S01H", Delay = 2 },
|
|
{ Portrait = "Salare", FileName = "AdlFH", Index = "Salare01_S02H", Delay = 2 },
|
|
{ Portrait = "Eglack", FileName = "AdlFH", Index = "Eglack01_S02H", Delay = 4 },
|
|
--엔피씨 대화
|
|
{ Portrait = "AdlMarlene", FileName = "AdlFH", Index = "Marlene01_S01H", Delay = 2 },
|
|
{ Portrait = "AdlLoussier", FileName = "AdlFH", Index = "Loussier01_S01H", Delay = 2 },
|
|
{ Portrait = "EldSpeGuard01", FileName = "AdlFH", Index = "GuardAlber01_S01H", Delay = 2 },
|
|
{ Portrait = "AdlLoussier", FileName = "AdlFH", Index = "Loussier01_S02H", Delay = 3 },
|
|
{ Portrait = "AdlLoussier", FileName = "AdlFH", Index = "Loussier01_S03H", Delay = 2 },
|
|
{ Portrait = "AdlLoussier", FileName = "AdlFH", Index = "Loussier01_S04H", Delay = 2 },
|
|
{ Portrait = "AdlLoussier", FileName = "AdlFH", Index = "Loussier01_S05H", Delay = 3 },
|
|
{ Portrait = "EldSpeGuard01", FileName = "AdlFH", Index = "GuardAlber01_S02H", Delay = 2 },
|
|
{ Portrait = "AdlMarlene", FileName = "AdlFH", Index = "Marlene01_S02H", Delay = 3 },
|
|
{ Portrait = "AdlLoussier", FileName = "AdlFH", Index = "Loussier01_S06H", Delay = 2 },
|
|
{ Portrait = "AdlMarlene", FileName = "AdlFH", Index = "Marlene01_S03H", Delay = 2 },
|
|
{ Portrait = "AdlLoussier", FileName = "AdlFH", Index = "Loussier01_S07H", Delay = 3 },
|
|
{ Portrait = "AdlLoussier", FileName = "AdlFH", Index = "Loussier01_S08H", Delay = 3 },
|
|
{ Portrait = "AdlMarlene", FileName = "AdlFH", Index = "Marlene01_S04H", Delay = 4 },
|
|
},
|
|
|
|
-- 루시에 구출 이벤트 실패시
|
|
Loussier_Rescue_Fail =
|
|
{
|
|
{ Portrait = "Salare", FileName = "AdlFH", Index = "Salare01_F01H", Delay = 2 },
|
|
{ Portrait = "Eglack", FileName = "AdlFH", Index = "Eglack01_F01H", Delay = 3 },
|
|
},
|
|
|
|
-- 살라르 진입 전. 살라르, 이그렉 대화
|
|
Zone2_Event1 =
|
|
{
|
|
{ Portrait = "Salare", FileName = "AdlFH", Index = "Salare03_01H", Delay = 3 },
|
|
{ Portrait = "Eglack", FileName = "AdlFH", Index = "Eglack03_01H", Delay = 3 },
|
|
{ Portrait = "Salare", FileName = "AdlFH", Index = "Salare03_02H", Delay = 3 },
|
|
{ Portrait = "Eglack", FileName = "AdlFH", Index = "Eglack03_02H", Delay = 2 },
|
|
},
|
|
|
|
-- 살라르 진입. 살라르, 루시에 대화
|
|
Zone2_Event2_alive =
|
|
{
|
|
{ Portrait = "Salare", FileName = "AdlFH", Index = "Salare03_S01H", Delay = 3 },
|
|
{ Portrait = "AdlLoussier", FileName = "AdlFH", Index = "Loussier03_S01H", Delay = 3 },
|
|
{ Portrait = "Salare", FileName = "AdlFH", Index = "Salare03_S02H", Delay = 3 },
|
|
{ Portrait = "AdlLoussier", FileName = "AdlFH", Index = "Loussier03_S02H", Delay = 2 },
|
|
},
|
|
|
|
-- 살라르 진입. 살라르 대화
|
|
Zone2_Event2_Dead =
|
|
{
|
|
{ Portrait = "Salare", FileName = "AdlFH", Index = "Salare03_F01H", Delay = 4 },
|
|
},
|
|
|
|
-- 살라르 전투 종료
|
|
Zone2_Event3_Dead =
|
|
{
|
|
{ Portrait = "Salare", FileName = "AdlFH", Index = "Salare03_F02H", Delay = 4 },
|
|
},
|
|
|
|
Zone2_Event3_alive_1 =
|
|
{
|
|
{ Portrait = "Salare", FileName = "AdlFH", Index = "Salare03_S03H", Delay = 4 },
|
|
{ Portrait = "AdlLoussier", FileName = "AdlFH", Index = "Loussier03_S03H", Delay = 4 },
|
|
},
|
|
|
|
Zone2_Event3_alive_2 =
|
|
{
|
|
{ Portrait = "Salare", FileName = "AdlFH", Index = "Salare03_S04H", Delay = 1 },
|
|
},
|
|
|
|
Zone2_Event3_alive_3 =
|
|
{
|
|
{ Portrait = "AdlLoussier", FileName = "AdlFH", Index = "Loussier03_S04H", Delay = 3 },
|
|
{ Portrait = "SalareMan", FileName = "AdlFH", Index = "SalareMan03_S01H", Delay = 3 },
|
|
{ Portrait = "AdlLoussier", FileName = "AdlFH", Index = "Loussier03_S05H", Delay = 3 },
|
|
{ Portrait = "AdlLoussier", FileName = "AdlFH", Index = "Loussier03_S06H", Delay = 3 },
|
|
{ Portrait = "SalareMan", FileName = "AdlFH", Index = "SalareMan03_S02H", Delay = 3 },
|
|
{ Portrait = "SalareMan", FileName = "AdlFH", Index = "SalareMan03_S03H", Delay = 3 },
|
|
{ Portrait = "AdlLoussier", FileName = "AdlFH", Index = "Loussier03_S07H", Delay = 3 },
|
|
{ Portrait = "SalareMan", FileName = "AdlFH", Index = "SalareMan03_S04H", Delay = 3 },
|
|
{ Portrait = "AdlLoussier", FileName = "AdlFH", Index = "Loussier03_S08H", Delay = 3 },
|
|
{ Portrait = "SalareMan", FileName = "AdlFH", Index = "SalareMan03_S05H", Delay = 3 },
|
|
{ Portrait = "AdlLoussier", FileName = "AdlFH", Index = "Loussier03_S09H", Delay = 3 },
|
|
},
|
|
|
|
-- 3지역 입장
|
|
Zone3_ChatEvent =
|
|
{
|
|
{ Portrait = "Eglack", FileName = "AdlFH", Index = "Eglack04_01H", Delay = 2 },
|
|
{ Portrait = "Eglack", FileName = "AdlFH", Index = "Eglack04_02H", Delay = 2 },
|
|
},
|
|
|
|
-- 4지역 보스
|
|
Zone4_Event1_alive =
|
|
{
|
|
{ Portrait = "Eglack", FileName = "AdlFH", Index = "Eglack05_S01H", Delay = 3 },
|
|
{ Portrait = "AdlLoussier", FileName = "AdlFH", Index = "Loussier05_S01H", Delay = 3 },
|
|
{ Portrait = "Eglack", FileName = "AdlFH", Index = "Eglack05_S02H", Delay = 3 },
|
|
},
|
|
|
|
Zone4_Event1_Dead =
|
|
{
|
|
{ Portrait = "Eglack", FileName = "AdlFH", Index = "Eglack05_F01H", Delay = 2 },
|
|
{ Portrait = "Eglack", FileName = "AdlFH", Index = "Eglack05_F02H", Delay = 2 },
|
|
},
|
|
|
|
-- 4지역 전투 후
|
|
Zone4_Event2_alive_1 =
|
|
{
|
|
{ Portrait = "EglackMan", FileName = "AdlFH", Index = "EglackMan05_S01H", Delay = 3 },
|
|
{ Portrait = "AdlLoussier", FileName = "AdlFH", Index = "Loussier05_S02H", Delay = 3 },
|
|
{ Portrait = "AdlLoussier", FileName = "AdlFH", Index = "Loussier05_S03H", Delay = 3 },
|
|
{ Portrait = "AdlLoussier", FileName = "AdlFH", Index = "Loussier05_S04H", Delay = 2 },
|
|
{ Portrait = "EglackMan", FileName = "AdlFH", Index = "EglackMan05_S02H", Delay = 2 },
|
|
{ Portrait = "AdlLoussier", FileName = "AdlFH", Index = "Loussier05_S05H", Delay = 3 },
|
|
{ Portrait = "EglackMan", FileName = "AdlFH", Index = "EglackMan05_S03H", Delay = 2 },
|
|
{ Portrait = "EglackMan", FileName = "AdlFH", Index = "EglackMan05_S04H", Delay = 3 },
|
|
{ Portrait = "EglackMan", FileName = "AdlFH", Index = "EglackMan05_S05H", Delay = 4 },
|
|
{ Portrait = "AdlLoussier", FileName = "AdlFH", Index = "Loussier05_S06H", Delay = 3 },
|
|
{ Portrait = "EglackMan", FileName = "AdlFH", Index = "EglackMan05_S06H", Delay = 2 },
|
|
},
|
|
|
|
Zone4_Event2_alive_2 =
|
|
{
|
|
{ Portrait = "EglackMan", FileName = "AdlFH", Index = "EglackMan05_S07H", Delay = 2 },
|
|
{ Portrait = "AdlLoussier", FileName = "AdlFH", Index = "Loussier05_S07H", Delay = 2 },
|
|
},
|
|
|
|
Zone4_Event2_Dead_1 =
|
|
{
|
|
{ Portrait = "Eglack", FileName = "AdlFH", Index = "Eglack05_F03H", Delay = 4 },
|
|
{ Portrait = "AdlF_Karen", FileName = "AdlFH", Index = "Karen05_F01H", Delay = 2 },
|
|
{ Portrait = "Eglack", FileName = "AdlFH", Index = "Eglack05_F04AH", Delay = 2 },
|
|
{ Portrait = "AdlF_Karen", FileName = "AdlFH", Index = "Karen05_F02H", Delay = 4 },
|
|
{ Portrait = "Eglack", FileName = "AdlFH", Index = "Eglack05_F04BH", Delay = 3 },
|
|
{ Portrait = "AdlF_Karen", FileName = "AdlFH", Index = "Karen05_F03H", Delay = 2 },
|
|
{ Portrait = "Eglack", FileName = "AdlFH", Index = "Eglack05_F05H", Delay = 2 },
|
|
},
|
|
|
|
Zone4_Event2_Dead_2 =
|
|
{
|
|
{ Portrait = "Eglack", FileName = "AdlFH", Index = "EglackMad05_F01H", Delay = 4 },
|
|
},
|
|
|
|
-- 4지역 2차 전투 후
|
|
Zone4_Event3_Dead =
|
|
{
|
|
{ Portrait = "Eglack", FileName = "AdlFH", Index = "EglackMad05_F02H", Delay = 2 },
|
|
{ Portrait = "AdlF_Karen", FileName = "AdlFH", Index = "Karen05_F04H", Delay = 3 },
|
|
},
|
|
}
|
|
|
|
|
|
-- 임시
|
|
-- 플레이어 카메라 무빙중 걸어줄 상태이상
|
|
STUN = "StaAdlFStun"
|
|
-- 루시에 버프
|
|
LOUSSIBUF = "StaAdlFLoussier_H"
|
|
|
|
|
|
-- 공지, 루시에 따라가기 설정시 스크립트 메시지
|
|
AnnounceInfo =
|
|
{
|
|
AdlF_Mission_01_001 = "AdlF_Mission_01_001", --" 미션 : 루시에를 몬스터의 공격으로 부터 구출하라."
|
|
AdlF_Mission_01_002 = "AdlF_Mission_01_002", --" 미션 : 어둠의 돌을 파괴하여 첫번째 관문을 돌파하라."
|
|
AdlF_Mission_01_002H = "AdlF_Mission_01_002H", --" 미션 : 루시에를 몬스터의 공격으로 부터 구출하라. 팁 : 회복의 샘으로 이동하면 광기 디버프가 사라집니다."
|
|
AdlF_Msg_01_001 = "AdlF_Msg_01_001", --" 관문의 어둠의 힘이 해제되었습니다."
|
|
AdlF_Mission_02_001 = "AdlF_Mission_02_001", --" 미션 : 어둠의 돌을 모두 파괴하여 두번째 관문을 돌파하라. (d%/3)"
|
|
AdlF_Msg_02_001 = "AdlF_Msg_02_001", --" 관문의 어둠의 힘이 해제되었습니다."
|
|
AdlF_Mission_02_002 = "AdlF_Mission_02_002", --" 미션: 살라르를 쓰터르려라. "
|
|
AdlF_Msg_02_002 = "AdlF_Msg_02_002", --" 관문의 어둠의 힘이 해제되었습니다."
|
|
AdlF_Mission_03_001 = "AdlF_Mission_03_001", -- 소환마법석 작동 루시에 없음
|
|
AdlF_Mission_03_002 = "AdlF_Mission_03_002", -- 소환마법석 작동 루시에 있음
|
|
AdlF_Msg_03_001 = "AdlF_Msg_03_001", --" 소환 마법석이 작동 됩니다. 작동 될 때까지 3분의 시간이 소요 됩니다."
|
|
AdlF_Mission_03_003 = "AdlF_Mission_03_003", --" 미션: 몬스터의 공격이 시작 됩니다. 소환 마법석이 작동 될 때까지 몬스터의 공격을 막아내라."
|
|
AdlF_Tip_03_001 = "AdlF_Tip_03_001", --" 팁 : 비상작동 마법석을 재작동 하면 일정 시간 동안 소환 되는 몬스터의 수가 줄어듭니다."
|
|
AdlF_Msg_03_F_001 = "AdlF_Msg_03_F_001", --"10초후 소환 마법석이 다시 소환 됩니다."
|
|
AdlF_Mission_04_001 = "AdlF_Mission_04_001", --" 미션: 마을을 파괴하는 이그렉을 무찔러 마을을 수호하라."
|
|
AdlF_Loussier_Follow = "AdlF_Loussier_Follow", --" 루시에가 [%s]을 따라다닙니다."
|
|
AdlF_Loussier_RStone = "AdlF_Loussier_RStone", --루시에 소환마법석 작동 위치 아닐시 메시지
|
|
}
|
|
|
|
|
|
-- 지역정보
|
|
AreaIndex =
|
|
{
|
|
Zone1_1 = "AdlF_Zone01_1", -- 1지역 루시에 구출 이벤트 발생
|
|
Zone2_1 = "AdlF_Zone02_1", -- 2지역 전부. ????루시에 존재여부 판단용????
|
|
Zone2_2 = "AdlF_Zone02_2", -- 2지역 보스간 대화 발생
|
|
Zone2_3 = "AdlF_Zone02_3", -- 2지역 보스 & NPC 대화 발생, 루시에 유무 판단
|
|
Zone3_1 = "AdlF_Zone03_1", -- 3지역 소환마법석 충돌범위
|
|
Zone3_2 = "AdlF_Zone03_2", -- 3지역 루시에 소환마법석 스킬 사용 가능 범위
|
|
Zone3_3 = "AdlF_Zone03_3", -- 3지역 전체. 3지역 몬스터 소환석으로 이동하기위함, 실패시 데미지 주기위함, 입장 체크
|
|
Zone4_1 = "AdlF_Zone04_1", -- 4지역 대화이벤트 발생
|
|
Zone4_2 = "AdlF_Zone04_2", -- 4지역 보스방 지역. 카렌 스킬 사용 범위
|
|
}
|
|
|
|
|
|
-- 1지역 이벤트 카메라 처리 정보 , 추가시 마지막줄에 추가
|
|
-- x, y = 카메라 뷰 좌표
|
|
-- AngleXZ = 0 : 맵의 북쪽 ~ 180 : 맵의 남쪽
|
|
-- AngleY = 0 : 케릭터와 동일 선상 ~ 90 : 케릭터 머리 위에서 보는 각도
|
|
-- Dist = 뷰 좌표와의 거리
|
|
CameraMoveInfo =
|
|
{
|
|
--[[ 1 ]] { x = RegenInfo.Loussier.x, y = RegenInfo.Loussier.y, AngleXZ = 315, AngleY = 20, Dist = 400 },
|
|
--[[ 2 ]] { x = RegenInfo.Marlene.x, y = RegenInfo.Marlene.y, AngleXZ = 0, AngleY = 30, Dist = 400 },
|
|
--[[ 3 ]] { x = RegenInfo.Loussier.x, y = RegenInfo.Loussier.y, AngleXZ = 135, AngleY = 20, Dist = 600 },
|
|
}
|
|
|
|
|
|
-- 연출 애니메이션 인덱스
|
|
AniIndex =
|
|
{
|
|
CharactorCasting = "ActionProduct", -- 캐릭터 비상작동 캐스팅
|
|
MagicStoneActive = {
|
|
"EStone01_Idle1",
|
|
"EStone02_Idle1",
|
|
"EStone03_Idle1",
|
|
},
|
|
SummonStone = {
|
|
"RStone_Idle",
|
|
"RStone_Idle1",
|
|
"RStone_Idle2",
|
|
"RStone_Idle3",
|
|
},
|
|
-- 소환마법석
|
|
}
|
|
|
|
-- 3지역 몬스터 방어 이벤트 정보
|
|
WaveEvent =
|
|
{
|
|
-- 방어해야 하는 시간.
|
|
Timer = 180,
|
|
|
|
-- 소환마법석 hp
|
|
SummonStone_HP = 9,
|
|
|
|
-- 비상작동 캐스팅시간, 활성화 시간. 초단위
|
|
MS_CastingTime = 3,
|
|
MS_ActiveTime = 10, -- RStone 이 활성화되기 전에 사용
|
|
MS_NonActiveTime = 30, -- RStone 이 활성화된 후에 사용
|
|
MS_TipMessageTime = 15, -- 이벤트 시작 15초 후 팁 메시지 출력
|
|
|
|
-- 몹들이동위치, 소환마법석 좌표
|
|
-- 좌표를 사용하지 않고 소환마법석 위치로 이동
|
|
--MoveTo = { x = 9947, y = 20481 },
|
|
|
|
-- 각 웨이브 선딜레이.(
|
|
WaveTime = { 20, 15, 15, 15, 15, 15, 15, 10, 10, 10, 10, 10, 10, 10 },
|
|
|
|
-- 몹들정보
|
|
MobInfo =
|
|
{
|
|
MStoneA =
|
|
{
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 11136, y = 21356, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 11136, y = 21356, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 11136, y = 21356, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 11136, y = 21356, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 11136, y = 21356, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 11136, y = 21356, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 11136, y = 21356, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 11136, y = 21356, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 11136, y = 21356, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 11136, y = 21356, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 11136, y = 21356, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 11136, y = 21356, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 11136, y = 21356, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 11136, y = 21356, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
},
|
|
|
|
MStoneB =
|
|
{
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 10751, y = 19360, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 10751, y = 19360, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 10751, y = 19360, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 10751, y = 19360, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 10751, y = 19360, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 10751, y = 19360, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 10751, y = 19360, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 10751, y = 19360, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 10751, y = 19360, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 10751, y = 19360, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 10751, y = 19360, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 10751, y = 19360, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 10751, y = 19360, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 10751, y = 19360, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
},
|
|
|
|
MStoneC =
|
|
{
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 8791, y = 21486, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 8791, y = 21486, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 8791, y = 21486, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 8791, y = 21486, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 8791, y = 21486, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 8791, y = 21486, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 8791, y = 21486, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 8791, y = 21486, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 8791, y = 21486, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 8791, y = 21486, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 8791, y = 21486, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 8791, y = 21486, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 8791, y = 21486, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
{ MobIndex = "AdlFH_Fknuckleman", x = 8791, y = 21486, dir = 0, HP = 11, RunSpeed = 100, AC = 1, MR = 1, MobEXP = 2, ActiveSummonNum = 1, NonActiveSummonNum = 2 },
|
|
}
|
|
},
|
|
}
|
|
|
|
|
|
|
|
-- 생명의 샘 정보
|
|
FountainOfLife =
|
|
{
|
|
-- 체크 간격
|
|
CheckInterval = 1.0,
|
|
|
|
-- 지울 상태이상 인덱스
|
|
DispelAbstate = { "StaAdlFHCrazy" },
|
|
|
|
-- 대상 검색 정보
|
|
Area =
|
|
{
|
|
{ x = 5530, y = 12751, Range = 350, },
|
|
{ x = 2327, y = 17295, Range = 350, },
|
|
{ x = 3364, y = 22514, Range = 350, },
|
|
},
|
|
}
|
|
|
|
|
|
|
|
|
|
function WaveMobDummy( Handle, MapIndex )
|
|
cExecCheck "WaveMobDummy"
|
|
return ReturnAI.END
|
|
end
|
|
|
|
-- 웨이브 몹 인덱스 모두 추가 필요.
|
|
function AdlFH_DStone ( Handle, MapIndex ) return WaveMobDummy( Handle, MapIndex ) end -- 공격 당할시 회전 하는 문제 때문에 다시 추가
|
|
function AdlFH_Fknuckleman ( Handle, MapIndex ) return WaveMobDummy( Handle, MapIndex ) end
|
|
|
|
|
|
|
|
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
|
|
|
|
|
|
function Dummy( Var )
|
|
return
|
|
end
|
|
|
|
|
|
|
|
|
|
function Main( Field )
|
|
cExecCheck "Main"
|
|
|
|
local Var = InstanceField[Field]
|
|
|
|
if Var == nil then
|
|
|
|
InstanceField[Field] = {}
|
|
|
|
Var = InstanceField[Field]
|
|
Var.MapIndex = Field
|
|
|
|
Var.ControlFunc = StepControl
|
|
Var.StepFunc = Dummy
|
|
|
|
Var.FountainOfLife_CheckTime = cCurrentSecond()
|
|
Var.FountainOfLife_Use = false
|
|
end
|
|
|
|
|
|
Var.ControlFunc( Var )
|
|
Var.StepFunc( Var )
|
|
|
|
FountainOfLifeControl( Var )
|
|
|
|
return
|
|
end
|
|
|
|
|
|
--[[ ]]--
|
|
--[[ 관문 및 주 흐름 관리 ]]--
|
|
--[[ ]]--
|
|
function StepControl( Var )
|
|
cExecCheck "StepControl"
|
|
|
|
if Var.LoussierHandle ~= nil then
|
|
if cIsObjectDead( Var.LoussierHandle ) ~= nil then
|
|
Var.LoussierHandle = nil
|
|
end
|
|
end
|
|
|
|
-- 어둠의돌, 보스들, 루시에, 관문 등 셋팅
|
|
if Var.Step == nil then
|
|
|
|
Var.Step = 1
|
|
Var.StepFunc = Default_Setting
|
|
|
|
return
|
|
end
|
|
|
|
|
|
-- 1지역 셋팅후에 루시에 구출 이벤트 처리
|
|
if Var.Step == 1 then
|
|
|
|
Var.Step = 3
|
|
Var.StepFunc = Zone1_Setting -- Zone1_LoussierRescueEvent
|
|
|
|
return
|
|
end
|
|
|
|
|
|
-- 1지역 어둠의돌이 죽으면 1관문 열고 2지역 셋팅
|
|
if Var.Step == 3 then
|
|
|
|
-- 어둠의돌이 리젠 됐는지 체크
|
|
if Var.Zone_1_Darkstone_1 == nil then
|
|
return
|
|
end
|
|
|
|
if cIsObjectDead( Var.Zone_1_Darkstone_1 ) ~= nil then
|
|
|
|
Var.Zone_1_Darkstone_1 = nil
|
|
|
|
Var.Step = 4
|
|
Var.StepFunc = Zone2_Setting
|
|
|
|
cDoorAction( Var.Door1, RegenInfo.Door1.Block, "open" )
|
|
|
|
cScriptMessage( Var.MapIndex, AnnounceInfo.AdlF_Msg_01_001 )
|
|
end
|
|
|
|
return
|
|
end
|
|
|
|
|
|
-- 2지역 입장 대기
|
|
if Var.Step == 4 then
|
|
|
|
local Object = cGetAreaObjectList( Var.MapIndex, AreaIndex.Zone2_1, ObjectType.Player )
|
|
|
|
if Object == nil then
|
|
return
|
|
end
|
|
|
|
Var.Step = 5
|
|
|
|
return
|
|
end
|
|
|
|
|
|
-- 2지역 어둠의돌 3개가 죽었으면 2지역 첫번째 관문 연다
|
|
if Var.Step == 5 then
|
|
|
|
local darkstone = 0
|
|
|
|
|
|
if Var.Zone_2_Darkstone_1 == nil then
|
|
darkstone = darkstone + 1
|
|
elseif cIsObjectDead( Var.Zone_2_Darkstone_1 ) ~= nil then
|
|
Var.Zone_2_Darkstone_1 = nil
|
|
end
|
|
if Var.Zone_2_Darkstone_2 == nil then
|
|
darkstone = darkstone + 1
|
|
elseif cIsObjectDead( Var.Zone_2_Darkstone_2 ) ~= nil then
|
|
Var.Zone_2_Darkstone_2 = nil
|
|
end
|
|
if Var.Zone_2_Darkstone_3 == nil then
|
|
darkstone = darkstone + 1
|
|
elseif cIsObjectDead( Var.Zone_2_Darkstone_3 ) ~= nil then
|
|
Var.Zone_2_Darkstone_3 = nil
|
|
end
|
|
|
|
|
|
if Var.DarkStoneCount == nil then
|
|
Var.DarkStoneCount = 0
|
|
cScriptMessage( Var.MapIndex, AnnounceInfo.AdlF_Mission_02_001, Var.DarkStoneCount )
|
|
end
|
|
|
|
if Var.DarkStoneCount < 3 then
|
|
|
|
if Var.DarkStoneCount < darkstone then
|
|
|
|
Var.DarkStoneCount = darkstone
|
|
cScriptMessage( Var.MapIndex, AnnounceInfo.AdlF_Mission_02_001, Var.DarkStoneCount )
|
|
|
|
return
|
|
end
|
|
|
|
return
|
|
end
|
|
|
|
|
|
-- 관문에 대한 내용 수정에 따라 이 부분에서 살라르 소환 하도록함
|
|
Var.Salare = cMobRegen_XY( Var.MapIndex, RegenInfo.Salare.Index, RegenInfo.Salare.x, RegenInfo.Salare.y, RegenInfo.Salare.dir )
|
|
|
|
cSetDeadDelayTime( Var.Salare, 9999 )
|
|
|
|
if Var.Salare == nil then
|
|
cDebugLog( "Fail cMobRegen_XY Salare" )
|
|
return
|
|
end
|
|
|
|
|
|
Var.Step = 6
|
|
Var.StepFunc = Zone2_ChatEvent_1
|
|
Var.DarkStoneCount = nil
|
|
|
|
return
|
|
end
|
|
|
|
|
|
-- 살라르 전투 후 연출
|
|
if Var.Step == 6 then
|
|
|
|
if cIsObjectDead( Var.Salare ) ~= nil then
|
|
|
|
Var.SalareDeadLocX, Var.SalareDeadLocY = cObjectLocate( Var.Salare )
|
|
Var.SalareDeadDir = cGetDirect( Var.Salare )
|
|
|
|
Var.Step = 7
|
|
Var.StepFunc = Zone2_ChatEvent_3
|
|
|
|
end
|
|
|
|
return
|
|
end
|
|
|
|
|
|
-- 3지역 입장 체크
|
|
if Var.Step == 7 then
|
|
|
|
local Object = cGetAreaObjectList( Var.MapIndex, AreaIndex.Zone3_3, ObjectType.Player )
|
|
|
|
if Object == nil then
|
|
return
|
|
end
|
|
|
|
Var.Step = 8
|
|
Var.StepFunc = Zone3_Setting
|
|
|
|
return
|
|
end
|
|
|
|
|
|
-- 웨이브 이벤트 시작 체크
|
|
if Var.Step == 8 then
|
|
|
|
-- 비상 작동 마법석 시간 체크해서 풀어줌 3개 다 활성화시 소환마법석 작동
|
|
local CurSec = cCurrentSecond()
|
|
local msCount = 0
|
|
|
|
if Var.MagicStoneA_ActiveTime ~= nil then
|
|
|
|
if Var.MagicStoneA_ActiveTime < CurSec then
|
|
Var.MagicStoneA_ActiveTime = nil
|
|
cAnimate( Var.Magic_stoneA, "stop" )
|
|
else
|
|
msCount = msCount + 1
|
|
end
|
|
|
|
end
|
|
if Var.MagicStoneB_ActiveTime ~= nil then
|
|
|
|
if Var.MagicStoneB_ActiveTime < CurSec then
|
|
Var.MagicStoneB_ActiveTime = nil
|
|
cAnimate( Var.Magic_stoneB, "stop" )
|
|
else
|
|
msCount = msCount + 1
|
|
end
|
|
|
|
end
|
|
if Var.MagicStoneC_ActiveTime ~= nil then
|
|
|
|
if Var.MagicStoneC_ActiveTime < CurSec then
|
|
Var.MagicStoneC_ActiveTime = nil
|
|
|
|
cAnimate( Var.Magic_stoneC, "stop" )
|
|
|
|
else
|
|
msCount = msCount + 1
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
if Var.msCount == nil then
|
|
Var.msCount = 0
|
|
end
|
|
|
|
|
|
-- 비상작동 전부 활성중인지 체크
|
|
if msCount == 3 then
|
|
Var.SummonStone_Active = "MagicStone"
|
|
end
|
|
|
|
|
|
if Var.msCount ~= msCount then
|
|
|
|
Var.msCount = msCount
|
|
cAnimate( Var.SummonStone, "start", AniIndex.SummonStone[Var.msCount+1] )
|
|
cScriptMessage( Var.MapIndex, AnnounceInfo.AdlF_Mission_03_001, Var.msCount )
|
|
|
|
return
|
|
end
|
|
|
|
-- 루시에 작동 & 비상작동
|
|
if Var.SummonStone_Active ~= nil then
|
|
|
|
if Var.SummonStone_Active == "Loussier" then
|
|
|
|
cAnimate( Var.Magic_stoneA, "start", AniIndex.MagicStoneActive[1] )
|
|
cAnimate( Var.Magic_stoneB, "start", AniIndex.MagicStoneActive[2] )
|
|
cAnimate( Var.Magic_stoneC, "start", AniIndex.MagicStoneActive[3] )
|
|
|
|
Var.MagicStoneA_ActiveTime = nil
|
|
Var.MagicStoneB_ActiveTime = nil
|
|
Var.MagicStoneC_ActiveTime = nil
|
|
end
|
|
|
|
|
|
cAnimate( Var.SummonStone, "start", AniIndex.SummonStone[#AniIndex.SummonStone] )
|
|
|
|
Var.msCount = nil
|
|
Var.Zone3_WaveTimer = CurSec + WaveEvent.Timer
|
|
|
|
|
|
Var.Step = 9
|
|
Var.StepFunc = Zone3_WaveEvent
|
|
|
|
cTimer( Var.MapIndex, (Var.Zone3_WaveTimer - CurSec) )
|
|
|
|
return
|
|
end
|
|
|
|
return
|
|
end
|
|
|
|
|
|
-- 웨이브 디펜스 시간 체크, 실패 체크
|
|
if Var.Step == 9 then
|
|
|
|
-- 비상 작동 마법석 시간 체크해서 애니메이션 설정, 웨이브 몬스터 수가 달라짐
|
|
local CurSec = cCurrentSecond()
|
|
|
|
if Var.MagicStoneA_ActiveTime ~= nil then
|
|
|
|
if Var.MagicStoneA_ActiveTime < CurSec then
|
|
|
|
cAnimate( Var.Magic_stoneA, "start", AniIndex.MagicStoneActive[1] )
|
|
Var.MagicStoneA_ActiveTime = nil
|
|
end
|
|
end
|
|
|
|
if Var.MagicStoneB_ActiveTime ~= nil then
|
|
|
|
if Var.MagicStoneB_ActiveTime < CurSec then
|
|
|
|
cAnimate( Var.Magic_stoneB, "start", AniIndex.MagicStoneActive[2] )
|
|
Var.MagicStoneB_ActiveTime = nil
|
|
end
|
|
end
|
|
|
|
if Var.MagicStoneC_ActiveTime ~= nil then
|
|
|
|
if Var.MagicStoneC_ActiveTime < CurSec then
|
|
|
|
cAnimate( Var.Magic_stoneC, "start", AniIndex.MagicStoneActive[3] )
|
|
Var.MagicStoneC_ActiveTime = nil
|
|
end
|
|
end
|
|
|
|
|
|
if Var.SummonStone_HP == nil then
|
|
Var.SummonStone_HP = WaveEvent.SummonStone_HP
|
|
end
|
|
|
|
local CurSec = cCurrentSecond()
|
|
|
|
|
|
-- 소환석, 몬스터 충돌처리
|
|
local CrashMobList = { cGetAreaObjectList( Var.MapIndex, AreaIndex.Zone3_1, ObjectType.Mob ) }
|
|
for i=1, #CrashMobList do
|
|
|
|
if CrashMobList[i] ~= Var.Magic_stoneA and
|
|
CrashMobList[i] ~= Var.Magic_stoneB and
|
|
CrashMobList[i] ~= Var.Magic_stoneC and
|
|
CrashMobList[i] ~= Var.SummonStone and
|
|
CrashMobList[i] ~= Var.LoussierHandle then
|
|
|
|
Var.SummonStone_HP = Var.SummonStone_HP - 1
|
|
|
|
cNPCVanish( CrashMobList[i] )
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
-- 소환석 HP 체크
|
|
if Var.SummonStone_HP <= 0 then
|
|
|
|
Var.Step = 8
|
|
Var.StepFunc = Zone3_WaveEvent_Reset
|
|
|
|
return
|
|
end
|
|
|
|
-- 웨이브 방어시간 끝났는지 체크
|
|
if Var.Zone3_WaveTimer < CurSec then
|
|
|
|
Var.Step = 10
|
|
Var.StepFunc = Zone3_WaveEvent_Clear -- 다음으로 Zone4_Setting 함수로 넘어감
|
|
|
|
return
|
|
end
|
|
|
|
return
|
|
end
|
|
|
|
|
|
-- 보스방 입장 이벤트
|
|
if Var.Step == 10 then
|
|
|
|
-- 보스존 대화 이벤트 발생지점에 누군가 들어왔는지 체크 후 이벤트 발생
|
|
local player = cGetAreaObjectList( Var.MapIndex, AreaIndex.Zone4_1, ObjectType.Player )
|
|
|
|
if player == nil then
|
|
return
|
|
end
|
|
|
|
Var.Step = 11
|
|
Var.StepFunc = Zone4_Event_1
|
|
|
|
return
|
|
end
|
|
|
|
|
|
-- 보스 1차 죽였을때 이벤트
|
|
if Var.Step == 11 then
|
|
|
|
if cIsObjectDead( Var.Eglack ) ~= nil then
|
|
|
|
Var.EglackDeadLocX, Var.EglackDeadLocY = cObjectLocate( Var.Eglack )
|
|
Var.EglackDeadDir = cGetDirect( Var.Eglack )
|
|
|
|
|
|
Var.Step = 12
|
|
Var.StepFunc = Zone4_Event_2
|
|
|
|
end
|
|
|
|
return
|
|
end
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function Default_Setting( Var )
|
|
cExecCheck "Default_Setting"
|
|
|
|
if Var == nil then
|
|
return
|
|
end
|
|
|
|
-- 관문 소환
|
|
Var.Door1 = cDoorBuild( Var.MapIndex, RegenInfo.Door1.Index, RegenInfo.Door1.x, RegenInfo.Door1.y, RegenInfo.Door1.dir, RegenInfo.Door1.scale )
|
|
Var.Door2 = cDoorBuild( Var.MapIndex, RegenInfo.Door2.Index, RegenInfo.Door2.x, RegenInfo.Door2.y, RegenInfo.Door2.dir, RegenInfo.Door2.scale )
|
|
cDoorAction( Var.Door1, RegenInfo.Door1.Block, "close" )
|
|
cDoorAction( Var.Door2, RegenInfo.Door2.Block, "close" )
|
|
|
|
|
|
if Var.Door1 == nil then
|
|
cDebugLog( "Default_Setting : Fail cDoorBuild 1" )
|
|
return
|
|
end
|
|
if Var.Door2 == nil then
|
|
cDebugLog( "Default_Setting : Fail cDoorBuild 2" )
|
|
return
|
|
end
|
|
|
|
|
|
Var.ExitGate = cMobRegen_XY( Var.MapIndex, RegenInfo.ExitGate.Index,
|
|
RegenInfo.ExitGate.x,
|
|
RegenInfo.ExitGate.y,
|
|
RegenInfo.ExitGate.dir )
|
|
|
|
if Var.ExitGate == nil then
|
|
cDebugLog( "Default_Setting : Fail cMobRegen_XY ExitGate" )
|
|
return
|
|
end
|
|
|
|
if cSetAIScript( "ID/AdlFH/AdlFH", Var.ExitGate ) == nil then
|
|
cDebugLog( "Default_Setting : Fail cSetAIScript ExitGate" )
|
|
return
|
|
end
|
|
|
|
if cAIScriptFunc( Var.ExitGate, "NPCClick", "ExitGateFunc" ) == nil then
|
|
cDebugLog( "Default_Setting : Fail cAIScriptFunc ExitGate" )
|
|
return
|
|
end
|
|
|
|
|
|
Var.ExitBossGate = cMobRegen_XY( Var.MapIndex, RegenInfo.ExitBossGate.Index,
|
|
RegenInfo.ExitBossGate.x,
|
|
RegenInfo.ExitBossGate.y,
|
|
RegenInfo.ExitBossGate.dir )
|
|
if Var.ExitBossGate == nil then
|
|
cDebugLog( "Default_Setting : Fail cMobRegen_XY ExitBossGate" )
|
|
return
|
|
end
|
|
|
|
if cSetAIScript( "ID/AdlFH/AdlFH", Var.ExitBossGate ) == nil then
|
|
cDebugLog( "Default_Setting : Fail cSetAIScript ExitGate" )
|
|
return
|
|
end
|
|
|
|
if cAIScriptFunc( Var.ExitBossGate, "NPCClick", "ExitBossGateFunc" ) == nil then
|
|
cDebugLog( "Default_Setting : Fail cAIScriptFunc ExitGate" )
|
|
return
|
|
end
|
|
|
|
|
|
Var.StepFunc = Dummy
|
|
|
|
return
|
|
end
|
|
|
|
|
|
--[[ ]]--
|
|
--[[ 생명의 샘(디버프) 관리 ]]--
|
|
--[[ ]]--
|
|
function FountainOfLifeControl( Var )
|
|
cExecCheck "FountainOfLifeControl"
|
|
|
|
|
|
local CurSec = cCurrentSecond()
|
|
|
|
|
|
if Var == NULL then
|
|
return
|
|
end
|
|
|
|
if Var.FountainOfLife_CheckTime > CurSec then
|
|
return
|
|
end
|
|
|
|
|
|
Var.FountainOfLife_CheckTime = CurSec + FountainOfLife.CheckInterval
|
|
|
|
|
|
local Loussier_X = nil
|
|
local Loussier_Y = nil
|
|
|
|
|
|
-- 루시에 위치 가져오기
|
|
if Var.LoussierHandle ~= nil
|
|
then
|
|
Loussier_X, Loussier_Y = cObjectLocate( Var.LoussierHandle )
|
|
end
|
|
|
|
|
|
for i=1, #FountainOfLife.Area
|
|
do
|
|
|
|
local AreaInfo = FountainOfLife.Area[i]
|
|
local PlayerList = { cGetNearObjListByCoord( Var.MapIndex, AreaInfo.x, AreaInfo.y, AreaInfo.Range, ObjectType.Player, "so_ObjectType", 20 ) }
|
|
|
|
|
|
-- 플레이어 확인
|
|
for j=1, #PlayerList
|
|
do
|
|
|
|
for k=1, #FountainOfLife.DispelAbstate
|
|
do
|
|
|
|
cResetAbstate( PlayerList[j], FountainOfLife.DispelAbstate[k] )
|
|
|
|
Var.FountainOfLife_Use = true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
-- 루시에 확인
|
|
if Loussier_X ~= nil and Loussier_Y ~= nil
|
|
then
|
|
|
|
if cDistanceSquar( Loussier_X, Loussier_Y, AreaInfo.x, AreaInfo.y ) <= (AreaInfo.Range * AreaInfo.Range)
|
|
then
|
|
|
|
for k=1, #FountainOfLife.DispelAbstate
|
|
do
|
|
|
|
cResetAbstate( Var.LoussierHandle, FountainOfLife.DispelAbstate[k] )
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|