Advertisement
Guest User

Untitled

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