152 lines
3.1 KiB
Lua
152 lines
3.1 KiB
Lua
|
require( "common" )
|
|||
|
|
|||
|
|
|||
|
-- <20><><EFBFBD><EFBFBD><EFBFBD>۵<EFBFBD><DBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A
|
|||
|
function AdlFH_EStone01( Handle, MapIndex )
|
|||
|
cExecCheck "AdlF_magic_stoneA"
|
|||
|
|
|||
|
return MagicStone( Handle, MapIndex )
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
-- <20><><EFBFBD><EFBFBD><EFBFBD>۵<EFBFBD><DBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B
|
|||
|
function AdlFH_EStone02( Handle, MapIndex )
|
|||
|
cExecCheck "AdlF_magic_stoneB"
|
|||
|
|
|||
|
return MagicStone( Handle, MapIndex )
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
-- <20><><EFBFBD><EFBFBD><EFBFBD>۵<EFBFBD><DBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>C
|
|||
|
function AdlFH_EStone03( Handle, MapIndex )
|
|||
|
cExecCheck "AdlF_magic_stoneC"
|
|||
|
|
|||
|
return MagicStone( Handle, MapIndex )
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
|
|||
|
MagicStoneMemBlock = {}
|
|||
|
|
|||
|
function MagicStone( Handle, MapIndex )
|
|||
|
cExecCheck "MagicStone"
|
|||
|
|
|||
|
local Var = MagicStoneMemBlock[Handle]
|
|||
|
|
|||
|
if cIsObjectDead( Handle ) then -- <20><EFBFBD><D7BE><EFBFBD>
|
|||
|
|
|||
|
cAIScriptSet( Handle ) -- <20><>ũ<EFBFBD><C5A9>Ʈ <20><><EFBFBD><EFBFBD>
|
|||
|
MagicStoneMemBlock[Handle] = nil -- <20><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
return ReturnAI.END
|
|||
|
end
|
|||
|
|
|||
|
if Var == nil then
|
|||
|
|
|||
|
MagicStoneMemBlock[Handle] = {}
|
|||
|
|
|||
|
Var = MagicStoneMemBlock[Handle]
|
|||
|
|
|||
|
Var.Handle = Handle
|
|||
|
Var.MapIndex = MapIndex
|
|||
|
|
|||
|
cAIScriptFunc( Var.Handle, "NPCClick", "MagicStone_Click" )
|
|||
|
cAIScriptFunc( Var.Handle, "NPCMenu", "MagicStone_Casting" )
|
|||
|
end
|
|||
|
|
|||
|
return ReturnAI.END
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function MagicStone_Click( NPCHandle, PlyHandle, RegistNumber )
|
|||
|
cExecCheck "MagicStone_Click"
|
|||
|
|
|||
|
local Var = MagicStoneMemBlock[NPCHandle]
|
|||
|
if Var == nil then
|
|||
|
cDebugLog( "MagicStone_Click : nil NPC " .. NPCHandle )
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
-- <20>ʵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
if InstanceField[Var.MapIndex] == nil then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
-- local Field = InstanceField[Var.MapIndex]
|
|||
|
|
|||
|
-- if Field.SummonStone_Active ~= nil then
|
|||
|
-- return
|
|||
|
-- end
|
|||
|
|
|||
|
cCastingBar( PlyHandle, NPCHandle, WaveEvent.MS_CastingTime * 1000, AniIndex.CharactorCasting )
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
function MagicStone_Casting( NPCHandle, PlyHandle, RegistNumber, Menu )
|
|||
|
cExecCheck "MagicStone_Casting"
|
|||
|
|
|||
|
|
|||
|
local Var = MagicStoneMemBlock[NPCHandle]
|
|||
|
if Var == nil then
|
|||
|
cDebugLog( "MagicStone_Casting : nil NPC " .. NPCHandle )
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
-- <20>ʵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
if InstanceField[Var.MapIndex] == nil then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local Field = InstanceField[Var.MapIndex]
|
|||
|
|
|||
|
|
|||
|
-- <20><>ȯ<EFBFBD><C8AF><EFBFBD><EFBFBD> <20><><EFBFBD>¿<EFBFBD> <20><><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20><EFBFBD><DEB6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if Field.SummonStone_Active == nil then
|
|||
|
|
|||
|
local AniIndexNum
|
|||
|
|
|||
|
if Field.Magic_stoneA == NPCHandle then
|
|||
|
Field.MagicStoneA_ActiveTime = cCurrentSecond() + WaveEvent.MS_ActiveTime
|
|||
|
AniIndexNum = 1
|
|||
|
|
|||
|
elseif Field.Magic_stoneB == NPCHandle then
|
|||
|
Field.MagicStoneB_ActiveTime = cCurrentSecond() + WaveEvent.MS_ActiveTime
|
|||
|
AniIndexNum = 2
|
|||
|
|
|||
|
elseif Field.Magic_stoneC == NPCHandle then
|
|||
|
Field.MagicStoneC_ActiveTime = cCurrentSecond() + WaveEvent.MS_ActiveTime
|
|||
|
AniIndexNum = 3
|
|||
|
|
|||
|
else
|
|||
|
cDebugLog( "MagicStone_Casting : " .. NPCHandle )
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
if AniIndexNum ~= nil then
|
|||
|
cAnimate( NPCHandle, "start", AniIndex.MagicStoneActive[AniIndexNum] )
|
|||
|
end
|
|||
|
else
|
|||
|
|
|||
|
if Field.Magic_stoneA == NPCHandle then
|
|||
|
Field.MagicStoneA_ActiveTime = cCurrentSecond() + WaveEvent.MS_NonActiveTime
|
|||
|
|
|||
|
elseif Field.Magic_stoneB == NPCHandle then
|
|||
|
Field.MagicStoneB_ActiveTime = cCurrentSecond() + WaveEvent.MS_NonActiveTime
|
|||
|
|
|||
|
elseif Field.Magic_stoneC == NPCHandle then
|
|||
|
Field.MagicStoneC_ActiveTime = cCurrentSecond() + WaveEvent.MS_NonActiveTime
|
|||
|
|
|||
|
else
|
|||
|
cDebugLog( "MagicStone_Casting : " .. NPCHandle )
|
|||
|
end
|
|||
|
|
|||
|
cAnimate( NPCHandle, "stop" )
|
|||
|
end
|
|||
|
|
|||
|
end
|
|||
|
|