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.
 
 
SigFiesta/LuaScript/ID/WarLH/WarLHEventMobRoutine.lua

1664 lines
27 KiB

require( "ID/WarLH/WarLHData" )
function FORASCHIEF_ROUTINE( Handle, MapIndex )
local EventMemory
local ForasChief
EventMemory = InstanceField[MapIndex]
if EventMemory == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
ForasChief = EventMemory["ForasChief"]
if ForasChief == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
EventMemory["ForasChief"] = nil
return ReturnAI["END"]
end
if ForasChief["CheckTime"] > EventMemory["CurrentTime"] then
return ReturnAI["END"]
end
ForasChief["CheckTime"] = ForasChief["CheckTime"] + 1
if ForasChief["FC_STATE"] == FC_STATE["Dialog1"] then
if ForasChief["DelayTime"] < EventMemory["CurrentTime"] then
ForasChief["FC_STATE"] = FC_STATE["Dialog2"]
cMobDialog( EventMemory["MapIndex"], DIALOGINFO[1]["FACECUT"], DIALOGINFO[1]["FILENAME"], DIALOGINFO[1]["INDEX"] )
ForasChief["DelayTime"] = ForasChief["DelayTime"] + 2
end
elseif ForasChief["FC_STATE"] == FC_STATE["Dialog2"] then
if ForasChief["DelayTime"] > EventMemory["CurrentTime"] then
return
end
local FindPlayer
FindPlayer = cObjectFind( ForasChief["Handle"], 500, ObjectType["Player"], "so_ObjectType" )
if FindPlayer ~= nil then
ForasChief["MasterPlayer"] = FindPlayer
ForasChief["FC_STATE"] = FC_STATE["Follow"]
EventMemory[EventMemory["EventNumber"]]["EventState"] = ES_STATE["State2"]
end
elseif ForasChief["FC_STATE"] == FC_STATE["Follow"] then
cFollow( ForasChief["Handle"], ForasChief["MasterPlayer"], ForasChief["FollowDistance"], 1500 )
if cDistanceSquar( ForasChief["Handle"], ForasChief["MasterPlayer"] ) > ( 1500 * 1500 ) then
local FindPlayer
FindPlayer = cObjectFind( ForasChief["Handle"], 1000, ObjectType["Player"], "so_ObjectType" )
if FindPlayer ~= nil then
ForasChief["MasterPlayer"] = FindPlayer
end
end
end
end
function FORASCHIEFEND_ROUTINE( Handle, MapIndex )
local EventMemory
local ForasChief
EventMemory = InstanceField[MapIndex]
if EventMemory == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
ForasChief = EventMemory["ForasChiefEnd"]
if ForasChief == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
EventMemory["ForasChief"] = nil
return ReturnAI["END"]
end
end
function EVENT_NO2_DAVILDOM_ROUTINE( Handle, MapIndex )
local EventMemory
local EventData
local DavildomList
local Davildom
EventMemory = InstanceField[MapIndex]
if EventMemory == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
if EventMemory["EventNumber"] ~= 2 then
cAIScriptSet( Handle )
cNPCVanish( Handle )
end
EventData = EventMemory[EventMemory["EventNumber"]]["EventData"]
if EventData == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
DavildomList = EventData["DavildomList"]
if DavildomList == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
Davildom = DavildomList[Handle]
if Davildom == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
DavildomList[Handle] = nil
return ReturnAI["END"]
end
if cIsObjectDead( Handle ) then
cAIScriptSet( Handle )
Davildom = nil
DavildomList[Handle] = nil
return ReturnAI["END"]
end
if Davildom["D_State"] == D_STATE["Aggro"] then
if Davildom["CheckTime"] > EventMemory["CurrentTime"] then
return ReturnAI["END"]
end
Davildom["CheckTime"] = EventMemory["CurrentTime"] + 1
if Davildom["AggroPlayer"] == nil then
DavildomList[Handle]["D_State"] = D_STATE["Battle"]
return
end
local PlayerPos = { }
local DavildomPos = { }
PlayerPos["X"], PlayerPos["Y"] = cObjectLocate( Davildom["AggroPlayer"] )
DavildomPos["X"], DavildomPos["Y"] = cObjectLocate( Handle )
cRunTo( Handle, PlayerPos["X"], PlayerPos["Y"] )
if cDistanceSquar( DavildomPos["X"], DavildomPos["Y"], PlayerPos["X"], PlayerPos["Y"] ) < ( Davildom["AggroDistance"] * Davildom["AggroDistance"] ) then
cAggroSet( Handle, Davildom["AggroPlayer"], Davildom["AGGRO_POINT"] )
DavildomList[Handle]["D_State"] = D_STATE["Battle"]
end
end
return ReturnAI["CPP"]
end
function EVENT_NO3_DAVILDOM_ROUTINE( Handle, MapIndex )
local EventMemory
local EventData
local DavildomList
local Davildom
EventMemory = InstanceField[MapIndex]
if EventMemory == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
if EventMemory["EventNumber"] ~= 3 then
cAIScriptSet( Handle )
cNPCVanish( Handle )
end
EventData = EventMemory[EventMemory["EventNumber"]]["EventData"]
if EventData == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
DavildomList = EventData["DavildomList"]
if DavildomList == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
Davildom = DavildomList[Handle]
if Davildom == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
DavildomList[Handle] = nil
return ReturnAI["END"]
end
if cIsObjectDead( Handle ) then
cAIScriptSet( Handle )
Davildom = nil
DavildomList[Handle] = nil
return ReturnAI["END"]
end
if Davildom["D_State"] == D_STATE["Aggro"] then
if Davildom["CheckTime"] > EventMemory["CurrentTime"] then
return ReturnAI["END"]
end
Davildom["CheckTime"] = EventMemory["CurrentTime"] + 1
if Davildom["AggroPlayer"] == nil then
DavildomList[Handle]["D_State"] = D_STATE["Battle"]
return
end
local PlayerPos = { }
local DavildomPos = { }
PlayerPos["X"], PlayerPos["Y"] = cObjectLocate( Davildom["AggroPlayer"] )
DavildomPos["X"], DavildomPos["Y"] = cObjectLocate( Handle )
cRunTo( Handle, PlayerPos["X"], PlayerPos["Y"] )
if cDistanceSquar( DavildomPos["X"], DavildomPos["Y"], PlayerPos["X"], PlayerPos["Y"] ) < ( Davildom["AggroDistance"] * Davildom["AggroDistance"] ) then
cAggroSet( Handle, Davildom["AggroPlayer"], Davildom["AGGRO_POINT"] )
DavildomList[Handle]["D_State"] = D_STATE["Battle"]
end
end
return ReturnAI["CPP"]
end
function BRAINWASH_ROUTINE( Handle, MapIndex )
local EventMemory
local EventData
local BrainWash
EventMemory = InstanceField[MapIndex]
if EventMemory == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
BrainWash = EventMemory["BrainWash"]
if BrainWash == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
EventMemory["BrainWash"] = nil
return ReturnAI["END"]
end
if cIsObjectDead( Handle ) then
cAIScriptSet( Handle )
EventMemory["BrainWash"] = nil
return ReturnAI["END"]
end
end
function BRAINWASH_DAMAGED( MapIndex, AttackerHandle, MaxHP, CurHP )
local EventMemory
local EventData
local BrainWash
EventMemory = InstanceField[MapIndex]
if EventMemory == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
BrainWash = EventMemory["BrainWash"]
if BrainWash == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
if AttackerHandle == nil then
return
end
if MaxHP == 0 then
return
end
local HPRate
HPRate = CurHP / MaxHP * 100
if BrainWash["BW_State"] == BW_SATATE["BrainWash"] then
local Damage
Damage = MaxHP - CurHP
cDamaged( AttackerHandle, 10000 )
cSetAbstate( AttackerHandle, STA_BRAINWASH, 1, 25000 )
cHeal( BrainWash["Handle"], Damage )
return
elseif BrainWash["BW_State"] == BW_SATATE["Damage1"] then
if HPRate < BrainWash["Damage"][1] then
EventMemory["BrainWash"]["BW_State"] = BW_SATATE["Damage2"]
end
return
elseif BrainWash["BW_State"] == BW_SATATE["Damage2"] then
if HPRate < BrainWash["Damage"][2] then
EventMemory["BrainWash"]["BW_State"] = BW_SATATE["Damage3"]
end
return
elseif BrainWash["BW_State"] == BW_SATATE["Damage3"] then
if HPRate < BrainWash["Damage"][3] then
EventMemory["BrainWash"]["BW_State"] = BW_SATATE["Damage4"]
end
return
elseif BrainWash["BW_State"] == BW_SATATE["Damage4"] then
if HPRate < BrainWash["Damage"][4] then
EventMemory["BrainWash"]["BW_State"] = BW_SATATE["Damage5"]
end
return
elseif BrainWash["BW_State"] == BW_SATATE["Damage5"] then
if HPRate < BrainWash["Damage"][5] then
EventMemory["BrainWash"]["BW_State"] = BW_SATATE["End"]
end
return
end
end
function PFORAS_ROUTINE( Handle, MapIndex )
local EventMemory
local EventData
local PForasList
local PForas
EventMemory = InstanceField[MapIndex]
if EventMemory == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
PForasList = EventMemory["PForasList"]
if PForasList == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
PForas = PForasList[Handle]
if PForas == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
if cIsObjectDead( Handle ) then
cAIScriptSet( Handle )
EventMemory["PForasList"][Handle] = nil
return ReturnAI["END"]
end
if (EventMemory["PForasState"] == PF_STATE["RUNAWAY"]) and ( PForas["PF_State"] == PF_STATE["STUN"]) then
cRunTo( Handle, GATE_DATA["START_GATE"]["REGEN_POSITION"]["X"], GATE_DATA["START_GATE"]["REGEN_POSITION"]["Y"] )
EventMemory["PForasList"][Handle]["PF_State"] = PF_STATE["RUNAWAY"]
end
end
function EVENT_NO4_DAVILDOM_ROUTINE( Handle, MapIndex )
local EventMemory
local EventData
local DavildomList
local Davildom
EventMemory = InstanceField[MapIndex]
if EventMemory == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
if EventMemory["EventNumber"] ~= 4 then
cAIScriptSet( Handle )
cNPCVanish( Handle )
end
EventData = EventMemory[EventMemory["EventNumber"]]["EventData"]
if EventData == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
DavildomList = EventMemory[EventMemory["EventNumber"]]["EventData"]["DavildomList"]
if DavildomList == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
Davildom = DavildomList[Handle]
if Davildom == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
DavildomList[Handle] = nil
return ReturnAI["END"]
end
if cIsObjectDead( Handle ) then
cAIScriptSet( Handle )
Davildom = nil
DavildomList[Handle] = nil
return ReturnAI["END"]
end
if Davildom["D_State"] == D_STATE["Aggro"] then
if Davildom["CheckTime"] > EventMemory["CurrentTime"] then
return ReturnAI["END"]
end
Davildom["CheckTime"] = EventMemory["CurrentTime"] + 1
if Davildom["AggroPlayer"] == nil then
DavildomList[Handle]["D_State"] = D_STATE["Battle"]
return
end
local PlayerPos = { }
local DavildomPos = { }
PlayerPos["X"], PlayerPos["Y"] = cObjectLocate( Davildom["AggroPlayer"] )
DavildomPos["X"], DavildomPos["Y"] = cObjectLocate( Handle )
cRunTo( Handle, PlayerPos["X"], PlayerPos["Y"] )
if cDistanceSquar( DavildomPos["X"], DavildomPos["Y"], PlayerPos["X"], PlayerPos["Y"] ) < ( Davildom["AggroDistance"] * Davildom["AggroDistance"] ) then
cAggroSet( Handle, Davildom["AggroPlayer"], Davildom["AGGRO_POINT"] )
DavildomList[Handle]["D_State"] = D_STATE["Battle"]
end
end
return ReturnAI["CPP"]
end
function EVENT_NO5_DAVILDOM_ROUTINE( Handle, MapIndex )
local EventMemory
local EventData
local DavildomList
local Davildom
EventMemory = InstanceField[MapIndex]
if EventMemory == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
if EventMemory["EventNumber"] ~= 5 then
cAIScriptSet( Handle )
cNPCVanish( Handle )
end
EventData = EventMemory[EventMemory["EventNumber"]]["EventData"]
if EventData == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
DavildomList = EventMemory[EventMemory["EventNumber"]]["EventData"]["DavildomList"]
if DavildomList == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
EventMemory[EventMemory["EventNumber"]]["EventData"]["DavildomList"] = nil
return ReturnAI["END"]
end
Davildom = DavildomList[Handle]
if Davildom == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
EventMemory[EventMemory["EventNumber"]]["EventData"]["DavildomList"][Handle] = nil
return ReturnAI["END"]
end
if cIsObjectDead( Handle ) then
cAIScriptSet( Handle )
EventMemory[EventMemory["EventNumber"]]["EventData"]["DavildomList"][Handle] = nil
return ReturnAI["END"]
end
if EventMemory[EventMemory["EventNumber"]]["EventData"]["RSState"] == RS_STATE["Aggro"] then
if Davildom["CheckTime"] > EventMemory["CurrentTime"] then
return
end
Davildom["CheckTime"] = EventMemory["CurrentTime"] + 1
local FindPlayer
FindPlayer = cObjectFind( Handle, Davildom["AggroRange"], ObjectType["Player"], "so_ObjectType" )
if FindPlayer ~= nil then
EventMemory[EventMemory["EventNumber"]]["EventData"]["RSState"] = RS_STATE["Battle"]
end
return ReturnAI["END"]
end
return ReturnAI["CPP"]
end
function EVENT_NO5_FORAS_ROUTINE( Handle, MapIndex )
local EventMemory
local EventData
local ForasList
local Foras
EventMemory = InstanceField[MapIndex]
if EventMemory == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
if EventMemory["EventNumber"] ~= 5 then
cAIScriptSet( Handle )
cNPCVanish( Handle )
end
EventData = EventMemory[EventMemory["EventNumber"]]["EventData"]
if EventData == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
ForasList = EventMemory[EventMemory["EventNumber"]]["EventData"]["ForasList"]
if ForasList == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
EventMemory[EventMemory["EventNumber"]]["EventData"]["ForasList"] = nil
return ReturnAI["END"]
end
Foras = ForasList[Handle]
if Foras == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
EventMemory[EventMemory["EventNumber"]]["EventData"]["ForasList"][Handle] = nil
return ReturnAI["END"]
end
if cIsObjectDead( Handle ) then
cAIScriptSet( Handle )
EventMemory[EventMemory["EventNumber"]]["EventData"]["ForasList"][Handle] = nil
return ReturnAI["END"]
end
if EventMemory[EventMemory["EventNumber"]]["EventData"]["RSState"] == RS_STATE["Aggro"] then
if Foras["CheckTime"] > EventMemory["CurrentTime"] then
return
end
Foras["CheckTime"] = EventMemory["CurrentTime"] + 1
local FindPlayer
FindPlayer = cObjectFind( Foras["Handle"], Foras["AggroRange"], ObjectType["Player"], "so_ObjectType" )
if FindPlayer ~= nil then
EventMemory[EventMemory["EventNumber"]]["EventData"]["RSState"] = RS_STATE["Battle"]
end
end
return ReturnAI["CPP"]
end
function PORE_ROUTINE( Handle, MapIndex )
local EventMemory
local EventData
local Pore
EventMemory = InstanceField[MapIndex]
if EventMemory == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
EventData = EventMemory[EventMemory["EventNumber"]]["EventData"]
if EventData == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
Pore = EventData["Pore"]
if Pore == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"] = nil
return ReturnAI["END"]
end
if cIsObjectDead( Handle ) then
cAIScriptSet( Handle )
EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"] = nil
return ReturnAI["END"]
end
return ReturnAI["CPP"]
end
function PORE_DAMAGED( MapIndex, AttackerHandle, MaxHP, CurHP )
local EventMemory
local EventData
local Pore
EventMemory = InstanceField[MapIndex]
if EventMemory == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
EventData = EventMemory[EventMemory["EventNumber"]]["EventData"]
if EventData == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
Pore = EventData["Pore"]
if Pore == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
local DavildomList
local ForasList
DavildomList = EventMemory[EventMemory["EventNumber"]]["EventData"]["DavildomList"]
ForasList = EventMemory[EventMemory["EventNumber"]]["EventData"]["ForasList"]
if (next( DavildomList ) == nil) and (next(ForasList) == nil) then
if MaxHP == 0 then
return
end
local HPRate
HPRate = CurHP / MaxHP * 100
if EventData["Pore"]["PR_State"] == PR_STATE["Normal"] then
if HPRate < Pore["Damage"][1] then
EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"]["PR_State"] = PR_STATE["Damage1"]
end
elseif EventData["Pore"]["PR_State"] == PR_STATE["Damage1"] then
if HPRate < Pore["Damage"][2] then
EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"]["PR_State"] = PR_STATE["Damage2"]
end
elseif EventData["Pore"]["PR_State"] == PR_STATE["Damage2"] then
if HPRate < Pore["Damage"][3] then
EventMemory[EventMemory["EventNumber"]]["EventData"]["Pore"]["PR_State"] = PR_STATE["Damage3"]
end
end
return
end
Damage = MaxHP - CurHP
cSetAbstate ( AttackerHandle, STA_BRAINWASH, 1, 25000 )
cHeal ( Pore["Handle"], Damage )
end
function EVNET_NO6_CITRIE_ROUTINE( Handle, MapIndex )
local EventMemory
local EventData
local Citrie
EventMemory = InstanceField[MapIndex]
if EventMemory == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
EventData = EventMemory[EventMemory["EventNumber"]]["EventData"]
if EventData == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
Citrie = EventMemory[EventMemory["EventNumber"]]["EventData"]["Citrie"]
if Citrie == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
EventMemory[EventMemory["EventNumber"]]["EventData"]["Citrie"] = nil
return ReturnAI["END"]
end
if cIsObjectDead( Handle ) then
cAIScriptSet( Handle )
EventMemory[EventMemory["EventNumber"]]["EventData"]["Citrie"] = nil
return ReturnAI["END"]
end
if Citrie["C_State"] == CT_STATE["Aggro"] then
if Citrie["CheckTime"] > EventMemory["CurrentTime"] then
return
end
Citrie["CheckTime"] = EventMemory["CurrentTime"] + 1
local FindPlayer
FindPlayer = cObjectFind( Citrie["Handle"], Citrie["AggroRange"], ObjectType["Player"], "so_ObjectType" )
if FindPlayer ~= nil then
EventMemory[EventMemory["EventNumber"]]["EventData"]["Citrie"]["C_State"] = CT_STATE["Battle"]
end
end
return ReturnAI["CPP"]
end
function EVENT_NO6_DAVILDOM_ROUTINE( Handle, MapIndex )
local EventMemory
local EventData
local DavildomList
local Davildom
EventMemory = InstanceField[MapIndex]
if EventMemory == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
EventData = EventMemory[EventMemory["EventNumber"]]["EventData"]
if EventData == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
DavildomList = EventMemory[EventMemory["EventNumber"]]["EventData"]["DavildomList"]
if DavildomList == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
Davildom = DavildomList[Handle]
if Davildom == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
DavildomList[Handle] = nil
return ReturnAI["END"]
end
if cIsObjectDead( Handle ) then
cAIScriptSet( Handle )
Davildom = nil
DavildomList[Handle] = nil
return ReturnAI["END"]
end
if Davildom["DeleteTime"] < EventMemory["CurrentTime"] then
DavildomList[Handle] = nil
return
end
if Davildom["D_State"] == D_STATE["Aggro"] then
if Davildom["CheckTime"] > EventMemory["CurrentTime"] then
return ReturnAI["END"]
end
Davildom["CheckTime"] = EventMemory["CurrentTime"] + 1
if Davildom["AggroPlayer"] == nil then
DavildomList[Handle]["D_State"] = D_STATE["Battle"]
return
end
local PlayerPos = { }
local DavildomPos = { }
PlayerPos["X"], PlayerPos["Y"] = cObjectLocate( Davildom["AggroPlayer"] )
DavildomPos["X"], DavildomPos["Y"] = cObjectLocate( Handle )
cRunTo( Handle, PlayerPos["X"], PlayerPos["Y"] )
if cDistanceSquar( DavildomPos["X"], DavildomPos["Y"], PlayerPos["X"], PlayerPos["Y"] ) < ( Davildom["AggroDistance"] * Davildom["AggroDistance"] ) then
cAggroSet( Handle, Davildom["AggroPlayer"], Davildom["AGGRO_POINT"] )
DavildomList[Handle]["D_State"] = D_STATE["Battle"]
end
end
return ReturnAI["CPP"]
end
function EVENT_NO7_DAVILDOM_ROUTINE( Handle, MapIndex )
local EventMemory
local EventData
local DavildomList
local Davildom
EventMemory = InstanceField[MapIndex]
if EventMemory == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
if EventMemory["EventNumber"] ~= 7 then
cAIScriptSet( Handle )
cNPCVanish( Handle )
end
EventData = EventMemory[EventMemory["EventNumber"]]["EventData"]
if EventData == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
DavildomList = EventMemory[EventMemory["EventNumber"]]["EventData"]["DavildomList"]
if DavildomList == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
EventMemory[EventMemory["EventNumber"]]["EventData"]["DavildomList"] = nil
return ReturnAI["END"]
end
Davildom = DavildomList[Handle]
if Davildom == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
EventMemory[EventMemory["EventNumber"]]["EventData"]["DavildomList"][Handle] = nil
return ReturnAI["END"]
end
if cIsObjectDead( Handle ) then
cAIScriptSet( Handle )
Davildom = nil
EventMemory[EventMemory["EventNumber"]]["EventData"]["DavildomList"][Handle] = nil
return ReturnAI["END"]
end
if EventMemory[EventMemory["EventNumber"]]["EventData"]["RSState"] == RS_STATE["Aggro"] then
if Davildom["CheckTime"] > EventMemory["CurrentTime"] then
return
end
Davildom["CheckTime"] = EventMemory["CurrentTime"] + 1
local FindPlayer
FindPlayer = cObjectFind( Handle, Davildom["AggroRange"], ObjectType["Player"], "so_ObjectType" )
if FindPlayer ~= nil then
EventMemory[EventMemory["EventNumber"]]["EventData"]["RSState"] = RS_STATE["Battle"]
end
return ReturnAI["END"]
end
return ReturnAI["CPP"]
end
function EVENT_NO7_FORAS_ROUTINE( Handle, MapIndex )
local EventMemory
local EventData
local ForasList
local Foras
EventMemory = InstanceField[MapIndex]
if EventMemory == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
if EventMemory["EventNumber"] ~= 7 then
cAIScriptSet( Handle )
cNPCVanish( Handle )
end
EventData = EventMemory[EventMemory["EventNumber"]]["EventData"]
if EventData == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
ForasList = EventMemory[EventMemory["EventNumber"]]["EventData"]["ForasList"]
if ForasList == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
EventMemory[EventMemory["EventNumber"]]["EventData"]["ForasList"] = nil
return ReturnAI["END"]
end
Foras = ForasList[Handle]
if Foras == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
EventMemory[EventMemory["EventNumber"]]["EventData"]["ForasList"][Handle] = nil
return ReturnAI["END"]
end
if cIsObjectDead( Handle ) then
cAIScriptSet( Handle )
EventMemory[EventMemory["EventNumber"]]["EventData"]["ForasList"][Handle] = nil
return ReturnAI["END"]
end
if EventMemory[EventMemory["EventNumber"]]["EventData"]["RSState"] == RS_STATE["Aggro"] then
if Foras["CheckTime"] > EventMemory["CurrentTime"] then
return
end
Foras["CheckTime"] = EventMemory["CurrentTime"] + 1
local FindPlayer
FindPlayer = cObjectFind( Foras["Handle"], Foras["AggroRange"], ObjectType["Player"], "so_ObjectType" )
if FindPlayer ~= nil then
EventMemory[EventMemory["EventNumber"]]["EventData"]["RSState"] = RS_STATE["Battle"]
end
end
return ReturnAI["CPP"]
end
function EVNET_NO8_CITRIE_ROUTINE( Handle, MapIndex )
local EventMemory
local EventData
local Citrie
EventMemory = InstanceField[MapIndex]
if EventMemory == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
EventData = EventMemory[EventMemory["EventNumber"]]["EventData"]
if EventData == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
Citrie = EventMemory[EventMemory["EventNumber"]]["EventData"]["Citrie"]
if Citrie == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
EventMemory[EventMemory["EventNumber"]]["EventData"]["Citrie"] = nil
return ReturnAI["END"]
end
if cIsObjectDead( Handle ) then
cAIScriptSet( Handle )
EventMemory[EventMemory["EventNumber"]]["EventData"]["Citrie"] = nil
return ReturnAI["END"]
end
if Citrie["C_State"] == CT_STATE["Aggro"] then
if Citrie["CheckTime"] > EventMemory["CurrentTime"] then
return
end
Citrie["CheckTime"] = EventMemory["CurrentTime"] + 1
local FindPlayer
FindPlayer = cObjectFind( Citrie["Handle"], Citrie["AggroRange"], ObjectType["Player"], "so_ObjectType" )
if FindPlayer ~= nil then
EventMemory[EventMemory["EventNumber"]]["EventData"]["Citrie"]["C_State"] = CT_STATE["Battle"]
end
end
return ReturnAI["CPP"]
end
function EVENT_NO8_DAVILDOM_ROUTINE( Handle, MapIndex )
local EventMemory
local EventData
local DavildomList
local Davildom
EventMemory = InstanceField[MapIndex]
if EventMemory == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
EventData = EventMemory[EventMemory["EventNumber"]]["EventData"]
if EventData == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
DavildomList = EventMemory[EventMemory["EventNumber"]]["EventData"]["DavildomList"]
if DavildomList == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
return ReturnAI["END"]
end
Davildom = DavildomList[Handle]
if Davildom == nil then
cAIScriptSet( Handle )
cNPCVanish( Handle )
DavildomList[Handle] = nil
return ReturnAI["END"]
end
if Davildom["DeleteTime"] < EventMemory["CurrentTime"] then
DavildomList[Handle] = nil
return
end
if cIsObjectDead( Handle ) then
cAIScriptSet( Handle )
Davildom = nil
DavildomList[Handle] = nil
return ReturnAI["END"]
end
if Davildom["D_State"] == D_STATE["Aggro"] then
if Davildom["CheckTime"] > EventMemory["CurrentTime"] then
return ReturnAI["END"]
end
Davildom["CheckTime"] = EventMemory["CurrentTime"] + 1
if Davildom["AggroPlayer"] == nil then
DavildomList[Handle]["D_State"] = D_STATE["Battle"]
return
end
local PlayerPos = { }
local DavildomPos = { }
PlayerPos["X"], PlayerPos["Y"] = cObjectLocate( Davildom["AggroPlayer"] )
DavildomPos["X"], DavildomPos["Y"] = cObjectLocate( Handle )
cRunTo( Handle, PlayerPos["X"], PlayerPos["Y"] )
if cDistanceSquar( DavildomPos["X"], DavildomPos["Y"], PlayerPos["X"], PlayerPos["Y"] ) < ( Davildom["AggroDistance"] * Davildom["AggroDistance"] ) then
cAggroSet( Handle, Davildom["AggroPlayer"], Davildom["AGGRO_POINT"] )
DavildomList[Handle]["D_State"] = D_STATE["Battle"]
end
end
return ReturnAI["CPP"]
end