require( "ID/WarBL/WarBLData" ) -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- Room 1 -- -- -- -- -- -- -- -- ( Æ÷¶ó½º ·çƾ / ¸¶°èº´»ç ) -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- function ROOM_ONE_FORAS_ROUTINE( Handle, MapIndex ) cExecCheck( "ROOM_ONE_FORAS_ROUTINE" ) if InstanceField[MapIndex] == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end -- 1¹ø¹æ »óÅÂÀÎÁö üũ if InstanceField[MapIndex]["Room"]["RoomNumber"] ~= 1 then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end if InstanceField[MapIndex]["Room"]["Data"] == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end local Event_Foras_List = { } local Event_Foras = { } Event_Foras_List = InstanceField[MapIndex]["Room"]["Data"]["ForasList"] if Event_Foras_List == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end Event_Foras = InstanceField[MapIndex]["Room"]["Data"]["ForasList"]["List"][Handle] if Event_Foras == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end if cIsObjectDead( Handle ) then cAIScriptSet( Handle ) Event_Foras[Handle] = nil return ReturnAI["END"] end -- ÁÖº¯ ij¸¯ÅÍ °Ë»ö if Event_Foras_List["FL_State"] == FL_SEARCH then if Event_Foras["CheckTime"] > InstanceField[MapIndex]["CurrentTime"] then return ReturnAI["CPP"] end Event_Foras["CheckTime"] = Event_Foras["CheckTime"] + 1 if Event_Foras["ChatCheckTime"] < InstanceField[MapIndex]["CurrentTime"] then local RandInt Event_Foras["ChatCheckTime"] = Event_Foras["ChatCheckTime"] + Event_Foras["MobChatData"]["DELAY"] RandInt = cRandomInt( 1, 3 ) cMobChat( Handle, "WarBL", Event_Foras["MobChatData"]["INDEX"][RandInt] ) end local FindPlayer FindPlayer = cObjectFind( Event_Foras["Handle"], Event_Foras["SearchRange"], ObjectType["Player"], "so_ObjectType" ) if FindPlayer ~= nil then -- Æ÷¶ó½º ¸®½ºÆ®¿¡ °Ë»ö ¼º°ø ¾Ë¸² ( À̺¥Æ® ·çƾ¿¡¼­ »ç¿ë ) Event_Foras_List["FL_State"] = FL_SEARCH_SUCCESS Event_Foras_List["FindPlayer"] = FindPlayer end -- Æ÷¶ó½º À§ ´À³¦Ç¥ Ãâ·Â / ¹æÇâ ÀüÈ­ elseif Event_Foras_List["FL_State"] == FL_SURPRISE then if Event_Foras["IsSurprise"] == 0 then local CurX, CurY CurX, CurY = cObjectLocate( Event_Foras_List["FindPlayer"] ) cRunTo( Handle, CurX, CurY ) cMobChat ( Handle, "WarBL", Event_Foras["MobChatData"]["INDEX"][4] ) cSetAbstate ( Handle, STA_STUN, 1, 1000, Event_Foras_List["FindPlayer"] ) cSetAbstate ( Handle, STA_SURPRISE, 1, 20000000 ) Event_Foras["IsSurprise"] = 1 end -- ¸ñÇ¥ÁöÁ¡À» Æнº¸¦ µû¶ó À̵¿ elseif Event_Foras_List["FL_State"] == FL_ESCAPE then local CurPos = {} local GoalPos = {} CurPos["X"], CurPos["Y"] = cObjectLocate( Event_Foras["Handle"] ) GoalPos = Event_Foras["Path"][Event_Foras["PathNumber"]] if cDistanceSquar( CurPos["X"], CurPos["Y"], GoalPos["X"], GoalPos["Y"] ) < ( MOVE_INTERVER * MOVE_INTERVER ) then Event_Foras["PathNumber"] = Event_Foras["PathNumber"] + 1 if Event_Foras["PathNumber"] > #Event_Foras["Path"] then Event_Foras_List["FL_State"] = FL_REMOVE return end GoalPos = Event_Foras["Path"][Event_Foras["PathNumber"]] cRunTo( Event_Foras["Handle"], GoalPos["X"], GoalPos["Y"] ) end elseif Event_Foras_List["FL_State"] == FL_REMOVE then cAIScriptSet( Event_Foras["Handle"] ) cNPCVanish( Event_Foras["Handle"] ) Event_Foras = nil end end function ROOM_ONE_DAVILDOM_ROUTINE( Handle, MapIndex ) cExecCheck( "ROOM_ONE_DAVILDOM_ROUTINE" ) if InstanceField[MapIndex] == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end -- 1¹ø¹æ »óÅÂÀÎÁö üũ if InstanceField[MapIndex]["Room"]["RoomNumber"] ~= 1 then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end if InstanceField[MapIndex]["Room"]["Data"] == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end local Event_Davildom_List = { } local Davildom = { } Event_Davildom_List = InstanceField[MapIndex]["Room"]["Data"]["Davildom"]["List"] Davildom = Event_Davildom_List[Handle] if Event_Davildom_List == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end if cIsObjectDead( Handle ) then cAIScriptSet( Handle ) Event_Davildom_List[Handle] = nil return ReturnAI["END"] end if Davildom["CheckTime"] > InstanceField[MapIndex]["CurrentTime"] then return ReturnAI["CPP"] end Davildom["CheckTime"] = Davildom["CheckTime"] + 1 if Davildom["D_State"] == D_Normal then local FindPlayer FindPlayer = cObjectFind( Handle, InstanceField[MapIndex]["Room"]["Data"]["Davildom"]["SearchRange"], ObjectType["Player"], "so_ObjectType" ) if FindPlayer ~= nil then cSetAbstate ( Handle, STA_IMMORTAL, 1, 1, FindPlayer ) cAggroSet ( Handle, FindPlayer ) Davildom["D_State"] = D_Aggro end elseif Davildom["D_State"] == D_Aggro then cResetAbstate ( Handle, STA_IMMORTAL ) Davildom["D_State"] = D_Aggro_SUCC return ReturnAI["CPP"] elseif Davildom["D_State"] == D_Aggro_SUCC then return ReturnAI["CPP"] end return ReturnAI["CPP"] end -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- Room 2 -- -- -- -- -- -- -- -- ( ½ÃÆ®¸® ) -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- function ROOM_TWO_CITRIE_ROUTINE( Handle, MapIndex ) cExecCheck( "ROOM_TWO_CITRIE_ROUTINE" ) if InstanceField[MapIndex] == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end local RoomEvent RoomEvent = InstanceField[MapIndex] if RoomEvent["Room"]["RoomNumber"] ~= 2 then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end if RoomEvent["Room"]["Data"] == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end if cIsObjectDead( Handle ) then cAIScriptSet( Handle ) RoomEvent["Room"]["Data"]["Citrie"] = nil return ReturnAI["END"] end return ReturnAI["CPP"] end -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- Room 3 -- -- -- -- -- -- -- -- ( Æ÷¶ó½º / ¸¶°èº´»ç ·çƾ ) -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- function ROOM_THREE_FORAS_ROUTINE( Handle, MapIndex ) cExecCheck( "ROOM_THREE_FORAS_ROUTINE" ) if InstanceField[MapIndex] == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end local RoomEvent local GroupNumber local ForasList local EventForas RoomEvent = InstanceField[MapIndex] if RoomEvent["Room"]["RoomNumber"] ~= 3 then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end if RoomEvent["Room"]["Data"] == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end GroupNumber = RoomEvent["Room"]["Data"]["ForasList"][Handle] if GroupNumber == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end ForasList = RoomEvent["Room"]["Data"]["ForasGroupList"][GroupNumber] if ForasList == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end EventForas = ForasList["List"][Handle] if EventForas == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end if cIsObjectDead( Handle ) then cAIScriptSet( Handle ) RoomEvent["Room"]["Data"]["ForasList"][Handle] = nil RoomEvent["Room"]["Data"]["ForasGroupList"][GroupNumber]["List"][Handle] = nil return ReturnAI["END"] end if EventForas["CheckTime"] > RoomEvent["CurrentTime"] then return ReturnAI["END"] end EventForas["CheckTime"] = RoomEvent["CurrentTime"] + 1 if ForasList["FG_State"] == FG_ESCAPE then local CurPos = {} local GoalPos = {} CurPos["X"], CurPos["Y"] = cObjectLocate( Handle ) GoalPos = EventForas["Path"][EventForas["PathNumber"]] if cDistanceSquar( CurPos["X"], CurPos["Y"], GoalPos["X"], GoalPos["Y"] ) < ( MOVE_INTERVER * MOVE_INTERVER ) then EventForas["PathNumber"] = EventForas["PathNumber"] + 1 if EventForas["PathNumber"] > #EventForas["Path"] then ForasList["FG_State"] = FG_REMOVE return end GoalPos = EventForas["Path"][EventForas["PathNumber"]] cRunTo( Handle, GoalPos["X"], GoalPos["Y"] ) end elseif ForasList["FG_State"] == FG_REMOVE then cAIScriptSet( Handle ) cNPCVanish( Handle ) RoomEvent["Room"]["Data"]["ForasList"][Handle] = nil RoomEvent["Room"]["Data"]["ForasGroupList"][GroupNumber]["List"][Handle] = nil end return ReturnAI["END"] end function ROOM_THREE_DAVILDOM_ROUTINE( Handle, MapIndex ) cExecCheck( "ROOM_THREE_DAVILDOM_ROUTINE" ) if InstanceField[MapIndex] == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end local RoomEvent local GroupNumber local DavildomList local EventDavildom local DavildomState RoomEvent = InstanceField[MapIndex] if RoomEvent["Room"]["RoomNumber"] ~= 3 then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end if RoomEvent["Room"]["Data"] == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end GroupNumber = RoomEvent["Room"]["Data"]["DavildomList"][Handle] if GroupNumber == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end DavildomList = RoomEvent["Room"]["Data"]["DavildomGroupList"][GroupNumber]["List"] if DavildomList == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end EventDavildom = DavildomList[Handle] if EventDavildom == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end if cIsObjectDead( Handle ) then cAIScriptSet( Handle ) RoomEvent["Room"]["Data"]["DavildomList"][Handle] = nil DavildomList[Handle] = nil return ReturnAI["END"] end DavildomState = RoomEvent["Room"]["Data"]["DavildomGroupList"][GroupNumber]["DG_State"] if DavildomState == DG_NORMAL then if EventDavildom["CheckTime"] > RoomEvent["CurrentTime"] then return ReturnAI["END"] end EventDavildom["CheckTime"] = RoomEvent["CurrentTime"] + 1 local FindPlayer FindPlayer = cObjectFind( Handle, 400, ObjectType["Player"], "so_ObjectType" ) if FindPlayer ~= nil then RoomEvent["Room"]["Data"]["DavildomGroupList"][GroupNumber]["DG_State"] = DG_AGGRO end elseif DavildomState == DG_AGGRO_SUCC then if EventDavildom["D_State"] ~= D_NORMAL then return ReturnAI["CPP"] end local CurPos = { } CurPos["X"], CurPos["Y"] = cObjectLocate( Handle ) local PlayerList local PlayerAggroList = { } local Count = 1 PlayerList = { cGetPlayerList( RoomEvent["MapIndex"] ) } for i = 1, #PlayerList do local CurPlayerPos = { } CurPlayerPos["X"], CurPlayerPos["Y"] = cObjectLocate( PlayerList[i] ) if cDistanceSquar( CurPos["X"], CurPos["Y"], CurPlayerPos["X"], CurPlayerPos["Y"] ) < ( EventDavildom["SearchRange"] * EventDavildom["SearchRange"] ) then PlayerAggroList[Count] = PlayerList[i] Count = Count + 1 end end local PlayerHandle PlayerHandle = cRandomInt(1, #PlayerAggroList) cAggroSet( Handle, PlayerAggroList[PlayerHandle], EventDavildom["AggroPoint"]) EventDavildom["D_State"] = D_AGGRO end return ReturnAI["CPP"] end function ROOM_THREE_REGEN_DAVILDOM_ROUTINE( Handle, MapIndex ) cExecCheck( "ROOM_THREE_REGEN_DAVILDOM_ROUTINE" ) if InstanceField[MapIndex] == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end local RoomEvent RoomEvent = InstanceField[MapIndex] if RoomEvent["Room"]["RoomNumber"] ~= 3 then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end if RoomEvent["Room"]["Data"] == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end if RoomEvent["Room"]["Data"]["RegenDavildomList"] == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end local Davildom = RoomEvent["Room"]["Data"]["RegenDavildomList"][Handle] if Davildom == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end if cIsObjectDead( Handle ) then cAIScriptSet( Handle ) RoomEvent["Room"]["Data"]["RegenDavildomList"][Handle] = nil return ReturnAI["END"] end if Davildom["D_State"] == D_AGGRO then if Davildom["CheckTime"] > RoomEvent["CurrentTime"] then return ReturnAI["END"] end Davildom["CheckTime"] = Davildom["CheckTime"] + 1 if Davildom["AggroPlayer"] == nil then Davildom["D_State"] = D_Aggro_SUCC elseif Davildom["AggroPlayer"] ~= nil then 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"] ) Davildom["D_State"] = D_Aggro_SUCC Davildom["CheckTime"] = RoomEvent["CurrentTime"] + 10 end end elseif Davildom["D_State"] == D_Aggro_SUCC then end return ReturnAI["CPP"] end -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- Room 4 -- -- -- -- -- -- -- -- ( Æ÷¶ó½º Á·Àå / ¸¶°èº´»ç ·çƾ ) -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- function ROOM_FOUR_FORAS_CHIEF_ROUTINE( Handle, MapIndex ) cExecCheck( "ROOM_FOUR_FORAS_CHIEF_ROUTINE" ) if InstanceField[MapIndex] == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end local RoomEvent RoomEvent = InstanceField[MapIndex] if RoomEvent["Room"]["Data"] == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end local ForasChief local DavildomList ForasChief = RoomEvent["Room"]["Data"]["ForasChief"] if ForasChief == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end DavildomList = RoomEvent["Room"]["Data"]["DavildomList"] if DavildomList == nil then ForasChief["FC_State"] = FC_NORMAL end if cIsObjectDead( Handle ) then cAIScriptSet( Handle ) RoomEvent["Room"]["Data"]["ForasChief"] = nil return ReturnAI["END"] end if ForasChief["CheckTime"] > RoomEvent["CurrentTime"] then return end ForasChief["CheckTime"] = RoomEvent["CurrentTime"] + 1 if ForasChief["FC_State"] == FC_DAMAGE then for index, value in pairs(DavildomList) do return end ForasChief["FC_State"] = FC_NORMAL return ReturnAI["END"] elseif ForasChief["FC_State"] == FC_NORMAL then cAnimate( Handle, "stop" ) ForasChief["FC_State"] = FC_IDLE elseif ForasChief["FC_State"] == FC_MOVE then cRunTo( ForasChief["Handle"], ForasChief["EndPosition"]["X"], ForasChief["EndPosition"]["Y"] ) ForasChief["FC_State"] = FC_REMOVE elseif ForasChief["FC_State"] == FC_REMOVE then local CurPos = {} local GoalPos = {} CurPos["X"], CurPos["Y"] = cObjectLocate( Handle ) GoalPos = ForasChief["EndPosition"] if cDistanceSquar( CurPos["X"], CurPos["Y"], GoalPos["X"], GoalPos["Y"] ) < ( MOVE_INTERVER * MOVE_INTERVER ) then cAIScriptSet( Handle ) cNPCVanish( Handle ) RoomEvent["Room"]["Data"]["ForasChief"] = nil end elseif ForasChief["FC_State"] == FC_FOLLOW then if ForasChief["MasterPlayer"] == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) end cFollow( Handle, ForasChief["MasterPlayer"], ForasChief["FollowData"]["RANGE"], 1000 ) if ForasChief["HealCheckTime"] < RoomEvent["CurrentTime"] then local CurHP, MaxHP = cObjectHP( ForasChief["MasterPlayer"] ) local Percent local HealAmount Percent = CurHP / MaxHP * 100 HealAmount = MaxHP * ( ForasChief["FollowData"]["HEALAMOUNT"] / 100 ) if Percent < ForasChief["FollowData"]["MASTERHP"] then cHeal ( ForasChief["MasterPlayer"], HealAmount ) cAnimate ( Handle, "start", ForasChief["FollowData"]["ANIMATION"] ) ForasChief["HealCheckTime"] = RoomEvent["CurrentTime"] + ForasChief["FollowData"]["COOLTIME"] end end end return ReturnAI["CPP"] end function ROOM_FOUR_DEVILDOM_ROUTINE( Handle, MapIndex ) cExecCheck( "ROOM_FOUR_DEVILDOM_ROUTINE" ) if InstanceField[MapIndex] == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end local RoomEvent local Davildom RoomEvent = InstanceField[MapIndex] if RoomEvent["Room"]["RoomNumber"] ~= 4 then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end if RoomEvent["Room"]["Data"] == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end if RoomEvent["Room"]["Data"]["DavildomList"] == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end Davildom = RoomEvent["Room"]["Data"]["DavildomList"][Handle] if Davildom == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end if cIsObjectDead( Handle ) then cAIScriptSet( Handle ) RoomEvent["Room"]["Data"]["DavildomList"][Handle] = nil return ReturnAI["END"] end if Davildom["D_State"] == D_AnimateStart then if Davildom["AnimateStartTime"] > RoomEvent["CurrentTime"] then return ReturnAI["END"] end cAnimate( Handle, "start", EVENT_ROOM_DATA[RoomEvent["Room"]["RoomNumber"]]["EVENT_DAVILDOM"]["ANIMATION"] ) Davildom["D_State"] = D_NORMAL elseif Davildom["D_State"] == D_NORMAL then if Davildom["CheckTime"] > RoomEvent["CurrentTime"] then return ReturnAI["END"] end Davildom["CheckTime"] = RoomEvent["CurrentTime"] + 1 local FindPlayer FindPlayer = cObjectFind( Handle, 500, ObjectType["Player"], "so_ObjectType" ) if FindPlayer ~= nil then RoomEvent["Room"]["Data"]["DavildomList"][Handle]["D_State"] = D_AGGRO cAnimate ( Handle, "stop" ) cAggroSet ( Handle, FindPlayer, 50 ) end elseif Davildom["D_State"] == D_AGGRO then return ReturnAI["CPP"] end return ReturnAI["CPP"] end -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- Room 5 -- -- -- -- -- -- -- -- ( ½ÃÆ®¸® ·çƾ ) -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- function ROOM_FIVE_SCITRIE_ROUTINE( Handle, MapIndex ) cExecCheck( "ROOM_FIVE_SCITRIE_ROUTINE" ) if InstanceField[MapIndex] == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end local RoomEvent RoomEvent = InstanceField[MapIndex] if RoomEvent["Room"]["RoomNumber"] ~= 5 then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end if RoomEvent["Room"]["Data"] == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end if cIsObjectDead( Handle ) then cAIScriptSet( Handle ) RoomEvent["Room"]["Data"]["Citrie"] = nil return ReturnAI["END"] end local Citrie local HPRate local HP local MAXHP local Davildom = { } local DavildomList = { } local CurX, CurY local Davildom = { } local DavildomList = { } Citrie = RoomEvent["Room"]["Data"]["Citrie"] HP, MAXHP = cObjectHP( Citrie["Handle"] ) HPRate = HP / MAXHP * 100 CurX, CurY = cObjectLocate( Citrie["Handle"] ) if Citrie["C_State"] == C_HP_90_UNDER then if HPRate < Citrie["AI"][Citrie["C_State"]]["HP"] then for i = 1, Citrie["AI"][Citrie["C_State"]]["REGEN_NUM"] do Davildom["Handle"] = cMobRegen_Circle( RoomEvent["MapIndex"], Citrie["SUMMON"]["MOB_INDEX"], CurX, CurY, Citrie["SUMMON"]["RADIUS"] ) if Davildom["Handle"] ~= nil then cSetAIScript ( SCRIPT_MAIN, Davildom["Handle"] ) cAIScriptFunc ( Davildom["Handle"], "Entrance", "ROOM_FIVE_DAVILDOM_ROUTINE" ) DavildomList[Davildom["Handle"]] = Davildom end end RoomEvent["Room"]["Data"]["RegenDavildom"][C_HP_90_UNDER] = DavildomList Citrie["C_State"] = C_HP_60_UNDER end elseif Citrie["C_State"] == C_HP_60_UNDER then if HPRate < Citrie["AI"][Citrie["C_State"]]["HP"] then for i = 1, Citrie["AI"][Citrie["C_State"]]["REGEN_NUM"] do Davildom["Handle"] = cMobRegen_Circle( RoomEvent["MapIndex"], Citrie["SUMMON"]["MOB_INDEX"], CurX, CurY, Citrie["SUMMON"]["RADIUS"] ) if Davildom["Handle"] ~= nil then cSetAIScript ( SCRIPT_MAIN, Davildom["Handle"] ) cAIScriptFunc ( Davildom["Handle"], "Entrance", "ROOM_FIVE_DAVILDOM_ROUTINE" ) DavildomList[Davildom["Handle"]] = Davildom end end RoomEvent["Room"]["Data"]["RegenDavildom"][C_HP_60_UNDER] = DavildomList Citrie["C_State"] = C_HP_30_UNDER end elseif Citrie["C_State"] == C_HP_30_UNDER then if HPRate < Citrie["AI"][Citrie["C_State"]]["HP"] then for i = 1, Citrie["AI"][Citrie["C_State"]]["REGEN_NUM"] do Davildom["Handle"] = cMobRegen_Circle( RoomEvent["MapIndex"], Citrie["SUMMON"]["MOB_INDEX"], CurX, CurY, Citrie["SUMMON"]["RADIUS"] ) if Davildom["Handle"] ~= nil then cSetAIScript ( SCRIPT_MAIN, Davildom["Handle"] ) cAIScriptFunc ( Davildom["Handle"], "Entrance", "ROOM_FIVE_DAVILDOM_ROUTINE" ) DavildomList[Davildom["Handle"]] = Davildom end end RoomEvent["Room"]["Data"]["RegenDavildom"][C_HP_30_UNDER] = DavildomList Citrie["C_State"] = C_END end end return ReturnAI["CPP"] end function ROOM_FIVE_DAVILDOM_ROUTINE( Handle, MapIndex ) cExecCheck( "ROOM_FIVE_DAVILDOM_ROUTINE" ) if InstanceField[MapIndex] == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end local RoomEvent RoomEvent = InstanceField[MapIndex] if RoomEvent["Room"]["RoomNumber"] ~= 5 then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end if RoomEvent["Room"]["Data"] == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end if RoomEvent["Room"]["Data"]["RegenDavildom"] == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end if cIsObjectDead( Handle ) then cAIScriptSet( Handle ) return ReturnAI["END"] end return ReturnAI["CPP"] end function ROOM_FIVE_FORASCHEIF_ROUTINE( Handle, MapIndex ) cExecCheck( "ROOM_FIVE_FORASCHEIF_ROUTINE" ) if InstanceField[MapIndex] == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end local RoomEvent RoomEvent = InstanceField[MapIndex] if RoomEvent["Room"]["Data"] == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end local ForasChief ForasChief = RoomEvent["Room"]["Data"]["ForasChief"] if ForasChief == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end if cIsObjectDead( Handle ) then cAIScriptSet( Handle ) RoomEvent["Room"]["Data"]["ForasChief"] = nil return ReturnAI["END"] end if ForasChief["FC_State"] == FC_MOVE then local ForasChiefData = { } ForasChiefData = EVENT_ROOM_DATA[RoomEvent["Room"]["RoomNumber"]]["FORAS_CHIEF"] cRunTo( Handle, ForasChiefData["END_POSITION"]["X"], ForasChiefData["END_POSITION"]["Y"] ) ForasChief["FC_State"] = FC_NORMAL elseif ForasChief["FC_State"] == FC_NORMAL then return ReturnAI["END"] end return ReturnAI["END"] end