require( "common" ) -------------------------------------------------------------------- --¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø --// [S_21003] Å©¸®½º¸¶½º_2014_À̺¥Æ® °ü·Ã µ¥ÀÌÅÍ ---------------------------------------------------------START----- --¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø -------------------------------------------------------------------- -------------------------------------------------------------------- --// ´ëÇü³ª¹« ó¸® °ü·Ã µ¥ÀÌÅÍ -------------------------------------------------------------------- -- µðÆ潺 À̺¥Æ® ÁøÇà½Ã º¯°æµÉ ¾Ö´Ï¸ÞÀÌ¼Ç TREE_DEFENCE_TABLE = { TREE_DIE = { AniIndex = "E_XTreeBig_Idle05", }, -- ºÎ¼­Áö´Â ¸ð¾ç TREE_REGEN = { AniIndex = "E_XTreeBig_Idle00", }, -- ¿ø·¡´ë·Î µÇµ¹¸²( 0´Ü°è·Î ) } -------------------------------------------------------------------- --// »êŸ ±úºù ó¸® °ü·Ã µ¥ÀÌÅÍ -------------------------------------------------------------------- SANTA_KEBING_MOB_REGEN_TABLE = { RunSpeed = 700, MobIndex = "KebingX_14", { RegenX = 18427, RegenY = 15754, Dir = 0,}, { RegenX = 13598, RegenY = 15727, Dir = 0,}, { RegenX = 14685, RegenY = 9746, Dir = 0,}, { RegenX = 11327, RegenY = 13423, Dir = 0,}, } SANTA_KEBING_MOB_ANI_TABLE = { CastAniIndex = "KebingKnockBackCasting", CastAniKeepTime = 3, -- CastAniIndex Àç»ý½Ã°£. ÀÌ ½Ã°£¸¸Å­ CastAniIndex ¾Ö´Ï Àç»ý ÈÄ, SwingAniIndex·Î ³Ñ¾î°¨ SwingAniIndex = "KebingKnockBackSwing", } -- À̵¿ »óÅ°ª flag MOVESTATE = {} MOVESTATE["STOP"] = "STOP" MOVESTATE["MOVE"] = "MOVE" PATHTYPE_CHK_DLY = 1 PATHTYPE_GAP = 100 -- ¿þÀ̺ê¸÷ À̵¿ÁÂǥüũ ¿©À¯°Å¸® SANTA_KEBING_PATH_TABLE = { -- RegenX = 18427, RegenY = 15754¿¡¼­ ¸®Á¨µÉ »êŸ±úºùÀÇ PATHÁ¤º¸ { --{ x = 18427, y = 15754, }, -- Ãâ¹ßÁ¡(¸®Á¨ÁÂÇ¥) { x = 17473, y = 14197, }, { x = 16386, y = 13974, }, { x = 15572, y = 13385, }, -- Æ®¸® ÁÂÇ¥ }, -- RegenX = 13598, RegenY = 15727¿¡¼­ ¸®Á¨µÉ »êŸ±úºùÀÇ PATHÁ¤º¸ { --{ x = 13598, y = 15727, }, -- Ãâ¹ßÁ¡(¸®Á¨ÁÂÇ¥) { x = 14139, y = 14478, }, { x = 15572, y = 13385, }, }, -- RegenX = 14685, RegenY = 9746¿¡¼­ ¸®Á¨µÉ »êŸ±úºùÀÇ PATHÁ¤º¸ { --{ x = 14685, y = 9746, }, -- Ãâ¹ßÁ¡(¸®Á¨ÁÂÇ¥) { x = 14954, y = 11265, }, { x = 15555, y = 11704, }, { x = 15572, y = 13385, }, }, -- RegenX = 11327, RegenY = 13423¿¡¼­ ¸®Á¨µÉ »êŸ±úºùÀÇ PATHÁ¤º¸ { --{ x = 11327, y = 13423, }, -- Ãâ¹ßÁ¡(¸®Á¨ÁÂÇ¥) { x = 12547, y = 13423, }, { x = 13178, y = 12963, }, { x = 14022, y = 13411, }, { x = 15572, y = 13385, }, }, } -------------------------------------------------------------------- --// Å©·¯½Ãº¼ ó¸® °ü·Ã µ¥ÀÌÅÍ -------------------------------------------------------------------- CRUSHBALL_TABLE = { MobIndex = "BallCrush", SkillIndex = "BallCrush_Skill01_W", } -- Å©·¯½Ãº¼¿¡ ¸Â¾ÒÀ»¶§, »êŸ±úºù¿¡°Ô °É¾îÁÙ ³Ë¹é »óÅÂÀÌ»ó CRUSHBALL_ABSTATE_TABLE = { AbStateHitRate = 300, -- »óÅÂÀÌ»óÀÌ ¹ß»ýÇÒ È®·ü AbstateIndex = "StaKnockBackFly", Strength = 1, KeepTime = 1, } -------------------------------------------------------------------- --// µðÆ潺À̺¥Æ® º¸»ó °ü·Ã µ¥ÀÌÅÍ -------------------------------------------------------------------- DEFENCE_EVENT_REWARD_ABSTATE_TABLE = { AbstateIndex = "StaXmas_StatUp", Strength = 1, KeepTime = (60*60*1000), Range = 10000, -- »êŸ±úºù ¸ðµÎ ¹°¸®ÃÆÀ»¶§, ¸ÞÀÎÆ®¸® ±âÁØÀ¸·Î Range¾È¿¡ µé¾î¿ÍÀִ ij¸¯ÅÍ¿¡ »óÅÂÀÌ»óÀ» ÁÜ } -------------------------------------------------------------------- --// Script -------------------------------------------------------------------- E_XKebingChat01 = "E_XKebingChat01" -- Áö³­¹øó·³ ´çÇҰŶó°í »ý°¢ÇÏÁö¸¶¶ó!! E_X_Notice_DefenseStart = "E_X_Notice_DefenseStart" -- Å©¸®½º¸¶½º ±úºùÀÇ ½À°ÝÀÌ ½ÃÀ۵Ǿú½À´Ï´Ù. Æ®¸®¸¦ ÁöÄÑÁÖ¼¼¿ä. E_X_Notice_DefenseSucc = "E_X_Notice_DefenseSucc" -- Å©¸®½º¸¶½º º¸½º ±úºùÀÇ ½À°ÝÀ¸·Î ºÎÅÍ ¹æ¾î¸¦ ¼º°øÇÏ¿´½À´Ï´Ù. E_X_Notice_DefenseFail = "E_X_Notice_DefenseFail" -- Å©¸®½º¸¶½º ±úºù¿¡ ÀÇÇØ Æ®¸®°¡ Æı«µÇ¾ú½À´Ï´Ù. E_X_Notice_TreeRegen = "E_X_Notice_TreeRegen" -- »õ·Î¿î Æ®¸®°¡ ¼¼¿öÁ³½À´Ï´Ù. Æ®¸®¸¦ ²Ù¸ç ÁÖ¼¼¿ä. -------------------------------------------------------------------- --// µðÆ潺À̺¥Æ® ó¸® °ü·Ã µ¥ÀÌÅÍ -------------------------------------------------------------------- NEED_KEBING_KILLCOUNT_FOR_DEFENCE_EVENT = 100 -- Àå³­²Ù·¯±â ±úºù n¸¶¸® »ç³É½Ã, µðÆ潺À̺¥Æ®°¡ ½ÃÀÛµÊ SANTAKEBING_CRUSHBALL_HIT_COUNT = 50 -- »êŸ±úºùÀÌ Å©·¯½Ãº¼¿¡ n¹ø ¸ÂÀ¸¸é »ç¸ÁÇÔ SANTAKEBING_RANGE_WITH_TREE = 50 -- »êŸ±úºù°ú ¸ÞÀÎÆ®¸® Ãæµ¹ ¹üÀ§ SANTAKEBING_RANGE_WITH_CRUSHBALL = 50 -- »êŸ±úºù°ú Å©·¯½Ãº¼ Ãæµ¹ ¹üÀ§ DEFENCE_EVENT_FAIL_TREE_REGEN_TIME = 15 -- µðÆ潺 ½ÇÆÐÈÄ, Æ®¸®°¡ ´Ù½Ã ¸®Á¨µÉ¶§±îÁö °É¸®´Â ½Ã°£(ÃÊ) -------------------------------------------------------------------- --// °ÔÀÓ·Î±× -------------------------------------------------------------------- NC_LOG_GAME_CHRISTMAS_DECO_TRY_BIG_TREE = 2045 -- ´ëÇüÆ®¸® ²Ù¹Ì±â¸¦ ½Ãµµ NC_LOG_GAME_CHRISTMAS_DECO_TRY_SMALL_TREE = 2046 -- ¼ÒÇüÆ®¸® ²Ù¹Ì±â¸¦ ½Ãµµ( ¼ÒÇüÆ®¸® ¸÷ ¾ÆÀ̵ð ) NC_LOG_GAME_CHRISTMAS_DECO_COMPLETE_BIG_TREE = 2047 -- ´ëÇüÆ®¸® ²Ù¹Ì±â¸¦ ¿Ï¼º NC_LOG_GAME_CHRISTMAS_DECO_COMPLETE_SMALL_TREE = 2048 -- ¼ÒÇüÆ®¸® ²Ù¹Ì±â¸¦ ¿Ï¼º( ¼ÒÇüÆ®¸® ¸÷ ¾ÆÀ̵ð ) NC_LOG_GAME_CHRISTMAS_START_DEFENCE = 2049 -- µðÆ潺 À̺¥Æ® ÁøÇà NC_LOG_GAME_CHRISTMAS_SUCC_DEFENCE = 2050 -- µðÆ潺 À̺¥Æ® ¼º°ø -------------------------------------------------------------------- --¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø --// [S_21003] Å©¸®½º¸¶½º_2014_À̺¥Æ® °ü·Ã µ¥ÀÌÅÍ ---------------------------------------------------------END------- --¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø¡Ø -------------------------------------------------------------------- -------------------------------------------------------------------- --// Defined -------------------------------------------------------------------- VALID_MAP_INDEX = "Eld" -- ¸ÞÀÎÆ®¸® ¸®Á¨½Ã üũÇÒ ¸ÊÀ妽º IMMORTAL_INDEX = "StaImmortal" -- ¸÷ ¸®Á¨½Ã Ç®¾îÁÙ »óÅÂÀÌ»ó TREE_CAST_TIME = (2*1000) -- ³ª¹« ij½ºÆà ½Ã°£ TREE_CAST_ANI = "ActionProduct" -- ³ª¹« ij½ºÆà ¾Ö´Ï¸ÞÀÌ¼Ç À妽º TREE_CAST_ITEM = "E_XTreeDeco" -- ³ª¹« ij½ºÆà ÀÌÈÄ ¼Ò¸ð ¾ÆÀÌÅÛ -------------------------------------------------------------------- --// Script -------------------------------------------------------------------- -- ÆÄÀÏ À̸§ SCRIPT_FILE_NAME = "Event" -- ½ºÅ©¸³Æ® À妽º E_X_Notice_TreeUp01 = "E_X_Notice_TreeUp01" -- Æ®¸®°¡ 2´Ü°è·Î º¯ÇüµÇ¾î Àå½ÄÀÌ ´Ã¾î³³´Ï´Ù. E_X_Notice_TreeUp02 = "E_X_Notice_TreeUp02" -- Æ®¸®°¡ 3´Ü°è·Î º¯ÇüµÇ¾î ºû³ª´Â Àå½ÄÀÌ ´Ã¾î³³´Ï´Ù. E_X_Notice_TreeUp03 = "E_X_Notice_TreeUp03" -- Æ®¸®°¡ 4´Ü°è·Î º¯ÇüµÇ¾î ºÒºûÀÌ È­·ÁÇØÁý´Ï´Ù. E_X_Notice_TreeUp04 = "E_X_Notice_TreeUp04" -- Æ®¸®°¡ 5´Ü°è·Î º¯ÇüµÇ¾î È­·ÁÇÔÀÇ ±ØÄ¡¸¦ º¸¿©ÁÝ´Ï´Ù. E_X_Notice_TreeUp05 = "E_X_Notice_TreeUp05" -- Àå³­²Ù·¯±â ±úºùµéÀÌ Æ®¸® Àå½ÄµéÀ» ÈÉÃÄ°©´Ï´Ù. E_X_Notice_TreeInit = "E_X_Notice_TreeInit" -- Àå³­²Ù·¯±â ±úºùµéÀÌ ¸ðµÎ µµ¸ÁÃƽÀ´Ï´Ù. Æ®¸®¸¦ ´Ù½Ã ²Ù¸çÁÖ¼¼¿ä. E_X_Notice_Buff01 = "E_X_Notice_Buff01" -- Å©¸®½º¸¶½ºÀÇ ¼Ò¸ÁÀÌ ´À²¸Áú¶û°¡ ¸ô¶ó E_X_Notice_Buff02 = "E_X_Notice_Buff02" -- ·çµ¹ÇÁÀÇ ¼Ò¸ÁÀÌ ´À²¸Áú¶û°¡ ¸ô¶ó E_X_Notice_Buff03 = "E_X_Notice_Buff03" -- »êŸ ¿äÁ¤ÀÇ ¼Ò¸ÁÀÌ ´À²¸Áú¶û°¡ ¸ô¶ó E_X_Notice_Buff04 = "E_X_Notice_Buff04" -- »êŸÀÇ ¼Ò¸ÁÀÌ ´À²¸Áú¶û°¡ ¸ô¶ó E_X_SysMsg_Deco01 = "E_X_SysMsg_Deco01" -- Å©¸®½º¸¶½º ¼Ò¸Á Æ®¸®¿¡ º° Àå½ÄÀ» ´Þ¾Ò½À´Ï´Ù. E_X_SysMsg_Deco02 = "E_X_SysMsg_Deco02" -- ·çµ¹ÇÁÀÇ ¼Ò¸Á Æ®¸®¿¡ º° Àå½ÄÀ» ´Þ¾Ò½À´Ï´Ù. E_X_SysMsg_Deco03 = "E_X_SysMsg_Deco03" -- »êŸ¿äÁ¤ÀÇ ¼Ò¸Á Æ®¸®¿¡ º° Àå½ÄÀ» ´Þ¾Ò½À´Ï´Ù. E_X_SysMsg_Deco04 = "E_X_SysMsg_Deco04" -- »êŸÀÇ ¼Ò¸Á Æ®¸®¿¡ º° Àå½ÄÀ» ´Þ¾Ò½À´Ï´Ù. E_X_SysMsg_Deco05 = "E_X_SysMsg_Deco05" -- ¾ÆÀÌ»þÀÇ ¼Ò¸Á Æ®¸®¿¡ º° Àå½ÄÀ» ´Þ¾Ò½À´Ï´Ù. E_X_ErrMsg_DecoFail = "E_X_ErrMsg_DecoFail" -- Æ®¸® º° Àå½ÄÀÌ ¾ø½À´Ï´Ù. ¾ÆÀÌÅÛÀ» °¡Áö°í ´Ù½Ã ½Ãµµ ÇØÁÖ¼¼¿ä. E_X_SysMsg_DecoFail = "E_X_SysMsg_Fail1" -- Áö±ÝÀº Æ®¸®¿¡ Àå½ÄÀ» Ãß°¡ÇÒ ¼ö ¾ø½À´Ï´Ù. Àá½Ã ÈÄ ´Ù½Ã ½ÃµµÇØÁÖ¼¼¿ä. E_X_SysMsg_DecoFail_2 = "E_X_SysMsg_Fail2" -- Cannot use the item due to an Abnormal State -------------------------------------------------------------------- --// ´ëÇü³ª¹« ó¸® °ü·Ã µ¥ÀÌÅÍ -------------------------------------------------------------------- -- ·¹º§ Å×À̺í -- NeedCount : ÇØ´ç ·¹º§ÀÌ µÇ±âÀ§ÇØ ÇÊ¿äÇÑ ¾ÆÀÌÅÛ ¼ö. (·¹º§Àº 0´Ü°èºÎÅÍ) -- LevDwnKeep : 1 = 1Sec, ÃÖ´ë ·¹º§ÀÌ µÈ ÀÌÈÄ °¢ ·¹º§ À¯Áö ½Ã°£ TREE_LEVEL_TABLE = { { NeedCount = 50 , AniIndex = "E_XTreeBig_Idle01", LevDwnKeep = 100, Notice = E_X_Notice_TreeUp01, }, { NeedCount = 100, AniIndex = "E_XTreeBig_Idle02", LevDwnKeep = 100, Notice = E_X_Notice_TreeUp02, }, { NeedCount = 150, AniIndex = "E_XTreeBig_Idle03", LevDwnKeep = 100, Notice = E_X_Notice_TreeUp03, }, { NeedCount = 200, AniIndex = "E_XTreeBig_Idle04", LevDwnKeep = 600, Notice = E_X_Notice_TreeUp04, }, } -- ¸÷ ¸®Á¨ Å×À̺í -- RegenInterval: 1 = 1Sec, ¸÷ÀÌ Á×Àº ÀÌÈÄ ´Ù½Ã ¸®Á¨ µÇ´Â ½Ã°£. REWARD_MOB_REGEN_TABLE = { { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15861, CenterY = 15069, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 15612, CenterY = 11399, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, { MobIndex = "E_XKebing", CenterX = 12342, CenterY = 11267, Range = 2000, RegenInterval = 2, }, } -- ¿¬Ãâ TREE_LEVEL_DOWN_EVENT_INFO = { MobLifeTime = 5, -- nÃʵ¿¾È À¯ÁöµÇ´Â MobIndex = "E_XKebing_Show", -- s¸÷À» RegenTick = 3, -- n+1ƽ¸¶´Ù(1Tick=0.1Sec) RegenDist = 300, -- ³ª¹«¿Í n¸¸Å­ ¶³¾îÁø °Å¸®¿¡¼­ ¸®Á¨ÇÏ°í FollowGap = 180, -- ³ª¹«¿Í n¸¸Å­ ¶³¾îÁø °Å¸®±îÁö À̵¿Çؼ­ AniTime = 3, -- nÃÊ µ¿¾È AniIndex = "E_XKebing_Skill01_N", -- s¾Ö´Ï¸ÞÀ̼ÇÀ» º¸¿©ÁÖ°í RunSpeed = 2000, -- (n/1000)ÀÇ À̵¿¼Óµµ·Î RunMaxDist = 2000, -- ³ª¹«¿Í n¸¸Å­ ¶³¾îÁø °Å¸®±îÁö µµ¸Á°¡´Â ¿¬ÃâÀ» KeepTime = 30, -- nÃÊ µ¿¾È À¯ÁöÇÑ´Ù. } -------------------------------------------------------------------- --// ¼ÒÇü³ª¹« ó¸® °ü·Ã µ¥ÀÌÅÍ -------------------------------------------------------------------- -- º¸»ó »óÅÂÀÌ»ó Å×À̺í -- KeepTime : 1000 = 1sec -- Range : º¸»ó ¹üÀ§ REWARD_ABSTATE_TABLE = { Reward01 = { AbstateIndex = "StaXReward01", Strength = 1, KeepTime = (60*60*1000), Range = 1000, Notice = E_X_Notice_Buff01, }, Reward02 = { AbstateIndex = "StaXReward02", Strength = 1, KeepTime = (60*60*1000), Range = 1000, Notice = E_X_Notice_Buff02, }, Reward03 = { AbstateIndex = "StaXReward03", Strength = 1, KeepTime = (60*60*1000), Range = 1000, Notice = E_X_Notice_Buff03, }, Reward04 = { AbstateIndex = "StaXReward04", Strength = 1, KeepTime = (60*60*1000), Range = 1000, Notice = E_X_Notice_Buff04, }, } -- ·¹º§ Å×À̺í -- MaxLevelKeep : 1 = 1Sec, ÃÖ´ë ·¹º§ÀÌ µÈ ÀÌÈÄ À¯Áö ½Ã°£ -- NeedCount : ÇØ´ç ·¹º§ÀÌ µÇ±âÀ§ÇØ ÇÊ¿äÇÑ ¾ÆÀÌÅÛ ¼ö. (·¹º§Àº 0´Ü°èºÎÅÍ) SMALL_TREE_LEVEL_TABLE = { MaxLevelKeep = 300, { NeedCount = 5, AniIndex = "E_XTree_Idle01", }, { NeedCount = 10, AniIndex = "E_XTree_Idle02", }, } -- ¼ÒÇü³ª¹« Á¤º¸ -- LevelTable : SMALL_TREE_LEVEL_TABLE µ¥ÀÌÅÍ À妽º -- RewardAbstate: REWARD_ABSTATE_TABLE µ¥ÀÌÅÍ À妽º SMALL_TREE_INFO = { { MobIndex = "E_XTree_Xmas", RegenX = 14738, RegenY = 13055, Dir = 7, CastSuccMsg = E_X_SysMsg_Deco01, RewardAbstate = "Reward01", }, { MobIndex = "E_XTree_Rudolph", RegenX = 17372, RegenY = 13673, Dir = 129, CastSuccMsg = E_X_SysMsg_Deco02, RewardAbstate = "Reward02", }, { MobIndex = "E_XTree_Fairy", RegenX = 15582, RegenY = 13827, Dir = 43, CastSuccMsg = E_X_SysMsg_Deco03, RewardAbstate = "Reward03", }, { MobIndex = "E_XTree_Santa", RegenX = 14797, RegenY = 13758, Dir = 132, CastSuccMsg = E_X_SysMsg_Deco04, RewardAbstate = "Reward04", }, { MobIndex = "E_XTree_Xmas", RegenX = 16750, RegenY = 13852, Dir = 128, CastSuccMsg = E_X_SysMsg_Deco01, RewardAbstate = "Reward01", }, { MobIndex = "E_XTree_Rudolph", RegenX = 15769, RegenY = 12928, Dir = 81, CastSuccMsg = E_X_SysMsg_Deco02, RewardAbstate = "Reward02", }, { MobIndex = "E_XTree_Fairy", RegenX = 16517, RegenY = 12977, Dir = 53, CastSuccMsg = E_X_SysMsg_Deco03, RewardAbstate = "Reward03", }, { MobIndex = "E_XTree_Santa", RegenX = 17363, RegenY = 13090, Dir = 146, CastSuccMsg = E_X_SysMsg_Deco04, RewardAbstate = "Reward04", }, } -------------------------------------------------------------------- --// ´«»ç¶÷ ó¸® °ü·Ã µ¥ÀÌÅÍ -------------------------------------------------------------------- -- ¾ÆÀÌÅÛ µå¶ø Å×À̺í -- Rate : 1000000 = 100% ITEM_DROP_TABLE = { SnowMan = { { ItemIndex = "E_XTreeDeco", Rate = 700000, }, { ItemIndex = "E_XCrystal", Rate = 500000, }, { ItemIndex = "E_BallSnow02", Rate = 500000, }, }, } -- ´«»ç¶÷ Á¤º¸ -- CenterX, CenterY, Range : ¸®Á¨ Á᫐ ÁÂÇ¥¿Í ¹üÀ§ -- LifeTime_Min, LifeTime_Max : 1 = 1Sec, ¸®Á¨ÈÄ ´«»ç¶÷ À¯Áö½Ã°£(´Ù½Ã ¸®Á¨µÉ ½Ã°£) ¹üÀ§ -- DropTable : ITEM_DROP_TABLE µ¥ÀÌÅÍ À妽º SNOWMAN_INFO = { { MobIndex = "E_XSnowman", CenterX = 16000, CenterY = 15640, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 16000, CenterY = 15640, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 16000, CenterY = 15640, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 16000, CenterY = 15640, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 16000, CenterY = 15640, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 16000, CenterY = 15640, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 16000, CenterY = 15640, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 16000, CenterY = 15640, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 16000, CenterY = 15640, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 16000, CenterY = 15640, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 16000, CenterY = 15640, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 16000, CenterY = 15640, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 16000, CenterY = 15640, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 16000, CenterY = 15640, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 16000, CenterY = 15640, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 16000, CenterY = 15640, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 16000, CenterY = 15640, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 16000, CenterY = 15640, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 16000, CenterY = 15640, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 16000, CenterY = 15640, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 14813, CenterY = 10438, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 14813, CenterY = 10438, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 14813, CenterY = 10438, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 14813, CenterY = 10438, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 14813, CenterY = 10438, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 14813, CenterY = 10438, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 14813, CenterY = 10438, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 14813, CenterY = 10438, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 14813, CenterY = 10438, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 14813, CenterY = 10438, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 14813, CenterY = 10438, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 14813, CenterY = 10438, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 14813, CenterY = 10438, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 14813, CenterY = 10438, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 14813, CenterY = 10438, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 14813, CenterY = 10438, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 14813, CenterY = 10438, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 14813, CenterY = 10438, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 14813, CenterY = 10438, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 14813, CenterY = 10438, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 11142, CenterY = 10910, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 11142, CenterY = 10910, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 11142, CenterY = 10910, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 11142, CenterY = 10910, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 11142, CenterY = 10910, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 11142, CenterY = 10910, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 11142, CenterY = 10910, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 11142, CenterY = 10910, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 11142, CenterY = 10910, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 11142, CenterY = 10910, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 11142, CenterY = 10910, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 11142, CenterY = 10910, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 11142, CenterY = 10910, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 11142, CenterY = 10910, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 11142, CenterY = 10910, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 11142, CenterY = 10910, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 11142, CenterY = 10910, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 11142, CenterY = 10910, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 11142, CenterY = 10910, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 11142, CenterY = 10910, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 18261, CenterY = 10737, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 18261, CenterY = 10737, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 18261, CenterY = 10737, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 18261, CenterY = 10737, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 18261, CenterY = 10737, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 18261, CenterY = 10737, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 18261, CenterY = 10737, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 18261, CenterY = 10737, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 18261, CenterY = 10737, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 18261, CenterY = 10737, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 18261, CenterY = 10737, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 18261, CenterY = 10737, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 18261, CenterY = 10737, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 18261, CenterY = 10737, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 18261, CenterY = 10737, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 18261, CenterY = 10737, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 18261, CenterY = 10737, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 18261, CenterY = 10737, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 18261, CenterY = 10737, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, { MobIndex = "E_XSnowman", CenterX = 18261, CenterY = 10737, Range = 1000, LifeTime_Min = 5, LifeTime_Max = 7, DropTable = "SnowMan", }, } -------------------------------------------------------------------- --// Å©¸®½º¸¶½º À̺¥Æ® Àü¿ª º¯¼ö -------------------------------------------------------------------- -- ¸÷Á¤º¸ 󸮿¡ »ç¿ë MemBlock = {} -------------------------------------------------------------------- --// ½ºÅ©¸³Æ® ¸ÞÀÎ -------------------------------------------------------------------- function E_XTreeBig( Handle, MapIndex ) cExecCheck( "E_XTreeBig" ) if MapIndex ~= VALID_MAP_INDEX then cAIScriptSet( Handle ) return ReturnAI["END"] end if cIsObjectDead( Handle ) == 1 then KebingVanishAll( MemBlock[Handle] ) cAIScriptSet( Handle ) MemBlock[Handle] = nil return ReturnAI["END"] end local Var = MemBlock[Handle] local CurSec = cCurrentSecond() if Var == nil then MemBlock[Handle] = {} Var = MemBlock[Handle] Var["MapIndex"] = MapIndex Var["Handle"] = Handle Var["CurSec"] = CurSec Var["NextTick"] = CurSec Var["Level"] = 0 Var["Count"] = 0 Var["RegenKebing"] = false Var["KebingList"] = {} Var["KebingRegenList"] = {} Var["LevelDownEvent"] = false Var["EventKeepTime"] = CurSec Var["TickCount"] = TREE_LEVEL_DOWN_EVENT_INFO["RegenTick"] -- Á×Àº Àå³­²Ù·¯±â ±úºùÀÇ ¼ö Var["KebingDeadCount"] = 0 -- ´ëÇüÆ®¸®ÇÚµé MemBlock["TreeHandle"] = Handle -- ´ëÇüÆ®¸® ÇÁ·Î¼¼½º MemBlock["BonusDefenceEvent"] = {} MemBlock["BonusDefenceEvent"]["IsProgress"] = false -- µðÆ潺 À̺¥Æ®°¡ ¹ßµ¿ÁßÀΰ¡ MemBlock["BonusDefenceEvent"]["IsSantaKebingCrush"] = false -- ±úºù°ú Ãæµ¹Çߴ°¡ cAIScriptFunc( Handle, "NPCClick", "TreeClick" ) cAIScriptFunc( Handle, "NPCMenu", "TreeCastingComplete" ) cSetFieldScript ( Var["MapIndex"], Handle ) cFieldScriptFunc ( Var["MapIndex"], "ServantSummon", "ServantSummon" ) end -- 0.1Ãʸ¶´Ù ó¸® if Var["NextTick"] <= CurSec then Var["CurSec"] = CurSec Var["NextTick"] = Var["NextTick"] + 0.1 else return ReturnAI["END"] end TreeProcess( Var ) SmallTreeProcess( Var ) SnowManProcess( Var ) SantaKebingRegenProcess( Var ) return ReturnAI["END"] end -------------------------------------------------------------------- --// ³ª¹« ó¸® -------------------------------------------------------------------- -- ³ª¹« ó¸® function TreeProcess( Var ) cExecCheck( "TreeProcess" ) if Var == nil then return end if Var["CurSec"] == nil then return end if Var["Level"] == nil then return end if Var["Count"] == nil then return end if Var["RegenKebing"] == nil then return end if Var["LevelDownEvent"] == nil then return end -- TreeCastingComplete ¿¡¼­ ¼¼ÆÃµÊ if Var["LevDwnKeep"] ~= nil then -- À¯Áö ½Ã°£ Áö³ª¸é if Var["LevDwnKeep"] <= Var["CurSec"] then -- ù ·¹º§´Ù¿îÀ̸é if Var["Level"] == #TREE_LEVEL_TABLE then -- ¡Ø °ÔÀÓ·Î±× -- ´ëÇü Æ®¸® ¿Ï¼º Ƚ¼ö( 5´Ü°è±îÁö ²Ù¹Ì±â ¼º°ø ) cSendGameLogDataType_5( NC_LOG_GAME_CHRISTMAS_DECO_COMPLETE_BIG_TREE, 0, 0, 0 ) -- °øÁö cNotice( Var["MapIndex"], SCRIPT_FILE_NAME, E_X_Notice_TreeUp05 ) -- ±úºù ¸®Á¨ ½ÃÀÛ Var["RegenKebing"] = true end -- ·¹º§ ´Ù¿î Var["Level"] = Var["Level"] - 1 if Var["Level"] <= 0 then -- °øÁö -- cNotice( Var["MapIndex"], SCRIPT_FILE_NAME, E_X_Notice_TreeInit ) -- ¾Ö´Ï¸ÞÀÌ¼Ç ¿ø»óÅ·ΠcAnimate( Var["Handle"], "stop" ) -- ±úºù ¸®Á¨ ÁßÁö, Á¦°Å Var["RegenKebing"] = false KebingVanishAll( Var ) -- ·¹º§°ú Ä«¿îÆ® ÃʱâÈ­ Var["Level"] = 0 Var["Count"] = 0 Var["LevDwnKeep"] = nil -- ±úºù 100 ¸¶¸® ³Ñ°Ô Á׿´À¸¸é µðÆ潺À̺¥Æ® ¹ß»ý if Var["KebingDeadCount"] >= NEED_KEBING_KILLCOUNT_FOR_DEFENCE_EVENT then -- ¡Ø °ÔÀÓ·Î±× ³²±æ ºÎºÐ -- µðÆ潺 À̺¥Æ® ÁøÇà Ƚ¼ö cSendGameLogDataType_5( NC_LOG_GAME_CHRISTMAS_START_DEFENCE, 0, 0, 0 ) -- °øÁö : Å©¸®½º¸¶½º ±úºùÀÇ ½À°ÝÀÌ ½ÃÀ۵Ǿú½À´Ï´Ù. Æ®¸®¸¦ ÁöÄÑÁÖ¼¼¿ä. cNotice( Var["MapIndex"], SCRIPT_FILE_NAME, E_X_Notice_DefenseStart ) MemBlock["BonusDefenceEvent"]["IsProgress"] = true else -- °øÁö : Àå³­²Ù·¯±â ±úºùµéÀÌ ¸ðµÎ µµ¸ÁÃƽÀ´Ï´Ù. Æ®¸®¸¦ ´Ù½Ã ²Ù¸çÁÖ¼¼¿ä. cNotice( Var["MapIndex"], SCRIPT_FILE_NAME, E_X_Notice_TreeInit ) end -- ±úºù Á×ÀÎ ¼ö ÃʱâÈ­ Var["KebingDeadCount"] = 0 else local CurLevData = TREE_LEVEL_TABLE[ Var["Level"] ] -- ´ÙÀ½ ·¹º§´Ù¿î ½Ã°£ Var["LevDwnKeep"] = Var["CurSec"] + CurLevData["LevDwnKeep"] -- ¾Ö´Ï¸ÞÀÌ¼Ç º¯°æ cAnimate( Var["Handle"], "start", CurLevData["AniIndex"] ) -- ·¹º§´Ù¿î ¾Ö´Ï¸ÞÀÌ¼Ç ¼¼Æà Var["LevelDownEvent"] = true Var["EventKeepTime"] = Var["CurSec"] + TREE_LEVEL_DOWN_EVENT_INFO["KeepTime"] end end end if Var["RegenKebing"] == true then KebingRegenProcess( Var ) end if Var["LevelDownEvent"] == true then TreeLevelDownEventProcess( Var ) end -- µðÆ潺 À̺¥Æ® ¹ßµ¿ if MemBlock["BonusDefenceEvent"]["IsProgress"] == true then if MemBlock["BonusDefenceEvent"]["IsSantaKebingCrush"] == false then -- ´ëÇü±úºù Á×Àº ¸¶¸® ¼ö üũ, ¸ðµÎ Á×¾úÀ¸¸é if IsSantaKebingAllDead( Var ) == true then -- ¡Ø °ÔÀÓ·Î±× -- µðÆ潺 À̺¥Æ® ¼º°ø Ƚ¼ö cSendGameLogDataType_5( NC_LOG_GAME_CHRISTMAS_SUCC_DEFENCE, 0, 0, 0 ) -- °øÁöó¸® ( Æ®¸®¸¦ Àß ÁöÄѳÁ±º¿ä ) cNotice( Var["MapIndex"], SCRIPT_FILE_NAME, E_X_Notice_DefenseSucc ) -- ¹öÇÁ ºÎ¿© cSetAbstate_Range( Var["Handle"], DEFENCE_EVENT_REWARD_ABSTATE_TABLE["Range"], ObjectType["Player"], DEFENCE_EVENT_REWARD_ABSTATE_TABLE["AbstateIndex"], DEFENCE_EVENT_REWARD_ABSTATE_TABLE["Strength"], DEFENCE_EVENT_REWARD_ABSTATE_TABLE["KeepTime"] ) -- ¸ðµç Á¤º¸µé ÃʱâÈ­ ÇØÁÖ±â MemBlock["BonusDefenceEvent"]["IsSantaKebingCrush"] = false MemBlock["BonusDefenceEvent"]["ResetCoolTime"] = nil MemBlock["BonusDefenceEvent"]["IsProgress"] = false -- »êŸ±úºù °´Ã¼ »èÁ¦Çϱâ SantaKebingVanishAll( Var ) MemBlock["SantaKebingList"] = nil MemBlock["SantaKebingListHandle"] = nil end end -- Æ®¸®¿Í ±úºùÀÌ Ãæµ¹ÇÑ »óŸé, if MemBlock["BonusDefenceEvent"]["IsSantaKebingCrush"] == true then if MemBlock["BonusDefenceEvent"]["ResetCoolTime"] == nil then -- °øÁö ó¸®( Å©¸®½º¸¶½º ±úºù¿¡ ÀÇÇØ Æ®¸®°¡ Æı«µÇ¾ú½À´Ï´Ù. ) cNotice( Var["MapIndex"], SCRIPT_FILE_NAME, E_X_Notice_DefenseFail ) -- »êŸ±úºù °´Ã¼ »èÁ¦Çϱâ SantaKebingVanishAll( Var ) MemBlock["BonusDefenceEvent"]["ResetCoolTime"] = Var["CurSec"] + DEFENCE_EVENT_FAIL_TREE_REGEN_TIME -- ¾Ö´Ï¸ÞÀÌ¼Ç º¯°æ( ºÎ¼­Áö´Â ¾Ö´Ï ) cAnimate( Var["Handle"], "start", TREE_DEFENCE_TABLE["TREE_DIE"]["AniIndex"] ) end end -- Æ®¸® Àç°ÇÇÒ ½Ã°£ÀÌ µÇ¸é, if MemBlock["BonusDefenceEvent"]["ResetCoolTime"] ~= nil then if MemBlock["BonusDefenceEvent"]["ResetCoolTime"] <= Var["CurSec"] then -- °øÁö ó¸®( »õ·Î¿î Æ®¸®°¡ ¼¼¿öÁ³½À´Ï´Ù. Æ®¸®¸¦ ²Ù¸ç ÁÖ¼¼¿ä. ) cNotice( Var["MapIndex"], SCRIPT_FILE_NAME, E_X_Notice_TreeRegen ) -- ¾Ö´Ï¸ÞÀÌ¼Ç º¯°æ( ±âº»»óÅ·Π) cAnimate( Var["Handle"], "start", TREE_DEFENCE_TABLE["TREE_REGEN"]["AniIndex"] ) MemBlock["BonusDefenceEvent"]["IsProgress"] = false MemBlock["BonusDefenceEvent"]["IsSantaKebingCrush"] = false MemBlock["BonusDefenceEvent"]["ResetCoolTime"] = nil MemBlock["SantaKebingList"] = nil MemBlock["SantaKebingListHandle"] = nil end end end end -- ±úºù ¸®Á¨ function KebingRegenProcess( Var ) cExecCheck( "KebingRegenProcess" ) if Var == nil then return end if Var["CurSec"] == nil then return end if Var["KebingList"] == nil then return end if Var["KebingRegenList"] == nil then return end for i = 1, #REWARD_MOB_REGEN_TABLE do if Var["KebingList"][i] == nil or cIsObjectDead( Var["KebingList"][i] ) == 1 then -- ±úºù Á×¾ú´ÂÁö üũÇÏ°í, µ¥µåÄ«¿îÆ® Áõ°¡ if cIsObjectDead( Var["KebingList"][i] ) == 1 then Var["KebingDeadCount"] = Var["KebingDeadCount"] + 1 end Var["KebingList"][i] = nil if Var["KebingRegenList"][i] == nil then Var["KebingRegenList"][i] = Var["CurSec"] + REWARD_MOB_REGEN_TABLE[i]["RegenInterval"] end end if Var["KebingRegenList"][i] ~= nil and Var["KebingRegenList"][i] <= Var["CurSec"] then Var["KebingList"][i] = cMobRegen_Circle( Var["MapIndex"], REWARD_MOB_REGEN_TABLE[i]["MobIndex"], REWARD_MOB_REGEN_TABLE[i]["CenterX"], REWARD_MOB_REGEN_TABLE[i]["CenterY"], REWARD_MOB_REGEN_TABLE[i]["Range"] ) Var["KebingRegenList"][i] = nil end end end -- ±úºù Á¦°Å function KebingVanishAll( Var ) cExecCheck( "KebingVanishAll" ) if Var == nil then return end if Var["KebingList"] == nil then return end if Var["KebingRegenList"] == nil then return end for i = 1, #REWARD_MOB_REGEN_TABLE do if Var["KebingList"][i] ~= nil then cNPCVanish( Var["KebingList"][i] ) Var["KebingList"][i] = nil end Var["KebingRegenList"][i] = nil end end -- ³ª¹« ·¹º§´Ù¿î ¿¬Ãâ ó¸® function TreeLevelDownEventProcess( Var ) cExecCheck( "TreeLevelDownEventProcess" ) if Var == nil then return end if Var["Handle"] == nil then return end if Var["CurSec"] == nil then return end if Var["LevelDownEvent"] == nil then return end if Var["EventKeepTime"] == nil then return end if Var["TickCount"] == nil then return end if Var["LevelDownEvent"] == false then return end if Var["EventKeepTime"] <= Var["CurSec"] then Var["LevelDownEvent"] = false Var["TickCount"] = TREE_LEVEL_DOWN_EVENT_INFO["RegenTick"] return end if Var["TickCount"] < TREE_LEVEL_DOWN_EVENT_INFO["RegenTick"] then Var["TickCount"] = Var["TickCount"] + 1 return end Var["TickCount"] = 0 local Dir = cRandomInt( 1, 90 ) * 4 local RegenX, RegenY = cGetAroundCoord( Var["Handle"], Dir, TREE_LEVEL_DOWN_EVENT_INFO["RegenDist"] ) local MobHandle = cMobRegen_XY( Var["MapIndex"], TREE_LEVEL_DOWN_EVENT_INFO["MobIndex"], RegenX, RegenY, Dir ) if MobHandle ~= nil then if cAIScriptSet( MobHandle, Var["Handle"] ) ~= nil then cAIScriptFunc( MobHandle, "Entrance", "EventMobRoutine" ) MemBlock[MobHandle] = {} MemBlock[MobHandle]["Handle"] = MobHandle MemBlock[MobHandle]["MapIndex"] = Var["MapIndex"] MemBlock[MobHandle]["CurSec"] = Var["CurSec"] MemBlock[MobHandle]["NextTick"] = Var["CurSec"] MemBlock[MobHandle]["LifeTime"] = Var["CurSec"] + TREE_LEVEL_DOWN_EVENT_INFO["MobLifeTime"] MemBlock[MobHandle]["MasterHandle"] = Var["Handle"] MemBlock[MobHandle]["GoalX"], MemBlock[MobHandle]["GoalY"] = cGetAroundCoord( Var["Handle"], Dir, TREE_LEVEL_DOWN_EVENT_INFO["RunMaxDist"] ) end end end -- À̺¥Æ®¸÷ ·çƾ function EventMobRoutine( Handle, MapIndex ) cExecCheck( "EventMobRoutine" ) local Var = MemBlock[Handle] local CurSec = cCurrentSecond() if Var == nil then cAIScriptSet( Handle ) return ReturnAI["END"] end if cIsObjectDead( Handle ) == 1 then cAIScriptSet( Handle ) MemBlock[Handle] = nil return ReturnAI["END"] end if cIsObjectDead( Var["MasterHandle"] ) == 1 then cAIScriptSet( Handle ) cNPCVanish( Handle ) MemBlock[Handle] = nil return ReturnAI["END"] end -- À̵¿ if Var["Step"] == nil then cFollow( Handle, Var["MasterHandle"], TREE_LEVEL_DOWN_EVENT_INFO["FollowGap"], 9999 ) Var["Step"] = 1 end -- 0.1Ãʸ¶´Ù ó¸® if Var["NextTick"] <= CurSec then Var["CurSec"] = CurSec Var["NextTick"] = Var["NextTick"] + 0.1 else return ReturnAI["END"] end -- 1½ºÅǺÎÅÏ 0.1Ãʸ¶´Ù ÇϱâÀ§ÇØ if¹® ºÐ¸® if Var["Step"] == 1 then local MoveState, KeepTime = cGetMoveState( Handle ) if MoveState ~= nil and MoveState == 0 then cAnimate( Handle, "start", TREE_LEVEL_DOWN_EVENT_INFO["AniIndex"] ) Var["Step"] = Var["Step"] + 1 end elseif Var["Step"] == 2 then local MoveState, KeepTime = cGetMoveState( Handle ) if MoveState ~= nil and MoveState == 0 and KeepTime >= TREE_LEVEL_DOWN_EVENT_INFO["AniTime"] then cAnimate( Handle, "stop" ) Var["Step"] = Var["Step"] + 1 end elseif Var["Step"] == 3 then if Var["GoalX"] ~= nil and Var["GoalY"] ~= nil then cRunTo( Handle, Var["GoalX"], Var["GoalY"], TREE_LEVEL_DOWN_EVENT_INFO["RunSpeed"] ) end Var["Step"] = Var["Step"] + 1 end -- ¶óÀÌÇÁ ½Ã°£ÀÌ Áö³µÀ¸¸é ¸÷ Á¦°Å if Var["LifeTime"] <= Var["CurSec"] then cAIScriptSet( Handle ) cNPCVanish( Handle ) MemBlock[Handle] = nil return ReturnAI["END"] end return ReturnAI["END"] end -- ³ª¹« Ŭ¸¯Ã³¸® function TreeClick( NPCHandle, PlyHandle, RegistNumber ) cExecCheck( "TreeClick" ) local Var = MemBlock[NPCHandle] if Var == nil then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_DecoFail ) return end if Var["Level"] == nil then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_DecoFail ) return end if Var["Count"] == nil then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_DecoFail ) return end if #TREE_LEVEL_TABLE == 0 then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_DecoFail ) return end if Var["Count"] >= TREE_LEVEL_TABLE[ #TREE_LEVEL_TABLE ]["NeedCount"] then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_DecoFail ) return end -- µðÆ潺 À̺¥Æ® ÁßÀÌ¶ó¼­ Ã³¸®ÇÏÁö¾ÊÀ½ if MemBlock["BonusDefenceEvent"]["IsProgress"] == true then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_DecoFail ) return end if cIsNoAttacOrNoMove( PlyHandle ) == 1 then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_DecoFail_2 ) return end cCastingBar( PlyHandle, NPCHandle, TREE_CAST_TIME, TREE_CAST_ANI ) end -- ³ª¹« ij½ºÆà ¿Ï·á ó¸® function TreeCastingComplete( NPCHandle, PlyHandle, RegistNumber, Menu ) cExecCheck( "TreeCastingComplete" ) local Var = MemBlock[NPCHandle] if Var == nil then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_DecoFail ) return end if Var["Level"] == nil then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_DecoFail ) return end if Var["Count"] == nil then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_DecoFail ) return end if Var["MapIndex"] == nil then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_DecoFail ) return end if #TREE_LEVEL_TABLE == 0 then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_DecoFail ) return end if Var["Level"] >= #TREE_LEVEL_TABLE then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_DecoFail ) return end if Var["Count"] >= TREE_LEVEL_TABLE[ #TREE_LEVEL_TABLE ]["NeedCount"] then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_DecoFail ) return end -- µðÆ潺 À̺¥Æ® ÁßÀÌ¶ó¼­ Ã³¸®ÇÏÁö¾ÊÀ½ if MemBlock["BonusDefenceEvent"]["IsProgress"] == true then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_DecoFail ) return end if cInvenItemDestroy( PlyHandle, TREE_CAST_ITEM, 1 ) == nil then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_ErrMsg_DecoFail ) return end cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_Deco05 ) Var["Count"] = Var["Count"] + 1 -- ¡Ø °ÔÀÓ·Î±× -- À¯Àú°¡ ´ëÇü³ª¹«¿¡ Æ®¸®Àå½Ä 1°³ »ç¿ëÇÔ cSendGameLogDataType_5( NC_LOG_GAME_CHRISTMAS_DECO_TRY_BIG_TREE, 0, 0, 0 ) local NextLevData = TREE_LEVEL_TABLE[ Var["Level"]+1 ] if Var["Count"] >= NextLevData["NeedCount"] then cAnimate( NPCHandle, "start", NextLevData["AniIndex"] ) cNotice( Var["MapIndex"], SCRIPT_FILE_NAME, NextLevData["Notice"] ) Var["Level"] = Var["Level"] + 1 end if Var["Level"] >= #TREE_LEVEL_TABLE then if NextLevData["LevDwnKeep"] == nil then Var["LevDwnKeep"] = cCurrentSecond() + 0.5 else Var["LevDwnKeep"] = cCurrentSecond() + NextLevData["LevDwnKeep"] end end -------------------------- --local CurX, CurY = cObjectLocate( Var["Handle"] ) --cEffectRegen_XY( Var["MapIndex"], "LightShield", CurX, CurY, 0, 4, 0, 1000 ) -------------------------- end -------------------------------------------------------------------- --// ¼ÒÇü³ª¹« ó¸® -------------------------------------------------------------------- -- ¼ÒÇü³ª¹« ó¸® ÇÔ¼ö function SmallTreeProcess( Var ) cExecCheck( "SmallTreeProcess" ) if Var == nil then return end if Var["MapIndex"] == nil then return end if Var["Handle"] == nil then return end if Var["SmallTreeList"] == nil then Var["SmallTreeList"] = {} end for i = 1, #SMALL_TREE_INFO do if Var["SmallTreeList"][i] == nil then Var["SmallTreeList"][i] = {} local CurTree = Var["SmallTreeList"][i] -- ¼ÒÇü³ª¹« ¸®Á¨ CurTree["Handle"] = cMobRegen_XY( Var["MapIndex"], SMALL_TREE_INFO[i]["MobIndex"], SMALL_TREE_INFO[i]["RegenX"], SMALL_TREE_INFO[i]["RegenY"], SMALL_TREE_INFO[i]["Dir"] ) if CurTree["Handle"] ~= nil then -- ¹«Àû»óÅÂÀÌ»ó Á¦°Å cResetAbstate( CurTree["Handle"], IMMORTAL_INDEX ) -- ½ºÅ©¸³Æ® ¼¼Æà ¹× ÇÊ¿äÁ¤º¸ ¼¼Æà if cAIScriptSet( CurTree["Handle"], Var["Handle"] ) ~= nil then cAIScriptFunc( CurTree["Handle"], "Entrance", "SmallTreeRoutine" ) cAIScriptFunc( CurTree["Handle"], "NPCClick", "SmallTreeClick" ) cAIScriptFunc( CurTree["Handle"], "NPCMenu", "SmallTreeCastingComplete" ) -- ¼ÒÇü³ª¹«ÂÊ¿¡¼­ ÇÊ¿äÇÑ Á¤º¸ MemBlock[CurTree["Handle"]] = {} MemBlock[CurTree["Handle"]]["MasterHandle"] = Var["Handle"] MemBlock[CurTree["Handle"]]["MasterMobID"] = cGetMobID( Var["Handle"] ) MemBlock[CurTree["Handle"]]["Handle"] = CurTree["Handle"] MemBlock[CurTree["Handle"]]["MapIndex"] = Var["MapIndex"] MemBlock[CurTree["Handle"]]["CurSec"] = Var["CurSec"] MemBlock[CurTree["Handle"]]["NextTick"] = Var["CurSec"] MemBlock[CurTree["Handle"]]["Level"] = 0 MemBlock[CurTree["Handle"]]["Count"] = 0 MemBlock[CurTree["Handle"]]["DataIndex"] = i -- ¸ÞÀο¡¼­ ¼ÒÇü³ª¹« üũÇϱâ À§ÇÑ Á¤º¸ CurTree["MobID"] = cGetMobID( CurTree["Handle"] ) CurTree["RegenX"], CurTree["RegenY"] = cObjectLocate( CurTree["Handle"] ) end end end if Var["SmallTreeList"][i] ~= nil then if SmallTreeValidCheck( Var["SmallTreeList"][i] ) == false then Var["SmallTreeList"][i] = nil end end end end -- ¼ÒÇü³ª¹« À¯È¿¼º üũ(¸ÞÀÎÂÊ¿¡¼­ ¼ÒÇü³ª¹«°¡ Á¸ÀçÇÏ´ÂÁö È®ÀÎ) function SmallTreeValidCheck( Var ) cExecCheck( "SmallTreeValidCheck" ) -- ±âº» Á¤º¸µé È®ÀÎ if Var == nil then return false end if Var["Handle"] == nil then return false end if Var["MobID"] == nil then return false end if Var["RegenX"] == nil or Var["RegenY"] == nil then return false end -- Á×¾ú³ª È®ÀÎ if cIsObjectDead( Var["Handle"] ) == 1 then return false end -- ¸®Á¨½ÃŲ ¸÷¾ÆÀ̵ð¿Í ¸Â´ÂÁö È®ÀÎ local MobID = cGetMobID( Var["Handle"] ) if MobID == nil then return false end if MobID ~= Var["MobID"] then return false end -- ¸®Á¨ÁÂǥȮÀÎ local CurX, CurY = cObjectLocate( Var["Handle"] ) if CurX == nil or CurY == nil then return false end if CurX ~= Var["RegenX"] or CurY ~= Var["RegenY"] then return false end return true end -- ¼ÒÇü³ª¹« ·çƾ function SmallTreeRoutine( Handle, MapIndex ) cExecCheck( "SmallTreeRoutine" ) local Var = MemBlock[Handle] local CurSec = cCurrentSecond() if Var == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) return ReturnAI["END"] end if cIsObjectDead( Handle ) == 1 then cAIScriptSet( Handle ) cNPCVanish( Handle ) MemBlock[Handle] = nil return ReturnAI["END"] end -- 0.1Ãʸ¶´Ù ó¸® if Var["NextTick"] <= CurSec then Var["CurSec"] = CurSec Var["NextTick"] = Var["NextTick"] + 0.1 else return ReturnAI["END"] end -- ¸¶½ºÅÍ Á¸Àç È®ÀÎ if MainTreeValidCheck( Var ) == false then cAIScriptSet( Handle ) cNPCVanish( Handle ) MemBlock[Handle] = nil return ReturnAI["END"] end -- SmallTreeCastingComplete ¿¡¼­ ÃÖ´ë·¹º§ µÉ¶§ ¼¼ÆÃµÊ if Var["MaxLevelKeep"] ~= nil then -- À¯Áö ½Ã°£ Áö³ª¸é if Var["MaxLevelKeep"] <= Var["CurSec"] then -- ¾Ö´Ï¸ÞÀÌ¼Ç ¿ø»óÅ·ΠcAnimate( Handle, "stop" ) -- ·¹º§°ú Ä«¿îÆ® ÃʱâÈ­ Var["Level"] = 0 Var["Count"] = 0 Var["MaxLevelKeep"] = nil end end return ReturnAI["END"] end -- ¸¶½ºÅÍ À¯È¿¼º üũ(¼ÒÇü³ª¹« ·çƾÂÊ¿¡¼­ ¸¶½ºÅÍ°¡ ÀÖ´ÂÁö È®ÀÎ) function MainTreeValidCheck( Var ) cExecCheck( "MainTreeValidCheck" ) -- ±âº» Á¤º¸ È®ÀÎ if Var == nil then return false end if Var["MasterHandle"] == nil then return false end if Var["MasterMobID"] == nil then return false end -- Á×¾ú³ª È®ÀÎ if cIsObjectDead( Var["MasterHandle"] ) == 1 then return false end -- ¸®Á¨½ÃŲ ¸÷¾ÆÀ̵ð¿Í ¸Â´ÂÁö È®ÀÎ local MobID = cGetMobID( Var["MasterHandle"] ) if MobID == nil then return false end if MobID ~= Var["MasterMobID"] then return false end return true end -- ¼ÒÇü³ª¹« Ŭ¸¯ ó¸® function SmallTreeClick( NPCHandle, PlyHandle, RegistNumber ) cExecCheck( "SmallTreeClick" ) local Var = MemBlock[NPCHandle] if Var == nil then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_DecoFail ) return end if Var["Level"] == nil then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_DecoFail ) return end if Var["Count"] == nil then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_DecoFail ) return end if Var["DataIndex"] == nil then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_DecoFail ) return end local LevelData = SMALL_TREE_LEVEL_TABLE if LevelData == nil then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_DecoFail ) return end if #LevelData == 0 then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_DecoFail ) return end if Var["Count"] >= LevelData[ #LevelData ]["NeedCount"] then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_DecoFail ) return end if cIsNoAttacOrNoMove( PlyHandle ) == 1 then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_DecoFail_2 ) return end cCastingBar( PlyHandle, NPCHandle, TREE_CAST_TIME, TREE_CAST_ANI ) end -- ¼ÒÇü³ª¹« ij½ºÆà ¿Ï·á ó¸® function SmallTreeCastingComplete( NPCHandle, PlyHandle, RegistNumber, Menu ) cExecCheck( "SmallTreeCastingComplete" ) local Var = MemBlock[NPCHandle] if Var == nil then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_DecoFail ) return end if Var["Level"] == nil then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_DecoFail ) return end if Var["Count"] == nil then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_DecoFail ) return end if Var["DataIndex"] == nil then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_DecoFail ) return end local LevelData = SMALL_TREE_LEVEL_TABLE if LevelData == nil then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_DecoFail ) return end if #LevelData == 0 then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_DecoFail ) return end if Var["Level"] >= #LevelData then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_DecoFail ) return end if Var["Count"] >= LevelData[ #LevelData ]["NeedCount"] then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_SysMsg_DecoFail ) return end if cInvenItemDestroy( PlyHandle, TREE_CAST_ITEM, 1 ) == nil then cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, E_X_ErrMsg_DecoFail ) return end cSystemMessage_Obj( PlyHandle, SCRIPT_FILE_NAME, SMALL_TREE_INFO[ Var["DataIndex"] ]["CastSuccMsg"] ) Var["Count"] = Var["Count"] + 1 -- ¡Ø °ÔÀÓ·Î±× ³²±æ ºÎºÐ -- À¯Àú°¡ ¼ÒÇü³ª¹«¿¡ Æ®¸®Àå½Ä 1°³ »ç¿ëÇÔ cSendGameLogDataType_5( NC_LOG_GAME_CHRISTMAS_DECO_TRY_SMALL_TREE, 0, cGetMobID(NPCHandle), 0 ) local NextLevData = LevelData[ Var["Level"]+1 ] if Var["Count"] >= NextLevData["NeedCount"] then cAnimate( NPCHandle, "start", NextLevData["AniIndex"] ) Var["Level"] = Var["Level"] + 1 end if Var["Level"] >= #LevelData then -- ¡Ø °ÔÀÓ·Î±× -- ¼ÒÇü Æ®¸® ¿Ï¼º Ƚ¼ö(¼ÒÇüÆ®¸® 4Á¾) cSendGameLogDataType_5( NC_LOG_GAME_CHRISTMAS_DECO_COMPLETE_SMALL_TREE, 0, cGetMobID(NPCHandle), 0 ) local RewardData = REWARD_ABSTATE_TABLE[ SMALL_TREE_INFO[ Var["DataIndex"] ]["RewardAbstate"] ] if RewardData ~= nil then cSetAbstate_Range( NPCHandle, RewardData["Range"], ObjectType["Player"], RewardData["AbstateIndex"], RewardData["Strength"], RewardData["KeepTime"] ) cNotice( Var["MapIndex"], SCRIPT_FILE_NAME, RewardData["Notice"] ) end if LevelData["MaxLevelKeep"] == nil then Var["MaxLevelKeep"] = cCurrentSecond() + 1 else Var["MaxLevelKeep"] = cCurrentSecond() + LevelData["MaxLevelKeep"] end end -------------------------- --local CurX, CurY = cObjectLocate( Var["Handle"] ) --cEffectRegen_XY( Var["MapIndex"], "LightShield", CurX, CurY, 0, 4, 0, 1000 ) -------------------------- end -------------------------------------------------------------------- --// ´«»ç¶÷ ó¸® -------------------------------------------------------------------- -- ´«»ç¶÷ ó¸® ÇÔ¼ö function SnowManProcess( Var ) cExecCheck( "SnowManProcess" ) if Var == nil then return end if Var["SnowManList"] == nil then Var["SnowManList"] = {} end for i = 1, #SNOWMAN_INFO do if Var["SnowManList"][i] == nil then Var["SnowManList"][i] = Var["CurSec"] + cRandomInt( SNOWMAN_INFO[i]["LifeTime_Min"], SNOWMAN_INFO[i]["LifeTime_Max"] ) -- ´«»ç¶÷ ¸®Á¨ local MobHandle = cMobRegen_Circle( Var["MapIndex"], SNOWMAN_INFO[i]["MobIndex"], SNOWMAN_INFO[i]["CenterX"], SNOWMAN_INFO[i]["CenterY"], SNOWMAN_INFO[i]["Range"] ) if MobHandle ~= nil then -- ¹«Àû»óÅÂÀÌ»ó Á¦°Å cResetAbstate( MobHandle, IMMORTAL_INDEX ) -- ½ºÅ©¸³Æ® ¼¼Æà ¹× ÇÊ¿äÁ¤º¸ ¼¼Æà if cAIScriptSet( MobHandle, Var["Handle"] ) ~= nil then cAIScriptFunc( MobHandle, "Entrance", "SnowManRoutine" ) MemBlock[MobHandle] = {} MemBlock[MobHandle]["Handle"] = MobHandle MemBlock[MobHandle]["MapIndex"] = Var["MapIndex"] MemBlock[MobHandle]["CurSec"] = Var["CurSec"] MemBlock[MobHandle]["NextTick"] = Var["CurSec"] MemBlock[MobHandle]["LifeTime"] = Var["SnowManList"][i] MemBlock[MobHandle]["RegenX"], MemBlock[MobHandle]["RegenY"] = cObjectLocate( MobHandle ) MemBlock[MobHandle]["DropTable"]= ITEM_DROP_TABLE[ SNOWMAN_INFO[i]["DropTable"] ] end end end if Var["SnowManList"][i] + 0.5 <= Var["CurSec"] then Var["SnowManList"][i] = nil end end end -- ´«»ç¶÷ ·çƾ function SnowManRoutine( Handle, MapIndex ) cExecCheck( "SnowManRoutine" ) local Var = MemBlock[Handle] local CurSec = cCurrentSecond() if Var == nil then cAIScriptSet( Handle ) return ReturnAI["END"] end if cIsObjectDead( Handle ) == 1 then cAIScriptSet( Handle ) MemBlock[Handle] = nil return ReturnAI["END"] end -- 0.1Ãʸ¶´Ù ó¸® if Var["NextTick"] <= CurSec then Var["CurSec"] = CurSec Var["NextTick"] = Var["NextTick"] + 0.1 else return ReturnAI["END"] end -- Å©·¯½¬º¼ »óÅÂÀÌ»ó ½Ã°£ÀÌ Âª¾Æ üũ°¡ Á¦´ë·Î ¾ÈµÇ¼­ ÁÂÇ¥·Î üũ local CurX, CurY = cObjectLocate( Handle ) if CurX == nil or CurY == nil or Var["RegenX"] == nil or Var["RegenY"] == nil then cAIScriptSet( Handle ) cNPCVanish( Handle ) MemBlock[Handle] = nil return ReturnAI["END"] else if CurX ~= Var["RegenX"] or CurY ~= Var["RegenY"] then -- ¾ÆÀÌÅÛ µå¶ø if Var["DropTable"] ~= nil then for j = 1, #Var["DropTable"] do cDropItem( Var["DropTable"][j]["ItemIndex"], Handle, -1, Var["DropTable"][j]["Rate"] ) end end -- ¸÷ Á×ÀÌ°í ¸Þ¸ð¸® ÇØÁ¦ cAIScriptSet( Handle ) cKillObject( Handle ) MemBlock[Handle] = nil return ReturnAI["END"] end end -- ¶óÀÌÇÁ ½Ã°£ÀÌ Áö³µÀ¸¸é ¸÷ Á¦°Å if Var["LifeTime"] <= Var["CurSec"] then cAIScriptSet( Handle ) cNPCVanish( Handle ) MemBlock[Handle] = nil return ReturnAI["END"] end return ReturnAI["END"] end -------------------------------------------------------------------- --// »êŸ±úºù ó¸® : SantaKebingRegenProcess -------------------------------------------------------------------- function SantaKebingRegenProcess( Var ) cExecCheck ( "SantaKebingRegenProcess" ) if Var == nil then return end -- µðÆ潺À̺¥Æ® ó¸®Áß ¾Æ´Ï¸é return if MemBlock["BonusDefenceEvent"]["IsProgress"] == false then return end if MemBlock["SantaKebingList"] == nil and MemBlock["SantaKebingListHandle"] == nil then MemBlock["SantaKebingList"] = {} MemBlock["SantaKebingListHandle"] = {} for i = 1, #SANTA_KEBING_MOB_REGEN_TABLE do local temphandle = cMobRegen_XY( Var["MapIndex"], SANTA_KEBING_MOB_REGEN_TABLE["MobIndex"], SANTA_KEBING_MOB_REGEN_TABLE[i]["RegenX"], SANTA_KEBING_MOB_REGEN_TABLE[i]["RegenY"], SANTA_KEBING_MOB_REGEN_TABLE[i]["Dir"] ) if temphandle == nil then return end if MemBlock["SantaKebingList"][temphandle] == nil then MemBlock["SantaKebingList"][temphandle] = {} if cAIScriptSet( temphandle, Var["Handle"] ) ~= nil then cAIScriptFunc( temphandle, "Entrance", "SantaKebingRoutine" ) end MemBlock["SantaKebingList"][temphandle]["Handle"] = temphandle MemBlock["SantaKebingList"][temphandle]["RunSpeed"] = SANTA_KEBING_MOB_REGEN_TABLE["RunSpeed"] MemBlock["SantaKebingList"][temphandle]["TargetHandle"] = Var["Handle"] MemBlock["SantaKebingList"][temphandle]["GoalX"], MemBlock["SantaKebingList"][temphandle]["GoalY"] = cObjectLocate( Var["Handle"] ) MemBlock["SantaKebingList"][temphandle]["CrushBallHitCount"] = 0 MemBlock["SantaKebingList"][temphandle]["PathFinding"] = SANTA_KEBING_PATH_TABLE[i] MemBlock["SantaKebingListHandle"][i] = temphandle -- »êŸ±úºù ¸÷ê( Áö³­¹øó·³ ´çÇҰŶó°í »ý°¢ÇÏÁö¸¶¶ó!! ) cMobChat( temphandle, SCRIPT_FILE_NAME, E_XKebingChat01 ) -- ¸÷¸®Á¨½Ã °É·ÁÀÖ´Â ¹«Àû »óÅÂÀÌ»ó Á¦°Å cResetAbstate( temphandle , "StaImmortal" ) end end end end -------------------------------------------------------------------- --// »êŸ±úºù ó¸® : SantaKebingRoutine -------------------------------------------------------------------- function SantaKebingRoutine( Handle, MapIndex ) cExecCheck ( "SantaKebingRoutine" ) if MapIndex ~= VALID_MAP_INDEX then cAIScriptSet( Handle ) return ReturnAI["END"] end if cIsObjectDead( Handle ) == 1 then cAIScriptSet( Handle ) return ReturnAI["END"] end local CurSantaKebing = MemBlock["SantaKebingList"][Handle] -- ·çƾ¿¡¼­ °è¼Ó µ¹¸é¼­, ±æã±â ÇÁ·Î¼¼½º ½ÇÇà PathTypeProcess( Handle ) -- ¸ÞÀÎÆ®¸®¶û °¡±î¿ì¸é ó¸®ÇØÁØ´Ù if cDistanceSquar( Handle, CurSantaKebing["TargetHandle"] ) <= ( SANTAKEBING_RANGE_WITH_TREE * SANTAKEBING_RANGE_WITH_TREE ) then -- ±úºù ¾Ö´Ï¸ÞÀÌ¼Ç Ã³¸®( ½ºÅ³¾Ö´Ï°¡ µÎ°³·Î ³ª´µ¾îÁ® ÀÖ¾î, ½Ã°£Ã¼Å©Çؼ­ ¿¬´Þ¾Æ »ç¿ë ) if MemBlock["SantaKebingList"][Handle]["CrushAniTime"] == nil then MemBlock["SantaKebingList"][Handle]["CrushAniTime"] = cCurrentSecond() + SANTA_KEBING_MOB_ANI_TABLE["CastAniKeepTime"] cAnimate( Handle, "start", SANTA_KEBING_MOB_ANI_TABLE["CastAniIndex"] ) end if MemBlock["SantaKebingList"][Handle]["CrushAniTime"] ~= nil then if MemBlock["SantaKebingList"][Handle]["CrushAniTime"] > cCurrentSecond() then return ReturnAI["CPP"] end cAnimate( Handle, "start", SANTA_KEBING_MOB_ANI_TABLE["SwingAniIndex"] ) end MemBlock["BonusDefenceEvent"]["IsSantaKebingCrush"] = true cAIScriptSet( Handle ) return ReturnAI["END"] end -- Å©·¯½Ãº¼¿¡ ¸î¹ø ¸Â¾Ò´ÂÁö üũÇÑ´Ù if CurSantaKebing["CrushBallHitCount"] >= SANTAKEBING_CRUSHBALL_HIT_COUNT then cMobSuicide( MapIndex, Handle ) cAIScriptSet( Handle ) return ReturnAI["END"] end return ReturnAI["END"] end -------------------------------------------------------------------- --// »êŸ±úºù ó¸® : IsSantaKebingAllDead -------------------------------------------------------------------- -- ´ëÇü±úºù(»êŸ±úºù) ¸ðµÎ Á×¾ú´ÂÁö ÆÇ´Ü function IsSantaKebingAllDead( Var ) cExecCheck( "IsSantaKebingAllDead" ) if MemBlock["SantaKebingList"] == nil then return false end for i = 1, #MemBlock["SantaKebingListHandle"] do if cIsObjectDead( MemBlock["SantaKebingListHandle"][i] ) == nil then return false -- ÇѳðÀÌ¶óµµ »ì¾ÆÀÖÀ¸¸é false¹Ýȯ end if i == #MemBlock["SantaKebingListHandle"] then return true -- ¸ðµÎ ´Ù Á×¾úÀ¸¸é true ¹Ýȯ end end end -------------------------------------------------------------------- --// »êŸ±úºù ó¸® : SantaKebingVanishAll -------------------------------------------------------------------- -- »êŸ ±úºù Á¦°Å function SantaKebingVanishAll( Var ) cExecCheck( "SantaKebingVanishAll" ) if Var == nil then return end if MemBlock["SantaKebingList"] == nil then return end for i = 1, #MemBlock["SantaKebingListHandle"] do local CurHandle = MemBlock["SantaKebingListHandle"][i] if MemBlock["SantaKebingList"][CurHandle] ~= nil then cNPCVanish( MemBlock["SantaKebingList"][CurHandle]["Handle"] ) MemBlock["SantaKebingList"][CurHandle] = nil end end end -------------------------------------------------------------------- --// »êŸ±úºù pathó¸® : PathTypeProcess -------------------------------------------------------------------- function PathTypeProcess( Handle ) local CurSantaKebing = MemBlock["SantaKebingList"][Handle] if cIsObjectDead( Handle ) == 1 then return end if CurSantaKebing == nil then return end if CurSantaKebing["PathFinding"] == nil then return end -- ÀÌ¹Ì Ãæµ¹ ó¸® ÁßÀ̹ǷÎ, return if CurSantaKebing["CrushAniTime"] ~= nil then return end if MemBlock["SantaKebingList"][Handle]["PathProgress"] == nil then MemBlock["SantaKebingList"][Handle]["PathProgress"] = {} MemBlock["SantaKebingList"][Handle]["PathProgress"]["GoalCheckTime"] = cCurrentSecond() MemBlock["SantaKebingList"][Handle]["PathProgress"]["CurPathStep"] = 1 MemBlock["SantaKebingList"][Handle]["PathProgress"]["CurMoveState"] = MOVESTATE["STOP"] end if CurSantaKebing["PathProgress"]["CurPathStep"] > #CurSantaKebing["PathFinding"] then return end if CurSantaKebing["PathProgress"]["CurMoveState"] == MOVESTATE["STOP"] then if cWillMovement( Handle ) == nil then return end cRunTo( Handle, CurSantaKebing["PathFinding"][CurSantaKebing["PathProgress"]["CurPathStep"]]["x"], CurSantaKebing["PathFinding"][CurSantaKebing["PathProgress"]["CurPathStep"]]["y"], SANTA_KEBING_MOB_REGEN_TABLE["RunSpeed"] ) CurSantaKebing["PathProgress"]["CurMoveState"] = MOVESTATE["MOVE"] end if CurSantaKebing["PathProgress"]["CurMoveState"] == MOVESTATE["MOVE"] then -- ¿òÁ÷ÀÏ ¼ö ¾ø´Â »óÅ if cWillMovement( Handle ) == nil then CurSantaKebing["PathProgress"]["CurMoveState"] = MOVESTATE["STOP"] return end end -- ¸ñÇ¥Á¡ üũ Á¦ÇÑ local CurSec = cCurrentSecond() if CurSantaKebing["PathProgress"]["GoalCheckTime"] + PATHTYPE_CHK_DLY > CurSec then return end CurSantaKebing["PathProgress"]["GoalCheckTime"] = CurSec -- ¸ñÇ¥Á¡ üũ local curr = {} local goal = {} curr["x"], curr["y"] = cObjectLocate( Handle ) goal["x"] = CurSantaKebing["PathFinding"][CurSantaKebing["PathProgress"]["CurPathStep"]]["x"] goal["y"] = CurSantaKebing["PathFinding"][CurSantaKebing["PathProgress"]["CurPathStep"]]["y"] local dx = goal["x"] - curr["x"] local dy = goal["y"] - curr["y"] local distsquar = dx * dx + dy * dy if distsquar < PATHTYPE_GAP then CurSantaKebing["PathProgress"]["CurPathStep"] = CurSantaKebing["PathProgress"]["CurPathStep"] + 1 CurSantaKebing["PathProgress"]["CurMoveState"] = MOVESTATE["STOP"] return end -- ¸÷ÀÌ À̵¿ ¸ØÃß´Â Çö»ó ¶§¹®¿¡ ¸ñÀûÁö üũ curr["x"], curr["y"] = cMove2Where( Handle ) if curr["x"] ~= goal["x"] and curr["y"] ~= goal["y"] then cRunTo( Handle, CurSantaKebing["PathFinding"][CurSantaKebing["PathProgress"]["CurPathStep"]]["x"], CurSantaKebing["PathFinding"][CurSantaKebing["PathProgress"]["CurPathStep"]]["y"], SANTA_KEBING_MOB_REGEN_TABLE["RunSpeed"] ) end return end -------------------------------------------------------------------- --// Å©·¯½Ãº¼ ó¸® : ServantSummon -------------------------------------------------------------------- -- Å©·¯½Ãº¼¿¡ ºÙÀ» ÇÔ¼ö function ServantSummon( MapIndex, ServantHandle, ServantIndex, MasterHandle ) cExecCheck "ServantSummon" -- À߸øµÈ ¸Ê Á¤º¸ if MapIndex ~= VALID_MAP_INDEX then cAIScriptSet( Handle ) return ReturnAI["END"] end -- ÇöÀç µðÆ潺À̺¥Æ® ÀÛµ¿ÁßÀÌ ¾Æ´Ñ°æ¿ì ¸®ÅÏÇØ if MemBlock["BonusDefenceEvent"]["IsProgress"] ~= true then return end -- ¼ÒȯÇÑ ¸÷ÀÌ Å©·¯½Ãº¼ ¾Æ´Ñ°æ¿ì, if ServantIndex ~= CRUSHBALL_TABLE["MobIndex"] then return end cAIScriptSet( ServantHandle, MemBlock["TreeHandle"] ) cAIScriptFunc( ServantHandle, "Entrance", "Crushball_Entrance" ) end -------------------------------------------------------------------- --// Å©·¯½Ãº¼ ó¸® : Crushball_Entrance -------------------------------------------------------------------- function Crushball_Entrance( Handle, MapIndex ) cExecCheck "Crushball_Entrance" -- À߸øµÈ ¸Ê Á¤º¸ if MapIndex ~= VALID_MAP_INDEX then cAIScriptSet( Handle ) return ReturnAI["END"] end -- »êŸ±úºù Á¤º¸¾øÀ¸¸é ó¸®ÇÒ ÇÊ¿ä¾øÀ¸¹Ç·Î if MemBlock["SantaKebingList"] == nil then cAIScriptSet( Handle ) return ReturnAI["END"] end -- Á×¾úÀ¸¸é ½ºÅ©¸³Æ® ÇØÁ¦ if cIsObjectDead( Handle ) == 1 then cAIScriptSet( Handle ) return ReturnAI["END"] end -- Á×À½ ´ë±â¸é ½ºÅ©¸³Æ® ÇØÁ¦ if cIsObjectAlreadyDead( Handle ) == true then cAIScriptSet( Handle ) return ReturnAI["END"] end local NearSanta = cObjectFind( Handle, SANTAKEBING_RANGE_WITH_CRUSHBALL, SANTA_KEBING_MOB_REGEN_TABLE["MobIndex"], "so_mobile_GetIdxName" ) -- ¸ñÇ¥·Î »ïÀº »êŸ±úºùÀÌ ÀÌ¹Ì Á×¾ú°Å³ª, Á×À½ ¿¹¾àÀÎ °æ¿ì ½ºÅ©¸³Æ® ÇØÁ¦ -- »êŸ±úºùÀÌ ÀÌ¹Ì Á×¾ú´Ù¸é, ±× ±Ùó¿¡ ÀÖ´Â ´Ù¸¥ ´ë»ó¿¡°Ô ±âº» Å©·¯½Ãº¼ ½ºÅ³ÀÌ Àû¿ëµÇ¾ß ÇϹǷΠif NearSanta ~= nil then if cIsObjectDead( NearSanta ) == 1 or cIsObjectAlreadyDead( NearSanta ) == true then cAIScriptSet( Handle ) return ReturnAI["END"] end -- È®·üÀûÀ¸·Î »êŸ±úºù¿¡ ³Ë¹é »óÅÂÀÌ»óÀ» °É¾îÁØ´Ù. if cPermileRate( CRUSHBALL_ABSTATE_TABLE["AbStateHitRate"] ) == 1 then cSetAbstate( NearSanta, CRUSHBALL_ABSTATE_TABLE["AbstateIndex"], CRUSHBALL_ABSTATE_TABLE["Strength"], CRUSHBALL_ABSTATE_TABLE["KeepTime"], Handle ) end MemBlock["SantaKebingList"][NearSanta]["CrushBallHitCount"] = MemBlock["SantaKebingList"][NearSanta]["CrushBallHitCount"] + 1 --DebugLog("»êŸ±úºùÇڵ鰪 : "..NearSanta..", ¸ÂÀº Å©·¯½Ãº¼ : "..MemBlock["SantaKebingList"][NearSanta]["CrushBallHitCount"]) cSkillBlast ( Handle, Handle, CRUSHBALL_TABLE["SkillIndex"] ) cVanishReserv ( Handle, 3 ) return ReturnAI["END"] end -- ¾ÆÁ÷ ¿òÁ÷ÀÌ°í ÀÖ´Ù¸é óÀ½À¸·Î µ¹¾Æ°£´Ù. if cGetMoveState( Handle ) ~= 0 then return ReturnAI["CPP"] end return ReturnAI["END"] end ---------------------------------------------------------------------- -- Log Functions ---------------------------------------------------------------------- function DebugLog( String ) cExecCheck ( "DebugLog" ) if String == nil then cAssertLog( "DebugLog::String == nil" ) return end cAssertLog( "Debug - "..String ) end function ErrorLog( String ) cExecCheck ( "ErrorLog" ) if String == nil then cAssertLog( "ErrorLog::String == nil" ) return end cAssertLog( "Error - "..String ) end