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.

932 lines
24 KiB

--------------------------------------------------------------------------------
-- Emperor Slime 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
-- ù <EFBFBD>÷<EFBFBD><EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD>α<EFBFBD><EFBFBD><EFBFBD> üũ
Var["bPlayerMapLogin"] = true
-- <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><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ʴ´<EFBFBD>.
if Var["KQLimitTime"] == nil
then
return
end
if Var["CurSec"] == nil
then
return
end
-- <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 nLimitSec = Var["KQLimitTime"] - Var["CurSec"]
cShowKQTimerWithLife_Obj( Handle, nLimitSec )
end
function KingSlimeRoutine( Handle, MapIndex )
cExecCheck "KingSlimeRoutine"
local Var = InstanceField[ MapIndex ]
if Var == nil
then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
local RoutineTimeIndex = ""..Handle
-- // 0.2<EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD> üũ<EFBFBD>ϴ<EFBFBD> <EFBFBD><EFBFBD>ƾ
if Var["RoutineTime"][ RoutineTimeIndex ] == nil
then
Var["RoutineTime"][ RoutineTimeIndex ] = cCurrentSecond()
end
if Var["RoutineTime"][ RoutineTimeIndex ] + 0.2 > cCurrentSecond()
then
return ReturnAI["CPP"]
else
Var["RoutineTime"][ RoutineTimeIndex ] = cCurrentSecond()
end
-- 0.2<EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD> üũ<EFBFBD>ϴ<EFBFBD> <EFBFBD><EFBFBD>ƾ //
if Var["Enemy"] == nil
then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
if Var["Enemy"][ Handle ] == nil
then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
if Var["LowerFloor"] == nil
then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
if Var["LowerFloor"]["FloorNumber"] == nil
then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
local CurFloorNo = Var["LowerFloor"]["FloorNumber"]
if Var["LowerFloor"..CurFloorNo ] == nil
then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
if Var["LowerFloor"..CurFloorNo ]["nKingSlimeCount"] == nil
then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if cIsObjectDead( Handle ) == 1
then
Var["LowerFloor"..CurFloorNo ]["nKingSlimeCount"] = Var["LowerFloor"..CurFloorNo ]["nKingSlimeCount"] - 1
if Var["LowerFloor"..CurFloorNo ]["nKingSlimeCount"] > 0
then
cMobShout( Handle, KingSlimeChat["ScriptFileName"], KingSlimeChat["DeathDialogIndex"] )
else
cMobSuicide( MapIndex )
end
cAIScriptSet( Handle )
Var["Enemy"][ Handle ] = nil
return ReturnAI["END"]
end
end
function EmperorSlimeRoutine( Handle, MapIndex )
cExecCheck "EmperorSlimeRoutine"
local Var = InstanceField[ MapIndex ]
if Var == nil
then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
local RoutineTimeIndex = ""..Handle
-- // 0.2<EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD> üũ<EFBFBD>ϴ<EFBFBD> <EFBFBD><EFBFBD>ƾ
if Var["RoutineTime"][ RoutineTimeIndex ] == nil
then
Var["RoutineTime"][ RoutineTimeIndex ] = cCurrentSecond()
end
if Var["RoutineTime"][ RoutineTimeIndex ] + 0.2 > cCurrentSecond()
then
return ReturnAI["CPP"]
else
Var["RoutineTime"][ RoutineTimeIndex ] = cCurrentSecond()
end
-- 0.2<EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD> üũ<EFBFBD>ϴ<EFBFBD> <EFBFBD><EFBFBD>ƾ //
if Var["Enemy"] == nil
then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
if Var["Enemy"][ Handle ] == nil
then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
if Var["TopFloor"] == nil
then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
if Var["Enemy"][ Handle ]["PhaseNumber"] == nil
then
Var["Enemy"][ Handle ]["PhaseNumber"] = 1
end
local CurPhaseNumber = Var["Enemy"][ Handle ]["PhaseNumber"]
-- <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><EFBFBD>̹Ƿ<EFBFBD> <EFBFBD>ش<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if CurPhaseNumber == 5 or CurPhaseNumber == 3
then
if Var["QueenSlimeHandle"] ~= nil
then
for i = 1, #Var["QueenSlimeHandle"]
do
if cIsObjectDead( Var["QueenSlimeHandle"][ i ] ) == 1 or cIsObjectDead( Handle ) == 1
then
if Var["HealEffect"] ~= nil
then
if Var["HealEffect"][ i ]["Boss"] ~= nil
then
cNPCVanish( Var["HealEffect"][ i ]["Boss"] )
DebugLog( "Effect Vanished : "..Var["HealEffect"][ i ]["Boss"] )
end
if Var["HealEffect"][ i ]["Queen"] ~= nil
then
cNPCVanish( Var["HealEffect"][ i ]["Queen"] )
DebugLog( "Effect Vanished : "..Var["HealEffect"][ i ]["Queen"] )
end
Var["HealEffect"][ i ] = {}
else
ErrorLog( "Var[\"HealEffect\"] ~= nil" )
end
end
end
end
end
-- Emperor Slime <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if cIsObjectDead( Handle ) == 1
then
cMobDialog( MapIndex, EmperorSlimeChat["SpeakerIndex"], EmperorSlimeChat["ScriptFileName"], EmperorSlimeChat["DeathDialogIndex"] )
cMobSuicide( MapIndex )
cAIScriptSet( Handle )
Var["Enemy"][ Handle ]["PhaseNumber"] = nil
Var["Enemy"][ Handle ] = nil
return ReturnAI["END"]
end
-- <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>
if Var["TopFloor"]["bBossTurning"] == true
then
if Var["TopFloor"]["BossAnimationStopStepSec"] <= Var["CurSec"]
then
cAnimate( Handle, "stop" )
Var["TopFloor"]["bBossTurning"] = false
end
end
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> üũ <EFBFBD><EFBFBD> <EFBFBD>ൿ
local CurHP, MaxHP = cObjectHP( Handle )
local RoutineStepFunc = DummyPhaseFunc
if CurHP == MaxHP
then
-- <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><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ʱ<EFBFBD>ȭ
if cAggroListSize( Handle ) == 0
then
if CurPhaseNumber ~= 1
then
Var["Enemy"][ Handle ]["PhaseNumber"] = 1
Var["TopFloor"]["bCurPhaseSummonEnd"] = false
Var["TopFloor"]["CurPhaseNextSummonStepSec"] = Var["CurSec"]
Var["TopFloor"]["QueenRevivalStepSec"] = nil
cVanishAll( MapIndex, "Emp_Tornado" )
cVanishAll( MapIndex, "Emp_Slime2" )
cVanishAll( MapIndex, "Emp_FireSlime2" )
cVanishAll( MapIndex, "Emp_IronSlime2" )
cVanishAll( MapIndex, "Emp_QueenSlime2" )
end
end
return ReturnAI["CPP"]
end
-- <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> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ȣ üũ
if CurPhaseNumber >= #BossPhaseNameTable
then
return ReturnAI["CPP"]
end
-- <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 CurBossPhaseName = BossPhaseNameTable[ CurPhaseNumber ]
local NextBossPhaseName = BossPhaseNameTable[ CurPhaseNumber + 1 ]
local CurPhaseSkill = EmperorSlimeSkill[ CurBossPhaseName ]
local NextPhaseSkill = EmperorSlimeSkill[ NextBossPhaseName ]
local HP_RealRate = ( CurHP * 1000 ) / MaxHP -- 1000<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>
if HP_RealRate <= NextPhaseSkill["HP_Rate"]
then
-- <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><EFBFBD><EFBFBD>
Var["Enemy"][ Handle ]["PhaseNumber"] = CurPhaseNumber + 1
RoutineStepFunc = PhaseActionFunc
-- <EFBFBD><EFBFBD>ȯ ȸ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ʱ<EFBFBD>ȭ
Var["TopFloor"]["CurSummonCount"] = 1
Var["TopFloor"]["bCurPhaseSummonEnd"] = false
Var["TopFloor"]["CurPhaseNextSummonStepSec"] = Var["CurSec"]
-- <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> üũ
if NextPhaseSkill["SummonCount"] ~= nil
then
if NextPhaseSkill["SummonCount"] <= Var["TopFloor"]["CurSummonCount"]
then
Var["TopFloor"]["bCurPhaseSummonEnd"] = true
end
end
-- <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><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><EFBFBD><EFBFBD><EFBFBD>
if NextPhaseSkill["SummonGapSec"] ~= nil
then
Var["TopFloor"]["CurPhaseNextSummonStepSec"] = Var["CurSec"] + NextPhaseSkill["SummonGapSec"]
else
Var["TopFloor"]["bCurPhaseSummonEnd"] = true
end
-- <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><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>Ұų<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
else
-- <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><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if Var["TopFloor"]["bCurPhaseSummonEnd"] == true
then
return ReturnAI["CPP"]
end
-- <EFBFBD><EFBFBD>ȯ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>۵DZ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ƹ<EFBFBD><EFBFBD>͵<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ʴ´<EFBFBD>.
if CurPhaseNumber == 1
then
return ReturnAI["CPP"]
end
-- <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><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ȯ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if CurPhaseSkill["SummonGapSec"] == nil
then
-- Ȥ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>DZ<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>
Var["TopFloor"]["bCurPhaseSummonEnd"] = true
return ReturnAI["CPP"]
end
-- <EFBFBD>ð<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ȯ Ÿ<EFBFBD>̹<EFBFBD>
if Var["TopFloor"]["CurPhaseNextSummonStepSec"] <= Var["CurSec"]
then
local bSummonTiming = true
-- <EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ȯ <EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD> HP <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ѹ<EFBFBD> <EFBFBD><EFBFBD> üũ <EFBFBD>Ѵ<EFBFBD>.
if CurPhaseNumber == 4
then
-- <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> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
if HP_RealRate > CurPhaseSkill["HP_Rate"]
then
bSummonTiming = false
end
end
if bSummonTiming == true
then
RoutineStepFunc = PhaseActionFunc
-- <EFBFBD><EFBFBD>ȯ ȸ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Var["TopFloor"]["CurSummonCount"] = Var["TopFloor"]["CurSummonCount"] + 1
-- <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> üũ
if CurPhaseSkill["SummonCount"] ~= nil
then
if CurPhaseSkill["SummonCount"] <= Var["TopFloor"]["CurSummonCount"]
then
Var["TopFloor"]["bCurPhaseSummonEnd"] = true
end
end
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ȯ <EFBFBD>ð<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Var["TopFloor"]["CurPhaseNextSummonStepSec"] = Var["CurSec"] + CurPhaseSkill["SummonGapSec"]
else
-- <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>ٷ<EFBFBD> <EFBFBD><EFBFBD>ȯ<EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ð<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
Var["TopFloor"]["CurPhaseNextSummonStepSec"] = Var["CurSec"]
return ReturnAI["CPP"]
end
end
end
RoutineStepFunc( Handle, MapIndex )
return ReturnAI["CPP"]
end
function DummyPhaseFunc( )
cExecCheck "DummyPhaseFunc"
end
function PhaseActionFunc( BossHandle, MapIndex )
cExecCheck "PhaseActionFunc"
if BossHandle == nil
then
return
end
if MapIndex == nil
then
return
end
local Var = InstanceField[ MapIndex ]
if Var == nil
then
return
end
local PhaseNumber = Var["Enemy"][ BossHandle ]["PhaseNumber"]
if PhaseNumber == 1
then
ErrorLog( "PhaseActionFunc::Normal-Phase does not have Phase-Action." )
return
elseif PhaseNumber < 1 and PhaseNumber > #BossPhaseNameTable
then
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD>
ErrorLog( "PhaseActionFunc::Invalid-Phase" )
return
end
local BossPhase = BossPhaseNameTable[ PhaseNumber ]
DebugLog( "Start PhaseActionFunc::"..BossPhase )
if EmperorSlimeChat["SummonMobShout"][ BossPhase ] ~= nil
then
if Var["TopFloor"]["CurSummonCount"] == 1
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ħ
then
cMobShout( BossHandle, EmperorSlimeChat["ScriptFileName"], EmperorSlimeChat["SummonMobShout"][ BossPhase ]["Index"] )
end
end
local i = 1
local SummonMobTableInfo = nil
if EmperorSlimeSkill[ BossPhase ] ~= nil
then
SummonMobTableInfo = RegenInfo["Mob"]["TopFloor"][ EmperorSlimeSkill[ BossPhase ]["SummonMobsTableIndex"] ]
-- <EFBFBD><EFBFBD>ȯ<EFBFBD>ϸ鼭 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȸ<EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <EFBFBD>κ<EFBFBD>
if EmperorSlimeSkill[ BossPhase ]["bBossSpinning"] == true
then
cAnimate( BossHandle, "start", EmperorSlimeSkill["SummonEffect"]["EffectSkillIndex"] )
Var["TopFloor"]["bBossTurning"] = true
Var["TopFloor"]["BossAnimationStopStepSec"] = Var["CurSec"] + EmperorSlimeSkill["SummonEffect"]["AnimationKeepSec"] + 1 -- + 1 <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ð<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
end
else
ErrorLog( "SummonMobInfo is not exist( BossPhase : ".. BossPhase.." )" )
end
if SummonMobTableInfo ~= nil
then
-- <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ȯ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ٸ<EFBFBD>
for k = 1, #SummonMobTableInfo
do
if SummonMobTableInfo[ k ] ~= nil
then
local SummonMobInfo = { Index = SummonMobTableInfo[ k ]["Index"], x = SummonMobTableInfo[ k ]["x"], y = SummonMobTableInfo[ k ]["y"], dir = 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><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 BossX, BossY = cObjectLocate( BossHandle )
local OriginX = Var["Enemy"][ BossHandle ]["x"]
local OriginY = Var["Enemy"][ BossHandle ]["y"]
local LimitSquare = EmperorSlimeSkill["LimitDistanceFromOrigin"] * EmperorSlimeSkill["LimitDistanceFromOrigin"]
-- <EFBFBD>Ÿ<EFBFBD> <EFBFBD>ʰ<EFBFBD><EFBFBD><EFBFBD>
if cDistanceSquar( BossX, BossY, OriginX, OriginY ) > LimitSquare
then
SummonMobInfo["x"] = BossX
SummonMobInfo["y"] = BossY
end
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD> <EFBFBD><EFBFBD>ȯ
if EmperorSlimeSkill[ BossPhase ]["bSummonAreaCenterTornado"] == true
then
local TornadoHandle = cMobRegen_XY( MapIndex, EmperorSlimeSkill["TornadoEffect"]["CenterMobIndex"], SummonMobInfo["x"], SummonMobInfo["y"], 0 )
if TornadoHandle ~= nil
then
cSetAIScript ( MainLuaScriptPath, TornadoHandle )
cAIScriptFunc( TornadoHandle, "Entrance", "SummonMobRoutine" )
local TornadoInfo = { Index = EmperorSlimeSkill["TornadoEffect"]["CenterMobIndex"], x = SummonMobInfo["x"], y = SummonMobInfo["y"], dir = 0, }
Var["Enemy"][ TornadoHandle ] = TornadoInfo
if EmperorSlimeSkill["TornadoEffect"]["MobLifeSec"] ~= nil
then
Var["Enemy"][ TornadoHandle ]["DieStepSec"] = Var["CurSec"] + EmperorSlimeSkill["TornadoEffect"]["MobLifeSec"]
end
else
ErrorLog( "Summon Tornado Fail"..TornadoInfo["Index"] )
end
end
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŭ <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ȯ
if Var["KQ_Difficulty"] == nil
then
Var["KQ_Difficulty"] = 3
end
for nSummonCount = 1, SummonMobTableInfo[ k ]["count"..Var["KQ_Difficulty"] ]
do
local SummonMobHandle = nil
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ȯ
if PhaseNumber == 5
then
SummonMobInfo["x"] = BossX
SummonMobInfo["y"] = BossY
end
SummonMobHandle = cMobRegen_Circle( MapIndex, SummonMobInfo["Index"], SummonMobInfo["x"], SummonMobInfo["y"], SummonMobInfo["radius"] )
if SummonMobHandle ~= nil
then
cSetAIScript ( MainLuaScriptPath, SummonMobHandle )
cAIScriptFunc( SummonMobHandle, "Entrance", "SummonMobRoutine" )
Var["Enemy"][ SummonMobHandle ] = SummonMobInfo
if EmperorSlimeSkill[ BossPhase ]["MobLifeSec"] ~= nil
then
Var["Enemy"][ SummonMobHandle ]["DieStepSec"] = Var["CurSec"] + EmperorSlimeSkill[ BossPhase ]["MobLifeSec"]
end
if PhaseNumber == 5
then
if Var["QueenSlimeHandle"] == nil
then
Var["QueenSlimeHandle"] = {}
end
Var["QueenSlimeHandle"][ nSummonCount ] = SummonMobHandle
end
else
ErrorLog( "Summon Mob Fail : "..SummonMobInfo["Index"] )
end
end
end
end
end
DebugLog( "End PhaseActionFunc::"..BossPhase )
end
function SummonMobRoutine( Handle, MapIndex )
cExecCheck "SummonMobRoutine"
local Var = InstanceField[ MapIndex ]
if Var == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
-- // 0.2<EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD> üũ<EFBFBD>ϴ<EFBFBD> <EFBFBD><EFBFBD>ƾ
local RoutineTimeIndex = ""..Handle
if Var["RoutineTime"][ RoutineTimeIndex ] == nil
then
Var["RoutineTime"][ RoutineTimeIndex ] = cCurrentSecond()
end
if Var["RoutineTime"][ RoutineTimeIndex ] + 0.2 > cCurrentSecond()
then
return ReturnAI["CPP"]
else
Var["RoutineTime"][ RoutineTimeIndex ] = cCurrentSecond()
end
-- 0.2<EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD> üũ<EFBFBD>ϴ<EFBFBD> <EFBFBD><EFBFBD>ƾ //
if Var["Enemy"] == nil
then
cAIScriptSet( Handle )
cNPCVanish( Handle )
Var["RoutineTime"][ RoutineTimeIndex ] = nil
return ReturnAI["END"]
end
if Var["Enemy"][ Handle ] == nil
then
cAIScriptSet( Handle )
cNPCVanish( Handle )
Var["RoutineTime"][ RoutineTimeIndex ] = nil
return ReturnAI["END"]
end
if Var["TopFloor"] == nil
then
cAIScriptSet( Handle )
cNPCVanish( Handle )
Var["RoutineTime"][ RoutineTimeIndex ] = nil
return ReturnAI["END"]
end
-- <EFBFBD><EFBFBD>ȯ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if cIsObjectDead( Handle ) == 1
then
cAIScriptSet( Handle )
Var["Enemy"][ Handle ] = nil
Var["RoutineTime"][ RoutineTimeIndex ] = nil
return ReturnAI["END"]
end
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if cIsObjectDead( Var["Enemy"]["BossHandle"] ) == 1
then
cMobSuicide( MapIndex, Handle )
cAIScriptSet( Handle )
Var["Enemy"][ Handle ] = nil
Var["RoutineTime"][ RoutineTimeIndex ] = nil
return ReturnAI["END"]
end
local sSkillIndex = ""
if Var["Enemy"][ Handle ]["Index"] == "Emp_Tornado"
then
sSkillIndex = "TornadoEffect"
elseif Var["Enemy"][ Handle ]["Index"] == "Emp_Slime2"
then
sSkillIndex = "FirstSummon"
elseif Var["Enemy"][ Handle ]["Index"] == "Emp_FireSlime2"
then
sSkillIndex = "SecondSummon"
elseif Var["Enemy"][ Handle ]["Index"] == "Emp_IronSlime2"
then
sSkillIndex = "ThirdSummon"
elseif Var["Enemy"][ Handle ]["Index"] == "Emp_QueenSlime2"
then
sSkillIndex = "LastSummon"
-- <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ҹ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
local CurHP, MaxHP = cObjectHP( Var["Enemy"]["BossHandle"] )
local HP_RealRate = 1000
if MaxHP ~= 0
then
HP_RealRate = ( CurHP * 1000 ) / MaxHP -- 1000<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
end
if HP_RealRate >= EmperorSlimeSkill[ sSkillIndex ]["MobVanishCondBossHP_Rate"]
then
-- <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><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>. )
cVanishAll( MapIndex, Var["Enemy"][ Handle ]["Index"] )
for i = 1, #Var["QueenSlimeHandle"]
do
local VanishHandle = Var["QueenSlimeHandle"][ i ]
DebugLog( "VanishedByHP"..EmperorSlimeSkill[ sSkillIndex ]["MobVanishCondBossHP_Rate"].."More : "..sSkillIndex..", Handle("..VanishHandle..")" )
cAIScriptSet( VanishHandle )
Var["Enemy"][ VanishHandle ] = nil
Var["RoutineTime"][ ""..VanishHandle ] = nil
end
-- <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><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> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD> ( <EFBFBD><EFBFBD><EFBFBD><EFBFBD> HP<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> )
Var["Enemy"][ Var["Enemy"]["BossHandle"] ]["PhaseNumber"] = 3
Var["TopFloor"]["bCurPhaseSummonEnd"] = true
return ReturnAI["END"]
end
-- <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><EFBFBD><EFBFBD>
-- <EFBFBD>Ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 30<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><EFBFBD><EFBFBD> <EFBFBD>ʴ´<EFBFBD>.
local QueenDeadCount = 0
local CurQueenNo = 0
local DeadQueenNo = 0
for i = 1, #Var["QueenSlimeHandle"]
do
if cIsObjectDead( Var["QueenSlimeHandle"][ i ] ) == 1
then
-- <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>
QueenDeadCount = QueenDeadCount + 1
DeadQueenNo = i
else
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ƾ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ȣ <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if Handle == Var["QueenSlimeHandle"][ i ]
then
CurQueenNo = i
end
end
end
-- <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> <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>)
--DebugLog( "AtThisRoutine, QueenDeathCount("..QueenDeadCount.."), CurQueenNo("..CurQueenNo.."), DeadQueenNo("..DeadQueenNo..")" )
-- <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> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ƴϸ<EFBFBD> <EFBFBD>ڻ<EFBFBD>ó<EFBFBD><EFBFBD>
if CurQueenNo == 0
then
ErrorLog( "This QueenSlime was aleady died." )
cMobSuicide( Handle )
cAIScriptSet( Handle )
Var["Enemy"][ Handle ] = nil
Var["RoutineTime"][ RoutineTimeIndex ] = nil
return ReturnAI["END"]
end
if QueenDeadCount == 1
then
if Var["TopFloor"]["QueenRevivalStepSec"] ~= nil
then
-- <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><EFBFBD><EFBFBD><EFBFBD>ð<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>Ȱ
if Var["TopFloor"]["QueenRevivalStepSec"] <= Var["CurSec"]
then
DebugLog( "AtThisRoutine, YesQueenRevivalTiming" )
local BossX, BossY = cObjectLocate( Var["Enemy"]["BossHandle"] )
local QueenSlimeRegenInfo = RegenInfo["Mob"]["TopFloor"]["TwinQueenSlimes"][ 1 ]
local QueenSlimeHandle = cMobRegen_Circle( MapIndex, QueenSlimeRegenInfo["Index"], BossX, BossY, QueenSlimeRegenInfo["radius"] )
if QueenSlimeHandle ~= nil
then
DebugLog( "Revival : "..sSkillIndex..", Handle("..QueenSlimeHandle.."), No("..DeadQueenNo..")" )
-- cNoticeString( MapIndex, "Revival : "..sSkillIndex..", Handle("..QueenSlimeHandle.."), No("..DeadQueenNo..")" )
Var["QueenSlimeHandle"][ DeadQueenNo ] = QueenSlimeHandle
cSetAIScript ( MainLuaScriptPath, QueenSlimeHandle )
cAIScriptFunc( QueenSlimeHandle, "Entrance", "SummonMobRoutine" )
Var["Enemy"][ QueenSlimeHandle ] = { Index = Var["Enemy"][ Handle ]["Index"], x = Var["Enemy"][ Handle ]["x"], y = Var["Enemy"][ Handle ]["y"], dir = 0, }
else
ErrorLog( "Summon Queen Fail"..Var["Enemy"][ Handle ]["Index"] )
end
Var["TopFloor"]["QueenRevivalStepSec"] = nil
QueenDeadCount = 0
else
-- <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>Ȱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>󸶳<EFBFBD> <EFBFBD><EFBFBD><EFBFBD>Ҵ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
-- DebugLog( "Queen Revival Remain Sec : "..( Var["TopFloor"]["QueenRevivalStepSec"] - Var["CurSec"] ) )
end
end
if QueenDeadCount == 1 and Var["TopFloor"]["QueenRevivalStepSec"] == nil
then
local RevivalInfo = QueenSlimeInfo["RevivalInfo"]
if cGetAbstate( Handle, RevivalInfo["AbstateIndex"] ) == nil
then
DebugLog( "AtThisRoutine, NoQueenAbstate" )
if cSetAbstate( Handle, RevivalInfo["AbstateIndex"], RevivalInfo["AbstateStrength"], RevivalInfo["AbstateKeepTime"] ) == nil
then
ErrorLog( "cSetAbstate To Queen : Failed" )
-- cNoticeString( MapIndex, "Queen("..Handle..") Abstate Fail" )
else
-- cNoticeString( MapIndex, "Queen("..Handle..") Abstate Success" )
end
Var["TopFloor"]["QueenRevivalStepSec"] = Var["CurSec"] + RevivalInfo["RevivalSec"]
else
-- DebugLog( "AtThisRoutine, YesQueenAbstate" )
end
end
else
Var["TopFloor"]["QueenRevivalStepSec"] = nil
end
-- <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>
if Var["Enemy"][ Handle ]["HealStepSec"] == nil
then
Var["Enemy"][ Handle ]["HealStepSec"] = Var["CurSec"]
end
if Var["Enemy"][ Handle ]["HealStepSec"] <= Var["CurSec"]
then
-- <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <EFBFBD>ڵ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>̺<EFBFBD> <EFBFBD>ʱ<EFBFBD>ȭ
if Var["HealEffect"] == nil
then
Var["HealEffect"] = {}
for i = 1, #Var["QueenSlimeHandle"]
do
Var["HealEffect"][ i ] = {}
end
end
-- <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ȯ<EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <EFBFBD>ѹ<EFBFBD> <EFBFBD><EFBFBD> ó<EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>
if Var["QueenSlimeHandle"] ~= nil
then
for i = 1, #Var["QueenSlimeHandle"]
do
if cIsObjectDead( Var["QueenSlimeHandle"][ i ] ) == 1
then
if Var["HealEffect"] ~= nil
then
if Var["HealEffect"][ i ]["Boss"] ~= nil
then
cNPCVanish( Var["HealEffect"][ i ]["Boss"] )
DebugLog( "Effect Vanished : "..Var["HealEffect"][ i ]["Boss"] )
end
if Var["HealEffect"][ i ]["Queen"] ~= nil
then
cNPCVanish( Var["HealEffect"][ i ]["Queen"] )
DebugLog( "Effect Vanished : "..Var["HealEffect"][ i ]["Queen"] )
end
Var["HealEffect"][ i ] = {}
else
ErrorLog( "Var[\"HealEffect\"] ~= nil" )
end
end
end
end
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if Var["KQ_Difficulty"] == nil
then
Var["KQ_Difficulty"] = 3
end
cHeal( Var["Enemy"]["BossHandle"], QueenSlimeInfo["HealInfo"]["HealAmount"..Var["KQ_Difficulty"] ] )
local sHealEffectIndex = QueenSlimeInfo["HealInfo"]["HealEffectIndex"]
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if Var["HealEffect"][ CurQueenNo ]["Queen"] == nil
then
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ to <EFBFBD><EFBFBD>
local QueenHealEffectHandle = cEffectRegen_Object( MapIndex, sHealEffectIndex, Handle, 3600000, 1, 1000 )
if QueenHealEffectHandle ~= nil
then
Var["HealEffect"][ CurQueenNo ]["Queen"] = QueenHealEffectHandle
else
ErrorLog( "QueenHealEffectHandle is nil" )
end
end
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if Var["HealEffect"][ CurQueenNo ]["Boss"] == nil
then
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ to <EFBFBD><EFBFBD><EFBFBD>۷<EFBFBD>
local BossHealEffectHandle = cEffectRegen_Object( MapIndex, sHealEffectIndex, Var["Enemy"]["BossHandle"], 3600000, 1, 1000 )
if BossHealEffectHandle ~= nil
then
Var["HealEffect"][ CurQueenNo ]["Boss"] = BossHealEffectHandle
else
ErrorLog( "BossHealEffectHandle is nil" )
end
end
-- <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Var["Enemy"][ Handle ]["HealStepSec"] = Var["CurSec"] + QueenSlimeInfo["HealInfo"]["HealGapSec"]
end
else
-- <EFBFBD>߸<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̹Ƿ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ְ<EFBFBD> AI<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
ErrorLog( "MobIndex is invalid : "..Var["Enemy"][ Handle ]["Index"] )
cNPCVanish( Handle )
cAIScriptSet( Handle )
Var["Enemy"][ Handle ] = nil
Var["RoutineTime"][ RoutineTimeIndex ] = nil
return ReturnAI["END"]
end
-- <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> <EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> <EFBFBD>ڻ<EFBFBD>ó<EFBFBD><EFBFBD>
if EmperorSlimeSkill[ sSkillIndex ]["MobLifeSec"] ~= nil
then
if Var["Enemy"][ Handle ]["DieStepSec"] <= Var["CurSec"]
then
if sSkillIndex == "TornadoEffect"
then
-- <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> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ҹ<EFBFBD>ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Ѵ<EFBFBD>.
-- DebugLog( "Vanished : "..sSkillIndex..", Handle("..Handle..")" )
cNPCVanish( Handle )
cAIScriptSet( Handle )
Var["Enemy"][ Handle ] = nil
Var["RoutineTime"][ RoutineTimeIndex ] = nil
return ReturnAI["END"]
else
-- <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> <EFBFBD>ڻ<EFBFBD><EFBFBD>Ѵ<EFBFBD>.
-- DebugLog( "Suicided : "..sSkillIndex..", Handle("..Handle..")" )
cMobSuicide( MapIndex, Handle )
cAIScriptSet( Handle )
Var["Enemy"][ Handle ] = nil
Var["RoutineTime"][ RoutineTimeIndex ] = nil
return ReturnAI["END"]
end
end
end
return ReturnAI["CPP"]
end