Advertisement
Guest User

playersettingmodule.py

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