SigFiesta/LuaScript/AIScript/BH_Albireo.lua

819 lines
25 KiB
Lua
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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