566 lines
11 KiB
Lua
Raw Normal View History

2023-06-26 04:40:53 -07:00
--------------------------------------------------------------------------------
-- Legend Of Bijou 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
-- <20>ð<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><ECBFA1> <20>ƹ<EFBFBD><C6B9>͵<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ´<CAB4>.
if Var["KQLimitTime"] == nil
then
return
end
if Var["CurSec"] == nil
then
return
end
-- <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ѽð<D1BD><C3B0><EFBFBD> <20>޾Ƽ<DEBE> <20><>û<EFBFBD>Ѵ<EFBFBD>.
local nLimitSec = Var["KQLimitTime"] - Var["CurSec"]
cShowKQTimerWithLife_Obj( Handle, nLimitSec )
end
function TeleportKamarisRoutine( Handle, MapIndex )
cExecCheck "TeleportKamarisRoutine"
if Handle == nil
then
ErrorLog( "TeleportKamarisRoutine::Handle == nil" )
return ReturnAI["END"]
end
if MapIndex == nil
then
cAIScriptSet( Handle )
cNPCVanish( Handle )
ErrorLog( "TeleportKamarisRoutine::MapIndex == nil" )
return ReturnAI["END"]
end
local Var = InstanceField[ MapIndex ]
if Var == nil
then
cAIScriptSet( Handle )
cNPCVanish( Handle )
ErrorLog( "TeleportKamarisRoutine::Var == nil" )
return ReturnAI["END"]
end
-- // 0.2<EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD> üũ<C3BC>ϴ<EFBFBD> <20><>ƾ
if Var["RoutineTime"][ Handle ] == nil
then
Var["RoutineTime"][ Handle ] = cCurrentSecond()
end
if Var["RoutineTime"][ Handle ] + 0.2 > cCurrentSecond()
then
return ReturnAI["CPP"]
else
Var["RoutineTime"][ Handle ] = cCurrentSecond()
end
-- 0.2<EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD> üũ<C3BC>ϴ<EFBFBD> <20><>ƾ //
if Var["Enemy"][ Handle ] == nil
then
cAIScriptSet( Handle )
cNPCVanish( Handle )
ErrorLog( "TeleportKamarisRoutine::Var[\"Enemy\"][ Handle ] == nil" )
return ReturnAI["END"]
end
if cIsObjectDead( Handle ) == 1
then
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̾<EFBFBD><CCBE>α<EFBFBD>
cMobDialog( Var["MapIndex"], NPC_GuardChat["SpeakerIndex"], NPC_GuardChat["ScriptFileName"], NPC_GuardChat["Destroy1stKamarisDialog"]["Index"] )
Var["Enemy"][ Handle ] = nil
Var["RoutineTime"][ Handle ] = nil
cAIScriptSet( Handle )
return ReturnAI["END"]
end
-- <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> HP<48><50> <20><><EFBFBD>̴<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ù ī<><C4AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڷ<EFBFBD><DAB7><EFBFBD>Ʈ <20>ؿ´<D8BF>.
if Var["FirstGateAndWall"] ~= nil
then
if Var["FirstGateAndWall"]["bMobGateDamaged"] == true
then
-- <20>ѹ<EFBFBD><D1B9><EFBFBD> <20>ڷ<EFBFBD><DAB7><EFBFBD>Ʈ <20>ϵ<EFBFBD><CFB5><EFBFBD> <20>ʱ<EFBFBD>ȭ
Var["FirstGateAndWall"]["bMobGateDamaged"] = nil
local Coord = Var["Enemy"][ Handle ]["TeleportCoord"]
cCastTeleport( Handle, "SpecificCoord", Coord["x"], Coord["y"] )
end
end
return ReturnAI["CPP"]
end
function MobGateRoutine( Handle, MapIndex )
cExecCheck "MobGateRoutine"
if Handle == nil
then
ErrorLog( "MobGateRoutine::Handle == nil" )
return ReturnAI["END"]
end
if MapIndex == nil
then
cAIScriptSet( Handle )
cNPCVanish( Handle )
ErrorLog( "MobGateRoutine::MapIndex == nil" )
return ReturnAI["END"]
end
local Var = InstanceField[ MapIndex ]
if Var == nil
then
cAIScriptSet( Handle )
cNPCVanish( Handle )
ErrorLog( "MobGateRoutine::Var == nil" )
return ReturnAI["END"]
end
-- // 0.2<EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD> üũ<C3BC>ϴ<EFBFBD> <20><>ƾ
if Var["RoutineTime"][ Handle ] == nil
then
Var["RoutineTime"][ Handle ] = cCurrentSecond()
end
if Var["RoutineTime"][ Handle ] + 0.2 > cCurrentSecond()
then
return ReturnAI["CPP"]
else
Var["RoutineTime"][ Handle ] = cCurrentSecond()
end
-- 0.2<EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD> üũ<C3BC>ϴ<EFBFBD> <20><>ƾ //
if Var["Enemy"][ Handle ] == nil
then
cAIScriptSet( Handle )
cNPCVanish( Handle )
ErrorLog( "MobGateRoutine::Var[\"Enemy\"][ Handle ] == nil" )
return ReturnAI["END"]
end
if Var["FirstGateAndWall"] ~= nil
then
Var["FirstGateAndWall"]["bMobGateLive"] = true
if cIsObjectDead( Handle ) == 1
then
Var["Enemy"][ Handle ] = nil
Var["RoutineTime"][ Handle ] = nil
-- ù<><C3B9>° <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
Var["FirstGateAndWall"]["bMobGateLive"] = false
-- <20><>1<EFBFBD><31><EFBFBD><EFBFBD>
DebugLog( "Door1-Died" )
cAIScriptSet( Handle )
return ReturnAI["END"]
end
-- <20>ǰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̶<EFBFBD><CCB6><EFBFBD> <20>޸<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
local nCurHP, nMaxHP = cObjectHP( Handle )
-- <20>ش<EFBFBD> <20><>ü<EFBFBD><C3BC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
if nCurHP == nil or nMaxHP == nil
then
ErrorLog( "MobGateRoutine::MobGate does not exist" )
return ReturnAI["END"]
end
local Damaged_HP = nMaxHP - nCurHP
if Damaged_HP > 0
then
-- <20>ڷ<EFBFBD><DAB7><EFBFBD>Ʈ<EFBFBD><C6AE> <20><> <20>ѹ<EFBFBD><D1B9><EFBFBD> <20>ϰ<EFBFBD> <20>ϱ<EFBFBD> <20><><EFBFBD>ؼ<EFBFBD>
if Var["FirstGateAndWall"]["bMobGateDamaged"] == false
then
Var["FirstGateAndWall"]["bMobGateDamaged"] = true
end
end
elseif Var["GardenSquare"] ~= nil
then
if cIsObjectDead( Handle ) == 1
then
-- <20>׽<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD>̿<EFBFBD> <20>ڵ<EFBFBD> : <20><>2 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD>.
-- cDoorAction( Var["Door2"], RegenInfo["Stuff"]["SecondGate"]["Block"], "open" )
-- Var["GardenSquare"]["bGateOpen"] = true
-- <20><>2<EFBFBD><32><EFBFBD><EFBFBD>
DebugLog( "Door2-Died" )
-- <20>ι<EFBFBD>° <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> <20>׳<EFBFBD> <20>ױ<EFBFBD>
Var["Enemy"][ Handle ] = nil
Var["RoutineTime"][ Handle ] = nil
cAIScriptSet( Handle )
return ReturnAI["END"]
end
elseif Var["FinalGate"] ~= nil
then
Var["FinalGate"]["bMobGateLive"] = true
if cIsObjectDead( Handle ) == 1
then
-- <20><><EFBFBD><EFBFBD>° <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
Var["FinalGate"]["bMobGateLive"] = false
-- <20><>3<EFBFBD><33><EFBFBD><EFBFBD>
DebugLog( "Door3-Died" )
Var["Enemy"][ Handle ] = nil
Var["RoutineTime"][ Handle ] = nil
cAIScriptSet( Handle )
return ReturnAI["END"]
end
else
ErrorLog( "MobGateRoutine::Progress Step is illegal" )
end
return ReturnAI["CPP"]
end
function MobGateClick( NPCHandle, PlyHandle, RegistNumber )
cExecCheck "MobGateClick"
DebugLog( "MobGateClick::Start" )
if NPCHandle == nil
then
ErrorLog( "MobGateClick::NPCHandle == nil" )
return
end
if PlyHandle == nil
then
ErrorLog( "MobGateClick::PlyHandle == nil" )
return
end
local MapIndex = cGetCurMapIndex( PlyHandle )
if MapIndex == nil
then
ErrorLog( "MobGateClick::MapIndex == nil" )
return
end
local Var = InstanceField[ MapIndex ]
if Var == nil
then
ErrorLog( "MobGateClick::Var == nil" )
return
end
if Var["Door2"] == nil
then
ErrorLog( "MobGateClick::Var[\"Door2\"] == nil" )
return
end
if Var["GardenSquare"] == nil
then
ErrorLog( "MobGateClick::Var[\"GardenSquare\"] == nil" )
return
end
-- 5<><35><EFBFBD><EFBFBD> ī<><C4AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><ECBFA1> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
if Var["Door2Lock"] <= 0
then
DebugLog( "MobGateClick::Gate Open!" )
if cDoorAction( Var["Door2"], RegenInfo["Stuff"]["SecondGate"]["Block"], "open" ) == nil
then
ErrorLog( "MobGateClick::Gate was not Opened" )
end
Var["GardenSquare"]["bGateOpen"] = true
cMobSuicide( Var["MapIndex"], NPCHandle )
DebugLog( "MobGateClick::Gate Opened" )
else
DebugLog( "MobGateClick::Still Closed" )
end
DebugLog( "MobGateClick::End" )
end
function WallDefenderRoutine( Handle, MapIndex )
cExecCheck "WallDefenderRoutine"
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>׾<EFBFBD><D7BE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Var["Enemy"][ nMobHandle ]["bLive"]
if Handle == nil
then
ErrorLog( "WallDefenderRoutine::Handle == nil" )
return ReturnAI["END"]
end
if MapIndex == nil
then
cAIScriptSet( Handle )
cNPCVanish( Handle )
ErrorLog( "WallDefenderRoutine::MapIndex == nil" )
return ReturnAI["END"]
end
local Var = InstanceField[ MapIndex ]
if Var == nil
then
cAIScriptSet( Handle )
cNPCVanish( Handle )
ErrorLog( "WallDefenderRoutine::Var == nil" )
return ReturnAI["END"]
end
-- // 0.2<EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD> üũ<C3BC>ϴ<EFBFBD> <20><>ƾ
if Var["RoutineTime"][ Handle ] == nil
then
Var["RoutineTime"][ Handle ] = cCurrentSecond()
end
if Var["RoutineTime"][ Handle ] + 0.2 > cCurrentSecond()
then
return ReturnAI["CPP"]
else
Var["RoutineTime"][ Handle ] = cCurrentSecond()
end
-- 0.2<EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD> üũ<C3BC>ϴ<EFBFBD> <20><>ƾ //
if Var["Enemy"][ Handle ] == nil
then
cAIScriptSet( Handle )
cNPCVanish( Handle )
ErrorLog( "WallDefenderRoutine::Var[\"Enemy\"][ Handle ] == nil" )
return ReturnAI["END"]
end
if cIsObjectDead( Handle ) == 1
then
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
Var["Enemy"][ Handle ]["bLive"] = false
DebugLog( "DeadHandle("..Handle..")" )
-- <20><> <20><><EFBFBD><EFBFBD> <20>޸<EFBFBD><DEB8><EFBFBD> <20>ʱ<EFBFBD>ȭ<EFBFBD><C8AD> <20><><EFBFBD><EFBFBD> <20>ذ<EFBFBD> <20><>Ȱ <20><><EFBFBD>Ŀ<EFBFBD> ó<><C3B3><EFBFBD><EFBFBD>
Var["RoutineTime"][ Handle ] = nil
cAIScriptSet( Handle )
return ReturnAI["END"]
end
return ReturnAI["CPP"]
end
function GardenKamarisRoutine( Handle, MapIndex )
cExecCheck "GardenKamarisRoutine"
if Handle == nil
then
ErrorLog( "GardenKamarisRoutine::Handle == nil" )
return ReturnAI["END"]
end
if MapIndex == nil
then
cAIScriptSet( Handle )
cNPCVanish( Handle )
ErrorLog( "GardenKamarisRoutine::MapIndex == nil" )
return ReturnAI["END"]
end
local Var = InstanceField[ MapIndex ]
if Var == nil
then
cAIScriptSet( Handle )
cNPCVanish( Handle )
ErrorLog( "GardenKamarisRoutine::Var == nil" )
return ReturnAI["END"]
end
-- // 0.2<EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD> üũ<C3BC>ϴ<EFBFBD> <20><>ƾ
if Var["RoutineTime"][ Handle ] == nil
then
Var["RoutineTime"][ Handle ] = cCurrentSecond()
end
if Var["RoutineTime"][ Handle ] + 0.2 > cCurrentSecond()
then
return ReturnAI["CPP"]
else
Var["RoutineTime"][ Handle ] = cCurrentSecond()
end
-- 0.2<EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD> üũ<C3BC>ϴ<EFBFBD> <20><>ƾ //
if Var["Enemy"][ Handle ] == nil
then
cAIScriptSet( Handle )
cNPCVanish( Handle )
ErrorLog( "GardenKamarisRoutine::Var[\"Enemy\"][ Handle ] == nil" )
return ReturnAI["END"]
end
if Var["GardenSquare"] ~= nil
then
if cIsObjectDead( Handle ) == 1
then
-- <20><EFBFBD><E7B0A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ܰ踦 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ġ<EFBFBD><C4A1> 1<><31><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
Var["Door2Lock"] = Var["Door2Lock"] - 1
Var["Enemy"][ Handle ] = nil
Var["RoutineTime"][ Handle ] = nil
cAIScriptSet( Handle )
return ReturnAI["END"]
end
elseif Var["EndOfLegend"] ~= nil
then
if cIsObjectDead( Handle ) == 1
then
-- <20><>ȯ<EFBFBD><C8AF> <20>ʿ<EFBFBD><CABF><EFBFBD> ī<><C4AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ϳ<EFBFBD><CFB3><EFBFBD> <20>ٿ<EFBFBD><D9BF><EFBFBD>
Var["CallBossLock"] = Var["CallBossLock"] - 1
Var["Enemy"][ Handle ] = nil
Var["RoutineTime"][ Handle ] = nil
cAIScriptSet( Handle )
return ReturnAI["END"]
end
else
ErrorLog( "GardenKamarisRoutine::Progress Step is illegal" )
return ReturnAI["CPP"]
end
return ReturnAI["CPP"]
end
function BossRoutine( Handle, MapIndex )
cExecCheck "BossRoutine"
if Handle == nil
then
ErrorLog( "BossRoutine::Handle == nil" )
return ReturnAI["END"]
end
if MapIndex == nil
then
cAIScriptSet( Handle )
cNPCVanish( Handle )
ErrorLog( "BossRoutine::MapIndex == nil" )
return ReturnAI["END"]
end
local Var = InstanceField[ MapIndex ]
if Var == nil
then
cAIScriptSet( Handle )
cNPCVanish( Handle )
ErrorLog( "BossRoutine::Var == nil" )
return ReturnAI["END"]
end
-- // 0.2<EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD> üũ<C3BC>ϴ<EFBFBD> <20><>ƾ
if Var["RoutineTime"][ Handle ] == nil
then
Var["RoutineTime"][ Handle ] = cCurrentSecond()
end
if Var["RoutineTime"][ Handle ] + 0.2 > cCurrentSecond()
then
return ReturnAI["CPP"]
else
Var["RoutineTime"][ Handle ] = cCurrentSecond()
end
-- 0.2<EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD> üũ<C3BC>ϴ<EFBFBD> <20><>ƾ //
if Var["Enemy"][ Handle ] == nil
then
cAIScriptSet( Handle )
cNPCVanish( Handle )
ErrorLog( "BossRoutine::Var[\"Enemy\"][ Handle ] == nil" )
return ReturnAI["END"]
end
if Var["EndOfLegend"] == nil
then
return ReturnAI["CPP"]
end
if cIsObjectDead( Handle ) == 1
then
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
Var["EndOfLegend"]["bBossDied"] = true
Var["Enemy"][ Handle ] = nil
Var["RoutineTime"][ Handle ] = nil
cAIScriptSet( Handle )
return ReturnAI["END"]
end
end