NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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)