819 lines
25 KiB
Lua
819 lines
25 KiB
Lua
-- BH_Albireo --
|
||
|
||
|
||
---------------------------------------------------------------------
|
||
----------------------- Script Data Part ------------------------
|
||
---------------------------------------------------------------------
|
||
|
||
MemBlock = {}
|
||
PhaseData = {}
|
||
ReturnAI = {}
|
||
ReturnAI.END = 1 -- Return_AI_END = 1;// -- <20><><EFBFBD> AI<41><49>ƾ <20><>
|
||
ReturnAI.CPP = 2 -- Return_AI_CPP = 2;// -- <20><>Ʒ<EFBFBD> <20>Ϻ<EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20><> cpp<70><70> AI<41><49>ƾ <20><><EFBFBD><EFBFBD>
|
||
SHINEOBJECT = 2 -- ShineObject_Player
|
||
HPSection = {}
|
||
HPSection.Init = -1
|
||
HPSection.None = 0
|
||
HPSection.First = 1
|
||
HPSection.Second = 2
|
||
HPSection.Third = 3
|
||
|
||
-- 1 <20>ܰ<EFBFBD>
|
||
PhaseData[1] =
|
||
{
|
||
-- <20>ܰ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
HPRateMax = 900,
|
||
HPRateMin = 750,
|
||
|
||
-- <20><>ų, <20><><EFBFBD><EFBFBD><EFBFBD>̻<EFBFBD>
|
||
Skill =
|
||
{
|
||
{ Index = "BH_Albireo_Skill06_W", Type = "Skill", Target = "Me", KeepTime = 0, OneShot = true, WaitAfter = 5, Range = 0 },
|
||
{ Index = "Sta_B_Albi_Fear", Type = "AbState", Target = "Other", KeepTime = 20000, OneShot = true, WaitAfter = 0, Range = 600 },
|
||
{ Index = "Sta_B_Albi_Dot", Type = "AbState", Target = "Other", KeepTime = 20000, OneShot = true, WaitAfter = 0, Range = 600 },
|
||
},
|
||
|
||
-- <20><>ȯ
|
||
Summon =
|
||
{
|
||
{
|
||
-- MineKN01
|
||
{ Index = "BHArkMine_Kn", X = 2096, Y = 1886, W = 366, H = 281, D = 0, Interval = 20 },
|
||
{ Index = "BHArkMine_Kn", X = 2096, Y = 1786, W = 366, H = 281, D = 0, Interval = 20 },
|
||
{ Index = "BHArkMine_Kn", X = 2096, Y = 1886, W = 366, H = 281, D = 0, Interval = 20 },
|
||
{ Index = "BHArkMine_Kn", X = 2096, Y = 1886, W = 366, H = 281, D = 0, Interval = 20 },
|
||
|
||
-- MineKN02
|
||
{ Index = "BHArkMine_Kn", X = 1096, Y = 1886, W = 366, H = 281, D = 0, Interval = 12 },
|
||
{ Index = "BHArkMine_Kn", X = 1096, Y = 1886, W = 366, H = 281, D = 0, Interval = 12 },
|
||
{ Index = "BHArkMine_Kn", X = 1096, Y = 1886, W = 366, H = 281, D = 0, Interval = 12 },
|
||
{ Index = "BHArkMine_Kn", X = 1096, Y = 1886, W = 366, H = 281, D = 0, Interval = 12 },
|
||
{ Index = "BHArkMine_Kn", X = 1096, Y = 1886, W = 366, H = 281, D = 0, Interval = 12 },
|
||
|
||
-- MineKN03
|
||
{ Index = "BHArkMine_Kn", X = 1096, Y = 781, W = 366, H = 549, D = 0, Interval = 16 },
|
||
{ Index = "BHArkMine_Kn", X = 1096, Y = 781, W = 366, H = 549, D = 0, Interval = 16 },
|
||
{ Index = "BHArkMine_Kn", X = 1096, Y = 781, W = 366, H = 549, D = 0, Interval = 16 },
|
||
|
||
-- MineKN04
|
||
{ Index = "BHArkMine_Kn", X = 2096, Y = 781, W = 366, H = 549, D = 0, Interval = 24 },
|
||
{ Index = "BHArkMine_Kn", X = 2096, Y = 781, W = 366, H = 549, D = 0, Interval = 24 },
|
||
{ Index = "BHArkMine_Kn", X = 2096, Y = 781, W = 366, H = 549, D = 0, Interval = 24 },
|
||
{ Index = "BHArkMine_Kn", X = 2096, Y = 781, W = 366, H = 549, D = 0, Interval = 24 },
|
||
{ Index = "BHArkMine_Kn", X = 2096, Y = 781, W = 366, H = 549, D = 0, Interval = 24 },
|
||
{ Index = "BHArkMine_Kn", X = 2096, Y = 781, W = 366, H = 549, D = 0, Interval = 24 },
|
||
},
|
||
},
|
||
|
||
SummonInfo =
|
||
{
|
||
{ IsAfterPrevSummon = false, IsTimeOver = false, OverTime = 0, EndHPSection = HPSection.Third },
|
||
},
|
||
}
|
||
|
||
PhaseData[2] =
|
||
{
|
||
-- <20>ܰ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
HPRateMax = 750,
|
||
HPRateMin = 400,
|
||
|
||
-- <20><>ų, <20><><EFBFBD><EFBFBD><EFBFBD>̻<EFBFBD>
|
||
Skill =
|
||
{
|
||
{ Index = "BH_Albireo_Skill06_W", Type = "Skill", Target = "Me", KeepTime = 0, OneShot = true, WaitAfter = 5, Range = 0 },
|
||
--{ Index = "Sta_BH_Albi_Reflect", Type = "AbState", Target = "Me", KeepTime = 1200000, OneShot = true, WaitAfter = 0, Range = 150 },
|
||
},
|
||
|
||
-- <20><>ȯ
|
||
Summon =
|
||
{
|
||
|
||
},
|
||
|
||
SummonInfo =
|
||
{
|
||
|
||
},
|
||
}
|
||
|
||
PhaseData[3] =
|
||
{
|
||
-- <20>ܰ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
HPRateMax = 400,
|
||
HPRateMin = 10,
|
||
|
||
-- <20><>ų, <20><><EFBFBD><EFBFBD><EFBFBD>̻<EFBFBD>
|
||
Skill =
|
||
{
|
||
{ Index = "BH_Albireo_Skill06_W", Type = "Skill", Target = "Me", KeepTime = 0, OneShot = true, WaitAfter = 5, Range = 0 },
|
||
{ Index = "Sta_BH_Albi_ACMRUp", Type = "AbState", Target = "Me", KeepTime = 600000, OneShot = true, WaitAfter = 0, Range = 0 },
|
||
},
|
||
|
||
-- <20><>ȯ
|
||
Summon =
|
||
{
|
||
{
|
||
-- MineKN05
|
||
{ Index = "BHArkMine_Kn", X = 1613, Y = 1973, W = 600, H = 600, D = 0, Interval = 22 },
|
||
{ Index = "BHArkMine_Kn", X = 1613, Y = 1973, W = 600, H = 600, D = 0, Interval = 26 },
|
||
{ Index = "BHArkMine_Kn", X = 1613, Y = 1973, W = 600, H = 600, D = 0, Interval = 30 },
|
||
{ Index = "BHArkMine_Kn", X = 1613, Y = 1973, W = 600, H = 600, D = 0, Interval = 34 },
|
||
{ Index = "BHArkMine_Kn", X = 1613, Y = 1973, W = 600, H = 600, D = 0, Interval = 38 },
|
||
|
||
-- MineKN06
|
||
{ Index = "BHArkMine_Kn", X = 1600, Y = 796, W = 600, H = 600, D = 0, Interval = 20 },
|
||
{ Index = "BHArkMine_Kn", X = 1600, Y = 796, W = 600, H = 600, D = 0, Interval = 28 },
|
||
{ Index = "BHArkMine_Kn", X = 1600, Y = 796, W = 600, H = 600, D = 0, Interval = 36 },
|
||
{ Index = "BHArkMine_Kn", X = 1600, Y = 796, W = 600, H = 600, D = 0, Interval = 44 },
|
||
|
||
-- MineKN07
|
||
{ Index = "BHArkMine_Kn", X = 1160, Y = 1463, W = 600, H = 600, D = 0, Interval = 30 },
|
||
{ Index = "BHArkMine_Kn", X = 1160, Y = 1463, W = 600, H = 600, D = 0, Interval = 36 },
|
||
{ Index = "BHArkMine_Kn", X = 1160, Y = 1463, W = 600, H = 600, D = 0, Interval = 42 },
|
||
{ Index = "BHArkMine_Kn", X = 1160, Y = 1463, W = 600, H = 600, D = 0, Interval = 48 },
|
||
{ Index = "BHArkMine_Kn", X = 1160, Y = 1463, W = 600, H = 600, D = 0, Interval = 54 },
|
||
{ Index = "BHArkMine_Kn", X = 1160, Y = 1463, W = 600, H = 600, D = 0, Interval = 60 },
|
||
{ Index = "BHArkMine_Kn", X = 1160, Y = 1463, W = 600, H = 600, D = 0, Interval = 66 },
|
||
|
||
-- MineKN08
|
||
{ Index = "BHArkMine_Kn", X = 2102, Y = 1487, W = 600, H = 600, D = 0, Interval = 15 },
|
||
{ Index = "BHArkMine_Kn", X = 2102, Y = 1487, W = 600, H = 600, D = 0, Interval = 21 },
|
||
{ Index = "BHArkMine_Kn", X = 2102, Y = 1487, W = 600, H = 600, D = 0, Interval = 27 },
|
||
{ Index = "BHArkMine_Kn", X = 2102, Y = 1487, W = 600, H = 600, D = 0, Interval = 33 },
|
||
{ Index = "BHArkMine_Kn", X = 2102, Y = 1487, W = 600, H = 600, D = 0, Interval = 39 },
|
||
{ Index = "BHArkMine_Kn", X = 2102, Y = 1487, W = 600, H = 600, D = 0, Interval = 45 },
|
||
{ Index = "BHArkMine_Kn", X = 2102, Y = 1487, W = 600, H = 600, D = 0, Interval = 51 },
|
||
{ Index = "BHArkMine_Kn", X = 2102, Y = 1487, W = 600, H = 600, D = 0, Interval = 57 },
|
||
{ Index = "BHArkMine_Kn", X = 2102, Y = 1487, W = 600, H = 600, D = 0, Interval = 63 },
|
||
},
|
||
|
||
{
|
||
-- MineF01
|
||
{ Index = "BHArkMine_F", X = 2694, Y = 1468, W = 0, H = 0, D = 10, Interval = 15 },
|
||
{ Index = "BHArkMine_F", X = 2694, Y = 1468, W = 0, H = 0, D = 10, Interval = 15 },
|
||
{ Index = "BHArkMine_F", X = 2694, Y = 1468, W = 0, H = 0, D = 10, Interval = 15 },
|
||
{ Index = "BHArkMine_F", X = 2694, Y = 1468, W = 0, H = 0, D = 10, Interval = 15 },
|
||
|
||
-- MineF02
|
||
{ Index = "BHArkMine_F", X = 502, Y = 1464, W = 0, H = 0, D = 10, Interval = 15 },
|
||
{ Index = "BHArkMine_F", X = 502, Y = 1464, W = 0, H = 0, D = 10, Interval = 15 },
|
||
{ Index = "BHArkMine_F", X = 502, Y = 1464, W = 0, H = 0, D = 10, Interval = 15 },
|
||
{ Index = "BHArkMine_F", X = 502, Y = 1464, W = 0, H = 0, D = 10, Interval = 15 },
|
||
},
|
||
|
||
{
|
||
-- MineF03
|
||
{ Index = "BHArkMine_F", X = 2694, Y = 1468, W = 0, H = 0, D = 10, Interval = 20 },
|
||
{ Index = "BHArkMine_F", X = 2694, Y = 1468, W = 0, H = 0, D = 10, Interval = 20 },
|
||
{ Index = "BHArkMine_F", X = 2694, Y = 1468, W = 0, H = 0, D = 10, Interval = 20 },
|
||
{ Index = "BHArkMine_F", X = 2694, Y = 1468, W = 0, H = 0, D = 10, Interval = 20 },
|
||
{ Index = "BHArkMine_F", X = 2694, Y = 1468, W = 0, H = 0, D = 10, Interval = 20 },
|
||
{ Index = "BHArkMine_F", X = 2694, Y = 1468, W = 0, H = 0, D = 10, Interval = 20 },
|
||
{ Index = "BHArkMine_F", X = 2694, Y = 1468, W = 0, H = 0, D = 10, Interval = 20 },
|
||
|
||
-- MineF04
|
||
{ Index = "BHArkMine_F", X = 502, Y = 1464, W = 0, H = 0, D = 10, Interval = 20 },
|
||
{ Index = "BHArkMine_F", X = 502, Y = 1464, W = 0, H = 0, D = 10, Interval = 20 },
|
||
{ Index = "BHArkMine_F", X = 502, Y = 1464, W = 0, H = 0, D = 10, Interval = 20 },
|
||
{ Index = "BHArkMine_F", X = 502, Y = 1464, W = 0, H = 0, D = 10, Interval = 20 },
|
||
{ Index = "BHArkMine_F", X = 502, Y = 1464, W = 0, H = 0, D = 10, Interval = 20 },
|
||
{ Index = "BHArkMine_F", X = 502, Y = 1464, W = 0, H = 0, D = 10, Interval = 20 },
|
||
{ Index = "BHArkMine_F", X = 502, Y = 1464, W = 0, H = 0, D = 10, Interval = 20 },
|
||
},
|
||
|
||
{
|
||
-- MineF05
|
||
{ Index = "BHArkMine_F", X = 2694, Y = 1468, W = 0, H = 0, D = 10, Interval = 30 },
|
||
{ Index = "BHArkMine_F", X = 2694, Y = 1468, W = 0, H = 0, D = 10, Interval = 30 },
|
||
{ Index = "BHArkMine_F", X = 2694, Y = 1468, W = 0, H = 0, D = 10, Interval = 30 },
|
||
{ Index = "BHArkMine_F", X = 2694, Y = 1468, W = 0, H = 0, D = 10, Interval = 30 },
|
||
{ Index = "BHArkMine_F", X = 2694, Y = 1468, W = 0, H = 0, D = 10, Interval = 30 },
|
||
{ Index = "BHArkMine_F", X = 2694, Y = 1468, W = 0, H = 0, D = 10, Interval = 30 },
|
||
{ Index = "BHArkMine_F", X = 2694, Y = 1468, W = 0, H = 0, D = 10, Interval = 30 },
|
||
{ Index = "BHArkMine_F", X = 2694, Y = 1468, W = 0, H = 0, D = 10, Interval = 30 },
|
||
{ Index = "BHArkMine_F", X = 2694, Y = 1468, W = 0, H = 0, D = 10, Interval = 30 },
|
||
{ Index = "BHArkMine_F", X = 2694, Y = 1468, W = 0, H = 0, D = 10, Interval = 30 },
|
||
{ Index = "BHArkMine_F", X = 2694, Y = 1468, W = 0, H = 0, D = 10, Interval = 30 },
|
||
{ Index = "BHArkMine_F", X = 2694, Y = 1468, W = 0, H = 0, D = 10, Interval = 30 },
|
||
{ Index = "BHArkMine_F", X = 2694, Y = 1468, W = 0, H = 0, D = 10, Interval = 30 },
|
||
{ Index = "BHArkMine_F", X = 2694, Y = 1468, W = 0, H = 0, D = 10, Interval = 30 },
|
||
|
||
-- MineF06
|
||
{ Index = "BHArkMine_F", X = 502, Y = 1464, W = 0, H = 0, D = 10, Interval = 30 },
|
||
{ Index = "BHArkMine_F", X = 502, Y = 1464, W = 0, H = 0, D = 10, Interval = 30 },
|
||
{ Index = "BHArkMine_F", X = 502, Y = 1464, W = 0, H = 0, D = 10, Interval = 30 },
|
||
{ Index = "BHArkMine_F", X = 502, Y = 1464, W = 0, H = 0, D = 10, Interval = 30 },
|
||
{ Index = "BHArkMine_F", X = 502, Y = 1464, W = 0, H = 0, D = 10, Interval = 30 },
|
||
{ Index = "BHArkMine_F", X = 502, Y = 1464, W = 0, H = 0, D = 10, Interval = 30 },
|
||
{ Index = "BHArkMine_F", X = 502, Y = 1464, W = 0, H = 0, D = 10, Interval = 30 },
|
||
{ Index = "BHArkMine_F", X = 502, Y = 1464, W = 0, H = 0, D = 10, Interval = 30 },
|
||
{ Index = "BHArkMine_F", X = 502, Y = 1464, W = 0, H = 0, D = 10, Interval = 30 },
|
||
{ Index = "BHArkMine_F", X = 502, Y = 1464, W = 0, H = 0, D = 10, Interval = 30 },
|
||
{ Index = "BHArkMine_F", X = 502, Y = 1464, W = 0, H = 0, D = 10, Interval = 30 },
|
||
{ Index = "BHArkMine_F", X = 502, Y = 1464, W = 0, H = 0, D = 10, Interval = 30 },
|
||
{ Index = "BHArkMine_F", X = 502, Y = 1464, W = 0, H = 0, D = 10, Interval = 30 },
|
||
{ Index = "BHArkMine_F", X = 502, Y = 1464, W = 0, H = 0, D = 10, Interval = 30 },
|
||
},
|
||
},
|
||
|
||
SummonInfo =
|
||
{
|
||
{ IsAfterPrevSummon = false, IsTimeOver = false, OverTime = 0, EndHPSection = HPSection.Third },
|
||
{ IsAfterPrevSummon = false, IsTimeOver = true, OverTime = 180, EndHPSection = HPSection.None },
|
||
{ IsAfterPrevSummon = true, IsTimeOver = true, OverTime = 300, EndHPSection = HPSection.None },
|
||
{ IsAfterPrevSummon = true, IsTimeOver = false, OverTime = 0, EndHPSection = HPSection.Init },
|
||
},
|
||
}
|
||
|
||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ <20><><EFBFBD><EFBFBD>
|
||
BH_AlbiBox =
|
||
{
|
||
{ Index = "BH_Albireo_Box", ItemDropMobIndex = "BH_Albireo_Box", Radius = 250 },
|
||
{ Index = "BH_Albireo_Box", ItemDropMobIndex = "BH_Albireo_Box", Radius = 250 },
|
||
{ Index = "BH_Albireo_Box", ItemDropMobIndex = "BH_Albireo_Box", Radius = 250 },
|
||
{ Index = "BH_Albireo_Box", ItemDropMobIndex = "BH_Albireo_Box", Radius = 250 },
|
||
}
|
||
AlbiBox_VanishTime = 40000
|
||
|
||
------------------------------------------------------------------
|
||
----------------------- Albireo Part ------------------------
|
||
------------------------------------------------------------------
|
||
|
||
function Skill_Wait( Var )
|
||
cExecCheck "Skill_Wait"
|
||
if Var.SkillWaitAfter ~= 0 then
|
||
|
||
--cDebugLog( "cCurSec : " .. cCurrentSecond() .. "SkillWaitAfter : " .. Var.SkillWaitAfter )
|
||
if cCurrentSecond() < Var.SkillWaitAfter then
|
||
--cDebugLog( "SkillWaitAfter......." )
|
||
return true
|
||
else
|
||
--cDebugLog( "Out Of SkillWaitAfter......." )
|
||
Var.SkillWaitAfter = 0
|
||
return false
|
||
end
|
||
|
||
end
|
||
|
||
return false
|
||
end
|
||
|
||
function Init( Var, Handle, MapIndex )
|
||
cExecCheck "Init"
|
||
|
||
MemBlock[Handle] = {}
|
||
|
||
Var = MemBlock[Handle]
|
||
Var.Handle = Handle
|
||
Var.MapIndex = MapIndex
|
||
Var.Wait = {}
|
||
Var.Wait.Second = 0
|
||
Var.Wait.NextFunc = nil
|
||
Var.TargetLostSec = 0 -- Ÿ<><C5B8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD>
|
||
Var.CurrentPhase = 0
|
||
Var.IsInit = {} -- <20><> <20>ܰ<EFBFBD><DCB0><EFBFBD> <20>ʱ<EFBFBD>ȭ <20><><EFBFBD><EFBFBD>
|
||
Var.IsUsedSkill = false -- OneShot<6F><74> <20><>ų<EFBFBD><C5B3> <20><><EFBFBD> Ȯ<><C8AE>
|
||
Var.IsUsedSkillAll = false -- <20><> <20>ܰ<EFBFBD><DCB0><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||
Var.CurrentSkill = 1 -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ų<EFBFBD><C5B3> Skill <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ε<EFBFBD><CEB5><EFBFBD>
|
||
Var.SkillWaitAfter = 0
|
||
|
||
Var.SummonList = {}
|
||
for i = 1, #PhaseData do
|
||
|
||
if Var.SummonList[i] == nil then
|
||
Var.SummonList[i] = {}
|
||
end
|
||
|
||
for j = 1, #(PhaseData[i]["Summon"]) do
|
||
|
||
|
||
if Var.SummonList[i][j] == nil then
|
||
Var.SummonList[i][j] = {}
|
||
end
|
||
|
||
Var.SummonList[i][j].IsOver = false -- <20><EFBFBD> <20><><EFBFBD><EFBFBD> <20>շ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
Var.SummonList[i][j].OverTime = 0 -- <20><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD>
|
||
|
||
for k = 1, #(PhaseData[i]["Summon"][j]) do
|
||
|
||
if Var.SummonList[i][j][k] == nil then
|
||
Var.SummonList[i][j][k] = {}
|
||
end
|
||
|
||
Var.SummonList[i][j][k].IsActive = false -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ȱ<><C8B0> <20><><EFBFBD><EFBFBD>
|
||
Var.SummonList[i][j][k].Interval = 0 -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
|
||
end
|
||
end
|
||
end
|
||
|
||
Var.MobList = {}
|
||
Var.StepFunc = Albi_HPCheck
|
||
|
||
return ReturnAI.CPP
|
||
end
|
||
|
||
function BH_Albireo( Handle, MapIndex )
|
||
cExecCheck "BH_Albireo"
|
||
|
||
--cDebugLog( "BH_Albireo - Handle : " .. Handle .. " , MapIndex : " .. MapIndex )
|
||
|
||
--------------------------------------------------------------------------------------
|
||
|
||
if IsSetScript == false then
|
||
|
||
IsSetScript = true
|
||
end
|
||
|
||
local Var = MemBlock[Handle]
|
||
|
||
if cIsObjectDead( Handle ) ~= nil then
|
||
|
||
if Var ~= nil then -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><D7BE><EFBFBD>
|
||
|
||
--cDebugLog( "Boss Dead" )
|
||
--for k = 1, 2 do
|
||
--if Var.FellowHandle[k] ~= -1 then
|
||
--cNPCVanish(Var.FellowHandle[k])
|
||
--Var.FellowHandle[k] = -1
|
||
--end
|
||
--end
|
||
|
||
-- <20><><EFBFBD><EFBFBD><EFBFBD>ΰ<EFBFBD> <20><>ȯ - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
local InvisibleHandle = cMobRegen_Obj( "InvisibleMan", Handle )
|
||
cAIScriptSet( InvisibleHandle, Handle )
|
||
MemBlock[InvisibleHandle] = {}
|
||
MemBlock[InvisibleHandle].Handle = InvisibleHandle
|
||
MemBlock[InvisibleHandle].MapIndex = MapIndex
|
||
MemBlock[InvisibleHandle].StepFunc = Invisible_Init
|
||
|
||
MemBlock[Handle] = nil
|
||
|
||
cVanishAll( MapIndex, "BHArkMine_Kn" )
|
||
cVanishAll( MapIndex, "BHArkMine_F" )
|
||
|
||
Var = MemBlock[InvisibleHandle]
|
||
|
||
return Var.StepFunc( Var )
|
||
end
|
||
|
||
return ReturnAI.END
|
||
end
|
||
|
||
|
||
if Var == nil then -- ó<><C3B3> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><C7BE><EFBFBD>
|
||
|
||
Init( Var, Handle, MapIndex )
|
||
|
||
end
|
||
|
||
Var.Handle = Handle
|
||
Var.MapIndex = MapIndex
|
||
|
||
return Var.StepFunc( Var )
|
||
|
||
|
||
--------------------------------------------------------------------------------------
|
||
end
|
||
|
||
function Albi_Init( Var )
|
||
cExecCheck "Albi_Init"
|
||
|
||
for i = 1, #PhaseData do
|
||
Var.IsInit[i] = false
|
||
end
|
||
|
||
Var.IsUsedSkill = false -- OneShot<6F><74> <20><>ų<EFBFBD><C5B3> <20><><EFBFBD> Ȯ<><C8AE>
|
||
Var.IsUsedSkillAll = false -- <20><> <20>ܰ<EFBFBD><DCB0><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||
Var.CurrentSkill = 1 -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ų<EFBFBD><C5B3> Skill <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ε<EFBFBD><CEB5><EFBFBD>
|
||
Var.SkillWaitAfter = 0
|
||
|
||
end
|
||
|
||
-- Albireo HP <20><><EFBFBD><EFBFBD> üũ
|
||
function Albi_HPCheck( Var )
|
||
cExecCheck "Albi_HPCheck"
|
||
|
||
local hp
|
||
local maxhp
|
||
|
||
hp, maxhp = cObjectHP( Var.Handle )
|
||
|
||
if hp == nil or maxhp == nil or hp == 0 then
|
||
|
||
Albi_Init( Var )
|
||
Var.CurrentPhase = HPSection.Init
|
||
|
||
elseif maxhp * PhaseData[1].HPRateMax < hp * 1000 then
|
||
|
||
Albi_Init( Var )
|
||
Var.CurrentPhase = HPSection.None
|
||
|
||
elseif maxhp * PhaseData[1].HPRateMin < hp * 1000 and hp * 1000 <= maxhp * PhaseData[1].HPRateMax then
|
||
|
||
if Var.IsInit[1] == false then
|
||
Albi_Init( Var )
|
||
Var.IsInit[1] = true
|
||
end
|
||
|
||
Var.CurrentPhase = HPSection.First
|
||
|
||
elseif maxhp * PhaseData[2].HPRateMin < hp * 1000 and hp * 1000 <= maxhp * PhaseData[2].HPRateMax then
|
||
|
||
if Var.IsInit[2] == false then
|
||
Albi_Init( Var )
|
||
Var.IsInit[2] = true
|
||
end
|
||
|
||
Var.CurrentPhase = HPSection.Second
|
||
|
||
elseif maxhp * PhaseData[3].HPRateMin < hp * 1000 and hp * 1000 <= maxhp * PhaseData[3].HPRateMax then
|
||
|
||
if Var.IsInit[3] == false then
|
||
Albi_Init( Var )
|
||
Var.IsInit[3] = true
|
||
end
|
||
|
||
Var.CurrentPhase = HPSection.Third
|
||
|
||
end
|
||
|
||
|
||
Var.StepFunc = Albi_Behaviour
|
||
|
||
return ReturnAI.CPP
|
||
|
||
end
|
||
|
||
|
||
function Albi_Behaviour( Var )
|
||
cExecCheck "Albi_Behaviour"
|
||
|
||
Var.StepFunc = Albi_HPCheck
|
||
|
||
|
||
local Handle = Var.Handle
|
||
local MapIndex = Var.MapIndex
|
||
|
||
-- Ÿ<><C5B8> <20>Ҿ<EFBFBD><D2BE><EFBFBD><EFBFBD> <20>ð<EFBFBD> <20>˻<EFBFBD>
|
||
local TargetHandle = cTargetHandle( Var.Handle )
|
||
|
||
if TargetHandle ~= nil and cObjectType( TargetHandle ) == SHINEOBJECT then -- Ÿ<><C5B8><EFBFBD><EFBFBD> <20>ְ<EFBFBD> <20>÷<EFBFBD><C3B7>̾<EFBFBD><CCBE> (SHINEOBJECT_PLAYER == 2)
|
||
|
||
Var.TargetLostSec = cCurSec()
|
||
elseif Var.TargetLostSec + 10 < cCurSec() then -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 10<31><30> <20><>
|
||
|
||
cResetAbstate( Var.Handle, "Sta_BH_Albi_Reflect" ) -- <20><>ȭ<EFBFBD><C8AD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
cResetAbstate( Var.Handle, "Sta_BH_Albi_ACMRUp" ) -- <20><>ȭ<EFBFBD><C8AD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
for i = 1, #(Var.MobList) do
|
||
cNPCVanish( Var.MobList[i] )
|
||
end
|
||
|
||
MemBlock = {} --><3E><><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD> - ó<><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٽ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
WaitBoom = {}
|
||
|
||
Init( Var, Handle, MapIndex )
|
||
|
||
--cDebugLog( "Ÿ<><C5B8> <20><><EFBFBD><EFBFBD><EFBFBD> -> <20><><EFBFBD>ʱ<EFBFBD>ȭ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" )
|
||
end
|
||
|
||
|
||
-- <20><><EFBFBD> <20>ܰ<EFBFBD> <20>˻<EFBFBD>
|
||
if Var.CurrentPhase < 1 or #PhaseData < Var.CurrentPhase then
|
||
return ReturnAI.CPP
|
||
end
|
||
|
||
|
||
Skill = PhaseData[Var.CurrentPhase]["Skill"]
|
||
|
||
-- <20>˺<CBBA> <20><>ų <20><><EFBFBD>
|
||
if Skill ~= nil then
|
||
|
||
if Skill_Wait( Var ) == false and Var.IsUsedSkillAll == false then
|
||
|
||
-- <20><>ų<EFBFBD≯<EFBFBD>
|
||
if Skill[Var.CurrentSkill]["Type"] == "Skill" then
|
||
|
||
--cDebugLog( "Use Skill!!!!!!!!" )
|
||
--cNPCSkillUse( Var.Handle, Var.Handle, Skill[Var.CurrentSkill]["Index"] )
|
||
|
||
if TargetHandle ~= nil then
|
||
cSkillBlast( Var.Handle, Var.Handle, Skill[Var.CurrentSkill]["Index"] )
|
||
end
|
||
|
||
-- AbState<74><65>
|
||
elseif Skill[Var.CurrentSkill]["Type"] == "AbState" then
|
||
|
||
--cDebugLog( "Use Abstate!!!!!!!!" )
|
||
local Range = Skill[Var.CurrentSkill]["Range"]
|
||
local Index = Skill[Var.CurrentSkill]["Index"]
|
||
local KeepTime = Skill[Var.CurrentSkill]["KeepTime"]
|
||
local Strength = 1
|
||
|
||
-- Ÿ<><C5B8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(<28>÷<EFBFBD><C3B7>̾<EFBFBD>)<29≯<EFBFBD>
|
||
if Skill[Var.CurrentSkill]["Target"] == "Other" then
|
||
|
||
if TargetHandle ~= nil then
|
||
cSetAbstate_Range( Var.Handle, Range, SHINEOBJECT, Index, Strength, KeepTime )
|
||
end
|
||
|
||
-- Ÿ<><C5B8><EFBFBD><EFBFBD> <20><>(mob) <20≯<EFBFBD>
|
||
elseif Skill[Var.CurrentSkill]["Target"] == "Me" then
|
||
|
||
if TargetHandle ~= nil then
|
||
cSetAbstate( Var.Handle, Index, Strength, KeepTime )
|
||
end
|
||
end
|
||
|
||
end
|
||
|
||
|
||
|
||
Var.SkillWaitAfter = cCurrentSecond() + Skill[Var.CurrentSkill]["WaitAfter"]
|
||
|
||
Var.CurrentSkill = Var.CurrentSkill + 1
|
||
|
||
if #Skill < Var.CurrentSkill then
|
||
Var.IsUsedSkillAll = true
|
||
end
|
||
|
||
|
||
end
|
||
end
|
||
|
||
|
||
-- <20><>ũ <20><><EFBFBD><EFBFBD> <20><>ȯ
|
||
Summon = PhaseData[Var.CurrentPhase]["Summon"]
|
||
SummonInfo = PhaseData[Var.CurrentPhase]["SummonInfo"]
|
||
|
||
for i = 1, #Var.SummonList do
|
||
for j = 1, #(Var.SummonList[i]) do
|
||
for k = 1, #(Var.SummonList[i][j]) do
|
||
|
||
if Var.SummonList[i][j][k].IsActive == false then
|
||
|
||
-- <20><><EFBFBD><EFBFBD> <20>ܰ<EFBFBD><DCB0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>˻<EFBFBD>
|
||
if i == Var.CurrentPhase then
|
||
|
||
-- <20><><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD> <20>˻<EFBFBD>
|
||
if SummonInfo[j].IsAfterPrevSummon == true then
|
||
|
||
if Var.SummonList[i][j - 1].IsOver == true then
|
||
|
||
Var.SummonList[i][j][k].IsActive = true
|
||
Var.SummonList[i][j].OverTime = cCurSec() + SummonInfo[j].OverTime
|
||
end
|
||
else
|
||
|
||
Var.SummonList[i][j][k].IsActive = true
|
||
Var.SummonList[i][j].OverTime = cCurSec() + SummonInfo[j].OverTime
|
||
end
|
||
end
|
||
|
||
elseif Var.SummonList[i][j][k].IsActive == true then
|
||
|
||
-- <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD> <20><><EFBFBD><EFBFBD> <20>˻<EFBFBD>
|
||
if Var.SummonList[i][j][k].Interval < cCurSec() then
|
||
|
||
local Index = Summon[j][k].Index
|
||
local X = Summon[j][k].X
|
||
local Y = Summon[j][k].Y
|
||
local W = Summon[j][k].W
|
||
local H = Summon[j][k].H
|
||
local D = Summon[j][k].D
|
||
local handle = cMobRegen_Rectangle( Var.MapIndex, Index, X, Y, W, H, D )
|
||
|
||
|
||
if handle ~= nil then
|
||
cAIScriptSet( handle, Var.Handle )
|
||
cAIScriptFunc( handle, "MobAttack", "ArkMine_MobAttack" )
|
||
end
|
||
|
||
Var.MobList[#(Var.MobList) + 1] = handle
|
||
Var.SummonList[i][j][k].Interval = cCurSec() + Summon[j][k].Interval
|
||
end
|
||
|
||
|
||
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>˻<EFBFBD>
|
||
if SummonInfo[j].IsTimeOver == true then
|
||
|
||
if Var.SummonList[i][j].OverTime <= cCurSec() then
|
||
Var.SummonList[i][j][k].IsActive = false
|
||
|
||
Var.SummonList[i][j].IsOver = true
|
||
for n = 1, #(Var.SummonList[i][j]) do
|
||
if Var.SummonList[i][j][n].IsActive == true then
|
||
Var.SummonList[i][j].IsOver = false
|
||
end
|
||
end
|
||
end
|
||
|
||
elseif SummonInfo[j].EndHPSection == Var.CurrentPhase then
|
||
|
||
Var.SummonList[i][j][k].IsActive = false
|
||
|
||
Var.SummonList[i][j].IsOver = true
|
||
for n = 1, #(Var.SummonList[i][j]) do
|
||
if Var.SummonList[i][j][n].IsActive == true then
|
||
Var.SummonList[i][j].IsOver = false
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
if 0 < (j - 1) then
|
||
if Var.SummonList[i][j - 1].IsOver == true then
|
||
Var.SummonList[i][j - 1].IsOver = false
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
return ReturnAI.CPP
|
||
|
||
end
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
--------------------------------------------------------------------
|
||
----------------------- ArkMine Part --------------------------
|
||
--------------------------------------------------------------------
|
||
|
||
ExplosionTime = 5
|
||
WaitBoom = {}
|
||
|
||
function BHArkMine_Kn( Handle, MapIndex )
|
||
cExecCheck "BHArkMine_Kn"
|
||
|
||
local Var = WaitBoom[Handle]
|
||
|
||
if Var == nil then
|
||
|
||
--cDebugLog( "BHArkMine_Kn Init")
|
||
WaitBoom[Handle] = {}
|
||
Var = WaitBoom[Handle]
|
||
Var.Second = cCurSec() + ExplosionTime
|
||
|
||
end
|
||
|
||
-- Mine<6E><65> Second <20><> <20><><EFBFBD><EFBFBD>
|
||
|
||
if Var.Second ~= 0 then
|
||
|
||
if Var.Second <= cCurSec() then
|
||
|
||
--cDebugLog( "ATTACK~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
|
||
--cSkillBlast( Handle, Handle, "BHArkMine_Kn_Skill01_W" )
|
||
--cNPCSkillUse( Handle, Handle, "BHArkMine_Kn_Skill01_W" )
|
||
--cNPCVanish( Handle )
|
||
--Var.Second = 0
|
||
--ArkMine_MobAttack( Var.
|
||
end
|
||
|
||
end
|
||
|
||
return ReturnAI.CPP
|
||
end
|
||
|
||
function BHArkMine_F( Handle, MapIndex )
|
||
cExecCheck "BHArkMine_F"
|
||
|
||
return ReturnAI.CPP
|
||
end
|
||
|
||
function BHArkMine_MobAttack( MapIndex, AtkHandle )
|
||
cExecCheck "BHArkMine_MobAttack"
|
||
|
||
--local MobID = cGetMobID( AtkHandle )
|
||
--if MobID == nil then
|
||
-- return
|
||
--end
|
||
--for i = 1, #Var.MineIDList do
|
||
-- if MobID ~= nil then
|
||
-- if MobID == Var.MineIDList[i] then
|
||
-- end
|
||
-- end
|
||
--end
|
||
|
||
cNPCVanish( AtkHandle )
|
||
--cSetObjectHP( 0 ) -- <20>ڻ<EFBFBD>
|
||
|
||
end
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
--------------------------------------------------------------------
|
||
------------------------- Reward Part --------------------------
|
||
--------------------------------------------------------------------
|
||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
|
||
|
||
function Common_RemoveTreasure( MapIndex )
|
||
cExecCheck "Common_RemoveTreasure"
|
||
|
||
for i = 1, #BH_AlbiBox
|
||
do
|
||
cVanishAll( MapIndex, BH_AlbiBox[i].ItemDropMobIndex )
|
||
--cDebugLog( "remove" )
|
||
end
|
||
end
|
||
|
||
function Invisible_Init( Var )
|
||
cExecCheck "Invisible_Init"
|
||
|
||
----------------------------------------------------------------------
|
||
-- Mantis 8164
|
||
-- <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ <20><> <20><><EFBFBD><EFBFBD><EFBFBD>۵<EFBFBD><DBB5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
|
||
local x, y = cObjectLocate( Var.Handle )
|
||
|
||
for i = 1, #BH_AlbiBox
|
||
do
|
||
local BoxHandle = cMobRegen_Circle( Var["MapIndex"], BH_AlbiBox[i]["Index"], x, y, BH_AlbiBox[i]["Radius"] )
|
||
if BoxHandle ~= nil
|
||
then
|
||
cSetItemDropMobID( BoxHandle, BH_AlbiBox[i]["ItemDropMobIndex"] )
|
||
end
|
||
end
|
||
|
||
----------------------------------------------------------------------
|
||
|
||
cGroupRegen("BH_Albi", "BH_AlbiBox") -- <20><><EFBFBD>ڰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
Var.Wait = {}
|
||
Var.Wait.Second = cCurSec() + AlbiBox_VanishTime
|
||
Var.StepFunc = Invisible_AllVanish
|
||
end
|
||
|
||
function InvisibleMan( Handle, MapIndex )
|
||
cExecCheck "InvisibleMan"
|
||
|
||
local Var = MemBlock[Handle]
|
||
if Var == nil then
|
||
--cDebugLog("InvisibleMan Handle Error : " .. Handle)
|
||
return
|
||
end
|
||
|
||
if Var.StepFunc ~= nil then
|
||
Var.StepFunc( Var )
|
||
end
|
||
|
||
return ReturnAI.END
|
||
end
|
||
|
||
function Invisible_AllVanish( Var )
|
||
cExecCheck "Invisible_AllVanish"
|
||
|
||
if cCurSec() > Var.Wait.Second then
|
||
|
||
--cRegenGroupActiv( Var.MapIndex, "UniWpLv125", 0 ) -- <20><><EFBFBD>ڰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʵ<EFBFBD><CAB5><EFBFBD>(<28><><EFBFBD><EFBFBD>° <20>μ<EFBFBD><CEBC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰų<CFB0> 1<≯<EFBFBD> activ)
|
||
|
||
--Common_RemoveTreasure( Var.MapIndex )
|
||
cNPCVanish( Var.Handle )
|
||
|
||
Var.StepFunc = nil
|
||
end
|
||
end
|
||
|
||
|
||
|
||
|