849 lines
22 KiB
Lua
849 lines
22 KiB
Lua
|
--------------------------------------------------------------------------------
|
|||
|
-- Secret Laboratory Routine --
|
|||
|
--------------------------------------------------------------------------------
|
|||
|
|
|||
|
function PlayerMapLogin( MapIndex, Handle )
|
|||
|
cExecCheck "PlayerMapLogin"
|
|||
|
|
|||
|
if MapIndex == nil
|
|||
|
then
|
|||
|
DebugLog( "PlayerMapLogin::MapIndex == nil")
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if Handle == nil
|
|||
|
then
|
|||
|
DebugLog( "PlayerMapLogin::Handle == nil")
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local Var = InstanceField[ MapIndex ]
|
|||
|
|
|||
|
if Var == nil
|
|||
|
then
|
|||
|
DebugLog( "PlayerMapLogin::Var == nil")
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
-- ù <20>÷<EFBFBD><C3B7>̾<EFBFBD><CCBE><EFBFBD> <20><> <20>α<EFBFBD><CEB1><EFBFBD> üũ
|
|||
|
Var["bPlayerMapLogin"] = true
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
function ExitGateClick( NPCHandle, PlyHandle, RegistNumber )
|
|||
|
cExecCheck "ExitGateClick"
|
|||
|
|
|||
|
DebugLog( "ExitGateClick::Start" )
|
|||
|
|
|||
|
if NPCHandle == nil
|
|||
|
then
|
|||
|
ErrorLog( "ExitGateClick::NPCHandle == nil" )
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if PlyHandle == nil
|
|||
|
then
|
|||
|
ErrorLog( "ExitGateClick::PlyHandle == nil" )
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
cLinkTo( PlyHandle, LinkInfo["ReturnMapOnGateClick"]["MapIndex"], LinkInfo["ReturnMapOnGateClick"]["x"], LinkInfo["ReturnMapOnGateClick"]["y"] )
|
|||
|
|
|||
|
DebugLog( "ExitGateClick::End" )
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
function PrisonClick( NPCHandle, PlyHandle, RegistNumber )
|
|||
|
cExecCheck "PrisonClick"
|
|||
|
|
|||
|
DebugLog( "PrisonClick::Start" )
|
|||
|
|
|||
|
if NPCHandle == nil
|
|||
|
then
|
|||
|
ErrorLog( "PrisonClick::NPCHandle == nil" )
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if PlyHandle == nil
|
|||
|
then
|
|||
|
ErrorLog( "PrisonClick::PlyHandle == nil" )
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
local MapIndex = cGetCurMapIndex( PlyHandle )
|
|||
|
|
|||
|
if MapIndex == nil
|
|||
|
then
|
|||
|
ErrorLog( "PrisonClick::MapIndex == nil" )
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
local Var = InstanceField[ MapIndex ]
|
|||
|
|
|||
|
if Var == nil
|
|||
|
then
|
|||
|
ErrorLog( "PrisonClick::Var == nil" )
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if Var["Prison"] == nil
|
|||
|
then
|
|||
|
ErrorLog( "PrisonClick::Var[\"Prison\"] == nil" )
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if Var["Prison"]["RegenInfo"] == nil
|
|||
|
then
|
|||
|
ErrorLog( "PrisonClick::Var[\"Prison\"][\"RegenInfo\"] == nil" )
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
-- <20>ش<EFBFBD> <20><><EFBFBD>谡 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>踦 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
|||
|
local nLotKey = cGetItemLot( PlyHandle, PrisonKeyIndex )
|
|||
|
if nLotKey > 0
|
|||
|
then
|
|||
|
if cInvenItemDestroy( PlyHandle, PrisonKeyIndex, nLotKey ) ~= 1
|
|||
|
then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
cDoorAction( NPCHandle, Var["Prison"]["RegenInfo"]["Block"], "open" )
|
|||
|
Var["Prison"]["bOpened"] = true
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
DebugLog( "PrisonClick::End" )
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
function SemiBossRoutine( Handle, MapIndex )
|
|||
|
cExecCheck "SemiBossRoutine"
|
|||
|
|
|||
|
if Handle == nil
|
|||
|
then
|
|||
|
ErrorLog( "SemiBossRoutine::Handle == nil" )
|
|||
|
return ReturnAI["END"]
|
|||
|
end
|
|||
|
|
|||
|
if MapIndex == nil
|
|||
|
then
|
|||
|
ErrorLog( "SemiBossRoutine::MapIndex == nil" )
|
|||
|
cAIScriptSet( Handle )
|
|||
|
cNPCVanish( Handle )
|
|||
|
return ReturnAI["END"]
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
local Var = InstanceField[ MapIndex ]
|
|||
|
if Var == nil
|
|||
|
then
|
|||
|
ErrorLog( "SemiBossRoutine::Var == nil" )
|
|||
|
cAIScriptSet( Handle )
|
|||
|
cNPCVanish( Handle )
|
|||
|
return ReturnAI["END"]
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
-- 0.2<EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD> üũ<C3BC>ϴ<EFBFBD> <20><>ƾ
|
|||
|
if Var["RoutineTime"][ Handle ] <= cCurrentSecond()
|
|||
|
then
|
|||
|
Var["RoutineTime"][ Handle ] = cCurrentSecond() + 0.2
|
|||
|
else
|
|||
|
return ReturnAI["CPP"]
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
if Var["Enemy"] == nil
|
|||
|
then
|
|||
|
ErrorLog( "SemiBossRoutine::Var[\"Enemy\"] == nil" )
|
|||
|
cAIScriptSet( Handle )
|
|||
|
cNPCVanish( Handle )
|
|||
|
return ReturnAI["END"]
|
|||
|
end
|
|||
|
|
|||
|
if Var["Enemy"][ Handle ] == nil
|
|||
|
then
|
|||
|
ErrorLog( "SemiBossRoutine::Var[\"Enemy\"]["..Handle.."] == nil" )
|
|||
|
cAIScriptSet( Handle )
|
|||
|
cNPCVanish( Handle )
|
|||
|
return ReturnAI["END"]
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
-- SemiBoss <20><><EFBFBD><EFBFBD>
|
|||
|
if cIsObjectDead( Handle ) == 1
|
|||
|
then
|
|||
|
cAIScriptSet( Handle )
|
|||
|
Var["Enemy"][ Handle ] = nil
|
|||
|
return ReturnAI["END"]
|
|||
|
end
|
|||
|
|
|||
|
-- <20>Ʒ<EFBFBD> <20><>Ʈ<EFBFBD><C6AE> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
|||
|
if Var["EachFloor"] == nil
|
|||
|
then
|
|||
|
ErrorLog( "SemiBossRoutine::Var[\"EachFloor\"] == nil" )
|
|||
|
cAIScriptSet( Handle )
|
|||
|
cNPCVanish( Handle )
|
|||
|
Var["Enemy"][ Handle ] = nil
|
|||
|
return ReturnAI["END"]
|
|||
|
end
|
|||
|
|
|||
|
local CurStepNo = Var["EachFloor"]["StepNumber"]
|
|||
|
|
|||
|
if Var["EachFloor"..CurStepNo ] == nil
|
|||
|
then
|
|||
|
ErrorLog( "SemiBossRoutine::Var[\"EachFloor\""..CurStepNo.."] == nil" )
|
|||
|
cAIScriptSet( Handle )
|
|||
|
cNPCVanish( Handle )
|
|||
|
Var["Enemy"][ Handle ] = nil
|
|||
|
return ReturnAI["END"]
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
local sAbstateIndex
|
|||
|
if Var["Enemy"][ Handle ]["Index"] == "Lab_Slime"
|
|||
|
then
|
|||
|
sAbstateIndex = SemiBossAbstate["TimeAttackMini"]["Index"]
|
|||
|
else
|
|||
|
sAbstateIndex = SemiBossAbstate["TimeAttack"]["Index"]
|
|||
|
end
|
|||
|
|
|||
|
local AbstateStrength, AbstateRestTime = cGetAbstate( Handle, sAbstateIndex )
|
|||
|
if AbstateStrength == nil or AbstateStrength == 0 or AbstateRestTime == nil or AbstateRestTime == 0
|
|||
|
then
|
|||
|
-- <20>Ȱɷ<C8B0><C9B7>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD> <20><><EFBFBD><EFBFBD> Ȥ<><C8A4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
if cIsObjectDead( Handle ) == nil
|
|||
|
then
|
|||
|
-- <20><> <20><>Ȳ<EFBFBD><C8B2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ɷȴٴ<C8B4> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><C7BE>ٴ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
local ImmortalStrength, ImmortalRestTime = cGetAbstate( Handle, SemiBossAbstate["Immortal"]["Index"] )
|
|||
|
if ImmortalStrength == 1
|
|||
|
then
|
|||
|
cMobSuicide( Var["MapIndex"], Handle )
|
|||
|
cAIScriptSet( Handle )
|
|||
|
Var["Enemy"][ Handle ] = nil
|
|||
|
return ReturnAI["END"]
|
|||
|
else
|
|||
|
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ȱɷȴٸ<C8B4> <20><><EFBFBD> <20><><EFBFBD>¸<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
Var["EachFloor"..CurStepNo ]["bSemiBossAwakened"] = true
|
|||
|
|
|||
|
--<2D>Ѹ<EFBFBD><D1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EEB3AA> Ư<><C6AF> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>.
|
|||
|
Var["bSpecialRewardMode"] = false
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.( <20><><EFBFBD><EFBFBD><EEB3B5><EFBFBD>Ƿ<EFBFBD>.. )
|
|||
|
Var["EachFloor"..CurStepNo ]["bSemiBossWarned60Sec"] = true
|
|||
|
Var["EachFloor"..CurStepNo ]["bSemiBossWarned30Sec"] = true
|
|||
|
elseif AbstateStrength == 2
|
|||
|
then
|
|||
|
-- <20>Ѵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.( <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD> <20><EFBFBD><DEB6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ʾȿ<CABE> <20><><EFBFBD><EFBFBD><EFBFBD>ϹǷ<CFB9>.. )
|
|||
|
Var["EachFloor"..CurStepNo ]["bSemiBossWarned60Sec"] = true
|
|||
|
Var["EachFloor"..CurStepNo ]["bSemiBossWarned30Sec"] = true
|
|||
|
end
|
|||
|
|
|||
|
-- <20><><EFBFBD><EFBFBD><EFBFBD>̻<EFBFBD><CCBB><EFBFBD> <20>ɷ<EFBFBD><C9B7>ִ<EFBFBD> <20><><EFBFBD>¿<EFBFBD><C2BF><EFBFBD> <20>ֺ<EFBFBD><D6BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20>״´<D7B4>.(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƾ<EFBFBD><C6BE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ڻ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD>)
|
|||
|
if AbstateStrength == 1 or AbstateStrength == 2
|
|||
|
then
|
|||
|
-- <20>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>Ǵ<EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD> <20><><EFBFBD>ٷȴٰ<C8B4> üũ
|
|||
|
if Var["CurSec"] >= Var["EachFloor"..CurStepNo ]["WaitMobGenSec"]
|
|||
|
then
|
|||
|
if cObjectCount( Var["MapIndex"], ObjectType["Mob"] ) == 1
|
|||
|
then
|
|||
|
cSetAbstate( Handle, SemiBossAbstate["Immortal"]["Index"], SemiBossAbstate["Immortal"]["Strength"], SemiBossAbstate["Immortal"]["KeepTime"] )
|
|||
|
cResetAbstate( Handle, sAbstateIndex )
|
|||
|
|
|||
|
-- <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.( <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̹Ƿ<CCB9>.. )
|
|||
|
Var["EachFloor"..CurStepNo ]["bSemiBossWarned60Sec"] = true
|
|||
|
Var["EachFloor"..CurStepNo ]["bSemiBossWarned30Sec"] = true
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
return ReturnAI["CPP"]
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
function MidBossRoutine( Handle, MapIndex )
|
|||
|
cExecCheck "MidBossRoutine"
|
|||
|
|
|||
|
if Handle == nil
|
|||
|
then
|
|||
|
ErrorLog( "MidBossRoutine::Handle == nil" )
|
|||
|
return ReturnAI["END"]
|
|||
|
end
|
|||
|
|
|||
|
if MapIndex == nil
|
|||
|
then
|
|||
|
ErrorLog( "MidBossRoutine::MapIndex == nil" )
|
|||
|
cAIScriptSet( Handle )
|
|||
|
cNPCVanish( Handle )
|
|||
|
return ReturnAI["END"]
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
local Var = InstanceField[ MapIndex ]
|
|||
|
if Var == nil
|
|||
|
then
|
|||
|
ErrorLog( "MidBossRoutine::Var == nil" )
|
|||
|
cAIScriptSet( Handle )
|
|||
|
cNPCVanish( Handle )
|
|||
|
return ReturnAI["END"]
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
-- 0.2<EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD> üũ<C3BC>ϴ<EFBFBD> <20><>ƾ
|
|||
|
if Var["RoutineTime"][ Handle ] <= cCurrentSecond()
|
|||
|
then
|
|||
|
Var["RoutineTime"][ Handle ] = cCurrentSecond() + 0.2
|
|||
|
else
|
|||
|
return ReturnAI["CPP"]
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
if Var["Enemy"] == nil
|
|||
|
then
|
|||
|
ErrorLog( "MidBossRoutine::Var[\"Enemy\"] == nil" )
|
|||
|
cAIScriptSet( Handle )
|
|||
|
cNPCVanish( Handle )
|
|||
|
return ReturnAI["END"]
|
|||
|
end
|
|||
|
|
|||
|
if Var["Enemy"][ Handle ] == nil
|
|||
|
then
|
|||
|
ErrorLog( "MidBossRoutine::Var[\"Enemy\"]["..Handle.."] == nil" )
|
|||
|
cAIScriptSet( Handle )
|
|||
|
cNPCVanish( Handle )
|
|||
|
return ReturnAI["END"]
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
-- Mid Boss <20><><EFBFBD><EFBFBD>
|
|||
|
if cIsObjectDead( Handle ) == 1
|
|||
|
then
|
|||
|
-- <20>ܸ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ڻ<EFBFBD>
|
|||
|
cMobSuicide( Var["MapIndex"] )
|
|||
|
|
|||
|
cAIScriptSet( Handle )
|
|||
|
Var["Enemy"][ Handle ] = nil
|
|||
|
return ReturnAI["END"]
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
if Var["EachFloor"] == nil
|
|||
|
then
|
|||
|
ErrorLog( "MidBossRoutine::Var[\"EachFloor\"] == nil" )
|
|||
|
cAIScriptSet( Handle )
|
|||
|
cNPCVanish( Handle )
|
|||
|
return ReturnAI["END"]
|
|||
|
end
|
|||
|
|
|||
|
return ReturnAI["CPP"]
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
|
|||
|
-------------------------------------------------------------------------------------------------------
|
|||
|
function BossDamaged( MapIndex, AttackerHandle, MaxHP, CurHP, DefenderHandle )
|
|||
|
cExecCheck "BossDamaged"
|
|||
|
|
|||
|
if DefenderHandle == nil
|
|||
|
then
|
|||
|
ErrorLog( "BossDamaged::DefenderHandle == nil" )
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if MapIndex == nil
|
|||
|
then
|
|||
|
ErrorLog( "BossDamaged::MapIndex == nil" )
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if MaxHP == nil or CurHP == nil
|
|||
|
then
|
|||
|
ErrorLog( "BossDamaged::HP Info is nil" )
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
local Var = InstanceField[ MapIndex ]
|
|||
|
if Var == nil
|
|||
|
then
|
|||
|
ErrorLog( "BossDamaged::Var == nil" )
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if Var["Enemy"] == nil
|
|||
|
then
|
|||
|
ErrorLog( "BossDamaged::Var[\"Enemy\"] == nil" )
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if Var["Enemy"][ DefenderHandle ] == nil
|
|||
|
then
|
|||
|
ErrorLog( "BossDamaged::Var[\"Enemy\"]["..DefenderHandle.."] == nil" )
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if Var["StageInfo"]["BossTypeNo"] == nil
|
|||
|
then
|
|||
|
ErrorLog( "BossDamaged::Var[\"StageInfo\"][\"BossTypeNo\"] == nil" )
|
|||
|
cAIScriptSet( Handle )
|
|||
|
cNPCVanish( Handle )
|
|||
|
return ReturnAI["END"]
|
|||
|
end
|
|||
|
|
|||
|
if Var["BossBattle"] == nil
|
|||
|
then
|
|||
|
ErrorLog( "BossDamaged::Var[\"BossBattle\"] == nil" )
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
-- <20><><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
if Var["BossBattle"]["Casting"] == nil
|
|||
|
then
|
|||
|
Var["BossBattle"]["Casting"] = {}
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
local HP_Rate = ( CurHP * 1000 ) / MaxHP
|
|||
|
|
|||
|
local nBossType = Var["StageInfo"]["BossTypeNo"]
|
|||
|
|
|||
|
-- <20><>ų<EFBFBD><C5B3><EFBFBD><EFBFBD> <20>ѹ<EFBFBD> <20><> Ž<><C5BD>
|
|||
|
for nIndex, sSkillName in pairs ( BossSkillNameTable )
|
|||
|
do
|
|||
|
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ
|
|||
|
if Var["BossBattle"][ sSkillName.."PhaseNo"] == nil
|
|||
|
then
|
|||
|
Var["BossBattle"][ sSkillName.."PhaseNo"] = 1
|
|||
|
end
|
|||
|
|
|||
|
-- <20><><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD><CCBA><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
if Var["BossBattle"][ sSkillName ] == nil
|
|||
|
then
|
|||
|
Var["BossBattle"][ sSkillName ] = {}
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
-- <20><>ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
local sThresholdTableIndex = sSkillName.."HP_Boss"..nBossType -- ex ) "SummonHP_Boss1"
|
|||
|
local nCurPhase = Var["BossBattle"][ sSkillName.."PhaseNo"]
|
|||
|
local nMaxPhase = #ThresholdTable[ sThresholdTableIndex ]
|
|||
|
|
|||
|
if sSkillName ~= "PeriodicSummon"
|
|||
|
then
|
|||
|
if nCurPhase <= nMaxPhase
|
|||
|
then
|
|||
|
-- <20><><EFBFBD><EFBFBD> HP<48><50> <20><>ų<EFBFBD><C5B3> Threshold <20><> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ұ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
while ThresholdTable[ sThresholdTableIndex ][ nCurPhase ] >= HP_Rate
|
|||
|
do
|
|||
|
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ų<EFBFBD><C5B3> <20><><EFBFBD>̺<EFBFBD> <20><> <20>ε<EFBFBD><CEB5><EFBFBD> <20>ƿ<DEBE><C6BF><EFBFBD>
|
|||
|
local sCurSkillIndex = "HP"..ThresholdTable[ sThresholdTableIndex ][ nCurPhase ] -- ex) "HP800"
|
|||
|
local sBossSkillTableIndex = sThresholdTableIndex -- <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
if BossSkill[ sBossSkillTableIndex ][ sCurSkillIndex ] ~= nil
|
|||
|
then
|
|||
|
-- <20><>ų<EFBFBD><C5B3> <20><>ƾ<EFBFBD><C6BE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
if Var["BossBattle"][ sSkillName ][ nCurPhase ] == nil
|
|||
|
then
|
|||
|
Var["BossBattle"][ sSkillName ][ nCurPhase ] = {}
|
|||
|
Var["BossBattle"][ sSkillName ][ nCurPhase ]["bCasting"] = true
|
|||
|
Var["BossBattle"][ sSkillName ][ nCurPhase ]["sSkillTableIndex"] = sCurSkillIndex
|
|||
|
DebugLog( "BossDamaged::SetSkillCasting-"..sSkillName.." "..sCurSkillIndex.." "..nCurPhase )
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
nCurPhase = nCurPhase + 1
|
|||
|
if nCurPhase > nMaxPhase
|
|||
|
then
|
|||
|
break
|
|||
|
end
|
|||
|
|
|||
|
end -- <20><>ų<EFBFBD><C5B3> <20><><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD><CFB6><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
-- <20><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
|||
|
Var["BossBattle"][ sSkillName.."PhaseNo"] = nCurPhase
|
|||
|
|
|||
|
end -- <20><> <20><>ų<EFBFBD><C5B3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʰ<EFBFBD><CAB0>ߴ<EFBFBD><DFB4><EFBFBD> Ȯ<><C8AE><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD> <20><><EFBFBD>ǹ<EFBFBD> //
|
|||
|
|
|||
|
end -- <20>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD> <20><>ų üũ<C3BC><C5A9> <20><>ƾ<EFBFBD><C6BE><EFBFBD><EFBFBD> <20><> //
|
|||
|
|
|||
|
end -- <20><>ų<EFBFBD><C5B3><EFBFBD><EFBFBD> <20>ѹ<EFBFBD><D1B9><EFBFBD> Ž<><C5BD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD> //
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
function BossRoutine( Handle, MapIndex )
|
|||
|
cExecCheck "BossRoutine"
|
|||
|
|
|||
|
if Handle == nil
|
|||
|
then
|
|||
|
ErrorLog( "BossRoutine::Handle == nil" )
|
|||
|
return ReturnAI["END"]
|
|||
|
end
|
|||
|
|
|||
|
if MapIndex == nil
|
|||
|
then
|
|||
|
ErrorLog( "BossRoutine::MapIndex == nil" )
|
|||
|
cAIScriptSet( Handle )
|
|||
|
cNPCVanish( Handle )
|
|||
|
return ReturnAI["END"]
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
local Var = InstanceField[ MapIndex ]
|
|||
|
if Var == nil
|
|||
|
then
|
|||
|
ErrorLog( "BossRoutine::Var == nil" )
|
|||
|
cAIScriptSet( Handle )
|
|||
|
cNPCVanish( Handle )
|
|||
|
return ReturnAI["END"]
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
-- 0.2<EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD> üũ<C3BC>ϴ<EFBFBD> <20><>ƾ
|
|||
|
if Var["RoutineTime"][ Handle ] <= cCurrentSecond()
|
|||
|
then
|
|||
|
Var["RoutineTime"][ Handle ] = cCurrentSecond() + 0.2
|
|||
|
else
|
|||
|
return ReturnAI["CPP"]
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
if Var["Enemy"] == nil
|
|||
|
then
|
|||
|
ErrorLog( "BossRoutine::Var[\"Enemy\"] == nil" )
|
|||
|
cAIScriptSet( Handle )
|
|||
|
cNPCVanish( Handle )
|
|||
|
return ReturnAI["END"]
|
|||
|
end
|
|||
|
|
|||
|
if Var["Enemy"][ Handle ] == nil
|
|||
|
then
|
|||
|
ErrorLog( "BossRoutine::Var[\"Enemy\"]["..Handle.."] == nil" )
|
|||
|
cAIScriptSet( Handle )
|
|||
|
cNPCVanish( Handle )
|
|||
|
return ReturnAI["END"]
|
|||
|
end
|
|||
|
|
|||
|
if Var["StageInfo"]["BossTypeNo"] == nil
|
|||
|
then
|
|||
|
ErrorLog( "BossRoutine::Var[\"StageInfo\"][\"BossTypeNo\"] == nil" )
|
|||
|
cAIScriptSet( Handle )
|
|||
|
cNPCVanish( Handle )
|
|||
|
Var["Enemy"][ Handle ] = nil
|
|||
|
return ReturnAI["END"]
|
|||
|
end
|
|||
|
|
|||
|
if Var["BossBattle"] == nil
|
|||
|
then
|
|||
|
ErrorLog( "BossRoutine::Var[\"BossBattle\"] == nil" )
|
|||
|
cAIScriptSet( Handle )
|
|||
|
cNPCVanish( Handle )
|
|||
|
Var["Enemy"][ Handle ] = nil
|
|||
|
return ReturnAI["END"]
|
|||
|
end
|
|||
|
|
|||
|
if Var["EachFloor"] == nil
|
|||
|
then
|
|||
|
ErrorLog( "BossRoutine::Var[\"EachFloor\"] == nil" )
|
|||
|
cAIScriptSet( Handle )
|
|||
|
cNPCVanish( Handle )
|
|||
|
Var["Enemy"][ Handle ] = nil
|
|||
|
return ReturnAI["END"]
|
|||
|
end
|
|||
|
|
|||
|
if Var["EachFloor"..Var["EachFloor"]["StepNumber"] ] == nil
|
|||
|
then
|
|||
|
ErrorLog( "BossRoutine::Var[ EachFloor"..Var["EachFloor"]["StepNumber"].."] == nil" )
|
|||
|
cAIScriptSet( Handle )
|
|||
|
cNPCVanish( Handle )
|
|||
|
Var["Enemy"][ Handle ] = nil
|
|||
|
return ReturnAI["END"]
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
-- Boss <20><><EFBFBD><EFBFBD>
|
|||
|
if cIsObjectDead( Handle ) ~= nil
|
|||
|
then
|
|||
|
DebugLog( "BossRoutine::BossDead" )
|
|||
|
cMobSuicide( Var["MapIndex"] )
|
|||
|
|
|||
|
-- <20><>ų<EFBFBD><C5B3><EFBFBD><EFBFBD> <20><EFBFBD><DEB8><EFBFBD> <20>ʱ<EFBFBD>ȭ
|
|||
|
for nIndex, sSkillName in pairs ( BossSkillNameTable )
|
|||
|
do
|
|||
|
Var["BossBattle"][ sSkillName ] = nil
|
|||
|
Var["BossBattle"][ sSkillName.."PhaseNo"] = nil
|
|||
|
end
|
|||
|
|
|||
|
cAIScriptSet( Handle )
|
|||
|
Var["Enemy"][ Handle ] = nil
|
|||
|
return ReturnAI["END"]
|
|||
|
end
|
|||
|
|
|||
|
local CurStepNo = Var["EachFloor"]["StepNumber"]
|
|||
|
local nBossType = Var["StageInfo"]["BossTypeNo"]
|
|||
|
|
|||
|
--///////---------------------- <20>ֱ<EFBFBD><D6B1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ƾ <20><> üũ ------------------------------------
|
|||
|
|
|||
|
-- <20><><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
if Var["BossBattle"]["Casting"] == nil
|
|||
|
then
|
|||
|
Var["BossBattle"]["Casting"] = {}
|
|||
|
end
|
|||
|
|
|||
|
local CurHP, MaxHP = cObjectHP( Handle )
|
|||
|
|
|||
|
-- HP <20>ҷ<EFBFBD><D2B7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>н<EFBFBD> Full<6C><6C> <20><><EFBFBD><EFBFBD>
|
|||
|
local HP_Rate = 1000
|
|||
|
if CurHP ~= nil
|
|||
|
then
|
|||
|
if MaxHP > 0
|
|||
|
then
|
|||
|
HP_Rate = ( CurHP * 1000 ) / MaxHP
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
if #BossSkillNameTable >= 2
|
|||
|
then
|
|||
|
-- <20>ֱ<EFBFBD><D6B1><EFBFBD> <20><>ȯ <20><>ų<EFBFBD><C5B3> Ž<><C5BD>
|
|||
|
local sSkillName = BossSkillNameTable[2] -- ex) sSkillName = "PeriodicSummon"
|
|||
|
|
|||
|
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ
|
|||
|
if Var["BossBattle"][ sSkillName.."PhaseNo"] == nil
|
|||
|
then
|
|||
|
Var["BossBattle"][ sSkillName.."PhaseNo"] = 1
|
|||
|
end
|
|||
|
|
|||
|
-- <20><><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD><CCBA><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
if Var["BossBattle"][ sSkillName ] == nil
|
|||
|
then
|
|||
|
Var["BossBattle"][ sSkillName ] = {}
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
-- <20><>ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
local sThresholdTableIndex = sSkillName.."HP_Boss"..nBossType -- ex ) "PeriodicSummonHP_Boss1"
|
|||
|
|
|||
|
-- <20><> <20>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD> <20><>ų<EFBFBD><C5B3> <20><>Ģ<EFBFBD><C4A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
-- HP<48><50> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ߵ<EFBFBD>
|
|||
|
-- <20><><EFBFBD>̾<EFBFBD> <20><>ų<EFBFBD><C5B3> HP <20><> <20><><EFBFBD><EFBFBD> <20>ߵ<EFBFBD><DFB5><EFBFBD> <20>ȴٸ<C8B4> <20>Ѱ<EFBFBD><D1B0><EFBFBD><EFBFBD><EFBFBD> <20>ߵ<EFBFBD>
|
|||
|
-- HP<48><50> <20>ش<EFBFBD> <20><>ų<EFBFBD><C5B3> <20>ߵ<EFBFBD><DFB5>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EEB3AA> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><>ų<EFBFBD><C5B3> <20>ʱ<EFBFBD>ȭ
|
|||
|
-- <20>ʱ<EFBFBD>ȭ <20><> <20><><EFBFBD>´<EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20><><EFBFBD>Ƽ<EFBFBD> <20>ٽ<EFBFBD> HP<48><50> <20><>ų<EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD> <20>ش<EFBFBD><D8B4>Ǵ<EFBFBD> <20><>Ȳ<EFBFBD≯<EFBFBD> <20>״<EFBFBD><D7B4><EFBFBD> <20>ߵ<EFBFBD>
|
|||
|
--
|
|||
|
for nCurPhase = 1, #ThresholdTable[ sThresholdTableIndex ]
|
|||
|
do
|
|||
|
-- <20><>ų <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD>
|
|||
|
if Var["BossBattle"][ sSkillName ][ nCurPhase ] == nil
|
|||
|
then
|
|||
|
Var["BossBattle"][ sSkillName ][ nCurPhase ] = {}
|
|||
|
end
|
|||
|
|
|||
|
local CurPhaseCastingInfo = Var["BossBattle"][ sSkillName ][ nCurPhase ]
|
|||
|
|
|||
|
-- <20><><EFBFBD><EFBFBD> HP<48><50> <20><>ų<EFBFBD><C5B3> Threshold <20><> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD> <20>ش<EFBFBD><D8B4>Ǵ<EFBFBD> <20>κ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>û
|
|||
|
|
|||
|
local bCastCurPhaseSkill = false
|
|||
|
|
|||
|
-- HP <20><><EFBFBD><EFBFBD> üũ
|
|||
|
if ThresholdTable[ sThresholdTableIndex ][ nCurPhase ] >= HP_Rate
|
|||
|
then
|
|||
|
if ThresholdTable[ sThresholdTableIndex ][ nCurPhase + 1 ] ~= nil
|
|||
|
then
|
|||
|
if ThresholdTable[ sThresholdTableIndex ][ nCurPhase + 1 ] < HP_Rate
|
|||
|
then
|
|||
|
bCastCurPhaseSkill = true
|
|||
|
else
|
|||
|
-- HP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EEB3AA> <20><><EFBFBD><EFBFBD> <20>ֱ<EFBFBD><D6B1><EFBFBD> <20>ʱ<EFBFBD>ȭ <20>ȴ<EFBFBD>.
|
|||
|
CurPhaseCastingInfo["dLastCastedTime"] = 0
|
|||
|
|
|||
|
-- <20><>ȯ <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̽<EFBFBD><CCBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ȳ<EFBFBD><C8B2> <20><><EFBFBD>쿡<EFBFBD><ECBFA1> <20>ʱ<EFBFBD>ȭ<EFBFBD><C8AD><EFBFBD><EFBFBD>
|
|||
|
if Var["EachFloor"..CurStepNo ]["bBossSummonDialogEnd"] == true
|
|||
|
then
|
|||
|
Var["EachFloor"..CurStepNo ]["bBossSummonDialogEnd"] = nil
|
|||
|
Var["EachFloor"..CurStepNo ]["nHP_BossSummonDialog"] = nil
|
|||
|
end
|
|||
|
end
|
|||
|
else
|
|||
|
bCastCurPhaseSkill = true
|
|||
|
end
|
|||
|
else
|
|||
|
-- HP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EEB3AA> <20><><EFBFBD><EFBFBD> <20>ֱ<EFBFBD><D6B1><EFBFBD> <20>ʱ<EFBFBD>ȭ <20>ȴ<EFBFBD>.
|
|||
|
CurPhaseCastingInfo["dLastCastedTime"] = 0
|
|||
|
|
|||
|
-- <20><>ȯ <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̽<EFBFBD><CCBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ȳ<EFBFBD><C8B2> <20><><EFBFBD>쿡<EFBFBD><ECBFA1> <20>ʱ<EFBFBD>ȭ<EFBFBD><C8AD><EFBFBD><EFBFBD>
|
|||
|
if Var["EachFloor"..CurStepNo ]["bBossSummonDialogEnd"] == true
|
|||
|
then
|
|||
|
Var["EachFloor"..CurStepNo ]["bBossSummonDialogEnd"] = nil
|
|||
|
Var["EachFloor"..CurStepNo ]["nHP_BossSummonDialog"] = nil
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ų<EFBFBD><C5B3> <20><><EFBFBD>̺<EFBFBD> <20><> <20>ε<EFBFBD><CEB5><EFBFBD> <20>ƿ<DEBE><C6BF><EFBFBD>
|
|||
|
local sBossSkillTableIndex = sThresholdTableIndex -- <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ex ) "SummonHP_Boss1"
|
|||
|
local sCurSkillIndex = "HP"..ThresholdTable[ sThresholdTableIndex ][ nCurPhase ] -- ex) "HP800"
|
|||
|
|
|||
|
|
|||
|
-- HP <20><><EFBFBD><EFBFBD> üũ <20><><EFBFBD><EFBFBD> <20><>ų<EFBFBD><C5B3> <20><> Ÿ<>̹<EFBFBD><CCB9><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
if bCastCurPhaseSkill == true
|
|||
|
then
|
|||
|
|
|||
|
if CurPhaseCastingInfo["dLastCastedTime"] == nil
|
|||
|
then
|
|||
|
CurPhaseCastingInfo["dLastCastedTime"] = 0
|
|||
|
end
|
|||
|
|
|||
|
if BossSkill[ sBossSkillTableIndex ] ~= nil
|
|||
|
then
|
|||
|
local CurBossSkillInfo = BossSkill[ sBossSkillTableIndex ][ sCurSkillIndex ]
|
|||
|
|
|||
|
if CurPhaseCastingInfo["nSummonCount"] == nil
|
|||
|
then
|
|||
|
CurPhaseCastingInfo["nSummonCount"] = 0
|
|||
|
end
|
|||
|
|
|||
|
if CurBossSkillInfo ~= nil and CurBossSkillInfo["SummonMobs"] ~= nil
|
|||
|
then
|
|||
|
for nCurSubPhase = 1, #CurBossSkillInfo["SummonMobs"]
|
|||
|
do
|
|||
|
if CurBossSkillInfo["SummonMobs"][ nCurSubPhase ] ~= nil
|
|||
|
then
|
|||
|
local CurSubPhaseInfo = CurBossSkillInfo["SummonMobs"][ nCurSubPhase ]
|
|||
|
|
|||
|
-- <20><> <20><>ȯ Ƚ<><C8BD><EFBFBD><EFBFBD> 0<><30><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ / 0<><30> <20>ƴ϶<C6B4><CFB6><EFBFBD> <20>ش<EFBFBD> Ƚ<><C8BD><EFBFBD><EFBFBD>ŭ <20><>ȯ
|
|||
|
if CurPhaseCastingInfo["nSummonCount"] < CurSubPhaseInfo["SummonCount"] or CurSubPhaseInfo["SummonCount"] == 0
|
|||
|
then
|
|||
|
if Var["CurSec"] >= CurPhaseCastingInfo["dLastCastedTime"] + CurSubPhaseInfo["Interval"]
|
|||
|
then
|
|||
|
if CurPhaseCastingInfo["bCasting"] ~= true
|
|||
|
then
|
|||
|
-- <20><>ų<EFBFBD><C5B3> <20><>ƾ<EFBFBD><C6BE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
CurPhaseCastingInfo["bCasting"] = true
|
|||
|
CurPhaseCastingInfo["sSkillTableIndex"] = sCurSkillIndex
|
|||
|
DebugLog( "BossRoutine::SetSkillCasting-"..sSkillName.." "..sCurSkillIndex.." "..nCurPhase )
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
else
|
|||
|
ErrorLog( "BossRoutine::CurBossSkillInfo does not exist.")
|
|||
|
end
|
|||
|
else
|
|||
|
ErrorLog( "BossRoutine::BossSkillInfo does not exist.")
|
|||
|
end
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
---------------------- <20>ֱ<EFBFBD><D6B1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ƾ <20><> üũ ------------------------------------/////
|
|||
|
|
|||
|
|
|||
|
-------------<2D><><EFBFBD><EFBFBD><EFBFBD>ܰ<EFBFBD>---------------------------------------------------------
|
|||
|
|
|||
|
-- <20><><EFBFBD><EFBFBD> <20><>ȯ<EFBFBD><C8AF>ų <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̽<EFBFBD><CCBD><EFBFBD><EFBFBD><EFBFBD> <20>ȳ<EFBFBD><C8B3><EFBFBD><EFBFBD>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ٸ<EFBFBD><D9B8><EFBFBD>.
|
|||
|
if Var["EachFloor"..CurStepNo ]["bBossSummonDialogEnd"] ~= false -- true or nil <20>϶<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
then
|
|||
|
-- <20><>ų<EFBFBD><C5B3><EFBFBD><EFBFBD> <20>ѹ<EFBFBD> <20><> Ž<><C5BD>
|
|||
|
for nIndex, sSkillName in pairs ( BossSkillNameTable )
|
|||
|
do
|
|||
|
-- <20><>ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
local sThresholdTableIndex = sSkillName.."HP_Boss"..nBossType -- ex ) "PeriodicSummonHP_Boss1"
|
|||
|
|
|||
|
-- <20><><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ش<EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̺<EFBFBD><CCBA><EFBFBD> <20><><EFBFBD>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ȵ<EFBFBD> <20><><EFBFBD>̹Ƿ<CCB9> <20>н<EFBFBD>
|
|||
|
if Var["BossBattle"][ sSkillName.."PhaseNo"] ~= nil and Var["BossBattle"][ sSkillName ] ~= nil
|
|||
|
then
|
|||
|
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD> <20><>ų<EFBFBD>鸸 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD>.
|
|||
|
for nCurPhase = 1, #Var["BossBattle"][ sSkillName ]
|
|||
|
do
|
|||
|
-- <20><><EFBFBD><EFBFBD>üũ
|
|||
|
if Var["BossBattle"][ sSkillName ][ nCurPhase ] == nil
|
|||
|
then
|
|||
|
break
|
|||
|
end
|
|||
|
|
|||
|
local CurPhaseCastingInfo = Var["BossBattle"][ sSkillName ][ nCurPhase ]
|
|||
|
|
|||
|
-- <20>غ<EFBFBD><D8BA><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD>
|
|||
|
if CurPhaseCastingInfo["bCasting"] == true
|
|||
|
then
|
|||
|
local sCurSkillTableIndex = CurPhaseCastingInfo["sSkillTableIndex"] -- ex) "HP800"
|
|||
|
|
|||
|
local sBossSkillTableIndex = sSkillName.."HP_Boss"..nBossType -- ex ) "SummonHP_Boss1"
|
|||
|
local CurSkillInfo = BossSkill[ sBossSkillTableIndex ][ sCurSkillTableIndex ]
|
|||
|
|
|||
|
-- <20>ܸ<EFBFBD> <20><>ȯ
|
|||
|
if sSkillName == "Summon"
|
|||
|
then
|
|||
|
DebugLog( "BossRoutine::StartSkillCasting-"..sSkillName.." "..sCurSkillTableIndex.." "..nCurPhase )
|
|||
|
|
|||
|
for nCurSubPhase = 1, #CurSkillInfo["SummonMobs"]
|
|||
|
do
|
|||
|
for k = 1, CurSkillInfo["SummonMobs"][ nCurSubPhase ]["Count"]
|
|||
|
do
|
|||
|
cMobRegen_Obj( CurSkillInfo["SummonMobs"][ nCurSubPhase ]["Index"], Handle )
|
|||
|
DebugLog( "BossRoutine::CastSkill-"..sSkillName.." "..sCurSkillTableIndex.." ("..k.."/"..CurSkillInfo["SummonMobs"][ nCurSubPhase ]["Count"]..") :"..CurSkillInfo["SummonMobs"][ nCurSubPhase ]["Index"] )
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
elseif sSkillName == "PeriodicSummon"
|
|||
|
then
|
|||
|
DebugLog( "BossRoutine::StartSkillCasting-"..sSkillName.." "..sCurSkillTableIndex.." "..nCurPhase )
|
|||
|
|
|||
|
for nCurSubPhase = 1, #CurSkillInfo["SummonMobs"]
|
|||
|
do
|
|||
|
for k = 1, CurSkillInfo["SummonMobs"][ nCurSubPhase ]["CountPerSummon"]
|
|||
|
do
|
|||
|
cMobRegen_Obj( CurSkillInfo["SummonMobs"][ nCurSubPhase ]["Index"], Handle )
|
|||
|
DebugLog( "BossRoutine::CastSkill-"..sSkillName.." "..sCurSkillTableIndex.." ("..k.."/"..CurSkillInfo["SummonMobs"][ nCurSubPhase ]["CountPerSummon"]..") :"..CurSkillInfo["SummonMobs"][ nCurSubPhase ]["Index"] )
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
if CurPhaseCastingInfo["nSummonCount"] == nil
|
|||
|
then
|
|||
|
CurPhaseCastingInfo["nSummonCount"] = 0
|
|||
|
end
|
|||
|
|
|||
|
-- <20>ش<EFBFBD> ȸ<><C8B8> <20><><EFBFBD><EFBFBD> <20>Ϸ<EFBFBD> ó<><C3B3>
|
|||
|
CurPhaseCastingInfo["dLastCastedTime"] = Var["CurSec"]
|
|||
|
CurPhaseCastingInfo["nSummonCount"] = CurPhaseCastingInfo["nSummonCount"] + 1
|
|||
|
|
|||
|
else
|
|||
|
ErrorLog( "BossRoutine::This name of skill("..sSkillName..") is invalid." )
|
|||
|
end -- <20><>ų <20≯<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ǹ<EFBFBD> //
|
|||
|
|
|||
|
|
|||
|
-- <20><><EFBFBD><EFBFBD> <20>Ϸ<EFBFBD> ó<><C3B3>
|
|||
|
CurPhaseCastingInfo["bCasting"] = false
|
|||
|
DebugLog( "BossRoutine::EndSkillCasting-"..sSkillName.." "..sCurSkillTableIndex.." "..nCurPhase )
|
|||
|
|
|||
|
-- <20><><EFBFBD>̽<EFBFBD><CCBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
Var["EachFloor"..CurStepNo ]["bBossSummonDialogEnd"] = false
|
|||
|
Var["EachFloor"..CurStepNo ]["nHP_BossSummonDialog"] = ThresholdTable[ sThresholdTableIndex ][ nCurPhase ]
|
|||
|
|
|||
|
end -- <20><>ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>غ<EFBFBD> <20>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD><EFBFBD> Ȯ<><C8AE><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD>ǹ<EFBFBD> //
|
|||
|
|
|||
|
end -- <20><> <20><>ų<EFBFBD><C5B3> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> //
|
|||
|
|
|||
|
end -- <20><>ų <20><><EFBFBD><EFBFBD> <20><>ü<EFBFBD><C3BC> <20>ߴ°<DFB4> Ȯ<><C8AE><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD>ǹ<EFBFBD> //
|
|||
|
|
|||
|
end -- <20><> <20><>ų<EFBFBD><C5B3> <20>ѹ<EFBFBD><D1B9><EFBFBD> Ž<><C5BD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD> //
|
|||
|
|
|||
|
end -- <20><>ȯ<EFBFBD><C8AF>ų <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̽<EFBFBD><CCBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ȯ<><C8AE><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD>ǹ<EFBFBD> //
|
|||
|
|
|||
|
return ReturnAI["CPP"]
|
|||
|
|
|||
|
end
|