Guest User

playersettingmodule.py

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