-------------------------------------------------------------------------------- -- Giant Honeying Sub Functions -- -------------------------------------------------------------------------------- function DummyFunc( Var ) cExecCheck "DummyFunc" end ---------------------------------------------------------------------- -- Player ---------------------------------------------------------------------- function Player_Insert( Var, CharNo, Handle, TeamType ) cExecCheck "Player_Insert" if Var == nil then ErrorLog( "Player_Insert : Var nil" ) return end local PlayerList = Var["Player"] if PlayerList == nil then ErrorLog( "Player_Insert : PlayerList nil" ) return end if CharNo == nil then ErrorLog( "Player_Insert : ErrorLog nil" ) return end if Handle == nil then ErrorLog( "Player_Insert : Handle nil" ) return end if TeamType == nil then ErrorLog( "Player_Insert : TeamType nil" ) return end local InsertIndex = #PlayerList + 1 PlayerList[ InsertIndex ] = {} PlayerList[ InsertIndex ]["CharNo"] = CharNo PlayerList[ InsertIndex ]["CharID"] = cGetPlayerName( Handle ) PlayerList[ InsertIndex ]["Handle"] = Handle PlayerList[ InsertIndex ]["TeamType"] = TeamType PlayerList[ InsertIndex ]["Goal"] = 0 PlayerList[ InsertIndex ]["IsInMap"] = true end function Player_Get( Var, CharNo ) cExecCheck "Player_Get" if Var == nil then ErrorLog( "Player_Get : Var nil" ) return end local PlayerList = Var["Player"] if PlayerList == nil then ErrorLog( "Player_Get : PlayerList nil" ) return end for i = 1, #PlayerList do if PlayerList[ i ]["CharNo"] == CharNo then return PlayerList[ i ] end end end function Player_Manager( Var ) cExecCheck "Player_Manager" if Var == nil then ErrorLog( "Player_Insert : Var nil" ) return false end local PlayerList = Var["Player"] if PlayerList == nil then ErrorLog( "Player_Insert : PlayerList nil" ) return false end -- Ç÷¹À̾î Á¢¼Ó È®ÀÎ local TeamMemberCnt = {} for i = 1, #PlayerList do local PlayerInfo = PlayerList[ i ] -- Ç÷¹À̾ ¸Ê¿¡ ÀÖ´ÂÁö È®ÀÎ if PlayerInfo["IsInMap"] == true then if cIsInMap( PlayerInfo["Handle"], Var["MapIndex"] ) == nil then PlayerInfo["IsInMap"] = false end end -- Á¢¼ÓÇÏ°í ÀÖ´Â À¯Àú ¼ö È®ÀÎ if PlayerInfo["IsInMap"] == true then if TeamMemberCnt[ PlayerInfo["TeamType"] ] == nil then TeamMemberCnt[ PlayerInfo["TeamType"] ] = 1 else TeamMemberCnt[ PlayerInfo["TeamType"] ] = TeamMemberCnt[ PlayerInfo["TeamType"] ] + 1 end end end if TeamMemberCnt[ KQ_TEAM["RED"] ] == nil or TeamMemberCnt[ KQ_TEAM["BLUE"] ] == nil then return false end -- Ç÷¹ÀÌ¾î °ü·Ã ÀÛ¾÷ for i = 1, #PlayerList do local PlayerInfo = PlayerList[ i ] local SpeedUpBuff = PlayerInfo["SpeedUpBuff"] local InvincibleBuff= PlayerInfo["InvincibleBuff"] if PlayerInfo["IsInMap"] == true then -- À̵¿¼Óµµ ¹öÇÁ°¡ °É·Á ÀÖÀ¸¸é if SpeedUpBuff ~= nil then if SpeedUpBuff["KeepTime"] <= Var["CurSec"] then cResetAbstate( PlayerInfo["Handle"], SpeedUpBox["AbsIndex"] ) cStaticWalkSpeed( PlayerInfo["Handle"], true, (Player_WalkSpeed * StaticMoveSpeedRate) ) cStaticRunSpeed( PlayerInfo["Handle"], true, (Player_RunSpeed * StaticMoveSpeedRate) ) SpeedUpBuff = nil PlayerInfo["SpeedUpBuff"] = nil end end -- ³Ë¹é ¹öÇÁ°¡ °É·ÁÀÖÀ¸¸é if InvincibleBuff ~= nil then -- ÀÏÁ¤ ½Ã°£¸¶´Ù, ÁÖÀ§ ´Ù¸¥ ÆÀ¿¡°Ô ³Ë¹é ó¸® if InvincibleBuff["TickTime"] <= Var["CurSec"] then local OpposingTeam = OpposingTeamInfo[ PlayerInfo["TeamType"] ] local TargetAbsInfo = InvincibleBox["TargetAbs"] if OpposingTeam ~= nil then for j = 1, #PlayerList do local TargetPlayerInfo = PlayerList[ j ] if PlayerInfo["IsInMap"] == true and TargetPlayerInfo["TeamType"] == OpposingTeam then if cDistanceSquar( PlayerInfo["Handle"], TargetPlayerInfo["Handle"] ) <= (InvincibleBox["Dist"] * InvincibleBox["Dist"]) then cSetAbstate( TargetPlayerInfo["Handle"], TargetAbsInfo["Index"], TargetAbsInfo["Str"], (TargetAbsInfo["KeepTime"] * 1000), PlayerInfo["Handle"] ) end end end end InvincibleBuff["TickTime"] = Var["CurSec"] + InvincibleBox["TickTime"] end if InvincibleBuff["KeepTime"] <= Var["CurSec"] then cResetAbstate( PlayerInfo["Handle"], InvincibleBox["AbsIndex"] ) InvincibleBuff = nil PlayerInfo["InvincibleBuff"] = nil end end end end return true end ---------------------------------------------------------------------- -- SoccerBall Function ---------------------------------------------------------------------- function SoccerBall_Regen( Var, X, Y, Dir ) if Var == nil then return end if X == nil then return end if Y == nil then return end if Dir == nil then return end if Var["SoccerBall"] ~= nil then cNPCVanish( Var["SoccerBall"] ) end -- Ã౸°ø ¼Òȯ local RegenBall = RegenInfo["SoccerBall"] local BallHandle BallHandle = cMobRegen_XY( Var["MapIndex"], RegenBall["Index"], X, Y, Dir ) if BallHandle == nil then GoToFail( Var, "Soccerball regen fail" ) return end Var["SoccerBall"] = BallHandle cSetAIScript ( MainLuaScriptPath, BallHandle ) cAIScriptFunc( BallHandle, "Entrance", "DummyRoutineFunc" ) cAIScriptFunc( BallHandle, "NPCAction", "SoccerBall_NPCAction" ) end function SoccerBall_Kick( Var, BallHandle, TeamType, KickerHandle, KickerCharNo, IsPlayer ) cExecCheck "SoccerBall_Kick" if Var == nil then ErrorLog( "SoccerBall_Kick : Var nil" ) return end if Var["Kicker"] == nil then ErrorLog( "SoccerBall_Kick : Var[\"Kicker\"] nil" ) return end if BallHandle == nil then ErrorLog( "SoccerBall_Kick : BallHandle nil" ) return end if TeamType == nil then ErrorLog( "SoccerBall_Kick : TeamType nil" ) return end if KickerHandle == nil then ErrorLog( "SoccerBall_Kick : KickerHandle nil" ) return end -- Ball, Kicker ÀÇ À§Ä¡ local KickX, KickY = cObjectLocate( KickerHandle ) local BallX, BallY = cObjectLocate( BallHandle ) if KickX == nil or KickY == nil or BallX == nil or BallY == nil then return end -- kicker ÀÇ ´Þ¸®±â¼Óµµ local KickerRunSpeed = cGetRunSpeed( KickerHandle ) if KickerRunSpeed == nil then return end -- À̵¿ÇÒ À§Ä¡ °è»ê local _x = BallX - KickX local _y = BallY - KickY local Dist = math.sqrt( ((_x * _x) + (_y * _y)) ) local MoveDist = SoccerBall["MoveDist"] + ( KickerRunSpeed / 10 ) if Dist == 0 then Dist = 1 end _x = (_x / Dist) * MoveDist _y = (_y / Dist) * MoveDist -- ¼öÁ¤ÀÌ ÇÊ¿äÇÒ µí, ÀÏÁ¤ È®·ü·Î ÁÂ,¿ì 0 ~ 50µµ ȸÀü ½ÃÄѼ­ À̵¿ if cRandom(0, SoccerBall["MissRateMax"]) <= KickerRunSpeed then local Angle = cRandom( SoccerBall["MoveAngle"]["Min"], SoccerBall["MoveAngle"]["Max"] ) if cRandom(0, 100) < 50 then _x, _y = cLocationRotate( _x, _y, Angle ); else _x, _y = cLocationRotate( _x, _y, (180 - Angle) ); end end _x = BallX + _x _y = BallY + _y -- Ball À̵¿¼Óµµ ¼³Á¤, À̵¿ cRunToUntilBlock( BallHandle, _x, _y, SoccerBall["MoveSpeedRate"] ) -- Kicker Á¤º¸ ¼³Á¤ if IsPlayer == true and KickerCharNo ~= nil then Var["Kicker"]["CharNo"] = KickerCharNo Var["Kicker"]["IsPlayer"] = true else Var["Kicker"]["NPCHandle"] = KickerHandle Var["Kicker"]["IsPlayer"] = false end Var["Kicker"]["TeamType"] = TeamType end function SoccerBall_Manager( Var ) cExecCheck( "SoccerBall_Manager" ) if Var == nil then ErrorLog( "SoccerBall_Manager : Var nil" ) return end if Var["MapIndex"] == nil then ErrorLog( "SoccerBall_Manager : Var nil" ) return end if Var["CurSec"] == nil then ErrorLog( "SoccerBall_Manager : CurSec nil" ) return end if Var["Kicker"] == nil then ErrorLog( "SoccerBall_Manager : Var[\"Kicker\"] nil" ) return end local TeamInfo = Var["Team"] if TeamInfo == nil then ErrorLog( "SoccerBall_Manager : TeamInfo nil" ) return end local PlayerList = Var["Player"] if PlayerList == nil then ErrorLog( "SoccerBall_Manager : PlayerList nil" ) return end local SoccerBallManagerInfo = Var["SoccerBallManager"] if Var["SoccerBallManager"] == nil then Var["SoccerBallManager"] = {} SoccerBallManagerInfo = Var["SoccerBallManager"] SoccerBallManagerInfo["Step"] = SoccerBallManagerStep["KickOff"] SoccerBallManagerInfo["WaitTime"] = 0 SoccerBallManagerInfo["TeamType"] = KQ_TEAM["MAX"] SoccerBallManagerInfo["BallLoc_X"] = 0 SoccerBallManagerInfo["BallLoc_Y"] = 0 SoccerBallManagerInfo["NextStep"] = SoccerBallManagerStep["AreaCheck"] end -------------------------------------------------------------------------- -- 1. ´ë±â if SoccerBallManagerInfo["Step"] == SoccerBallManagerStep["Wait"] then if SoccerBallManagerInfo["WaitTime"] <= Var["CurSec"] then SoccerBallManagerInfo["Step"] = SoccerBallManagerInfo["NextStep"] SoccerBallManagerInfo["WaitTime"] = 0 SoccerBallManagerInfo["NextStep"] = SoccerBallManagerStep["Wait"] end -------------------------------------------------------------------------- -- 2. ű ¿ÀÇÁ elseif SoccerBallManagerInfo["Step"] == SoccerBallManagerStep["KickOff"] then cScriptMsg( Var["MapIndex"], Var["Referee"]["Handle"], Referee_Chat["KickOff"] ) cEffectMsg_AllInMap( Var["MapIndex"], EFFECT_MSG_TYPE["EMT_SOCCER_KICK_OFF"] ) cDoorAction( Var["InvisibleDoor"], InvisibleDoor["BlockName"], "open" ) SoccerBallManagerInfo["Step"] = SoccerBallManagerStep["AreaCheck"] SoccerBallManagerInfo["WaitTime"] = 0 SoccerBallManagerInfo["TeamType"] = KQ_TEAM["MAX"] SoccerBallManagerInfo["BallLoc_X"] = 0 SoccerBallManagerInfo["BallLoc_Y"] = 0 SoccerBallManagerInfo["NextStep"] = SoccerBallManagerStep["Wait"] -------------------------------------------------------------------------- -- 3. °øÀÌ ÀÖ´Â À§Ä¡ È®ÀÎ elseif SoccerBallManagerInfo["Step"] == SoccerBallManagerStep["AreaCheck"] then if Var["SoccerBall"] == nil then return end -- Çʵ忡 °øÀÌ Á¸ÀçÇϸé, È®ÀÎÇÒ °ÍÀÌ ¾ø´Ù if cIsInArea( Var["SoccerBall"], Var["MapIndex"], AreaInfo["TouchLine"]["AreaName"] ) == true then return end local GoalInInfo = AreaInfo["GoalIn"] local KickerInfo = Var["Kicker"] -- °ñÀÎ ¿µ¿ª È®ÀÎ for i = 1, #GoalInInfo do if cIsInArea( Var["SoccerBall"], Var["MapIndex"], GoalInInfo[ i ]["AreaName"] ) == true then local GoalLineTeam = GoalInInfo[ i ]["Team"] local OpposingTeam = OpposingTeamInfo[ GoalLineTeam ] -- ¸Þ½ÃÁö ó¸® if KickerInfo["IsPlayer"] == false or KickerInfo["TeamType"] == GoalLineTeam then cScriptMsg( Var["MapIndex"], nil, NoticeInfo["NPCGoal"][ OpposingTeam ] ) if Var["Referee"]["Handle"] == KickerInfo["NPCHandle"] then cScriptMsg( Var["MapIndex"], Var["Referee"]["Handle"], Referee_Chat["NPCGoal"][ OpposingTeam ] ) end else local KickPlayerInfo = Player_Get( Var, KickerInfo["CharNo"] ) if KickPlayerInfo ~= nil then cScriptMsg( Var["MapIndex"], nil, NoticeInfo["PlayerGoal"][ OpposingTeam ], KickPlayerInfo["CharID"] ) cScriptMsg( Var["MapIndex"], Var["Referee"]["Handle"], Referee_Chat["PlayerGoal"][ OpposingTeam ], KickPlayerInfo["CharID"] ) KickPlayerInfo["Goal"] = KickPlayerInfo["Goal"] + 1 end end -- Á¡¼ö ó¸® TeamInfo[ OpposingTeam ] = TeamInfo[ OpposingTeam ] + 1 -- cScoreInfo_AllInMap( Var["MapIndex"], KQ_TEAM["MAX"], TeamInfo[ KQ_TEAM["RED"] ], TeamInfo[ KQ_TEAM["BLUE"] ] ) cWinter_Event_ScoreBoard_AllInMap( Var["MapIndex"], TeamInfo[ KQ_TEAM["RED"] ], TeamInfo[ KQ_TEAM["BLUE"] ] ) -- °ñ ¿¬Ãâ cAnimate( Var["SoccerBall"], "start", SoccerBall["GoalAni"] ) SoccerBallManagerInfo["Step"] = SoccerBallManagerStep["Wait"] SoccerBallManagerInfo["WaitTime"] = Var["CurSec"] + DelayTime["GoalInWait"] SoccerBallManagerInfo["TeamType"] = OpposingTeam SoccerBallManagerInfo["BallLoc_X"] = 0 SoccerBallManagerInfo["BallLoc_Y"] = 0 SoccerBallManagerInfo["NextStep"] = SoccerBallManagerStep["GoalEvent_Start"] return end end -- ¶óÀÎ ¾Æ¿ô if KickerInfo["IsPlayer"] == true then local OpposingTeam = OpposingTeamInfo[ KickerInfo["TeamType"] ] cScriptMsg( Var["MapIndex"], Var["Referee"]["Handle"], Referee_Chat["PlayerLineOut"][ OpposingTeam ] ) else cScriptMsg( Var["MapIndex"], Var["Referee"]["Handle"], Referee_Chat["NPCLineOut"] ) end SoccerBallManagerInfo["Step"] = SoccerBallManagerStep["Wait"] SoccerBallManagerInfo["WaitTime"] = Var["CurSec"] + DelayTime["LineOutWait__DelBall"] SoccerBallManagerInfo["TeamType"] = KickerInfo["TeamType"]; SoccerBallManagerInfo["BallLoc_X"], SoccerBallManagerInfo["BallLoc_Y"] = cObjectLocate( Var["SoccerBall"] ) SoccerBallManagerInfo["NextStep"] = SoccerBallManagerStep["LineOut_DelBall"] -------------------------------------------------------------------------- -- 4. ¶óÀÎ ¾Æ¿ô À̺¥Æ® - °ø»èÁ¦ elseif SoccerBallManagerInfo["Step"] == SoccerBallManagerStep["LineOut_DelBall"] then if Var["SoccerBall"] == nil then return end cNPCVanish( Var["SoccerBall"] ) Var["SoccerBall"] = nil SoccerBallManagerInfo["Step"] = SoccerBallManagerStep["Wait"] SoccerBallManagerInfo["WaitTime"] = Var["CurSec"] + DelayTime["LineOutWait"] SoccerBallManagerInfo["NextStep"] = SoccerBallManagerStep["LineOut"] -------------------------------------------------------------------------- -- 5. ¶óÀÎ ¾Æ¿ô À̺¥Æ® elseif SoccerBallManagerInfo["Step"] == SoccerBallManagerStep["LineOut"] then local Regen_X, Regen_Y -- ÆÀ º°·Î »óȲ¿¡ ¸Â°Ô ó¸® local OpposingTeam = OpposingTeamInfo[ SoccerBallManagerInfo["TeamType"] ] if OpposingTeam ~= nil then local LastDist for i = 1, #PlayerList do local PlayerInfo = PlayerList[ i ] if PlayerInfo["IsInMap"] == true and -- Á¢¼Ó ÁßÀÎ Ç÷¹À̾î PlayerInfo["TeamType"] == OpposingTeam and -- ÆÀ cIsInArea( PlayerInfo["Handle"], Var["MapIndex"], AreaInfo["TouchLine"]["AreaName"] ) == true and -- À§Ä¡ È®ÀÎ cIsInArea( PlayerInfo["Handle"], Var["MapIndex"], AreaInfo["PenaltyBox"][1] ) == false and -- À§Ä¡ È®ÀÎ cIsInArea( PlayerInfo["Handle"], Var["MapIndex"], AreaInfo["PenaltyBox"][2] ) == false -- À§Ä¡ È®ÀÎ then local PlayX, PlayY = cObjectLocate( PlayerInfo["Handle"] ) if PlayX ~= nil and PlayY ~= nil then local Dist = cDistanceSquar( PlayX, PlayY, SoccerBallManagerInfo["BallLoc_X"], SoccerBallManagerInfo["BallLoc_Y"] ) if Dist <= (AreaInfo["TouchLine"]["Dist"] * AreaInfo["TouchLine"]["Dist"]) then if LastDist == nil then LastDist = Dist Regen_X = PlayX Regen_Y = PlayY elseif Dist < LastDist then LastDist = Dist Regen_X = PlayX Regen_Y = PlayY end end end end end end if Regen_X == nil or Regen_Y == nil then Regen_X = RegenInfo["SoccerBall"]["X"]; Regen_Y = RegenInfo["SoccerBall"]["Y"]; end --cCastTeleport( Var["SoccerBall"], "SpecificCoord", Regen_X, Regen_Y ) SoccerBall_Regen( Var, Regen_X, Regen_Y, 0 ) SoccerBallManagerInfo["Step"] = SoccerBallManagerStep["AreaCheck"] SoccerBallManagerInfo["WaitTime"] = 0 SoccerBallManagerInfo["TeamType"] = KQ_TEAM["MAX"] SoccerBallManagerInfo["BallLoc_X"] = 0 SoccerBallManagerInfo["BallLoc_Y"] = 0 SoccerBallManagerInfo["NextStep"] = SoccerBallManagerStep["Wait"] -------------------------------------------------------------------------- -- 6. °ñ À̺¥Æ® - ½ÃÀÛ elseif SoccerBallManagerInfo["Step"] == SoccerBallManagerStep["GoalEvent_Start"] then if Var["SoccerBall"] == nil then return end local GoalInInfo = AreaInfo["GoalIn"] -- °ñ ¿¬Ãâ cAnimate( Var["SoccerBall"], "stop" ) --cCameraMove( Var["MapIndex"], GoalInInfo["CameraMove"]["X"], GoalInInfo["CameraMove"]["Y"], GoalInInfo["CameraMove"]["AngleXZ"], GoalInInfo["CameraMove"]["AngleY"], GoalInInfo["CameraMove"]["Dist"], 1 ) cEffectMsg_AllInMap( Var["MapIndex"], EFFECT_MSG_TYPE["EMT_SOCCER_GOAL"] ) for j = 1, #PlayerList do local PlayerInfo = PlayerList[ j ] if PlayerInfo["IsInMap"] == true then cSetAbstate( PlayerInfo["Handle"], GoalInInfo["CameraMove"]["Stun"], 1, (DelayTime["GoalEventWait"] * 1000) ) if PlayerInfo["TeamType"] == SoccerBallManagerInfo["TeamType"] then cEmotion( PlayerInfo["Handle"], GoalInInfo["Emotion"]["Score"] ) else cEmotion( PlayerInfo["Handle"], GoalInInfo["Emotion"]["LoseAScore"] ) end end end -- Çʵå Áß¾Ó¿¡ °ø ¼Òȯ cCastTeleport( Var["Referee"]["Handle"], "SpecificCoord", RegenInfo["Referee"]["X"], RegenInfo["Referee"]["Y"] ) --cCastTeleport( Var["SoccerBall"], "SpecificCoord", RegenInfo["SoccerBall"]["X"], RegenInfo["SoccerBall"]["Y"] ) SoccerBall_Regen( Var, RegenInfo["SoccerBall"]["X"], RegenInfo["SoccerBall"]["Y"], 0 ) cDoorAction( Var["InvisibleDoor"], InvisibleDoor["BlockName"], "close" ) SoccerBallManagerInfo["Step"] = SoccerBallManagerStep["Wait"] SoccerBallManagerInfo["WaitTime"] = Var["CurSec"] + DelayTime["GoalEventWait"] SoccerBallManagerInfo["NextStep"] = SoccerBallManagerStep["GoalEvent_End"] -------------------------------------------------------------------------- -- 7. °ñ À̺¥Æ® - ³¡ elseif SoccerBallManagerInfo["Step"] == SoccerBallManagerStep["GoalEvent_End"] then --cCameraMove( Var["MapIndex"], 0, 0, 0, 0, 0, 0 ) for i = 1, #PlayerList do local PlayerInfo = PlayerList[ i ] local RegenLocInfo = TeamRegenLocation[ PlayerInfo["TeamType"] ] if PlayerInfo["IsInMap"] == true and RegenLocInfo ~= nil then if PlayerInfo["TeamType"] == SoccerBallManagerInfo["TeamType"] then cCastTeleport( PlayerInfo["Handle"], "SpecificCoord", RegenLocInfo[ 2 ]["X"], RegenLocInfo[ 2 ]["Y"] ) else cCastTeleport( PlayerInfo["Handle"], "SpecificCoord", RegenLocInfo[ 1 ]["X"], RegenLocInfo[ 1 ]["Y"] ) end end end SoccerBallManagerInfo["Step"] = SoccerBallManagerStep["KickOff"] SoccerBallManagerInfo["WaitTime"] = 0 SoccerBallManagerInfo["TeamType"] = KQ_TEAM["MAX"] SoccerBallManagerInfo["BallLoc_X"] = 0 SoccerBallManagerInfo["BallLoc_Y"] = 0 SoccerBallManagerInfo["NextStep"] = SoccerBallManagerStep["Wait"] end end ---------------------------------------------------------------------- -- BuffBox Function ---------------------------------------------------------------------- function BuffBox_Manager( Var ) cExecCheck( "BuffBox_Manager" ) if Var == nil then ErrorLog( "BuffBox_Manager : Var nil" ) return end if Var["BuffBox"] == nil then ErrorLog( "BuffBox_Manager : Var[\"BuffBox\"] nil" ) return end local RegenBuffBox = RegenInfo["BuffBox"] for i = 1, RegenBuffBox["RegenNum"] do if Var["BuffBox"][ i ] == nil then Var["BuffBox"][ i ] = Var["CurSec"] + cRandom( RegenBuffBox["RegenInterval"]["Min"], RegenBuffBox["RegenInterval"]["Max"] ) elseif Var["BuffBox"][ i ] <= Var["CurSec"] then local MobSelect = cRandom( 1, #RegenBuffBox ) local BoxHandle BoxHandle = cMobRegen_Rectangle( Var["MapIndex"], RegenBuffBox[ MobSelect ]["Index"], RegenBuffBox["Location"]["X"], RegenBuffBox["Location"]["Y"], RegenBuffBox["Location"]["Width"], RegenBuffBox["Location"]["Height"], RegenBuffBox["Location"]["Rotate"] ) if BoxHandle ~= nil then cSetAIScript ( MainLuaScriptPath, BoxHandle ) cAIScriptFunc( BoxHandle, "Entrance", "DummyRoutineFunc" ) cAIScriptFunc( BoxHandle, "NPCAction", RegenBuffBox[ MobSelect ]["NPCAction"] ) end Var["BuffBox"][ i ] = Var["CurSec"] + cRandom( RegenBuffBox["RegenInterval"]["Min"], RegenBuffBox["RegenInterval"]["Max"] ) end -- ´ÙÀ½ ¼Òȯ ½Ã°£ ¼³Á¤ end end ---------------------------------------------------------------------- -- Log Functions ---------------------------------------------------------------------- function GoToFail( Var, Msg ) cExecCheck( "GoToFail" ) if Var == nil then ErrorLog( "BuffBox_KnockBack : Var nil" ); return end ErrorLog( Msg ) -- ¸ðµç °´Ã¼ »èÁ¦ if Var["InvisibleDoor"] ~= nil then cNPCVanish( Var["InvisibleDoor"] ) end if Var["SoccerBall"] ~= nil then cNPCVanish( Var["SoccerBall"] ) end if Var["Referee"] ~= nil then cNPCVanish( Var["Referee"]["Handle"] ) end if Var["Keeper"] ~= nil then for i = 1, #Var["Keeper"] do if Var["Keeper"][ i ]["Handle"] ~= nil then cNPCVanish( Var["Keeper"][ i ]["Handle"] ) end end end for i = 1, #RegenInfo["BuffBox"] do cVanishAll( Var["MapIndex"], RegenInfo["BuffBox"][ i ]["Index"] ) end if Var[ "InvisibleMonster" ] ~= nil then for i = 1, #Var[ "InvisibleMonster" ] do if Var[ "InvisibleMonster" ][ i ][ "Handle" ] ~= nil then cNPCVanish( Var[ "InvisibleMonster" ][ i ][ "Handle" ] ) end end end Var["StepFunc"] = ReturnToHome end ---------------------------------------------------------------------- -- Log Functions ---------------------------------------------------------------------- function DebugLog( String ) if String == nil then cAssertLog( "DebugLog::String == nil" ) return end cAssertLog( "Debug - "..String ) end function ErrorLog( String ) if String == nil then cAssertLog( "ErrorLog::String == nil" ) return end cAssertLog( "Error - "..String ) end