Guest User

Untitled

a guest
Feb 5th, 2016
418
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 94.05 KB | None | 0 0
  1. # -*- coding: cp949 -*-
  2. import chr
  3. import chrmgr
  4. import skill
  5. import net
  6. import item
  7. import player
  8. import effect
  9. import constInfo
  10. import locale
  11. import emotion
  12.  
  13. import app
  14.  
  15. JOB_WARRIOR     = 0
  16. JOB_ASSASSIN    = 1
  17. JOB_SURA        = 2
  18. JOB_SHAMAN      = 3
  19.  
  20. RACE_WARRIOR_M  = 0
  21. RACE_ASSASSIN_W = 1
  22. RACE_SURA_M     = 2
  23. RACE_SHAMAN_W   = 3
  24. RACE_WARRIOR_W  = 4
  25. RACE_ASSASSIN_M = 5
  26. RACE_SURA_W     = 6
  27. RACE_SHAMAN_M   = 7
  28.  
  29. COMBO_TYPE_1 = 0
  30. COMBO_TYPE_2 = 1
  31. COMBO_TYPE_3 = 2
  32.  
  33. COMBO_INDEX_1 = 0
  34. COMBO_INDEX_2 = 1
  35. COMBO_INDEX_3 = 2
  36. COMBO_INDEX_4 = 3
  37. COMBO_INDEX_5 = 4
  38. COMBO_INDEX_6 = 5
  39.  
  40. HORSE_SKILL_WILDATTACK = chr.MOTION_SKILL+121
  41. HORSE_SKILL_CHARGE = chr.MOTION_SKILL+122
  42. HORSE_SKILL_SPLASH = chr.MOTION_SKILL+123
  43.  
  44. GUILD_SKILL_DRAGONBLOOD = chr.MOTION_SKILL+101
  45. GUILD_SKILL_DRAGONBLESS = chr.MOTION_SKILL+102
  46. GUILD_SKILL_BLESSARMOR = chr.MOTION_SKILL+103
  47. GUILD_SKILL_SPPEDUP = chr.MOTION_SKILL+104
  48. GUILD_SKILL_DRAGONWRATH = chr.MOTION_SKILL+105
  49. GUILD_SKILL_MAGICUP = chr.MOTION_SKILL+106
  50.  
  51. PASSIVE_GUILD_SKILL_INDEX_LIST = ( 151, )
  52. ACTIVE_GUILD_SKILL_INDEX_LIST = ( 152, 153, 154, 155, 156, 157, )
  53.  
  54. NEW_678TH_SKILL_ENABLE = 0
  55. SKILL_INDEX_DICT = []
  56.  
  57. def DefineSkillIndexDict():
  58.     global NEW_678TH_SKILL_ENABLE
  59.     global SKILL_INDEX_DICT
  60.    
  61.     NEW_678TH_SKILL_ENABLE = locale.IsYMIR()
  62.     if NEW_678TH_SKILL_ENABLE:
  63.         SKILL_INDEX_DICT = {
  64.             JOB_WARRIOR : {
  65.                 1 : (1, 2, 3, 4, 5, 6, 0, 0, 137, 0, 138, 0, 139, 0,),
  66.                 2 : (16, 17, 18, 19, 20, 21, 0, 0, 137, 0, 138, 0, 139, 0,),
  67.                 "SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131, 141, 142,),
  68.             },
  69.             JOB_ASSASSIN : {
  70.                 1 : (31, 32, 33, 34, 35, 36, 0, 0, 137, 0, 138, 0, 139, 0, 140,),
  71.                 2 : (46, 47, 48, 49, 50, 51, 0, 0, 137, 0, 138, 0, 139, 0, 140,),
  72.                 "SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131, 141, 142,),
  73.             },
  74.             JOB_SURA : {
  75.                 1 : (61, 62, 63, 64, 65, 66, 0, 0, 137, 0, 138, 0, 139, 0,),
  76.                 2 : (76, 77, 78, 79, 80, 81, 0, 0, 137, 0, 138, 0, 139, 0,),
  77.                 "SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131, 141, 142,),
  78.             },
  79.             JOB_SHAMAN : {
  80.                 1 : (91, 92, 93, 94, 95, 96, 0, 0, 137, 0, 138, 0, 139, 0,),
  81.                 2 : (106, 107, 108, 109, 110, 111, 0, 0, 137, 0, 138, 0, 139, 0,),
  82.                 "SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131, 141, 142,),
  83.             },
  84.         }
  85.     else:
  86.         SKILL_INDEX_DICT = {
  87.             JOB_WARRIOR : {
  88.                 1 : (1, 2, 3, 4, 5, 0, 0, 0, 137, 0, 138, 0, 139, 0,),
  89.                 2 : (16, 17, 18, 19, 20, 0, 0, 0, 137, 0, 138, 0, 139, 0,),
  90.                 "SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131,),
  91.             },
  92.             JOB_ASSASSIN : {
  93.                 1 : (31, 32, 33, 34, 35, 0, 0, 0, 137, 0, 138, 0, 139, 0, 140,),
  94.                 2 : (46, 47, 48, 49, 50, 0, 0, 0, 137, 0, 138, 0, 139, 0, 140,),
  95.                 "SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131,),
  96.             },
  97.             JOB_SURA : {
  98.                 1 : (61, 62, 63, 64, 65, 66, 0, 0, 137, 0, 138, 0, 139, 0,),
  99.                 2 : (76, 77, 78, 79, 80, 81, 0, 0, 137, 0, 138, 0, 139, 0,),
  100.                 "SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131,),
  101.             },
  102.             JOB_SHAMAN : {
  103.                 1 : (91, 92, 93, 94, 95, 96, 0, 0, 137, 0, 138, 0, 139, 0,),
  104.                 2 : (106, 107, 108, 109, 110, 111, 0, 0, 137, 0, 138, 0, 139, 0,),
  105.                 "SUPPORT" : (122, 123, 121, 124, 125, 129, 0, 0, 130, 131,),
  106.             },
  107.         }
  108.  
  109. def RegisterSkill(race, group, empire=0):
  110.  
  111.     DefineSkillIndexDict()
  112.    
  113.     job = chr.RaceToJob(race)
  114.  
  115.     ## Character Skill
  116.     if SKILL_INDEX_DICT.has_key(job):
  117.  
  118.         if SKILL_INDEX_DICT[job].has_key(group):
  119.        
  120.             activeSkillList = SKILL_INDEX_DICT[job][group]
  121.  
  122.             for i in xrange(len(activeSkillList)):
  123.                 skillIndex = activeSkillList[i]
  124.                
  125.                 ## 7번 8번 스킬은 여기서 설정하면 안됨
  126.                 if i != 6 and i != 7:
  127.                     player.SetSkill(i+1, skillIndex)
  128.  
  129.             supportSkillList = SKILL_INDEX_DICT[job]["SUPPORT"]
  130.  
  131.             for i in xrange(len(supportSkillList)):
  132.                 player.SetSkill(i+100+1, supportSkillList[i])
  133.  
  134.     ## Language Skill
  135.     if 0 != empire:
  136.         languageSkillList = []
  137.         for i in xrange(3):
  138.             if (i+1) != empire:
  139.                 languageSkillList.append(player.SKILL_INDEX_LANGUAGE1+i)
  140.         for i in xrange(len(languageSkillList)):
  141.             player.SetSkill(107+i, languageSkillList[i])
  142.  
  143.     ## Guild Skill
  144.     for i in xrange(len(PASSIVE_GUILD_SKILL_INDEX_LIST)):
  145.         player.SetSkill(200+i, PASSIVE_GUILD_SKILL_INDEX_LIST[i])
  146.  
  147.     for i in xrange(len(ACTIVE_GUILD_SKILL_INDEX_LIST)):
  148.         player.SetSkill(210+i, ACTIVE_GUILD_SKILL_INDEX_LIST[i])
  149.  
  150. def RegisterSkillAt(race, group, pos, num):
  151.    
  152.     DefineSkillIndexDict()
  153.    
  154.     job = chr.RaceToJob(race)
  155.     tmp = list(SKILL_INDEX_DICT[job][group])
  156.     tmp[pos] = num
  157.     SKILL_INDEX_DICT[job][group] = tuple(tmp)
  158.     player.SetSkill(pos+1, num)
  159.  
  160. FACE_IMAGE_DICT = {
  161.     RACE_WARRIOR_M  : "d:/ymir work/ui/game/windows/face_warrior.sub",
  162.     RACE_ASSASSIN_W : "d:/ymir work/ui/game/windows/face_assassin.sub",
  163.     RACE_SURA_M : "d:/ymir work/ui/game/windows/face_sura.sub",
  164.     RACE_SHAMAN_W   : "d:/ymir work/ui/game/windows/face_shaman.sub",
  165. }
  166.  
  167. isInitData=0
  168.  
  169. def SetGeneralMotions(mode, folder):
  170.     chrmgr.SetPathName(folder)
  171.     chrmgr.RegisterMotionMode(mode)
  172.     chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_WAIT,                "wait.msa")
  173.     chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_WALK,                "walk.msa")
  174.     chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_RUN,                 "run.msa")
  175.     chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_DAMAGE,              "damage.msa", 50)
  176.     chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_DAMAGE,              "damage_1.msa", 50)
  177.     chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_DAMAGE_BACK,         "damage_2.msa", 50)
  178.     chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_DAMAGE_BACK,         "damage_3.msa", 50)
  179.     chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_DAMAGE_FLYING,       "damage_flying.msa")
  180.     chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_STAND_UP,            "falling_stand.msa")
  181.     chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_DAMAGE_FLYING_BACK,  "back_damage_flying.msa")
  182.     chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_STAND_UP_BACK,       "back_falling_stand.msa")
  183.     chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_DEAD,                "dead.msa")
  184.     chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_DIG,                 "dig.msa")
  185.  
  186. def SetIntroMotions(mode, folder):
  187.     chrmgr.SetPathName(folder)
  188.     chrmgr.RegisterMotionMode(mode)
  189.     chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_INTRO_WAIT,          "wait.msa")
  190.     chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_INTRO_SELECTED,      "selected.msa")
  191.     chrmgr.RegisterCacheMotionData(mode,        chr.MOTION_INTRO_NOT_SELECTED,  "not_selected.msa")
  192.  
  193.  
  194.  
  195. def __InitData():
  196.     global isInitData
  197.  
  198.     if isInitData:
  199.         return         
  200.  
  201.     isInitData = 1
  202.  
  203.     chrmgr.SetDustGap(250)
  204.     chrmgr.SetHorseDustGap(500)
  205.  
  206.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DUST, "", "d:/ymir work/effect/etc/dust/dust.mse")
  207.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_HORSE_DUST, "", "d:/ymir work/effect/etc/dust/running_dust.mse")
  208.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_HIT, "", "d:/ymir work/effect/hit/blow_1/blow_1_low.mse")
  209.  
  210.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_HPUP_RED, "", "d:/ymir work/effect/etc/recuperation/drugup_red.mse")
  211.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_SPUP_BLUE, "", "d:/ymir work/effect/etc/recuperation/drugup_blue.mse")
  212.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_SPEEDUP_GREEN, "", "d:/ymir work/effect/etc/recuperation/drugup_green.mse")
  213.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DXUP_PURPLE, "", "d:/ymir work/effect/etc/recuperation/drugup_purple.mse")
  214.  
  215.     #자동물약 HP, SP
  216.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_AUTO_HPUP, "", "d:/ymir work/effect/etc/recuperation/autodrugup_red.mse")
  217.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_AUTO_SPUP, "", "d:/ymir work/effect/etc/recuperation/autodrugup_blue.mse")
  218.    
  219.     #라마단 초승달의 반지(71135) 착용순간 발동 이펙트
  220.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_RAMADAN_RING_EQUIP, "", "d:/ymir work/effect/etc/buff/buff_item1.mse")
  221.    
  222.     #할로윈 사탕 착용순간 발동 이펙트
  223.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_HALLOWEEN_CANDY_EQUIP, "", "d:/ymir work/effect/etc/buff/buff_item2.mse")
  224.    
  225.     #행복의 반지 착용순간 발동 이펙트
  226.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_HAPPINESS_RING_EQUIP, "", "d:/ymir work/effect/etc/buff/buff_item3.mse")
  227.  
  228.     #사랑의 팬던트 착용순간 발동 이펙트
  229.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_LOVE_PENDANT_EQUIP, "", "d:/ymir work/effect/etc/buff/buff_item4.mse")
  230.  
  231.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_PENETRATE, "Bip01", "d:/ymir work/effect/hit/gwantong.mse")
  232.     #chrmgr.RegisterCacheEffect(chrmgr.EFFECT_BLOCK, "", "d:/ymir work/effect/etc/")
  233.     #chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DODGE, "", "d:/ymir work/effect/etc/")
  234.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_FIRECRACKER, "", "d:/ymir work/effect/etc/firecracker/newyear_firecracker.mse")
  235.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_SPIN_TOP, "", "d:/ymir work/effect/etc/firecracker/paing_i.mse")
  236.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_SELECT, "", "d:/ymir work/effect/etc/click/click_select.mse")
  237.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_TARGET, "", "d:/ymir work/effect/etc/click/click_glow_select.mse")
  238.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_STUN, "Bip01 Head", "d:/ymir work/effect/etc/stun/stun.mse")
  239.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_CRITICAL, "Bip01 R Hand", "d:/ymir work/effect/hit/critical.mse")
  240.     player.RegisterCacheEffect(player.EFFECT_PICK, "d:/ymir work/effect/etc/click/click.mse")
  241.    
  242.    
  243.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_TARGET, "", "d:/ymir work/effect/affect/damagevalue/target.mse")
  244.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_NOT_TARGET, "", "d:/ymir work/effect/affect/damagevalue/nontarget.mse")
  245.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_SELFDAMAGE, "", "d:/ymir work/effect/affect/damagevalue/damage.mse")
  246.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_SELFDAMAGE2, "", "d:/ymir work/effect/affect/damagevalue/damage_1.mse")
  247.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_POISON, "", "d:/ymir work/effect/affect/damagevalue/poison.mse")
  248.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_MISS, "", "d:/ymir work/effect/affect/damagevalue/miss.mse")
  249.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_TARGETMISS, "", "d:/ymir work/effect/affect/damagevalue/target_miss.mse")
  250.     #chrmgr.RegisterCacheEffect(chrmgr.EFFECT_DAMAGE_CRITICAL, "", "d:/ymir work/effect/affect/damagevalue/critical.mse")
  251.  
  252.     #chrmgr.RegisterCacheEffect(chrmgr.EFFECT_SUCCESS, "",          "season1/effect/success.mse")
  253.     #chrmgr.RegisterCacheEffect(chrmgr.EFFECT_FAIL, "", "season1/effect/fail.mse")
  254.    
  255.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_LEVELUP_ON_14_FOR_GERMANY, "","season1/effect/paymessage_warning.mse") #레벨업 14일때 ( 독일전용 )
  256.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_LEVELUP_UNDER_15_FOR_GERMANY, "", "season1/effect/paymessage_decide.mse" )#레벨업 15일때 ( 독일전용 )
  257.  
  258.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_PERCENT_DAMAGE1, "", "d:/ymir work/effect/hit/percent_damage1.mse")
  259.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_PERCENT_DAMAGE2, "", "d:/ymir work/effect/hit/percent_damage2.mse")
  260.     chrmgr.RegisterCacheEffect(chrmgr.EFFECT_PERCENT_DAMAGE3, "", "d:/ymir work/effect/hit/percent_damage3.mse")
  261.  
  262.    
  263.  
  264.     ##############
  265.     # WARRIOR
  266.     ##############
  267.     chrmgr.CreateRace(RACE_WARRIOR_M)
  268.     chrmgr.SelectRace(RACE_WARRIOR_M)  
  269.     chrmgr.LoadLocalRaceData("warrior_m.msm")
  270.     SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc/warrior/intro/")
  271.  
  272.     chrmgr.CreateRace(RACE_WARRIOR_W)
  273.     chrmgr.SelectRace(RACE_WARRIOR_W)  
  274.     chrmgr.LoadLocalRaceData("warrior_w.msm")
  275.     SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc2/warrior/intro/")
  276.  
  277.  
  278.     ##############
  279.     # ASSASSIN
  280.     ##############
  281.     chrmgr.CreateRace(RACE_ASSASSIN_W)
  282.     chrmgr.SelectRace(RACE_ASSASSIN_W)
  283.     chrmgr.LoadLocalRaceData("assassin_w.msm")
  284.     SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc/assassin/intro/")
  285.  
  286.     chrmgr.CreateRace(RACE_ASSASSIN_M)
  287.     chrmgr.SelectRace(RACE_ASSASSIN_M)
  288.     chrmgr.LoadLocalRaceData("assassin_m.msm")
  289.     SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc2/assassin/intro/")
  290.  
  291.  
  292.     ##############
  293.     # SURA
  294.     ##############
  295.     chrmgr.CreateRace(RACE_SURA_M)
  296.     chrmgr.SelectRace(RACE_SURA_M) 
  297.     chrmgr.LoadLocalRaceData("sura_m.msm")
  298.     SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc/sura/intro/")
  299.  
  300.     chrmgr.CreateRace(RACE_SURA_W)
  301.     chrmgr.SelectRace(RACE_SURA_W) 
  302.     chrmgr.LoadLocalRaceData("sura_w.msm")
  303.     SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc2/sura/intro/")
  304.  
  305.  
  306.     ##############
  307.     # SHAMAN
  308.     ##############
  309.     chrmgr.CreateRace(RACE_SHAMAN_W)
  310.     chrmgr.SelectRace(RACE_SHAMAN_W)
  311.     chrmgr.LoadLocalRaceData("shaman_w.msm")
  312.     SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc/shaman/intro/")
  313.  
  314.     chrmgr.CreateRace(RACE_SHAMAN_M)
  315.     chrmgr.SelectRace(RACE_SHAMAN_M)
  316.     chrmgr.LoadLocalRaceData("shaman_m.msm")
  317.     SetIntroMotions(chr.MOTION_MODE_GENERAL, "d:/ymir work/pc2/shaman/intro/")
  318.  
  319.  
  320.  
  321. def __LoadGameSound():
  322.     item.SetUseSoundFileName(item.USESOUND_DEFAULT, "sound/ui/drop.wav")
  323.     item.SetUseSoundFileName(item.USESOUND_ACCESSORY, "sound/ui/equip_ring_amulet.wav")
  324.     item.SetUseSoundFileName(item.USESOUND_ARMOR, "sound/ui/equip_metal_armor.wav")
  325.     item.SetUseSoundFileName(item.USESOUND_BOW, "sound/ui/equip_bow.wav")
  326.     item.SetUseSoundFileName(item.USESOUND_WEAPON, "sound/ui/equip_metal_weapon.wav")
  327.     item.SetUseSoundFileName(item.USESOUND_POTION, "sound/ui/eat_potion.wav")
  328.     item.SetUseSoundFileName(item.USESOUND_PORTAL, "sound/ui/potal_scroll.wav")
  329.  
  330.     item.SetDropSoundFileName(item.DROPSOUND_DEFAULT, "sound/ui/drop.wav")
  331.     item.SetDropSoundFileName(item.DROPSOUND_ACCESSORY, "sound/ui/equip_ring_amulet.wav")
  332.     item.SetDropSoundFileName(item.DROPSOUND_ARMOR, "sound/ui/equip_metal_armor.wav")
  333.     item.SetDropSoundFileName(item.DROPSOUND_BOW, "sound/ui/equip_bow.wav")
  334.     item.SetDropSoundFileName(item.DROPSOUND_WEAPON, "sound/ui/equip_metal_weapon.wav")
  335.  
  336. def __LoadGameEffect():
  337.     chrmgr.RegisterEffect(chrmgr.EFFECT_SPAWN_APPEAR, "Bip01", "d:/ymir work/effect/etc/appear_die/monster_appear.mse")
  338.     chrmgr.RegisterEffect(chrmgr.EFFECT_SPAWN_DISAPPEAR, "Bip01", "d:/ymir work/effect/etc/appear_die/monster_die.mse")    
  339.     chrmgr.RegisterEffect(chrmgr.EFFECT_FLAME_ATTACK, "equip_right_hand", "d:/ymir work/effect/hit/blow_flame/flame_3_weapon.mse")
  340.     chrmgr.RegisterEffect(chrmgr.EFFECT_FLAME_HIT, "", "d:/ymir work/effect/hit/blow_flame/flame_3_blow.mse")
  341.     chrmgr.RegisterEffect(chrmgr.EFFECT_FLAME_ATTACH, "", "d:/ymir work/effect/hit/blow_flame/flame_3_body.mse")
  342.     chrmgr.RegisterEffect(chrmgr.EFFECT_ELECTRIC_ATTACK, "equip_right", "d:/ymir work/effect/hit/blow_electric/light_1_weapon.mse")
  343.     chrmgr.RegisterEffect(chrmgr.EFFECT_ELECTRIC_HIT, "", "d:/ymir work/effect/hit/blow_electric/light_1_blow.mse")
  344.     chrmgr.RegisterEffect(chrmgr.EFFECT_ELECTRIC_ATTACH, "", "d:/ymir work/effect/hit/blow_electric/light_1_body.mse")
  345.    
  346.     chrmgr.RegisterEffect(chrmgr.EFFECT_LEVELUP, "", "d:/ymir work/effect/etc/levelup_1/level_up.mse")
  347.     chrmgr.RegisterEffect(chrmgr.EFFECT_SKILLUP, "", "d:/ymir work/effect/etc/skillup/skillup_1.mse")
  348.  
  349.     chrmgr.RegisterEffect(chrmgr.EFFECT_EMPIRE+1, "Bip01", "d:/ymir work/effect/etc/empire/empire_A.mse")
  350.     chrmgr.RegisterEffect(chrmgr.EFFECT_EMPIRE+2, "Bip01", "d:/ymir work/effect/etc/empire/empire_B.mse")
  351.     chrmgr.RegisterEffect(chrmgr.EFFECT_EMPIRE+3, "Bip01", "d:/ymir work/effect/etc/empire/empire_C.mse")
  352.  
  353.     chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+1, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_sword_loop.mse")
  354.     chrmgr.RegisterEffect(chrmgr.EFFECT_WEAPON+2, "equip_right_hand", "d:/ymir work/pc/warrior/effect/geom_spear_loop.mse")
  355.  
  356.     # LOCALE
  357.     chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+0, "Bip01", locale.FN_GM_MARK)
  358.     #chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+0, "Bip01", "d:/ymir work/effect/background/metinstone_loop_1_yellow.mse")
  359.     # END_OF_LOCALE
  360.    
  361.     chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+3, "Bip01", "d:/ymir work/effect/hit/blow_poison/poison_loop.mse") ## 중독
  362.     chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+4, "", "d:/ymir work/effect/affect/slow.mse")
  363.     chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+5, "Bip01 Head", "d:/ymir work/effect/etc/stun/stun_loop.mse")
  364.     chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+6, "", "d:/ymir work/effect/etc/ready/ready.mse")
  365.     #chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+8, "", "d:/ymir work/guild/effect/10_construction.mse")
  366.     #chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+9, "", "d:/ymir work/guild/effect/20_construction.mse")
  367.     #chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+10, "", "d:/ymir work/guild/effect/20_upgrade.mse")
  368.     chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+16, "", "d:/ymir work/pc/warrior/effect/gyeokgongjang_loop.mse") ## 천근추 (밑에도 있따-_-)
  369.     chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+17, "", "d:/ymir work/pc/assassin/effect/gyeonggong_loop.mse") ## 자객 - 경공
  370.     chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+19, "Bip01 R Finger2", "d:/ymir work/pc/sura/effect/gwigeom_loop.mse")
  371.     chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+20, "", "d:/ymir work/pc/sura/effect/fear_loop.mse") ## 수라 - 공포
  372.     chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+21, "", "d:/ymir work/pc/sura/effect/jumagap_loop.mse") ## 수라 - 주마갑
  373.     chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+22, "", "d:/ymir work/pc/shaman/effect/3hosin_loop.mse") ## 무당 - 호신
  374.     chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+23, "", "d:/ymir work/pc/shaman/effect/boho_loop.mse") ## 무당 - 보호
  375.     chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+24, "", "d:/ymir work/pc/shaman/effect/10kwaesok_loop.mse") ## 무당 - 쾌속
  376.     chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+25, "", "d:/ymir work/pc/sura/effect/heuksin_loop.mse")
  377.     chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+26, "", "d:/ymir work/pc/sura/effect/muyeong_loop.mse")
  378.     chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+28, "Bip01", "d:/ymir work/effect/hit/blow_flame/flame_loop.mse")
  379.     chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+29, "Bip01 R Hand", "d:/ymir work/pc/shaman/effect/6gicheon_hand.mse")
  380.     chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+30, "Bip01 L Hand", "d:/ymir work/pc/shaman/effect/jeungryeok_hand.mse")
  381.     chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+32, "Bip01 Head", "d:/ymir work/pc/sura/effect/pabeop_loop.mse")
  382.     chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+33, "", "d:/ymir work/pc/warrior/effect/gyeokgongjang_loop.mse") ## 천근추 (Fallen)
  383.     ## 34 Polymoph
  384.     chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+35, "", "d:/ymir work/effect/etc/guild_war_flag/flag_red.mse")
  385.     chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+36, "", "d:/ymir work/effect/etc/guild_war_flag/flag_blue.mse")
  386.     chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+37, "", "d:/ymir work/effect/etc/guild_war_flag/flag_yellow.mse")
  387.  
  388.     chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+1, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_7.mse")
  389.     chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+2, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_8.mse")
  390.     chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+3, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_9.mse")
  391.  
  392.     chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+4, "PART_WEAPON_LEFT", "D:/ymir work/pc/common/effect/sword/sword_7_b.mse")
  393.     chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+5, "PART_WEAPON_LEFT", "D:/ymir work/pc/common/effect/sword/sword_8_b.mse")
  394.     chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+6, "PART_WEAPON_LEFT", "D:/ymir work/pc/common/effect/sword/sword_9_b.mse")
  395.  
  396.     chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+7, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_7_f.mse")
  397.     chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+8, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_8_f.mse")
  398.     chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+9, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_9_f.mse")
  399.  
  400.     chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+10, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_7_s.mse")
  401.     chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+11, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_8_s.mse")
  402.     chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+12, "PART_WEAPON", "D:/ymir work/pc/common/effect/sword/sword_9_s.mse")
  403.  
  404.     chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+13, "PART_WEAPON_LEFT", "D:/ymir work/pc/common/effect/sword/sword_7_s.mse")
  405.     chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+14, "PART_WEAPON_LEFT", "D:/ymir work/pc/common/effect/sword/sword_8_s.mse")
  406.     chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+15, "PART_WEAPON_LEFT", "D:/ymir work/pc/common/effect/sword/sword_9_s.mse")
  407.  
  408.     chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+16, "Bip01", "D:/ymir work/pc/common/effect/armor/armor_7.mse")
  409.     chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+17, "Bip01", "D:/ymir work/pc/common/effect/armor/armor_8.mse")
  410.     chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+18, "Bip01", "D:/ymir work/pc/common/effect/armor/armor_9.mse")
  411.    
  412.     chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+19, "Bip01", "D:/ymir work/pc/common/effect/armor/armor_9.mse")
  413.     #chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+19, "Bip01", "D:/ymir work/pc/common/effect/armor/200_aura.mse")
  414.     chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+20, "Bip01", "D:/ymir work/pc/common/effect/armor/pustelnikblue.mse")
  415.     #chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+20, "Bip01", "D:/ymir work/pc/common/effect/armor/green_aura.mse")
  416.     chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+21, "Bip01", "D:/ymir work/pc/common/effect/armor/grey_aura.mse")
  417.     chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+22, "Bip01", "D:/ymir work/pc/common/effect/armor/red_aura.mse")
  418.     chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+23, "Bip01", "D:/ymir work/pc/common/effect/armor/red2_aura.mse")
  419.     chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED+24, "Bip01", "D:/ymir work/pc/common/effect/armor/yellow_aura.mse")
  420.    
  421.    
  422.  
  423.     ## FlyData
  424.     effect.RegisterIndexedFlyData(effect.FLY_EXP, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/effect/etc/gathering/ga_piece_yellow_small2.msf")             ## 노란색 (EXP)
  425.     effect.RegisterIndexedFlyData(effect.FLY_HP_MEDIUM, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/effect/etc/gathering/ga_piece_red_small.msf")           ## 빨간색 (HP) 작은거
  426.     effect.RegisterIndexedFlyData(effect.FLY_HP_BIG, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/effect/etc/gathering/ga_piece_red_big.msf")                ## 빨간색 (HP) 큰거
  427.     effect.RegisterIndexedFlyData(effect.FLY_SP_SMALL, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/effect/etc/gathering/ga_piece_blue_warrior_small.msf")   ## 파란색 꼬리만 있는거
  428.     effect.RegisterIndexedFlyData(effect.FLY_SP_MEDIUM, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/effect/etc/gathering/ga_piece_blue_small.msf")          ## 파란색 작은거
  429.     effect.RegisterIndexedFlyData(effect.FLY_SP_BIG, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/effect/etc/gathering/ga_piece_blue_big.msf")               ## 파란색 큰거
  430.     effect.RegisterIndexedFlyData(effect.FLY_FIREWORK1, effect.INDEX_FLY_TYPE_FIRE_CRACKER, "d:/ymir work/effect/etc/firecracker/firecracker_1.msf")        ## 폭죽 1
  431.     effect.RegisterIndexedFlyData(effect.FLY_FIREWORK2, effect.INDEX_FLY_TYPE_FIRE_CRACKER, "d:/ymir work/effect/etc/firecracker/firecracker_2.msf")        ## 폭죽 2
  432.     effect.RegisterIndexedFlyData(effect.FLY_FIREWORK3, effect.INDEX_FLY_TYPE_FIRE_CRACKER, "d:/ymir work/effect/etc/firecracker/firecracker_3.msf")        ## 폭죽 3
  433.     effect.RegisterIndexedFlyData(effect.FLY_FIREWORK4, effect.INDEX_FLY_TYPE_FIRE_CRACKER, "d:/ymir work/effect/etc/firecracker/firecracker_4.msf")        ## 폭죽 4
  434.     effect.RegisterIndexedFlyData(effect.FLY_FIREWORK5, effect.INDEX_FLY_TYPE_FIRE_CRACKER, "d:/ymir work/effect/etc/firecracker/firecracker_5.msf")        ## 폭죽 5
  435.     effect.RegisterIndexedFlyData(effect.FLY_FIREWORK6, effect.INDEX_FLY_TYPE_FIRE_CRACKER, "d:/ymir work/effect/etc/firecracker/firecracker_6.msf")        ## 폭죽 6
  436.     effect.RegisterIndexedFlyData(effect.FLY_FIREWORK_XMAS, effect.INDEX_FLY_TYPE_FIRE_CRACKER, "d:/ymir work/effect/etc/firecracker/firecracker_xmas.msf") ## 폭죽 X-Mas
  437.     effect.RegisterIndexedFlyData(effect.FLY_CHAIN_LIGHTNING, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/pc/shaman/effect/pokroe.msf")                     ## 폭뢰격
  438.     effect.RegisterIndexedFlyData(effect.FLY_HP_SMALL, effect.INDEX_FLY_TYPE_NORMAL, "d:/ymir work/effect/etc/gathering/ga_piece_red_smallest.msf")         ## 빨간색 매우 작은거
  439.     effect.RegisterIndexedFlyData(effect.FLY_SKILL_MUYEONG, effect.INDEX_FLY_TYPE_AUTO_FIRE, "d:/ymir work/pc/sura/effect/muyeong_fly.msf")                 ## 무영진
  440.  
  441.     #########################################################################################
  442.     ## Emoticon
  443.     EmoticonStr = "d:/ymir work/effect/etc/emoticon/"
  444.  
  445.     chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+0, "", EmoticonStr+"sweat.mse")
  446.     net.RegisterEmoticonString("(황당)")
  447.  
  448.     chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+1, "", EmoticonStr+"money.mse")
  449.     net.RegisterEmoticonString("(돈)")
  450.  
  451.     chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+2, "", EmoticonStr+"happy.mse")
  452.     net.RegisterEmoticonString("(기쁨)")
  453.  
  454.     chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+3, "", EmoticonStr+"love_s.mse")
  455.     net.RegisterEmoticonString("(좋아)")
  456.  
  457.     chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+4, "", EmoticonStr+"love_l.mse")
  458.     net.RegisterEmoticonString("(사랑)")
  459.  
  460.     chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+5, "", EmoticonStr+"angry.mse")
  461.     net.RegisterEmoticonString("(분노)")
  462.  
  463.     chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+6, "", EmoticonStr+"aha.mse")
  464.     net.RegisterEmoticonString("(아하)")
  465.  
  466.     chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+7, "", EmoticonStr+"gloom.mse")
  467.     net.RegisterEmoticonString("(우울)")
  468.  
  469.     chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+8, "", EmoticonStr+"sorry.mse")
  470.     net.RegisterEmoticonString("(죄송)")
  471.  
  472.     chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+9, "", EmoticonStr+"!_mix_back.mse")
  473.     net.RegisterEmoticonString("(!)")
  474.  
  475.     chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+10, "", EmoticonStr+"question.mse")
  476.     net.RegisterEmoticonString("(?)")
  477.  
  478.     chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+11, "", EmoticonStr+"fish.mse")
  479.     net.RegisterEmoticonString("(fish)")
  480.  
  481.  
  482.     ## Emoticon
  483.     #########################################################################################
  484.  
  485.  
  486. def __LoadGameWarrior():
  487.     __LoadGameWarriorEx(RACE_WARRIOR_M, "d:/ymir work/pc/warrior/")
  488.     __LoadGameWarriorEx(RACE_WARRIOR_W, "d:/ymir work/pc2/warrior/")
  489.  
  490. def __LoadGameAssassin():
  491.     __LoadGameAssassinEx(RACE_ASSASSIN_W, "d:/ymir work/pc/assassin/")
  492.     __LoadGameAssassinEx(RACE_ASSASSIN_M, "d:/ymir work/pc2/assassin/")
  493.  
  494. def __LoadGameSura():
  495.     __LoadGameSuraEx(RACE_SURA_M, "d:/ymir work/pc/sura/")
  496.     __LoadGameSuraEx(RACE_SURA_W, "d:/ymir work/pc2/sura/")
  497.  
  498. def __LoadGameShaman():
  499.     __LoadGameShamanEx(RACE_SHAMAN_W, "d:/ymir work/pc/shaman/")
  500.     __LoadGameShamanEx(RACE_SHAMAN_M, "d:/ymir work/pc2/shaman/")
  501.  
  502. def __LoadGameWarriorEx(race, path):
  503.  
  504.     ## Warrior
  505.     #########################################################################################
  506.     chrmgr.SelectRace(race)
  507.  
  508.     ## GENERAL MODE
  509.     SetGeneralMotions(chr.MOTION_MODE_GENERAL, path + "general/")
  510.     chrmgr.SetMotionRandomWeight(chr.MOTION_MODE_GENERAL, chr.MOTION_WAIT, 0, 70)
  511.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_WAIT, "wait_1.msa", 30)
  512.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_COMBO_ATTACK_1, "attack.msa", 50)
  513.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_COMBO_ATTACK_1, "attack_1.msa", 50)
  514.  
  515.     ## SKILL
  516.     chrmgr.SetPathName(path + "skill/")
  517.     for i in xrange(skill.SKILL_EFFECT_COUNT):
  518.         END_STRING = ""
  519.         if i != 0: END_STRING = "_%d" % (i+1)
  520.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+1, "samyeon" + END_STRING + ".msa")
  521.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+2, "palbang" + END_STRING + ".msa")
  522.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+3, "jeongwi" + END_STRING + ".msa")
  523.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+4, "geomgyeong" + END_STRING + ".msa")
  524.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+5, "tanhwan" + END_STRING + ".msa")
  525.         if NEW_678TH_SKILL_ENABLE:
  526.             chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+6, "gihyeol" + END_STRING + ".msa")
  527.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+16, "gigongcham" + END_STRING + ".msa")
  528.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+17, "gyeoksan" + END_STRING + ".msa")
  529.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+18, "daejin" + END_STRING + ".msa")
  530.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+19, "cheongeun" + END_STRING + ".msa")
  531.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+20, "geompung" + END_STRING + ".msa")
  532.         if NEW_678TH_SKILL_ENABLE:
  533.             chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+21, "noegeom" + END_STRING + ".msa")
  534.  
  535.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_DRAGONBLOOD, "guild_yongsinuipi.msa")
  536.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_DRAGONBLESS, "guild_yongsinuichukbok.msa")
  537.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_BLESSARMOR, "guild_seonghwigap.msa")
  538.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_SPPEDUP, "guild_gasokhwa.msa")
  539.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_DRAGONWRATH, "guild_yongsinuibunno.msa")
  540.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_MAGICUP, "guild_jumunsul.msa")
  541.  
  542.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_GENERAL, COMBO_TYPE_1, 1)
  543.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_GENERAL, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  544.  
  545.     ## EMOTION
  546.     emotion.RegisterEmotionAnis(path)
  547.  
  548.     ## ONEHAND_SWORD BATTLE
  549.     chrmgr.SetPathName(path + "onehand_sword/")
  550.     chrmgr.RegisterMotionMode(chr.MOTION_MODE_ONEHAND_SWORD)
  551.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_WAIT,              "wait.msa", 50)
  552.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_WAIT,              "wait_1.msa", 50)
  553.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_WALK,              "walk.msa")
  554.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_RUN,               "run.msa")
  555.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE,            "damage.msa", 50)
  556.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE,            "damage_1.msa", 50)
  557.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE_BACK,       "damage_2.msa", 50)
  558.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE_BACK,       "damage_3.msa", 50)
  559.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_1,    "combo_01.msa")
  560.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_2,    "combo_02.msa")
  561.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_3,    "combo_03.msa")
  562.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_4,    "combo_04.msa")
  563.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_5,    "combo_05.msa")
  564.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_6,    "combo_06.msa")
  565.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_7,    "combo_07.msa")
  566.  
  567.     ## Combo Type 1
  568.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, 4)
  569.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  570.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
  571.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
  572.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_4)
  573.     ## Combo Type 2
  574.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, 5)
  575.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  576.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
  577.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
  578.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)
  579.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_7)
  580.     ## Combo Type 3
  581.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, 6)
  582.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  583.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
  584.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
  585.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)
  586.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_6)
  587.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_6, chr.MOTION_COMBO_ATTACK_4)
  588.  
  589.     ## TWOHAND_SWORD BATTLE
  590.     chrmgr.SetPathName(path + "twohand_sword/")
  591.     chrmgr.RegisterMotionMode(chr.MOTION_MODE_TWOHAND_SWORD)
  592.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_WAIT,              "wait.msa", 70)
  593.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_WAIT,              "wait_1.msa", 30)
  594.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_WALK,              "walk.msa")
  595.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_RUN,               "run.msa")
  596.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_DAMAGE,            "damage.msa", 50)
  597.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_DAMAGE,            "damage_1.msa", 50)
  598.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_DAMAGE_BACK,       "damage_2.msa", 50)
  599.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_DAMAGE_BACK,       "damage_3.msa", 50)
  600.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_1,    "combo_01.msa")
  601.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_2,    "combo_02.msa")
  602.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_3,    "combo_03.msa")
  603.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_4,    "combo_04.msa")
  604.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_5,    "combo_05.msa")
  605.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_6,    "combo_06.msa")
  606.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_7,    "combo_07.msa")
  607.  
  608.     ## Combo Type 1
  609.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_1, 4)
  610.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  611.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
  612.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
  613.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_4)
  614.     ## Combo Type 2
  615.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_2, 5)
  616.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  617.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
  618.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
  619.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)
  620.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_7)
  621.     ## Combo Type 3
  622.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_3, 6)
  623.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  624.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
  625.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
  626.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)
  627.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_6)
  628.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_TWOHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_6, chr.MOTION_COMBO_ATTACK_4)
  629.  
  630.     ## FISHING
  631.     chrmgr.SetPathName(path + "fishing/")
  632.     chrmgr.RegisterMotionMode(chr.MOTION_MODE_FISHING)
  633.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_WAIT,            "wait.msa")
  634.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_WALK,            "walk.msa")
  635.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_RUN,             "run.msa")
  636.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_THROW,   "throw.msa")
  637.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_WAIT,    "fishing_wait.msa")
  638.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_STOP,    "fishing_cancel.msa")
  639.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_REACT,   "fishing_react.msa")
  640.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_CATCH,   "fishing_catch.msa")
  641.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_FAIL,    "fishing_fail.msa")
  642.  
  643.     ## HORSE
  644.     chrmgr.SetPathName(path + "horse/")
  645.     chrmgr.RegisterMotionMode(chr.MOTION_MODE_HORSE)
  646.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WAIT,              "wait.msa", 90)
  647.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WAIT,              "wait_1.msa", 9)
  648.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WAIT,              "wait_2.msa", 1)
  649.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WALK,              "walk.msa")
  650.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_RUN,               "run.msa")
  651.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_DAMAGE,            "damage.msa")
  652.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_DAMAGE_BACK,       "damage.msa")
  653.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_DEAD,              "dead.msa")
  654.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, HORSE_SKILL_CHARGE,           "skill_charge.msa")
  655.  
  656.     ## HORSE_ONEHAND_SWORD
  657.     chrmgr.SetPathName(path + "horse_onehand_sword/")
  658.     chrmgr.RegisterMotionMode(chr.MOTION_MODE_HORSE_ONEHAND_SWORD)
  659.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_1, "combo_01.msa")
  660.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_2, "combo_02.msa")
  661.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_3, "combo_03.msa")
  662.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, COMBO_TYPE_1, 3)
  663.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  664.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
  665.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
  666.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, HORSE_SKILL_WILDATTACK, "skill_wildattack.msa")
  667.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, HORSE_SKILL_SPLASH, "skill_splash.msa")
  668.  
  669.     ## HORSE_TWOHAND_SWORD
  670.     chrmgr.SetPathName(path + "horse_twohand_sword/")
  671.     chrmgr.RegisterMotionMode(chr.MOTION_MODE_HORSE_TWOHAND_SWORD)
  672.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_1, "combo_01.msa")
  673.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_2, "combo_02.msa")
  674.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_TWOHAND_SWORD, chr.MOTION_COMBO_ATTACK_3, "combo_03.msa")
  675.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_HORSE_TWOHAND_SWORD, COMBO_TYPE_1, 3)
  676.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_TWOHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  677.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_TWOHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
  678.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_TWOHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
  679.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_TWOHAND_SWORD, HORSE_SKILL_WILDATTACK, "skill_wildattack.msa")
  680.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_TWOHAND_SWORD, HORSE_SKILL_SPLASH, "skill_splash.msa")
  681.  
  682.     ## Bone
  683.     chrmgr.RegisterAttachingBoneName(chr.PART_WEAPON, "equip_right_hand")
  684.  
  685. def __LoadGameAssassinEx(race, path):
  686.     ## Assassin
  687.     #########################################################################################
  688.     chrmgr.SelectRace(race)
  689.  
  690.     ## GENERAL MOTION MODE
  691.     SetGeneralMotions(chr.MOTION_MODE_GENERAL, path + "general/")
  692.     chrmgr.SetMotionRandomWeight(chr.MOTION_MODE_GENERAL, chr.MOTION_WAIT, 0, 70)
  693.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_WAIT, "wait_1.msa", 30)
  694.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_COMBO_ATTACK_1, "attack.msa", 50)
  695.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_COMBO_ATTACK_1, "attack_1.msa", 50)
  696.  
  697.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_GENERAL, COMBO_TYPE_1, 1)
  698.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_GENERAL, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  699.  
  700.     ## SKILL
  701.     chrmgr.SetPathName(path + "skill/")
  702.     for i in xrange(skill.SKILL_EFFECT_COUNT):
  703.         END_STRING = ""
  704.         if i != 0: END_STRING = "_%d" % (i+1)
  705.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+1, "amseup" + END_STRING + ".msa")
  706.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+2, "gungsin" + END_STRING + ".msa")
  707.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+3, "charyun" + END_STRING + ".msa")
  708.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+4, "eunhyeong" + END_STRING + ".msa")
  709.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+5, "sangong" + END_STRING + ".msa")
  710.         if NEW_678TH_SKILL_ENABLE:
  711.             chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+6, "seomjeon" + END_STRING + ".msa")
  712.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+16, "yeonsa" + END_STRING + ".msa")
  713.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+17, "gwangyeok" + END_STRING + ".msa")
  714.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+18, "hwajo" + END_STRING + ".msa")
  715.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+19, "gyeonggong" + END_STRING + ".msa")
  716.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+20, "dokgigung" + END_STRING + ".msa")
  717.         if NEW_678TH_SKILL_ENABLE:
  718.             chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+21, "seomgwang" + END_STRING + ".msa")
  719.  
  720.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_DRAGONBLOOD, "guild_yongsinuipi.msa")
  721.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_DRAGONBLESS, "guild_yongsinuichukbok.msa")
  722.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_BLESSARMOR, "guild_seonghwigap.msa")
  723.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_SPPEDUP, "guild_gasokhwa.msa")
  724.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_DRAGONWRATH, "guild_yongsinuibunno.msa")
  725.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_MAGICUP, "guild_jumunsul.msa")
  726.  
  727.     ## EMOTION
  728.     emotion.RegisterEmotionAnis(path)
  729.  
  730.     ## ONEHAND_SWORD BATTLE
  731.     chrmgr.SetPathName(path + "onehand_sword/")
  732.     chrmgr.RegisterMotionMode(chr.MOTION_MODE_ONEHAND_SWORD)
  733.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_WAIT,      "wait.msa", 70)
  734.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_WAIT,      "wait_1.msa", 30)
  735.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_WALK,      "walk.msa")
  736.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_RUN,       "run.msa")
  737.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE,        "damage.msa", 50)
  738.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE,        "damage_1.msa", 50)
  739.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE_BACK,   "damage_2.msa", 50)
  740.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE_BACK,   "damage_3.msa", 50)
  741.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_1, "combo_01.msa")
  742.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_2, "combo_02.msa")
  743.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_3, "combo_03.msa")
  744.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_4, "combo_04.msa")
  745.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_5, "combo_05.msa")
  746.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_6, "combo_06.msa")
  747.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_7, "combo_07.msa")
  748.  
  749.     ## Combo Type 1
  750.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, 4)
  751.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  752.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
  753.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
  754.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_4)
  755.     ## Combo Type 2
  756.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, 5)
  757.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  758.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
  759.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
  760.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)
  761.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_7)
  762.     ## Combo Type 3
  763.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, 6)
  764.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  765.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
  766.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
  767.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)
  768.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_6)
  769.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_6, chr.MOTION_COMBO_ATTACK_4)
  770.  
  771.     ## DUALHAND_SWORD BATTLE
  772.     chrmgr.SetPathName(path + "dualhand_sword/")
  773.     chrmgr.RegisterMotionMode(chr.MOTION_MODE_DUALHAND_SWORD)
  774.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_WAIT,         "wait.msa", 70)
  775.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_WAIT,         "wait_1.msa", 30)
  776.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_WALK,         "walk.msa")
  777.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_RUN,          "run.msa")
  778.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_DAMAGE,       "damage.msa", 50)
  779.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_DAMAGE,       "damage_1.msa", 50)
  780.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_DAMAGE_BACK,  "damage_2.msa", 50)
  781.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_DAMAGE_BACK,  "damage_3.msa", 50)
  782.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_COMBO_ATTACK_1, "combo_01.msa")
  783.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_COMBO_ATTACK_2, "combo_02.msa")
  784.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_COMBO_ATTACK_3, "combo_03.msa")
  785.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_COMBO_ATTACK_4, "combo_04.msa")
  786.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_COMBO_ATTACK_5, "combo_05.msa")
  787.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_COMBO_ATTACK_6, "combo_06.msa")
  788.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_COMBO_ATTACK_7, "combo_07.msa")
  789.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_DUALHAND_SWORD, chr.MOTION_COMBO_ATTACK_8, "combo_08.msa")
  790.  
  791.     ## Combo Type 1
  792.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_1, 4)
  793.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  794.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
  795.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
  796.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_4)
  797.     ## Combo Type 2
  798.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_2, 5)
  799.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  800.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
  801.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
  802.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)
  803.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_7)
  804.     ## Combo Type 3
  805.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_3, 6)
  806.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  807.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
  808.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
  809.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)
  810.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_6)
  811.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_DUALHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_6, chr.MOTION_COMBO_ATTACK_8)
  812.  
  813.     ## BOW BATTLE
  814.     chrmgr.SetPathName(path + "bow/")
  815.     chrmgr.RegisterMotionMode(chr.MOTION_MODE_BOW)
  816.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BOW, chr.MOTION_WAIT,            "wait.msa", 70)
  817.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BOW, chr.MOTION_WAIT,            "wait_1.msa", 30)
  818.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BOW, chr.MOTION_WALK,            "walk.msa")
  819.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BOW, chr.MOTION_RUN,         "run.msa")
  820.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BOW, chr.MOTION_DAMAGE,      "damage.msa", 50)
  821.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BOW, chr.MOTION_DAMAGE,      "damage_1.msa", 50)
  822.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BOW, chr.MOTION_DAMAGE_BACK, "damage_2.msa", 50)
  823.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BOW, chr.MOTION_DAMAGE_BACK, "damage_3.msa", 50)
  824.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BOW, chr.MOTION_COMBO_ATTACK_1,      "attack.msa")
  825.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_BOW, COMBO_TYPE_1, 1)
  826.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BOW, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  827.  
  828.     ## FISHING
  829.     chrmgr.SetPathName(path + "fishing/")
  830.     chrmgr.RegisterMotionMode(chr.MOTION_MODE_FISHING)
  831.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_WAIT,                    "wait.msa")
  832.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_WALK,                    "walk.msa")
  833.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_RUN,                 "run.msa")
  834.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_THROW,       "throw.msa")
  835.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_WAIT,            "fishing_wait.msa")
  836.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_STOP,            "fishing_cancel.msa")
  837.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_REACT,       "fishing_react.msa")
  838.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_CATCH,       "fishing_catch.msa")
  839.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_FAIL,            "fishing_fail.msa")
  840.  
  841.     ## HORSE
  842.     chrmgr.SetPathName(path + "horse/")
  843.     chrmgr.RegisterMotionMode(chr.MOTION_MODE_HORSE)
  844.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WAIT,              "wait.msa", 90)
  845.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WAIT,              "wait_1.msa", 9)
  846.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WAIT,              "wait_2.msa", 1)
  847.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WALK,              "walk.msa")
  848.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_RUN,               "run.msa")
  849.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_DAMAGE,            "damage.msa")
  850.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_DAMAGE_BACK,       "damage.msa")
  851.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_DEAD,              "dead.msa")
  852.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, HORSE_SKILL_CHARGE, "skill_charge.msa")
  853.  
  854.     ## HORSE_ONEHAND_SWORD
  855.     chrmgr.SetPathName(path + "horse_onehand_sword/")
  856.     chrmgr.RegisterMotionMode(chr.MOTION_MODE_HORSE_ONEHAND_SWORD)
  857.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_1, "combo_01.msa")
  858.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_2, "combo_02.msa")
  859.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_3, "combo_03.msa")
  860.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, HORSE_SKILL_WILDATTACK, "skill_wildattack.msa")
  861.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, HORSE_SKILL_SPLASH, "skill_splash.msa")
  862.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, COMBO_TYPE_1, 3)
  863.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  864.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
  865.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
  866.  
  867.     ## HORSE_DUALHAND_SWORD
  868.     chrmgr.SetPathName(path + "horse_dualhand_sword/")
  869.     chrmgr.RegisterMotionMode(chr.MOTION_MODE_HORSE_DUALHAND_SWORD)
  870.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_DUALHAND_SWORD, chr.MOTION_COMBO_ATTACK_1, "combo_01.msa")
  871.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_DUALHAND_SWORD, chr.MOTION_COMBO_ATTACK_2, "combo_02.msa")
  872.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_DUALHAND_SWORD, chr.MOTION_COMBO_ATTACK_3, "combo_03.msa")
  873.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_DUALHAND_SWORD, HORSE_SKILL_WILDATTACK, "skill_wildattack.msa")
  874.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_DUALHAND_SWORD, HORSE_SKILL_SPLASH, "skill_splash.msa")
  875.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_HORSE_DUALHAND_SWORD, COMBO_TYPE_1, 3)
  876.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_DUALHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  877.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_DUALHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
  878.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_DUALHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
  879.  
  880.     ## HORSE_BOW
  881.     chrmgr.SetPathName(path + "horse_bow/")
  882.     chrmgr.RegisterMotionMode(chr.MOTION_MODE_HORSE_BOW)
  883.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_BOW, chr.MOTION_WAIT,              "wait.msa", 90)
  884.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_BOW, chr.MOTION_WAIT,              "wait_1.msa", 9)
  885.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_BOW, chr.MOTION_WAIT,              "wait_2.msa", 1)
  886.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_BOW, chr.MOTION_RUN,               "run.msa")
  887.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_BOW, chr.MOTION_DAMAGE,            "damage.msa")
  888.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_BOW, chr.MOTION_DEAD,              "dead.msa")
  889.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_BOW, chr.MOTION_COMBO_ATTACK_1,    "attack.msa")
  890.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_BOW, HORSE_SKILL_WILDATTACK,       "skill_wildattack.msa")
  891.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_BOW, HORSE_SKILL_SPLASH,           "skill_splash.msa")
  892.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_HORSE_BOW, COMBO_TYPE_1, 1)
  893.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_BOW, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  894.  
  895.     chrmgr.RegisterAttachingBoneName(chr.PART_WEAPON, "equip_right")
  896.     chrmgr.RegisterAttachingBoneName(chr.PART_WEAPON_LEFT, "equip_left")
  897.  
  898. def __LoadGameSuraEx(race, path):
  899.     ## Sura
  900.     #########################################################################################
  901.     chrmgr.SelectRace(race)
  902.  
  903.     ## GENERAL MOTION MODE
  904.     SetGeneralMotions(chr.MOTION_MODE_GENERAL, path + "general/")
  905.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_COMBO_ATTACK_1,  "attack.msa", 50)
  906.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_COMBO_ATTACK_1,  "attack_1.msa", 50)
  907.  
  908.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_GENERAL, COMBO_TYPE_1, 1)
  909.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_GENERAL, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  910.  
  911.     ## SKILL
  912.     chrmgr.SetPathName(path + "skill/")
  913.     # chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+4, "geongon.msa")
  914.  
  915.     for i in xrange(skill.SKILL_EFFECT_COUNT):
  916.         END_STRING = ""
  917.         if i != 0: END_STRING = "_%d" % (i+1)
  918.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+1, "swaeryeong" + END_STRING + ".msa")
  919.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+2, "yonggwon" + END_STRING + ".msa")
  920.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+3, "gwigeom" + END_STRING + ".msa")
  921.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+4, "gongpo" + END_STRING + ".msa")
  922.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+5, "jumagap" + END_STRING + ".msa")
  923.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+6, "pabeop" + END_STRING + ".msa")
  924.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+16, "maryeong" + END_STRING + ".msa")
  925.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+17, "hwayeom" + END_STRING + ".msa")
  926.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+18, "muyeong" + END_STRING + ".msa")
  927.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+19, "heuksin" + END_STRING + ".msa")
  928.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+20, "tusok" + END_STRING + ".msa")
  929.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+21, "mahwan" + END_STRING + ".msa")
  930.  
  931.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_DRAGONBLOOD, "guild_yongsinuipi.msa")
  932.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_DRAGONBLESS, "guild_yongsinuichukbok.msa")
  933.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_BLESSARMOR, "guild_seonghwigap.msa")
  934.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_SPPEDUP, "guild_gasokhwa.msa")
  935.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_DRAGONWRATH, "guild_yongsinuibunno.msa")
  936.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_MAGICUP, "guild_jumunsul.msa")
  937.  
  938.     ## EMOTION
  939.     emotion.RegisterEmotionAnis(path)
  940.  
  941.     ## ONEHAND_SWORD BATTLE
  942.     chrmgr.SetPathName(path + "onehand_sword/")
  943.     chrmgr.RegisterMotionMode(chr.MOTION_MODE_ONEHAND_SWORD)
  944.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_WAIT,              "wait.msa")
  945.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_WALK,              "walk.msa")
  946.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_RUN,               "run.msa")
  947.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE,            "damage.msa")
  948.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE,            "damage.msa", 50)
  949.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE,            "damage_1.msa", 50)
  950.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE_BACK,       "damage_2.msa", 50)
  951.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_DAMAGE_BACK,       "damage_3.msa", 50)
  952.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_1,    "combo_01.msa")
  953.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_2,    "combo_02.msa")
  954.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_3,    "combo_03.msa")
  955.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_4,    "combo_04.msa")
  956.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_5,    "combo_05.msa")
  957.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_6,    "combo_06.msa")
  958.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_7,    "combo_07.msa")
  959.  
  960.     ## Combo Type 1
  961.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, 4)
  962.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  963.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
  964.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
  965.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_4)
  966.     ## Combo Type 2
  967.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, 5)
  968.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  969.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
  970.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
  971.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)
  972.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_2, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_7)
  973.     ## Combo Type 3
  974.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, 6)
  975.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  976.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
  977.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
  978.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)
  979.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_6)
  980.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_ONEHAND_SWORD, COMBO_TYPE_3, COMBO_INDEX_6, chr.MOTION_COMBO_ATTACK_4)
  981.  
  982.     ## FISHING
  983.     chrmgr.SetPathName(path + "fishing/")
  984.     chrmgr.RegisterMotionMode(chr.MOTION_MODE_FISHING)
  985.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_WAIT,                    "wait.msa")
  986.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_WALK,                    "walk.msa")
  987.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_RUN,                     "run.msa")
  988.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_THROW,           "throw.msa")
  989.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_WAIT,            "fishing_wait.msa")
  990.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_STOP,            "fishing_cancel.msa")
  991.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_REACT,           "fishing_react.msa")
  992.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_CATCH,           "fishing_catch.msa")
  993.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_FAIL,            "fishing_fail.msa")
  994.  
  995.     ## HORSE
  996.     chrmgr.SetPathName(path + "horse/")
  997.     chrmgr.RegisterMotionMode(chr.MOTION_MODE_HORSE)
  998.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WAIT,              "wait.msa", 90)
  999.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WAIT,              "wait_1.msa", 9)
  1000.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WAIT,              "wait_2.msa", 1)
  1001.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WALK,              "walk.msa")
  1002.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_RUN,               "run.msa")
  1003.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_DAMAGE,            "damage.msa")
  1004.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_DAMAGE_BACK,       "damage.msa")
  1005.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_DEAD,              "dead.msa")
  1006.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, HORSE_SKILL_CHARGE,           "skill_charge.msa")
  1007.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, HORSE_SKILL_SPLASH,           "skill_splash.msa")
  1008.  
  1009.     ## HORSE_ONEHAND_SWORD
  1010.     chrmgr.SetPathName(path + "horse_onehand_sword/")
  1011.     chrmgr.RegisterMotionMode(chr.MOTION_MODE_HORSE_ONEHAND_SWORD)
  1012.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_1, "combo_01.msa")
  1013.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_2, "combo_02.msa")
  1014.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, chr.MOTION_COMBO_ATTACK_3, "combo_03.msa")
  1015.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, COMBO_TYPE_1, 3)
  1016.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  1017.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
  1018.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
  1019.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_ONEHAND_SWORD, HORSE_SKILL_WILDATTACK, "skill_wildattack.msa")
  1020.  
  1021.     chrmgr.RegisterAttachingBoneName(chr.PART_WEAPON, "equip_right")
  1022.  
  1023. def __LoadGameShamanEx(race, path):
  1024.     ## Shaman
  1025.     #########################################################################################
  1026.     chrmgr.SelectRace(race)
  1027.  
  1028.     ## GENERAL MOTION MODE
  1029.     SetGeneralMotions(chr.MOTION_MODE_GENERAL, path + "general/")
  1030.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_COMBO_ATTACK_1,  "attack.msa", 50)
  1031.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_COMBO_ATTACK_1,  "attack_1.msa", 50)
  1032.  
  1033.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_GENERAL, COMBO_TYPE_1, 1)
  1034.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_GENERAL, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  1035.  
  1036.     ## EMOTION
  1037.     emotion.RegisterEmotionAnis(path)
  1038.  
  1039.     ## Fan
  1040.     chrmgr.SetPathName(path + "fan/")
  1041.     chrmgr.RegisterMotionMode(chr.MOTION_MODE_FAN)
  1042.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FAN, chr.MOTION_WAIT,            "wait.msa")
  1043.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FAN, chr.MOTION_WALK,            "walk.msa")
  1044.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FAN, chr.MOTION_RUN,             "run.msa")
  1045.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FAN, chr.MOTION_DAMAGE,          "damage.msa", 50)
  1046.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FAN, chr.MOTION_DAMAGE,          "damage_1.msa", 50)
  1047.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FAN, chr.MOTION_DAMAGE_BACK,     "damage_2.msa", 50)
  1048.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FAN, chr.MOTION_DAMAGE_BACK,     "damage_3.msa", 50)
  1049.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FAN, chr.MOTION_COMBO_ATTACK_1,  "combo_01.msa")
  1050.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FAN, chr.MOTION_COMBO_ATTACK_2,  "combo_02.msa")
  1051.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FAN, chr.MOTION_COMBO_ATTACK_3,  "combo_03.msa")
  1052.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FAN, chr.MOTION_COMBO_ATTACK_4,  "combo_04.msa")
  1053.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FAN, chr.MOTION_COMBO_ATTACK_5,  "combo_05.msa")
  1054.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FAN, chr.MOTION_COMBO_ATTACK_6,  "combo_06.msa")
  1055.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FAN, chr.MOTION_COMBO_ATTACK_7,  "combo_07.msa")
  1056.  
  1057.     ## Combo Type 1
  1058.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_1, 4)
  1059.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  1060.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
  1061.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
  1062.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_1, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_4)
  1063.     ## Combo Type 2
  1064.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_2, 5)
  1065.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_2, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  1066.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_2, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
  1067.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_2, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
  1068.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_2, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)
  1069.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_2, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_7)
  1070.     ## Combo Type 3
  1071.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_3, 6)
  1072.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_3, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  1073.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_3, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
  1074.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_3, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
  1075.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_3, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)
  1076.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_3, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_6)
  1077.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_FAN, COMBO_TYPE_3, COMBO_INDEX_6, chr.MOTION_COMBO_ATTACK_4)
  1078.  
  1079.     ## Bell
  1080.     chrmgr.SetPathName(path + "Bell/")
  1081.     chrmgr.RegisterMotionMode(chr.MOTION_MODE_BELL)
  1082.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BELL, chr.MOTION_WAIT,           "wait.msa")
  1083.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BELL, chr.MOTION_WALK,           "walk.msa")
  1084.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BELL, chr.MOTION_RUN,            "run.msa")
  1085.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BELL, chr.MOTION_DAMAGE,         "damage.msa", 50)
  1086.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BELL, chr.MOTION_DAMAGE,         "damage_1.msa", 50)
  1087.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BELL, chr.MOTION_DAMAGE_BACK,    "damage_2.msa", 50)
  1088.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BELL, chr.MOTION_DAMAGE_BACK,    "damage_3.msa", 50)
  1089.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BELL, chr.MOTION_COMBO_ATTACK_1, "combo_01.msa")
  1090.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BELL, chr.MOTION_COMBO_ATTACK_2, "combo_02.msa")
  1091.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BELL, chr.MOTION_COMBO_ATTACK_3, "combo_03.msa")
  1092.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BELL, chr.MOTION_COMBO_ATTACK_4, "combo_04.msa")
  1093.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BELL, chr.MOTION_COMBO_ATTACK_5, "combo_05.msa")
  1094.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BELL, chr.MOTION_COMBO_ATTACK_6, "combo_06.msa")
  1095.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_BELL, chr.MOTION_COMBO_ATTACK_7, "combo_07.msa")
  1096.  
  1097.     ## Combo Type 1
  1098.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_1, 4)
  1099.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  1100.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
  1101.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
  1102.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_1, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_4)
  1103.     ## Combo Type 2
  1104.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_2, 5)
  1105.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_2, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  1106.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_2, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
  1107.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_2, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
  1108.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_2, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)
  1109.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_2, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_7)
  1110.     ## Combo Type 3
  1111.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_3, 6)
  1112.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_3, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  1113.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_3, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
  1114.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_3, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
  1115.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_3, COMBO_INDEX_4, chr.MOTION_COMBO_ATTACK_5)
  1116.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_3, COMBO_INDEX_5, chr.MOTION_COMBO_ATTACK_6)
  1117.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_BELL, COMBO_TYPE_3, COMBO_INDEX_6, chr.MOTION_COMBO_ATTACK_4)
  1118.  
  1119.     ## SKILL
  1120.     chrmgr.SetPathName(path + "skill/")
  1121.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+1,     "bipabu.msa")
  1122.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+2,     "yongpa.msa")
  1123.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+3,     "paeryong.msa")
  1124.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+4,     "hosin_target.msa")
  1125.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+5, "boho_target.msa")
  1126.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+6, "gicheon_target.msa")
  1127.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+16,    "noejeon.msa")
  1128.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+17,    "byeorak.msa")
  1129.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+18,        "pokroe.msa")
  1130.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+19,        "jeongeop_target.msa")
  1131.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+20,        "kwaesok_target.msa")
  1132.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+21,    "jeungryeok_target.msa")
  1133.     #chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+10,   "budong.msa")
  1134.  
  1135.     START_INDEX = 0
  1136.     #skill.SKILL_EFFECT_COUNT 까지//
  1137.     for i in (1, 2, 3):
  1138.         END_STRING = ""
  1139.         if i != 0: END_STRING = "_%d" % (i+1)
  1140.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+1,    "bipabu" + END_STRING + ".msa")
  1141.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+2,    "yongpa" + END_STRING + ".msa")
  1142.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+3,    "paeryong" + END_STRING + ".msa")
  1143.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+4,    "hosin" + END_STRING + ".msa")
  1144.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+5,    "boho" + END_STRING + ".msa")
  1145.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+6,    "gicheon" + END_STRING + ".msa")
  1146.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+16,   "noejeon" + END_STRING + ".msa")
  1147.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+17,   "byeorak" + END_STRING + ".msa")
  1148.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+18,   "pokroe" + END_STRING + ".msa")
  1149.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+19,   "jeongeop" + END_STRING + ".msa")
  1150.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+20,   "kwaesok" + END_STRING + ".msa")
  1151.         chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+21,   "jeungryeok" + END_STRING + ".msa")
  1152.         #chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SKILL+(i*skill.SKILL_GRADEGAP)+10,  "budong" + END_STRING + ".msa")
  1153.  
  1154.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_DRAGONBLOOD, "guild_yongsinuipi.msa")
  1155.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_DRAGONBLESS, "guild_yongsinuichukbok.msa")
  1156.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_BLESSARMOR, "guild_seonghwigap.msa")
  1157.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_SPPEDUP, "guild_gasokhwa.msa")
  1158.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_DRAGONWRATH, "guild_yongsinuibunno.msa")
  1159.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_GENERAL, GUILD_SKILL_MAGICUP, "guild_jumunsul.msa")
  1160.  
  1161.     ## FISHING
  1162.     chrmgr.SetPathName(path + "fishing/")
  1163.     chrmgr.RegisterMotionMode(chr.MOTION_MODE_FISHING)
  1164.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_WAIT,                "wait.msa")
  1165.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_WALK,                "walk.msa")
  1166.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_RUN,                 "run.msa")
  1167.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_THROW,       "throw.msa")
  1168.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_WAIT,        "fishing_wait.msa")
  1169.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_STOP,        "fishing_cancel.msa")
  1170.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_REACT,       "fishing_react.msa")
  1171.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_CATCH,       "fishing_catch.msa")
  1172.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_FISHING, chr.MOTION_FISHING_FAIL,        "fishing_fail.msa")
  1173.  
  1174.     ## HORSE
  1175.     chrmgr.SetPathName(path + "horse/")
  1176.     chrmgr.RegisterMotionMode(chr.MOTION_MODE_HORSE)
  1177.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WAIT,              "wait.msa", 90)
  1178.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WAIT,              "wait_1.msa", 9)
  1179.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WAIT,              "wait_2.msa", 1)
  1180.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_WALK,              "walk.msa")
  1181.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_RUN,               "run.msa")
  1182.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_DAMAGE,            "damage.msa")
  1183.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_DAMAGE_BACK,       "damage.msa")
  1184.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, chr.MOTION_DEAD,              "dead.msa")
  1185.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, HORSE_SKILL_CHARGE,           "skill_charge.msa")
  1186.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE, HORSE_SKILL_SPLASH,           "skill_splash.msa")
  1187.  
  1188.     ## HORSE_FAN
  1189.     chrmgr.SetPathName(path + "horse_fan/")
  1190.     chrmgr.RegisterMotionMode(chr.MOTION_MODE_HORSE_FAN)
  1191.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_FAN, chr.MOTION_COMBO_ATTACK_1, "combo_01.msa")
  1192.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_FAN, chr.MOTION_COMBO_ATTACK_2, "combo_02.msa")
  1193.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_FAN, chr.MOTION_COMBO_ATTACK_3, "combo_03.msa")
  1194.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_HORSE_FAN, COMBO_TYPE_1, 3)
  1195.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_FAN, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  1196.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_FAN, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
  1197.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_FAN, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
  1198.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_FAN, HORSE_SKILL_WILDATTACK, "skill_wildattack.msa")
  1199.  
  1200.     ## HORSE_BELL
  1201.     chrmgr.SetPathName(path + "horse_bell/")
  1202.     chrmgr.RegisterMotionMode(chr.MOTION_MODE_HORSE_BELL)
  1203.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_BELL, chr.MOTION_COMBO_ATTACK_1, "combo_01.msa")
  1204.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_BELL, chr.MOTION_COMBO_ATTACK_2, "combo_02.msa")
  1205.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_BELL, chr.MOTION_COMBO_ATTACK_3, "combo_03.msa")
  1206.     chrmgr.ReserveComboAttackNew(chr.MOTION_MODE_HORSE_BELL, COMBO_TYPE_1, 3)
  1207.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_BELL, COMBO_TYPE_1, COMBO_INDEX_1, chr.MOTION_COMBO_ATTACK_1)
  1208.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_BELL, COMBO_TYPE_1, COMBO_INDEX_2, chr.MOTION_COMBO_ATTACK_2)
  1209.     chrmgr.RegisterComboAttackNew(chr.MOTION_MODE_HORSE_BELL, COMBO_TYPE_1, COMBO_INDEX_3, chr.MOTION_COMBO_ATTACK_3)
  1210.     chrmgr.RegisterCacheMotionData(chr.MOTION_MODE_HORSE_BELL, HORSE_SKILL_WILDATTACK, "skill_wildattack.msa")
  1211.  
  1212.     chrmgr.RegisterAttachingBoneName(chr.PART_WEAPON, "equip_right")
  1213.     chrmgr.RegisterAttachingBoneName(chr.PART_WEAPON_LEFT, "equip_left")
  1214.  
  1215.  
  1216. def __LoadGameSkill():
  1217.  
  1218.     try:
  1219.         skill.LoadSkillData()
  1220.     except:
  1221.         import exception
  1222.         exception.Abort("__LoadGameSkill")
  1223.  
  1224. def __LoadGameEnemy():
  1225.     pass
  1226.  
  1227. def __LoadGameNPC():
  1228.     try:
  1229.         handle = app.OpenTextFile("potvory.txt")
  1230.         count = app.GetTextFileLineCount(handle)
  1231.         if count == 0:
  1232.             lines = pack_open("npclist2.txt", "r").readlines()
  1233.         else:
  1234.             lines = pack_open("npclist.txt", "r").readlines()
  1235.     except IOError:
  1236.         import dbg
  1237.         dbg.LogBox("LoadLocaleError(%(srcFileName)s)" % locals())
  1238.         app.Abort()
  1239.  
  1240.     for line in lines:
  1241.         tokens = line[:-1].split("\t")
  1242.         if len(tokens) == 0 or not tokens[0]:
  1243.             continue
  1244.  
  1245.         try:
  1246.             vnum = int(tokens[0])
  1247.         except ValueError:
  1248.             import dbg
  1249.             dbg.LogBox("LoadGameNPC() - %s - line #%d: %s" % (tokens, lines.index(line), line))
  1250.             app.Abort()        
  1251.  
  1252.         try:
  1253.             if vnum:
  1254.                 chrmgr.RegisterRaceName(vnum, tokens[1].strip())
  1255.             else:
  1256.                 chrmgr.RegisterRaceSrcName(tokens[1].strip(), tokens[2].strip())
  1257.         except IndexError:
  1258.             import dbg
  1259.             dbg.LogBox("LoadGameNPC() - %d, %s - line #%d: %s " % (vnum, tokens, lines.index(line), line))
  1260.             app.Abort()
  1261.  
  1262.  
  1263. # GUILD_BUILDING
  1264. def LoadGuildBuildingList(filename):
  1265.     import uiGuild
  1266.     uiGuild.BUILDING_DATA_LIST = []
  1267.  
  1268.     handle = app.OpenTextFile(filename)
  1269.     count = app.GetTextFileLineCount(handle)
  1270.     for i in xrange(count):
  1271.         line = app.GetTextFileLine(handle, i)
  1272.         tokens = line.split("\t")
  1273.  
  1274.         TOKEN_VNUM = 0
  1275.         TOKEN_TYPE = 1
  1276.         TOKEN_NAME = 2
  1277.         TOKEN_LOCAL_NAME = 3
  1278.         NO_USE_TOKEN_SIZE_1 = 4
  1279.         NO_USE_TOKEN_SIZE_2 = 5
  1280.         NO_USE_TOKEN_SIZE_3 = 6
  1281.         NO_USE_TOKEN_SIZE_4 = 7
  1282.         TOKEN_X_ROT_LIMIT = 8
  1283.         TOKEN_Y_ROT_LIMIT = 9
  1284.         TOKEN_Z_ROT_LIMIT = 10
  1285.         TOKEN_PRICE = 11
  1286.         TOKEN_MATERIAL = 12
  1287.         TOKEN_NPC = 13
  1288.         TOKEN_GROUP = 14
  1289.         TOKEN_DEPEND_GROUP = 15
  1290.         TOKEN_ENABLE_FLAG = 16
  1291.         LIMIT_TOKEN_COUNT = 17
  1292.  
  1293.         if not tokens[TOKEN_VNUM].isdigit():
  1294.             continue
  1295.  
  1296.         if len(tokens) < LIMIT_TOKEN_COUNT:
  1297.             import dbg
  1298.             dbg.TraceError("Strange token count [%d/%d] [%s]" % (len(tokens), TOKEN_COUNT, line))
  1299.             continue
  1300.  
  1301.         ENABLE_FLAG_TYPE_NOT_USE = FALSE
  1302.         ENABLE_FLAG_TYPE_USE = TRUE
  1303.         ENABLE_FLAG_TYPE_USE_BUT_HIDE = 2
  1304.  
  1305.         if ENABLE_FLAG_TYPE_NOT_USE == int(tokens[TOKEN_ENABLE_FLAG]):
  1306.             continue
  1307.  
  1308.         vnum = int(tokens[TOKEN_VNUM])
  1309.         type = tokens[TOKEN_TYPE]
  1310.         name = tokens[TOKEN_NAME]
  1311.         localName = tokens[TOKEN_LOCAL_NAME]
  1312.         xRotLimit = int(tokens[TOKEN_X_ROT_LIMIT])
  1313.         yRotLimit = int(tokens[TOKEN_Y_ROT_LIMIT])
  1314.         zRotLimit = int(tokens[TOKEN_Z_ROT_LIMIT])
  1315.         price = tokens[TOKEN_PRICE]
  1316.         material = tokens[TOKEN_MATERIAL]
  1317.  
  1318.         folderName = ""
  1319.         if "HEADQUARTER" == type:
  1320.             folderName = "headquarter"
  1321.         elif "FACILITY" == type:
  1322.             folderName = "facility"
  1323.         elif "OBJECT" == type:
  1324.             folderName = "object"
  1325.         elif "WALL" == type:
  1326.             folderName = "fence"
  1327.  
  1328.         materialList = ["0", "0", "0"]
  1329.         if material:
  1330.             if material[0] == "\"":
  1331.                 material = material[1:]
  1332.             if material[-1] == "\"":
  1333.                 material = material[:-1]
  1334.             for one in material.split("/"):
  1335.                 data = one.split(",")
  1336.                 if 2 != len(data):
  1337.                     continue
  1338.                 itemID = int(data[0])
  1339.                 count = data[1]
  1340.  
  1341.                 if itemID == uiGuild.MATERIAL_STONE_ID:
  1342.                     materialList[uiGuild.MATERIAL_STONE_INDEX] = count
  1343.                 elif itemID == uiGuild.MATERIAL_LOG_ID:
  1344.                     materialList[uiGuild.MATERIAL_LOG_INDEX] = count
  1345.                 elif itemID == uiGuild.MATERIAL_PLYWOOD_ID:
  1346.                     materialList[uiGuild.MATERIAL_PLYWOOD_INDEX] = count
  1347.  
  1348.         ## GuildSymbol 은 일반 NPC 들과 함께 등록한다.
  1349.         import chrmgr
  1350.         chrmgr.RegisterRaceSrcName(name, folderName)
  1351.         chrmgr.RegisterRaceName(vnum, name)
  1352.  
  1353.         appendingData = { "VNUM":vnum,
  1354.                           "TYPE":type,
  1355.                           "NAME":name,
  1356.                           "LOCAL_NAME":localName,
  1357.                           "X_ROT_LIMIT":xRotLimit,
  1358.                           "Y_ROT_LIMIT":yRotLimit,
  1359.                           "Z_ROT_LIMIT":zRotLimit,
  1360.                           "PRICE":price,
  1361.                           "MATERIAL":materialList,
  1362.                           "SHOW" : TRUE }
  1363.  
  1364.         if ENABLE_FLAG_TYPE_USE_BUT_HIDE == int(tokens[TOKEN_ENABLE_FLAG]):
  1365.             appendingData["SHOW"] = FALSE
  1366.  
  1367.         uiGuild.BUILDING_DATA_LIST.append(appendingData)
  1368.  
  1369.     app.CloseTextFile(handle)
  1370.  
  1371. # END_OF_GUILD_BUILDING
  1372.  
  1373. loadGameDataDict={
  1374.     "INIT" : __InitData,
  1375.     "SOUND" : __LoadGameSound,
  1376.     "EFFECT" : __LoadGameEffect,
  1377.     "WARRIOR" : __LoadGameWarrior,
  1378.     "ASSASSIN" : __LoadGameAssassin,
  1379.     "SURA" : __LoadGameSura,
  1380.     "SHAMAN" : __LoadGameShaman,
  1381.     "SKILL" : __LoadGameSkill,
  1382.     "ENEMY" : __LoadGameEnemy,
  1383.     "NPC" : __LoadGameNPC,
  1384. }
  1385.  
  1386. def LoadGameData(name):
  1387.     global loadGameDataDict
  1388.  
  1389.     load=loadGameDataDict.get(name, 0)
  1390.     if load:
  1391.         loadGameDataDict[name]=0
  1392.         try:
  1393.             load()
  1394.         except:
  1395.             print name
  1396.             import exception
  1397.             exception.Abort("LoadGameData")
  1398.             raise
  1399.  
  1400.  
  1401. ## NPC
  1402.  
  1403. def SetMovingNPC(race, name):
  1404.     chrmgr.CreateRace(race)
  1405.     chrmgr.SelectRace(race)
  1406.  
  1407.     ## RESERVED
  1408.     chrmgr.SetPathName("d:/ymir work/npc/" + name + "/")
  1409.     chrmgr.RegisterMotionMode(chr.MOTION_MODE_GENERAL)
  1410.     chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_WAIT, "wait.msa")
  1411.     chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_WALK, "walk.msa")
  1412.     chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_RUN, "run.msa")
  1413.     chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_DEAD, "die.msa")
  1414.     chrmgr.LoadRaceData(name + ".msm")
  1415.  
  1416. def SetOneNPC(race, name):
  1417.     chrmgr.CreateRace(race)
  1418.     chrmgr.SelectRace(race)
  1419.  
  1420.     ## RESERVED
  1421.     chrmgr.SetPathName("d:/ymir work/npc/" + name + "/")
  1422.     chrmgr.RegisterMotionMode(chr.MOTION_MODE_GENERAL)
  1423.     chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_WAIT, "wait.msa")
  1424.     chrmgr.LoadRaceData(name + ".msm")
  1425.  
  1426. def SetGuard(race, name):
  1427.     chrmgr.CreateRace(race)
  1428.     chrmgr.SelectRace(race)
  1429.  
  1430.     ## Script Data
  1431.     chrmgr.SetPathName("d:/ymir work/npc/" + name + "/")
  1432.     chrmgr.LoadRaceData(name + ".msm")
  1433.  
  1434.     ## GENERAL
  1435.     chrmgr.RegisterMotionMode(chr.MOTION_MODE_GENERAL)
  1436.     chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_SPAWN,        "00.msa")
  1437.     chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_WAIT,         "00.msa")
  1438.     chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_RUN,          "03.msa")
  1439.  
  1440.     chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_DAMAGE,       "30.msa", 50)
  1441.     chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_DAMAGE,       "30_1.msa", 50)
  1442.  
  1443.     chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_DAMAGE_BACK,  "34.msa", 50)
  1444.     chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_DAMAGE_BACK,  "34_1.msa", 50)
  1445.  
  1446.     chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_DAMAGE_FLYING,"32.msa")
  1447.     chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_STAND_UP,     "33.msa")
  1448.  
  1449.     chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_DAMAGE_FLYING_BACK,   "35.msa")
  1450.     chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_STAND_UP_BACK,        "36.msa")
  1451.  
  1452.     chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_DEAD,                 "31.msa")
  1453.     chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_DEAD_BACK,            "37.msa")
  1454.  
  1455.     chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_NORMAL_ATTACK,        "20.msa")
  1456.  
  1457.     ## Attacking Data
  1458.     chrmgr.RegisterNormalAttack(chr.MOTION_MODE_GENERAL, chr.MOTION_NORMAL_ATTACK)
  1459.  
  1460. def SetWarp(race):
  1461.     chrmgr.CreateRace(race)
  1462.     chrmgr.SelectRace(race)
  1463.  
  1464.     chrmgr.SetPathName("d:/ymir work/npc/warp/")
  1465.     chrmgr.LoadRaceData("warp.msm")
  1466.  
  1467.     ## GENERAL
  1468.     chrmgr.RegisterMotionMode(chr.MOTION_MODE_GENERAL)
  1469.     chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_WAIT, "wait.msa")
  1470.  
  1471. def SetDoor(race, name):
  1472.     chrmgr.CreateRace(race)
  1473.     chrmgr.SelectRace(race)
  1474.     chrmgr.SetPathName("d:/ymir work/npc/"+name+"/")
  1475.     chrmgr.LoadRaceData(name + ".msm")
  1476.     chrmgr.RegisterMotionMode(chr.MOTION_MODE_GENERAL)
  1477.     chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_WAIT, "close_wait.msa")
  1478.     chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_DEAD, "open.msa")
  1479.  
  1480. def SetGuildBuilding(race, name, grade):
  1481.     chrmgr.CreateRace(race)
  1482.     chrmgr.SelectRace(race)
  1483.     chrmgr.SetPathName("d:/ymir work/guild/building/%s/" % name)
  1484.     chrmgr.LoadRaceData("%s%02d.msm" % (name, grade))
  1485.     chrmgr.RegisterMotionMode(chr.MOTION_MODE_GENERAL)
  1486.     #chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_DEAD, name + "_destruction.msa")
  1487.  
  1488. def OLD_SetNPC():
  1489.     SetOneNPC(9001, "arms")
  1490.     SetOneNPC(9002, "defence")
  1491.     SetOneNPC(9003, "goods")
  1492.     SetOneNPC(9004, "bank")
  1493.     SetOneNPC(9005, "hotel_grandfa")
  1494.     SetOneNPC(9006, "hotel_grandma")
  1495.     SetOneNPC(9007, "arms")
  1496.     SetOneNPC(9008, "defence")
  1497.     SetOneNPC(9009, "sailor")
  1498.  
  1499.     SetMovingNPC(20001, "alchemist")
  1500.     SetMovingNPC(20002, "auntie")
  1501.     SetMovingNPC(20003, "baby_and_mom")
  1502.     SetMovingNPC(20004, "beggar")
  1503.     SetMovingNPC(20005, "ceramist")
  1504.     SetMovingNPC(20006, "girl_lost_elder_brother")
  1505.     SetMovingNPC(20007, "hotel_grandfa")
  1506.     SetMovingNPC(20008, "mr_restaurant")
  1507.     SetMovingNPC(20009, "oldster")
  1508.     SetMovingNPC(20010, "peddler")
  1509.     SetMovingNPC(20011, "plant_researcher")
  1510.     SetMovingNPC(20012, "rice_cake_seller")
  1511.     SetMovingNPC(20013, "sailor")
  1512.     SetMovingNPC(20014, "timid_boy")
  1513.     SetMovingNPC(20015, "woodcutter")
  1514.     SetMovingNPC(20016, "blacksmith")
  1515.     SetMovingNPC(20017, "musician")
  1516.     SetMovingNPC(20018, "doctor")
  1517.     SetMovingNPC(20019, "hunter")
  1518.     SetMovingNPC(20020, "old_pirate")
  1519.     SetMovingNPC(20021, "widow")
  1520.     SetMovingNPC(20022, "young_merchant")
  1521.     SetMovingNPC(20023, "bookworm")
  1522.     SetMovingNPC(20024, "yu_hwa_rang")
  1523.     SetMovingNPC(20041, "beggar")
  1524.     SetMovingNPC(20042, "peddler")
  1525.  
  1526.     SetGuard(20300, "sinsu_patrol_spear")
  1527.     SetGuard(20301, "sinsu_patrol_spear")
  1528.     SetGuard(20302, "sinsu_patrol_spear")
  1529.     SetGuard(20303, "sinsu_patrol_spear")
  1530.     SetGuard(20304, "sinsu_patrol_spear")
  1531.     SetGuard(20305, "sinsu_patrol_spear")
  1532.     SetGuard(20306, "sinsu_patrol_spear")
  1533.     SetGuard(20307, "sinsu_patrol_spear")
  1534.  
  1535.     SetGuard(20320, "gangyo_patrol_spear")
  1536.     SetGuard(20321, "gangyo_patrol_spear")
  1537.     SetGuard(20322, "gangyo_patrol_spear")
  1538.     SetGuard(20323, "gangyo_patrol_spear")
  1539.     SetGuard(20324, "gangyo_patrol_spear")
  1540.     SetGuard(20325, "gangyo_patrol_spear")
  1541.     SetGuard(20326, "gangyo_patrol_spear")
  1542.     SetGuard(20327, "gangyo_patrol_spear")
  1543.  
  1544.     SetGuard(20340, "jinno_patrol_spear")
  1545.     SetGuard(20341, "jinno_patrol_spear")
  1546.     SetGuard(20342, "jinno_patrol_spear")
  1547.     SetGuard(20343, "jinno_patrol_spear")
  1548.     SetGuard(20344, "jinno_patrol_spear")
  1549.     SetGuard(20345, "jinno_patrol_spear")
  1550.     SetGuard(20346, "jinno_patrol_spear")
  1551.     SetGuard(20347, "jinno_patrol_spear")
  1552.  
  1553.     ## Warp
  1554.     for i in xrange(18):
  1555.         SetWarp(10001 + i)
  1556.  
  1557.     SetGuard(11000, "gangyo_patrol_spear")
  1558.     SetGuard(11001, "gangyo_patrol_bow")
  1559.     SetGuard(11002, "jinno_patrol_spear")
  1560.     SetGuard(11003, "jinno_patrol_bow")
  1561.     SetGuard(11004, "sinsu_patrol_spear")
  1562.     SetGuard(11005, "sinsu_patrol_bow")
  1563.  
  1564.     ## Campfire (Bonfire)
  1565.     #chrmgr.CreateRace(12000)
  1566.     #chrmgr.SelectRace(12000)
  1567.     #chrmgr.SetPathName("d:/ymir Work/npc/campfire/")
  1568.     #chrmgr.LoadRaceData("campfire.msm")
  1569.  
  1570.     ## Door
  1571.     SetDoor(13000, "wooden_door")
  1572.     SetDoor(13001, "stone_door")
Advertisement
Add Comment
Please, Sign In to add comment