corpse.py (3925B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\environment\spaceObject\corpse.py 2 from eve.client.script.environment.spaceObject.spaceObject import SpaceObject 3 from eve.client.script.paperDoll.commonClientFunctions import GetSkinTypeOrToneColorVariation 4 import eve.common.lib.appConst as const 5 import evegraphics.utils as gfxutils 6 import random 7 from eve.client.script.environment.sofService import GetSofService 8 GENDER_FEMALE = 0 9 GENDER_MALE = 1 10 COLOR_LIGHT = 0 11 COLOR_MID = 1 12 COLOR_DARK = 2 13 corpseColorVariations = [COLOR_DARK, COLOR_MID, COLOR_LIGHT] 14 CORPSE_COLOR_COUNT = len(corpseColorVariations) 15 CORPSE_VARIATION_COUNT = 4 16 corpseGraphicsIDs = {GENDER_MALE: {COLOR_DARK: [20371, 17 20375, 18 20378, 19 20381], 20 COLOR_MID: [20373, 21 20376, 22 20379, 23 20382], 24 COLOR_LIGHT: [20374, 25 20377, 26 20380, 27 20383]}, 28 GENDER_FEMALE: {COLOR_DARK: [20358, 29 20361, 30 20365, 31 20368], 32 COLOR_MID: [20359, 33 20362, 34 20366, 35 20369], 36 COLOR_LIGHT: [20360, 37 20363, 38 20367, 39 20370]}} 40 skinToColorMapping = {'c0': COLOR_LIGHT, 41 'c1': COLOR_LIGHT, 42 'c2': COLOR_LIGHT, 43 'c3': COLOR_LIGHT, 44 'c4': COLOR_LIGHT, 45 'c5': COLOR_LIGHT, 46 'c6': COLOR_LIGHT, 47 'c7': COLOR_LIGHT, 48 'c8': COLOR_LIGHT, 49 'c9': COLOR_MID, 50 'c10': COLOR_MID, 51 'c11': COLOR_MID, 52 'c12': COLOR_MID, 53 'c13': COLOR_DARK, 54 'c14': COLOR_DARK, 55 'civire': COLOR_LIGHT, 56 'deteis': COLOR_LIGHT, 57 'achura': COLOR_LIGHT, 58 'sebiestor': COLOR_LIGHT, 59 'vherokior': COLOR_LIGHT, 60 'khanid': COLOR_LIGHT, 61 'amarr': COLOR_LIGHT, 62 'gallente': COLOR_LIGHT, 63 'jinmei': COLOR_LIGHT, 64 'intaki': COLOR_LIGHT, 65 'nikunni': COLOR_MID, 66 'brutor': COLOR_DARK} 67 68 def GetCorpseColor(charID): 69 dnaRow = sm.RemoteSvc('paperDollServer').GetPaperDollData(charID) 70 skin = None 71 if dnaRow is not None: 72 skin = GetSkinTypeOrToneColorVariation(dnaRow) 73 if skin is None: 74 r = random.Random() 75 return r.choice(corpseColorVariations) 76 skin = skin.split('_')[0] 77 if skin in skinToColorMapping: 78 return skinToColorMapping[skin] 79 80 81 def GetCorpseVariation(): 82 r = random.Random() 83 return r.randrange(0, CORPSE_VARIATION_COUNT) 84 85 86 def GetCorpseGraphicsID(gender, color, variation): 87 return corpseGraphicsIDs[gender][color][variation] 88 89 90 def GetCorpseModel(gender, color, variation): 91 gid = GetCorpseGraphicsID(gender, color, variation) 92 dna = gfxutils.BuildSOFDNAFromGraphicID(gid) 93 sof = GetSofService().spaceObjectFactory 94 return sof.BuildFromDNA(dna) 95 96 97 def GetCorpseModelForCharacter(charID, variation = None): 98 gender = GENDER_FEMALE 99 if cfg.eveowners.Get(charID).gender: 100 gender = GENDER_MALE 101 color = GetCorpseColor(charID) 102 if variation is None: 103 variation = GetCorpseVariation() 104 return GetCorpseModel(gender, color, variation) 105 106 107 def GetRandomCorpseModel(gender, seed = None): 108 r = random.Random(seed) 109 corpseVariation = r.randrange(0, CORPSE_VARIATION_COUNT) 110 color = r.choice(corpseColorVariations) 111 return GetCorpseModel(gender, color, corpseVariation) 112 113 114 class Corpse(SpaceObject): 115 116 def LoadModel(self, fileName = None, loadedModel = None): 117 gender = GENDER_FEMALE 118 if self.typeID != const.typeCorpseFemale: 119 gender = GENDER_MALE 120 if loadedModel is None: 121 loadedModel = GetRandomCorpseModel(gender, self.id) 122 SpaceObject.LoadModel(self, fileName, loadedModel)