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.
SigFiesta/LuaScript/AIScript/BH_Albireo.lua

819 lines
24 KiB

-- BH_Albireo --
---------------------------------------------------------------------
----------------------- Script Data Part ------------------------
---------------------------------------------------------------------
MemBlock = {}
PhaseData = {}
ReturnAI = {}
ReturnAI.END = 1 -- Return_AI_END = 1;// -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD> AI<EFBFBD><EFBFBD>ƾ <EFBFBD><EFBFBD>
ReturnAI.CPP = 2 -- Return_AI_CPP = 2;// -- <EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD> <EFBFBD>Ϻ<EFBFBD> ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> cpp<EFBFBD><EFBFBD> AI<EFBFBD><EFBFBD>ƾ <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SHINEOBJECT = 2 -- ShineObject_Player
HPSection = {}
HPSection.Init = -1
HPSection.None = 0
HPSection.First = 1
HPSection.Second = 2
HPSection.Third = 3
-- 1 <EFBFBD>ܰ<EFBFBD>
PhaseData[1] =
{
-- <EFBFBD>ܰ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
HPRateMax = 900,
HPRateMin = 750,
-- <EFBFBD><EFBFBD>ų, <EFBFBD><EFBFBD><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 },
},
-- <EFBFBD><EFBFBD>ȯ
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] =
{
-- <EFBFBD>ܰ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
HPRateMax = 750,
HPRateMin = 400,
-- <EFBFBD><EFBFBD>ų, <EFBFBD><EFBFBD><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 },
},
-- <EFBFBD><EFBFBD>ȯ
Summon =
{
},
SummonInfo =
{
},
}
PhaseData[3] =
{
-- <EFBFBD>ܰ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
HPRateMax = 400,
HPRateMin = 10,
-- <EFBFBD><EFBFBD>ų, <EFBFBD><EFBFBD><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 },
},
-- <EFBFBD><EFBFBD>ȯ
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 },
},
}
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ȯ <EFBFBD><EFBFBD><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 = 60
------------------------------------------------------------------
----------------------- 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 -- Ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ð<EFBFBD>
Var.CurrentPhase = 0
Var.IsInit = {} -- <EFBFBD><EFBFBD> <EFBFBD>ܰ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ʱ<EFBFBD>ȭ <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Var.IsUsedSkill = false -- OneShot<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ų<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ȯ<EFBFBD><EFBFBD>
Var.IsUsedSkillAll = false -- <EFBFBD><EFBFBD> <EFBFBD>ܰ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ų <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
Var.CurrentSkill = 1 -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ų<EFBFBD><EFBFBD> Skill <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ε<EFBFBD><EFBFBD><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 -- <EFBFBD>׷<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>շ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Var.SummonList[i][j].OverTime = 0 -- <EFBFBD>׷<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ð<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 -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ȱ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Var.SummonList[i][j][k].Interval = 0 -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><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 -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>׾<EFBFBD><EFBFBD><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
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΰ<EFBFBD> <EFBFBD><EFBFBD>ȯ - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><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 -- ó<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><EFBFBD><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<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ų<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ȯ<EFBFBD><EFBFBD>
Var.IsUsedSkillAll = false -- <EFBFBD><EFBFBD> <EFBFBD>ܰ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ų <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
Var.CurrentSkill = 1 -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ų<EFBFBD><EFBFBD> Skill <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>
Var.SkillWaitAfter = 0
end
-- Albireo HP <EFBFBD><EFBFBD><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
-- Ÿ<EFBFBD><EFBFBD> <EFBFBD>Ҿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ð<EFBFBD> <EFBFBD>˻<EFBFBD>
local TargetHandle = cTargetHandle( Var.Handle )
if TargetHandle ~= nil and cObjectType( TargetHandle ) == SHINEOBJECT then -- Ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ְ<EFBFBD> <EFBFBD>÷<EFBFBD><EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD> (SHINEOBJECT_PLAYER == 2)
Var.TargetLostSec = cCurSec()
elseif Var.TargetLostSec + 10 < cCurSec() then -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 10<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>
cResetAbstate( Var.Handle, "Sta_BH_Albi_Reflect" ) -- <EFBFBD><EFBFBD>ȭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
cResetAbstate( Var.Handle, "Sta_BH_Albi_ACMRUp" ) -- <EFBFBD><EFBFBD>ȭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for i = 1, #(Var.MobList) do
cNPCVanish( Var.MobList[i] )
end
MemBlock = {} --><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> - ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ٽ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WaitBoom = {}
Init( Var, Handle, MapIndex )
--cDebugLog( "Ÿ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -> <EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ȭ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" )
end
-- <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ܰ<EFBFBD> <EFBFBD>˻<EFBFBD>
if Var.CurrentPhase < 1 or #PhaseData < Var.CurrentPhase then
return ReturnAI.CPP
end
Skill = PhaseData[Var.CurrentPhase]["Skill"]
-- <EFBFBD>˺񷹿<EFBFBD> <EFBFBD><EFBFBD>ų <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if Skill ~= nil then
if Skill_Wait( Var ) == false and Var.IsUsedSkillAll == false then
-- <EFBFBD><EFBFBD>ų<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<EFBFBD><EFBFBD>
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
-- Ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<EFBFBD>÷<EFBFBD><EFBFBD>̾<EFBFBD>)<EFBFBD≯<EFBFBD>
if Skill[Var.CurrentSkill]["Target"] == "Other" then
if TargetHandle ~= nil then
cSetAbstate_Range( Var.Handle, Range, SHINEOBJECT, Index, Strength, KeepTime )
end
-- Ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>(mob) <EFBFBD≯<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
-- <EFBFBD><EFBFBD>ũ <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ȯ
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
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ܰ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>˻<EFBFBD>
if i == Var.CurrentPhase then
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>׷<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>˻<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
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ð<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>˻<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
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>˻<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<EFBFBD><EFBFBD> Second <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><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 ) -- <EFBFBD>ڻ<EFBFBD>
end
--------------------------------------------------------------------
------------------------- Reward Part --------------------------
--------------------------------------------------------------------
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><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
-- <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ȯ <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>׷<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><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") -- <EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD> <EFBFBD><EFBFBD><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 ) -- <EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD>(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>° <EFBFBD>μ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϰų<EFBFBD> 1<EFBFBD≯<EFBFBD> activ)
--Common_RemoveTreasure( Var.MapIndex )
cNPCVanish( Var.Handle )
Var.StepFunc = nil
end
end