def __LoadBoard(self): try: pyScrLoader = ui.PythonScriptLoader() if localeInfo.IsJAPAN(): pyScrLoader.LoadScriptFile(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "PartyMemberInfoBoard.py") else: pyScrLoader.LoadScriptFile(self, "UIScript/PartyMemberInfoBoard.py") except: import exception exception.Abort("PartyMemberInfoBoard.__LoadBoard.LoadScript") try: self.nameTextLine = self.GetChild("NamePrint") self.gauge = self.GetChild("Gauge") self.stateButton = self.GetChild("StateButton") self.partyAffectImageList.append(self.GetChild("ExperienceImage")) self.partyAffectImageList.append(self.GetChild("AttackerImage")) self.partyAffectImageList.append(self.GetChild("DefenderImage")) self.partyAffectImageList.append(self.GetChild("BufferImage")) self.partyAffectImageList.append(self.GetChild("SkillMasterImage")) self.partyAffectImageList.append(self.GetChild("TimeBonusImage")) self.partyAffectImageList.append(self.GetChild("RegenBonus")) self.partyAffectImageList.append(self.GetChild("IncreaseArea150")) self.partyAffectImageList.append(self.GetChild("IncreaseArea200")) self.stateButton.SetEvent(ui.__mem_func__(self.OnMouseLeftButtonDown)) except: import exception exception.Abort("PartyMemberInfoBoard.__LoadBoard.BindObject") self.__SetAffectsMouseEvent() self.__HideAllAffects()
def __LoadWindow(self): if self.isLoaded == 1: return self.isLoaded = 1 try: if localeInfo.IsARABIC() or localeInfo.IsVIETNAM() or localeInfo.IsJAPAN(): self.__LoadScript(uiScriptLocale.LOCALE_UISCRIPT_PATH + "CharacterWindow.py") else: self.__LoadScript("UIScript/CharacterWindow.py") self.__BindObject() self.__BindEvent() except: import exception exception.Abort("CharacterWindow.__LoadWindow") #self.tabButtonDict["EMOTICON"].Disable() self.SetState("STATUS")
def Open(self): print "OPEN LOADING WINDOW -------------------------------------------------------------------------------" #app.HideCursor() try: pyScrLoader = ui.PythonScriptLoader() if localeInfo.IsYMIR() or localeInfo.IsWE_KOREA( ) or localeInfo.IsCANADA() or localeInfo.IsBRAZIL( ) or localeInfo.IsEUROPE() or localeInfo.IsJAPAN(): pyScrLoader.LoadScriptFile( self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "LoadingWindow.py") else: pyScrLoader.LoadScriptFile(self, "UIScript/LoadingWindow.py") except: import exception exception.Abort("LodingWindow.Open - LoadScriptFile Error") try: self.loadingImage = self.GetChild("BackGround") self.errMsg = self.GetChild("ErrorMessage") self.loadingGage = self.GetChild("FullGage") self.tipTextLine = self.GetChild("tipTextLine") except: import exception exception.Abort("LodingWindow.Open - LoadScriptFile Error") self.errMsg.Hide() if localeInfo.IsHONGKONG(): imgFileNameDict = { 0: app.GetLocalePath() + "/ui/loading/loading0.sub", 1: app.GetLocalePath() + "/ui/loading/loading1.sub", 2: app.GetLocalePath() + "/ui/loading/loading2.sub", 3: app.GetLocalePath() + "/ui/loading/loading3.sub", 4: app.GetLocalePath() + "/ui/loading/loading4.sub", 5: app.GetLocalePath() + "/ui/loading/loading5.sub", 6: app.GetLocalePath() + "/ui/loading/loading6.sub" } elif localeInfo.IsCIBN10(): imgFileNameDict = { 0: app.GetLocalePath() + "/ui/loading/loading0.jpg", 1: app.GetLocalePath() + "/ui/loading/loading1.jpg", 2: app.GetLocalePath() + "/ui/loading/loading2.jpg", 3: app.GetLocalePath() + "/ui/loading/loading3.jpg", 4: app.GetLocalePath() + "/ui/loading/loading4.jpg", 5: app.GetLocalePath() + "/ui/loading/loading5.jpg", 6: app.GetLocalePath() + "/ui/loading/loading6.jpg", 7: app.GetLocalePath() + "/ui/loading/loading7.jpg", } elif localeInfo.IsYMIR() or localeInfo.IsWE_KOREA( ) or localeInfo.IsCANADA() or localeInfo.IsBRAZIL( ) or localeInfo.IsEUROPE() or localeInfo.IsJAPAN(): imgFileNameDict = { 0: "yamato_load/loading01.jpg", } elif constInfo.SUB2_LOADING_ENABLE: imgFileNameDict = { 0: "d:/ymir work/uiloading/background_loading_warrior.sub", 1: "d:/ymir work/uiloading/background_loading_assassin.sub", 2: "d:/ymir work/uiloading/background_loading_shaman.sub", 3: "d:/ymir work/uiloading/background_loading_sura.sub", 4: "d:/ymir work/uiloading/background_loading_assassin2.sub", 5: "d:/ymir work/uiloading/background_loading_sura2.sub", 6: "d:/ymir work/uiloading/background_loading_assassin3.sub", 7: "d:/ymir work/uiloading/background_loading_assassin3.sub", } else: imgFileNameDict = { 0: "d:/ymir work/ui/intro/pattern/background_loading_warrior.jpg", 1: "d:/ymir work/ui/intro/pattern/background_loading_assassin.jpg", 2: "d:/ymir work/ui/intro/pattern/background_loading_shaman.jpg", } try: imgFileName = imgFileNameDict[app.GetRandom( 0, len(imgFileNameDict) - 1)] self.loadingImage.LoadImage(imgFileName) except: print "LoadingWindow.Open.LoadImage - %s File Load Error" % ( imgFileName) self.loadingImage.Hide() self.tipTextLine.SetText(settinginfo.GetTipText()) width = float(wndMgr.GetScreenWidth()) / float( self.loadingImage.GetWidth()) height = float(wndMgr.GetScreenHeight()) / float( self.loadingImage.GetHeight()) self.loadingImage.SetScale(width, height) self.loadingGage.SetPercentage(2, 100) self.Show() chrSlot = self.stream.GetCharacterSlot() GFHhg54GHGhh45GHGH.SendSelectCharacterPacket(chrSlot) app.SetFrameSkip(0)
class PartyMemberInfoBoard(ui.ScriptWindow): if localeInfo.IsJAPAN(): BOARD_WIDTH = 130 else: BOARD_WIDTH = 106 BOARD_COLOR = grp.GenerateColor(0.0, 0.0, 0.0, 0.5) GAUGE_OUT_LINE_COLOR = grp.GenerateColor(1.0, 1.0, 1.0, 0.3) LINK_COLOR = grp.GenerateColor(0.7607, 0.7607, 0.7607, 1.0) UNLINK_COLOR = grp.GenerateColor(0.5, 0.5, 0.5, 1.0) #UNLINK_COLOR = grp.GenerateColor(0.9, 0.4745, 0.4627, 1.0) PARTY_AFFECT_EXPERIENCE = 0 PARTY_AFFECT_ATTACKER = 1 PARTY_AFFECT_TANKER = 2 PARTY_AFFECT_BUFFER = 3 PARTY_AFFECT_SKILL_MASTER = 4 PARTY_AFFECT_BERSERKER = 5 PARTY_AFFECT_DEFENDER = 6 #PARTY_AFFECT_TIME_BONUS = 5 #PARTY_AFFECT_REGEN_BONUS = 6 PARTY_AFFECT_INCREASE_AREA_150 = 7 PARTY_AFFECT_INCREASE_AREA_200 = 8 AFFECT_STRING_DICT = { PARTY_AFFECT_EXPERIENCE : localeInfo.PARTY_BONUS_EXP, PARTY_AFFECT_ATTACKER : localeInfo.PARTY_BONUS_ATTACKER, PARTY_AFFECT_TANKER : localeInfo.PARTY_BONUS_TANKER, PARTY_AFFECT_BUFFER : localeInfo.PARTY_BONUS_BUFFER, PARTY_AFFECT_SKILL_MASTER : localeInfo.PARTY_BONUS_SKILL_MASTER, PARTY_AFFECT_BERSERKER : localeInfo.PARTY_BONUS_BERSERKER, PARTY_AFFECT_DEFENDER : localeInfo.PARTY_BONUS_DEFENDER, PARTY_AFFECT_INCREASE_AREA_150 : localeInfo.PARTY_INCREASE_AREA_150, PARTY_AFFECT_INCREASE_AREA_200 : localeInfo.PARTY_INCREASE_AREA_200, } PARTY_SKILL_HEAL = 1 PARTY_SKILL_WARP = 2 MEMBER_BUTTON_NORMAL = 10 MEMBER_BUTTON_WARP = 11 MEMBER_BUTTON_EXPEL = 12 MEMBER_BUTTON_PATH = "d:/ymir work/ui/game/windows/" MEMBER_BUTTON_IMAGE_FILE_NAME_DICT = { player.PARTY_STATE_LEADER : "party_state_leader", player.PARTY_STATE_ATTACKER : "party_state_attacker", player.PARTY_STATE_BERSERKER : "party_state_berserker", player.PARTY_STATE_TANKER : "party_state_tanker", player.PARTY_STATE_DEFENDER : "party_state_defender", player.PARTY_STATE_BUFFER : "party_state_buffer", player.PARTY_STATE_SKILL_MASTER : "party_state_skill_master", MEMBER_BUTTON_NORMAL : "party_state_normal", MEMBER_BUTTON_WARP : "party_skill_warp", MEMBER_BUTTON_EXPEL : "party_expel", } STATE_NAME_DICT = { player.PARTY_STATE_ATTACKER : localeInfo.PARTY_SET_ATTACKER, player.PARTY_STATE_BERSERKER : localeInfo.PARTY_SET_BERSERKER, player.PARTY_STATE_TANKER : localeInfo.PARTY_SET_TANKER, player.PARTY_STATE_DEFENDER : localeInfo.PARTY_SET_DEFENDER, player.PARTY_STATE_BUFFER : localeInfo.PARTY_SET_BUFFER, player.PARTY_STATE_SKILL_MASTER : localeInfo.PARTY_SET_SKILL_MASTER, } def __init__(self): ui.ScriptWindow.__init__(self) self.pid = None self.vid = None self.partyAffectImageList = [] self.stateButtonDict = {} self.affectValueDict = {} self.state = -1 self.isShowStateButton = False self.__LoadBoard() self.__CreateAffectToolTip() self.__CreateStateButton() self.Show() def __del__(self): ui.ScriptWindow.__del__(self) print " =============================== DESTROIED PartyMemberInfoBoard" def __LoadBoard(self): try: pyScrLoader = ui.PythonScriptLoader() if localeInfo.IsJAPAN(): pyScrLoader.LoadScriptFile(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "PartyMemberInfoBoard.py") else: pyScrLoader.LoadScriptFile(self, "UIScript/PartyMemberInfoBoard.py") except: import exception exception.Abort("PartyMemberInfoBoard.__LoadBoard.LoadScript") try: self.nameTextLine = self.GetChild("NamePrint") self.gauge = self.GetChild("Gauge") self.stateButton = self.GetChild("StateButton") self.partyAffectImageList.append(self.GetChild("ExperienceImage")) self.partyAffectImageList.append(self.GetChild("AttackerImage")) self.partyAffectImageList.append(self.GetChild("DefenderImage")) self.partyAffectImageList.append(self.GetChild("BufferImage")) self.partyAffectImageList.append(self.GetChild("SkillMasterImage")) self.partyAffectImageList.append(self.GetChild("TimeBonusImage")) self.partyAffectImageList.append(self.GetChild("RegenBonus")) self.partyAffectImageList.append(self.GetChild("IncreaseArea150")) self.partyAffectImageList.append(self.GetChild("IncreaseArea200")) self.stateButton.SetEvent(ui.__mem_func__(self.OnMouseLeftButtonDown)) except: import exception exception.Abort("PartyMemberInfoBoard.__LoadBoard.BindObject") self.__SetAffectsMouseEvent() self.__HideAllAffects() def Destroy(self): self.ClearDictionary() self.nameTextLine = None self.gauge = None self.stateButton = None self.partyAffectImageList = [] self.stateButtonDict = {} self.leaderButton = None self.attackerButton = None self.tankerButton = None self.Hide() def __SetAffectsMouseEvent(self): for i in xrange(len(self.partyAffectImageList)): self.partyAffectImageList[i].OnMouseOverIn = lambda selfArg = self, index = i: selfArg.OnAffectOverIn(index) for i in xrange(len(self.partyAffectImageList)): self.partyAffectImageList[i].OnMouseOverOut = lambda selfArg = self, index = i: selfArg.OnAffectOverOut(index) def __HideAllAffects(self): for img in self.partyAffectImageList: img.Hide() def __CreateAffectToolTip(self): affectToolTip = uiToolTip.ToolTip(220) affectToolTip.Hide() self.affectToolTip = affectToolTip def __CreateStateButton(self): for key, name in self.MEMBER_BUTTON_IMAGE_FILE_NAME_DICT.items(): if key == player.PARTY_STATE_LEADER: continue button = ui.Button() button.SetUpVisual(self.MEMBER_BUTTON_PATH + name + "_01.sub") button.SetOverVisual(self.MEMBER_BUTTON_PATH + name + "_02.sub") button.SetDownVisual(self.MEMBER_BUTTON_PATH + name + "_03.sub") button.Hide() self.stateButtonDict[key] = button for state, name in self.STATE_NAME_DICT.items(): button = self.stateButtonDict[state] button.SetToolTipText(name) button.SetEvent(ui.__mem_func__(self.OnSelectState), state) self.stateButtonDict[self.MEMBER_BUTTON_NORMAL].SetEvent(ui.__mem_func__(self.OnSelectState), -1) self.stateButtonDict[self.MEMBER_BUTTON_NORMAL].SetToolTipText(localeInfo.PARTY_SET_NORMAL) self.stateButtonDict[self.MEMBER_BUTTON_WARP].SetEvent(ui.__mem_func__(self.OnWarp)) self.stateButtonDict[self.MEMBER_BUTTON_WARP].SetToolTipText(localeInfo.PARTY_RECALL_MEMBER) self.stateButtonDict[self.MEMBER_BUTTON_EXPEL].SetToolTipText(localeInfo.TARGET_BUTTON_EXCLUDE) self.stateButtonDict[self.MEMBER_BUTTON_EXPEL].SetEvent(ui.__mem_func__(self.OnExpel)) def __GetPartySkillLevel(self): slotIndex = player.GetSkillSlotIndex(player.SKILL_INDEX_TONGSOL) skillGrade = player.GetSkillGrade(slotIndex) skillLevel = player.GetSkillLevel(slotIndex) return skillLevel + skillGrade*20 def __AppendStateButton(self, x, y, state): if state == self.state: button = self.stateButtonDict[self.MEMBER_BUTTON_NORMAL] else: button = self.stateButtonDict[state] button.SetPosition(x, y) button.Show() def __ShowStateButton(self): self.isShowStateButton = True (x, y) = self.GetGlobalPosition() xPos = x + 110 skillLevel = self.__GetPartySkillLevel() ## Tanker if skillLevel >= 10: self.__AppendStateButton(xPos, y, player.PARTY_STATE_ATTACKER) xPos += 23 ## Attacker if skillLevel >= 20: self.__AppendStateButton(xPos, y, player.PARTY_STATE_BERSERKER) xPos += 23 ## Tanker if skillLevel >= 20: self.__AppendStateButton(xPos, y, player.PARTY_STATE_TANKER) xPos += 23 ## Buffer if skillLevel >= 25: self.__AppendStateButton(xPos, y, player.PARTY_STATE_BUFFER) xPos += 23 ## Skill Master if skillLevel >= 35: self.__AppendStateButton(xPos, y, player.PARTY_STATE_SKILL_MASTER) xPos += 23 ## Defender if skillLevel >= 40: self.__AppendStateButton(xPos, y, player.PARTY_STATE_DEFENDER) xPos += 23 ## Warp #if skillLevel >= 35: # if self.stateButtonDict.has_key(self.MEMBER_BUTTON_WARP): # button = self.stateButtonDict[self.MEMBER_BUTTON_WARP] # button.SetPosition(xPos, y) # button.Show() # xPos += 23 ## Expel if self.stateButtonDict.has_key(self.MEMBER_BUTTON_EXPEL): button = self.stateButtonDict[self.MEMBER_BUTTON_EXPEL] button.SetPosition(xPos, y) button.Show() xPos += 23 def __HideStateButton(self): self.isShowStateButton = False for button in self.stateButtonDict.values(): button.Hide() def __GetAffectNumber(self, img): for i in xrange(self.partyAffectImageList): if img == self.partyAffectImageList[i]: return i return -1 def SetCharacterName(self, name): self.nameTextLine.SetText(name) def GetCharacterName(self): return self.nameTextLine.GetText() def SetCharacterPID(self, pid): self.pid = pid def SetCharacterVID(self, vid): self.vid = vid def GetCharacterPID(self): return self.pid def GetCharacterVID(self): return self.vid def SetCharacterHP(self, hpPercentage): hpPercentage = max(0, hpPercentage) self.gauge.SetPercentage(hpPercentage, 100) def SetCharacterState(self, state): if self.state == state: return self.state = state self.stateButton.Show() name = self.MEMBER_BUTTON_IMAGE_FILE_NAME_DICT[self.MEMBER_BUTTON_NORMAL] if self.MEMBER_BUTTON_IMAGE_FILE_NAME_DICT.has_key(state): name = self.MEMBER_BUTTON_IMAGE_FILE_NAME_DICT[state] self.stateButton.SetUpVisual(self.MEMBER_BUTTON_PATH + name + "_01.sub") self.stateButton.SetOverVisual(self.MEMBER_BUTTON_PATH + name + "_02.sub") self.stateButton.SetDownVisual(self.MEMBER_BUTTON_PATH + name + "_03.sub") def SetAffect(self, affectSlotIndex, affectValue): if affectSlotIndex >= len(self.partyAffectImageList): return if affectValue > 0: self.partyAffectImageList[affectSlotIndex].Show() else: self.partyAffectImageList[affectSlotIndex].Hide() self.affectValueDict[affectSlotIndex] = affectValue def Link(self): self.nameTextLine.SetPackedFontColor(self.LINK_COLOR) self.gauge.Show() def Unlink(self): self.vid = None self.nameTextLine.SetPackedFontColor(self.UNLINK_COLOR) self.gauge.Hide() self.__HideAllAffects() def OnSelectState(self, state): self.__HideStateButton() if state <= 0: net.SendPartySetStatePacket(self.pid, self.state, False) else: if self.state <= 0: net.SendPartySetStatePacket(self.pid, state, True) else: net.SendPartySetStatePacket(self.pid, self.state, False) net.SendPartySetStatePacket(self.pid, state, True) def OnWarp(self): self.__HideStateButton() if self.vid: net.SendPartyUseSkillPacket(self.PARTY_SKILL_WARP, self.vid) def OnExpel(self): self.__HideStateButton() if not self.pid: return net.SendPartyRemovePacket(self.pid) def OnMouseLeftButtonDown(self): if self.vid: player.SetTarget(self.vid) player.OpenCharacterMenu(self.vid) if mouseModule.mouseController.isAttached(): attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber() net.SendExchangeStartPacket(self.vid) net.SendExchangeItemAddPacket(attachedSlotPos, 0) mouseModule.mouseController.DeattachObject() return if player.IsPartyLeader(player.GetMainCharacterIndex()): if player.PARTY_STATE_LEADER != self.state: if self.isShowStateButton: self.__HideStateButton() else: self.__ShowStateButton() def OnMouseLeftButtonUp(self): if self.vid: player.SetTarget(self.vid) player.OpenCharacterMenu(self.vid) if mouseModule.mouseController.isAttached(): attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber() net.SendExchangeStartPacket(self.vid) net.SendExchangeItemAddPacket(attachedSlotPos, 0) mouseModule.mouseController.DeattachObject() def OnMouseRightButtonDown(self): self.OnMouseLeftButtonDown() def OnAffectOverIn(self, index): if not self.AFFECT_STRING_DICT.has_key(index): return if not self.affectValueDict.has_key(index): return (x, y) = self.GetGlobalPosition() self.affectToolTip.ClearToolTip() self.affectToolTip.SetTitle(self.AFFECT_STRING_DICT[index](self.affectValueDict[index])) self.affectToolTip.SetToolTipPosition(x + index*12, y + 11) self.affectToolTip.ShowToolTip() def OnAffectOverOut(self, index): self.affectToolTip.HideToolTip()
"PASERR3" : localeInfo.LOGIN_FAILURE_PASERR3, "PASERR4" : localeInfo.LOGIN_FAILURE_PASERR4, "PASERR5" : localeInfo.LOGIN_FAILURE_PASERR5, } elif localeInfo.IsYMIR() or localeInfo.IsCHEONMA(): FULL_BACK_IMAGE = TRUE elif localeInfo.IsHONGKONG(): FULL_BACK_IMAGE = TRUE RUNUP_MATRIX_AUTH = TRUE PASSPOD_MSG_DICT = { "NOTELE" : localeInfo.LOGIN_FAILURE_NOTELEBLOCK, } elif localeInfo.IsJAPAN(): FULL_BACK_IMAGE = TRUE elif localeInfo.IsBRAZIL(): LOGIN_DELAY_SEC = 60.0 def IsFullBackImage(): global FULL_BACK_IMAGE return FULL_BACK_IMAGE def IsLoginDelay(): global LOGIN_DELAY_SEC if LOGIN_DELAY_SEC > 0.0: return TRUE else: return FALSE
def RefreshCharacter(self): if self.isLoaded==0: return ## Name try: characterName = player.GetName() guildName = player.GetGuildName() self.characterNameValue.SetText(characterName) self.guildNameValue.SetText(guildName) if not guildName: if localeInfo.IsARABIC(): self.characterNameSlot.SetPosition(190, 34) else: self.characterNameSlot.SetPosition(109, 34) self.guildNameSlot.Hide() else: if localeInfo.IsJAPAN(): self.characterNameSlot.SetPosition(143, 34) else: self.characterNameSlot.SetPosition(153, 34) self.guildNameSlot.Show() except: import exception exception.Abort("CharacterWindow.RefreshCharacter.BindObject") race = net.GetMainActorRace() group = net.GetMainActorSkillGroup() empire = net.GetMainActorEmpire() ## Job Text job = chr.RaceToJob(race) self.__SetJobText(job, group) ## FaceImage try: faceImageName = FACE_IMAGE_DICT[race] try: self.faceImage.LoadImage(faceImageName) except: print "CharacterWindow.RefreshCharacter(race=%d, faceImageName=%s)" % (race, faceImageName) self.faceImage.Hide() except KeyError: self.faceImage.Hide() ## GroupName self.__SetSkillGroupName(race, group) ## Skill if 0 == group: self.__SelectSkillGroup(0) else: self.__SetSkillSlotData(race, group, empire) if self.__CanUseHorseSkill(): self.__SelectSkillGroup(0)
import localeInfo import uiToolTip import constInfo import emotion import chr SHOW_ONLY_ACTIVE_SKILL = False SHOW_LIMIT_SUPPORT_SKILL_LIST = [] HIDE_SUPPORT_SKILL_POINT = False if localeInfo.IsYMIR(): SHOW_LIMIT_SUPPORT_SKILL_LIST = [121, 122, 123, 124, 126, 127, 129, 128, 131, 137, 138, 139, 140,141,142] if not localeInfo.IsCHEONMA(): HIDE_SUPPORT_SKILL_POINT = True SHOW_LIMIT_SUPPORT_SKILL_LIST = [121, 122, 123, 124, 126, 127, 129, 128, 131, 137, 138, 139, 140,141,142] elif localeInfo.IsJAPAN() or (localeInfo.IsEUROPE() and app.GetLocalePath() != "locale/ca") and (localeInfo.IsEUROPE() and app.GetLocalePath() != "locale/br"): HIDE_SUPPORT_SKILL_POINT = True SHOW_LIMIT_SUPPORT_SKILL_LIST = [121, 122, 123, 124, 126, 127, 129, 128, 131, 137, 138, 139, 140] else: HIDE_SUPPORT_SKILL_POINT = True FACE_IMAGE_DICT = { playerSettingModule.RACE_WARRIOR_M : "icon/face/warrior_m.tga", playerSettingModule.RACE_WARRIOR_W : "icon/face/warrior_w.tga", playerSettingModule.RACE_ASSASSIN_M : "icon/face/assassin_m.tga", playerSettingModule.RACE_ASSASSIN_W : "icon/face/assassin_w.tga", playerSettingModule.RACE_SURA_M : "icon/face/sura_m.tga", playerSettingModule.RACE_SURA_W : "icon/face/sura_w.tga", playerSettingModule.RACE_SHAMAN_M : "icon/face/shaman_m.tga", playerSettingModule.RACE_SHAMAN_W : "icon/face/shaman_w.tga", }