402 lines
7.6 KiB
Lua
402 lines
7.6 KiB
Lua
|
require( "common" )
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
EVENT_DATA =
|
|||
|
{ ----------------------
|
|||
|
|
|||
|
--[[ 1~ 40 ]]
|
|||
|
{
|
|||
|
--[[<5B>ּҷ<D6BC><D2B7><EFBFBD>]] MinLev = 1,
|
|||
|
--[[<5B>ִ뷹<D6B4><EBB7B9>]] MaxLev = 40,
|
|||
|
--[[ <20><>ȯ<EFBFBD><C8AF> ]] MobIndex = "E_CaCaoSlime",
|
|||
|
--[[<5B><><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>]] AniIndex = "Slime_Attack1_1",
|
|||
|
--[[ <20><><EFBFBD><EFBFBD> ]] MapIndex = "RouCos02",
|
|||
|
--[[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ê]] SucChat = "My favorite fruit! Raise some more and eat it later.",
|
|||
|
--[[<5B><><EFBFBD>и<EFBFBD>ê]] FailChat = "Well. That was nothing worth keeping.",
|
|||
|
},
|
|||
|
|
|||
|
--[[ 41~ 80 ]]
|
|||
|
{
|
|||
|
--[[<5B>ּҷ<D6BC><D2B7><EFBFBD>]] MinLev = 41,
|
|||
|
--[[<5B>ִ뷹<D6B4><EBB7B9>]] MaxLev = 80,
|
|||
|
--[[ <20><>ȯ<EFBFBD><C8AF> ]] MobIndex = "E_CaCaoPrisoner",
|
|||
|
--[[<5B><><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>]] AniIndex = "Prisoner_Attack1_1",
|
|||
|
--[[ <20><><EFBFBD><EFBFBD> ]] MapIndex = "EldCem01",
|
|||
|
--[[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ê]] SucChat = "What is this? Would it grow a Cacao fruit?",
|
|||
|
--[[<5B><><EFBFBD>и<EFBFBD>ê]] FailChat = "Hmm.. Well that was a failed attempt.",
|
|||
|
},
|
|||
|
|
|||
|
--[[ 81~115 ]]
|
|||
|
{
|
|||
|
--[[<5B>ּҷ<D6BC><D2B7><EFBFBD>]] MinLev = 81,
|
|||
|
--[[<5B>ִ뷹<D6B4><EBB7B9>]] MaxLev = 125,
|
|||
|
--[[ <20><>ȯ<EFBFBD><C8AF> ]] MobIndex = "E_CaCaoMineMole",
|
|||
|
--[[<5B><><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>]] AniIndex = "Mole_attack",
|
|||
|
--[[ <20><><EFBFBD><EFBFBD> ]] MapIndex = "UrgFire01",
|
|||
|
--[[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ê]] SucChat = "Wow, that's great. I was hungry. Raise it well.",
|
|||
|
--[[<5B><><EFBFBD>и<EFBFBD>ê]] FailChat = "Yuck! What flavor is this suppose to be?",
|
|||
|
},
|
|||
|
|
|||
|
} ----------------------
|
|||
|
|
|||
|
EVENT_FAIL_MAP = "ValenCaCao_UseFail_Map"
|
|||
|
EVENT_FAIL_ITEM = "ValenCaCao_UseFail_Item"
|
|||
|
EVENT_MOB_REGEN_DIST = 600
|
|||
|
EVENT_MOB_STOP_INTERVAL = 40
|
|||
|
EVENT_MOB_STOP_CHK_DIST = ((EVENT_MOB_STOP_INTERVAL + 10) * (EVENT_MOB_STOP_INTERVAL + 10))
|
|||
|
EVENT_SUC_PERCENT = 50
|
|||
|
EVENT_SUC_DROP_ITEM = "E_CacaoBean"
|
|||
|
EVENT_MOB_DEF_DEAD_TIME = 50
|
|||
|
EVENT_MOB_END_DEAD_TIME = 5
|
|||
|
|
|||
|
|
|||
|
|
|||
|
MemBlock = {}
|
|||
|
|
|||
|
function E_CacaoBud( Handle, MapIndex )
|
|||
|
cExecCheck( "E_CacaoBud" )
|
|||
|
|
|||
|
if cIsObjectDead( Handle ) == 1 then
|
|||
|
|
|||
|
cAIScriptSet( Handle )
|
|||
|
MemBlock[Handle] = nil
|
|||
|
|
|||
|
return ReturnAI["END"]
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
local Var = MemBlock[Handle]
|
|||
|
|
|||
|
|
|||
|
if Var ~= nil then
|
|||
|
|
|||
|
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȣ<EFBFBD><C8A3> <20><><EFBFBD><EFBFBD> <20><>ȣ<EFBFBD><C8A3> <20>ٸ<EFBFBD><D9B8><EFBFBD> <20>ʱ<EFBFBD>ȭ
|
|||
|
local CurMaster = cGetMaster( Handle )
|
|||
|
|
|||
|
if CurMaster == nil then
|
|||
|
|
|||
|
cAIScriptSet( Handle )
|
|||
|
cNPCVanish( Var["Handle"] )
|
|||
|
MemBlock[Handle] = nil
|
|||
|
|
|||
|
return ReturnAI["END"]
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
if Var["Master"] ~= CurMaster then
|
|||
|
|
|||
|
MemBlock[Handle] = nil
|
|||
|
|
|||
|
return ReturnAI["END"]
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
if cPlayerExist( Var["Master"] ) == nil then
|
|||
|
|
|||
|
cAIScriptSet( Handle )
|
|||
|
cNPCVanish( Var["Handle"] )
|
|||
|
MemBlock[Handle] = nil
|
|||
|
|
|||
|
return ReturnAI["END"]
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
if Var == nil then
|
|||
|
|
|||
|
MemBlock[Handle] = {}
|
|||
|
|
|||
|
Var = MemBlock[Handle]
|
|||
|
|
|||
|
Var["MapIndex"] = MapIndex
|
|||
|
Var["Handle"] = Handle
|
|||
|
|
|||
|
|
|||
|
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> üũ
|
|||
|
-- <20><><EFBFBD>н<EFBFBD> <20><EFBFBD><DEBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>˱<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
Var["Master"] = cGetMaster( Var["Handle"] )
|
|||
|
|
|||
|
if Var["Master"] == nil then
|
|||
|
|
|||
|
cAIScriptSet( Var["Handle"] )
|
|||
|
cNPCVanish( Var["Handle"] )
|
|||
|
MemBlock[Handle] = nil
|
|||
|
return ReturnAI["END"]
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
-- <20><> üũ
|
|||
|
|
|||
|
for i = 1, #EVENT_DATA do
|
|||
|
|
|||
|
if Var["MapIndex"] == EVENT_DATA[i]["MapIndex"] then
|
|||
|
|
|||
|
Var["GroupNum"] = i
|
|||
|
|
|||
|
break
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
if Var["GroupNum"] == nil then
|
|||
|
|
|||
|
cScriptMessage_Obj( Var["Master"], EVENT_FAIL_MAP )
|
|||
|
|
|||
|
cAIScriptSet( Var["Handle"] )
|
|||
|
cNPCVanish( Var["Handle"] )
|
|||
|
MemBlock[Handle] = nil
|
|||
|
return ReturnAI["END"]
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> üũ
|
|||
|
|
|||
|
local MasterLv = cGetLevel( Var["Master"] )
|
|||
|
|
|||
|
if MasterLv == nil then
|
|||
|
|
|||
|
cScriptMessage_Obj( Var["Master"], EVENT_FAIL_ITEM )
|
|||
|
|
|||
|
cAIScriptSet( Var["Handle"] )
|
|||
|
cNPCVanish( Var["Handle"] )
|
|||
|
MemBlock[Handle] = nil
|
|||
|
return ReturnAI["END"]
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
if MasterLv < EVENT_DATA[Var["GroupNum"]]["MinLev"] or
|
|||
|
MasterLv > EVENT_DATA[Var["GroupNum"]]["MaxLev"] then
|
|||
|
|
|||
|
cScriptMessage_Obj( Var["Master"], EVENT_FAIL_MAP )
|
|||
|
|
|||
|
cAIScriptSet( Var["Handle"] )
|
|||
|
cNPCVanish( Var["Handle"] )
|
|||
|
MemBlock[Handle] = nil
|
|||
|
return ReturnAI["END"]
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
-- <20><>ȯ<EFBFBD><C8AF> īī<C4AB><C4AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ǥ
|
|||
|
-- <20><><EFBFBD><EFBFBD> Ư<><C6AF> <20>Ÿ<EFBFBD><C5B8><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ǥ<EFBFBD><C7A5> <20><><EFBFBD>ϰ<EFBFBD>
|
|||
|
-- <20><> <20><>ǥ<EFBFBD><C7A5> <20>̺<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20><>ȯ<EFBFBD>ϰ<EFBFBD>
|
|||
|
-- īī<C4AB><C4AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̺<EFBFBD>Ʈ<EFBFBD><C6AE> <20>̵<EFBFBD>
|
|||
|
|
|||
|
local dir = cRandomInt( 1, 90 ) * 4
|
|||
|
local locX, locY = cGetAroundCoord( Var["Handle"], dir, EVENT_MOB_REGEN_DIST )
|
|||
|
|
|||
|
if locX == nil or locY == nil then
|
|||
|
|
|||
|
cScriptMessage_Obj( Var["Master"], EVENT_FAIL_ITEM )
|
|||
|
|
|||
|
cAIScriptSet( Var["Handle"] )
|
|||
|
cNPCVanish( Var["Handle"] )
|
|||
|
MemBlock[Handle] = nil
|
|||
|
return ReturnAI["END"]
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
Var["EventMob"] = cMobRegen_XY( Var["MapIndex"], EVENT_DATA[Var["GroupNum"]]["MobIndex"], locX, locY, dir )
|
|||
|
|
|||
|
if Var["EventMob"] == nil then
|
|||
|
|
|||
|
cScriptMessage_Obj( Var["Master"], EVENT_FAIL_ITEM )
|
|||
|
|
|||
|
cAIScriptSet( Var["Handle"] )
|
|||
|
cNPCVanish( Var["Handle"] )
|
|||
|
MemBlock[Handle] = nil
|
|||
|
return ReturnAI["END"]
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
if cAIScriptSet( Var["EventMob"], Var["Handle"] ) == nil then
|
|||
|
|
|||
|
cScriptMessage_Obj( Var["Master"], EVENT_FAIL_ITEM )
|
|||
|
|
|||
|
cAIScriptSet( Var["Handle"] )
|
|||
|
cNPCVanish( Var["Handle"] )
|
|||
|
cNPCVanish( Var["EventMob"] )
|
|||
|
MemBlock[Handle] = nil
|
|||
|
return ReturnAI["END"]
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
if cAIScriptFunc( Var["EventMob"], "Entrance", "EventMobMain" ) == nil then
|
|||
|
|
|||
|
cScriptMessage_Obj( Var["Master"], EVENT_FAIL_ITEM )
|
|||
|
|
|||
|
cAIScriptSet( Var["Handle"] )
|
|||
|
cNPCVanish( Var["Handle"] )
|
|||
|
cNPCVanish( Var["EventMob"] )
|
|||
|
MemBlock[Handle] = nil
|
|||
|
return ReturnAI["END"]
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
MemBlock[Var["EventMob"]] = {}
|
|||
|
MemBlock[Var["EventMob"]]["DeadTime"] = cCurrentSecond() + EVENT_MOB_DEF_DEAD_TIME
|
|||
|
|
|||
|
cFollow( Var["EventMob"], Var["Handle"], EVENT_MOB_STOP_INTERVAL, 10000 )
|
|||
|
|
|||
|
|
|||
|
|
|||
|
-- <20>ʿ<EFBFBD><CABF><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ
|
|||
|
|
|||
|
Var["ChkTime"] = cCurrentSecond()
|
|||
|
Var["EventStep"] = 1
|
|||
|
Var["EventMobRegenX"] = locX
|
|||
|
Var["EventMobRegenY"] = locY
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
|
|||
|
-- <20>̺<EFBFBD>Ʈ<EFBFBD><C6AE> üũ
|
|||
|
|
|||
|
if Var["EventMob"] == nil then
|
|||
|
|
|||
|
cAIScriptSet( Var["Handle"] )
|
|||
|
cNPCVanish( Var["Handle"] )
|
|||
|
MemBlock[Handle] = nil
|
|||
|
return ReturnAI["END"]
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
if cIsObjectDead( Var["EventMob"] ) == 1 then
|
|||
|
|
|||
|
cAIScriptSet( Var["Handle"] )
|
|||
|
cNPCVanish( Var["Handle"] )
|
|||
|
MemBlock[Handle] = nil
|
|||
|
return ReturnAI["END"]
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
|
|||
|
local CurSec = cCurrentSecond()
|
|||
|
|
|||
|
|
|||
|
-- <20>Ÿ<EFBFBD> üũ<C3BC>ϸ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
if Var["EventStep"] == 1 then
|
|||
|
|
|||
|
if Var["ChkTime"] <= CurSec then
|
|||
|
|
|||
|
Var["ChkTime"] = CurSec + 1
|
|||
|
|
|||
|
if cDistanceSquar( Var["Handle"], Var["EventMob"] ) <= EVENT_MOB_STOP_CHK_DIST then
|
|||
|
|
|||
|
cAnimate( Var["EventMob"], "start", EVENT_DATA[Var["GroupNum"]]["AniIndex"] )
|
|||
|
|
|||
|
Var["ChkTime"] = CurSec + 2
|
|||
|
Var["EventStep"] = Var["EventStep"] + 1
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> üũ
|
|||
|
elseif Var["EventStep"] == 2 then
|
|||
|
|
|||
|
if Var["ChkTime"] <= CurSec then
|
|||
|
|
|||
|
local rndNum = cRandomInt( 1, 100 )
|
|||
|
|
|||
|
if rndNum >= EVENT_SUC_PERCENT then
|
|||
|
|
|||
|
-- <20><><EFBFBD><EFBFBD>
|
|||
|
cNPCChatTest( Var["EventMob"], EVENT_DATA[Var["GroupNum"]]["SucChat"] )
|
|||
|
cDropItem( EVENT_SUC_DROP_ITEM, Var["Handle"], Var["Master"], 1000000 )
|
|||
|
|
|||
|
else
|
|||
|
|
|||
|
-- <20><><EFBFBD><EFBFBD>
|
|||
|
cNPCChatTest( Var["EventMob"], EVENT_DATA[Var["GroupNum"]]["FailChat"] )
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
cAnimate( Var["EventMob"], "stop" )
|
|||
|
|
|||
|
Var["ChkTime"] = CurSec + 2
|
|||
|
Var["EventStep"] = Var["EventStep"] + 1
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
-- <20><> <20><><EFBFBD><EFBFBD>ġ, <20><><EFBFBD><EFBFBD>
|
|||
|
elseif Var["EventStep"] == 3 then
|
|||
|
|
|||
|
if Var["ChkTime"] <= CurSec then
|
|||
|
|
|||
|
cRunTo( Var["EventMob"], Var["EventMobRegenX"], Var["EventMobRegenY"] )
|
|||
|
|
|||
|
MemBlock[Var["EventMob"]]["DeadTime"] = CurSec + EVENT_MOB_END_DEAD_TIME
|
|||
|
|
|||
|
cAIScriptSet( Var["Handle"] )
|
|||
|
cNPCVanish( Var["Handle"] )
|
|||
|
MemBlock[Handle] = nil
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
return ReturnAI["END"]
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
|
|||
|
-- <20>̺<EFBFBD>Ʈ<EFBFBD><C6AE> ó<><C3B3> <20>Լ<EFBFBD>
|
|||
|
-- <20>ƹ<EFBFBD> ó<><C3B3> <20><><EFBFBD>ϰ<EFBFBD> DeadTime<6D><65> <20><><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD> DeadTime <20><><EFBFBD>Ŀ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
function EventMobMain( Handle, MapIndex )
|
|||
|
cExecCheck( "EventMobMain" )
|
|||
|
|
|||
|
if cIsObjectDead( Handle ) == 1 then
|
|||
|
|
|||
|
cAIScriptSet( Handle )
|
|||
|
MemBlock[Handle] = nil
|
|||
|
|
|||
|
return ReturnAI["END"]
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
local Var = MemBlock[Handle]
|
|||
|
|
|||
|
if Var == nil then
|
|||
|
|
|||
|
cAIScriptSet( Handle )
|
|||
|
cNPCVanish( Handle )
|
|||
|
MemBlock[Handle] = nil
|
|||
|
|
|||
|
return ReturnAI["END"]
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
if Var["DeadTime"] ~= nil then
|
|||
|
|
|||
|
if Var["DeadTime"] <= cCurrentSecond() then
|
|||
|
|
|||
|
cAIScriptSet( Handle )
|
|||
|
cNPCVanish( Handle )
|
|||
|
MemBlock[Handle] = nil
|
|||
|
|
|||
|
return ReturnAI["END"]
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
return ReturnAI["END"]
|
|||
|
|
|||
|
end
|