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

ancestries.py (2470B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\characterdata\ancestries.py
      2 import random
      3 from fsdBuiltData.common.base import BuiltDataLoader
      4 try:
      5     import ancestriesLoader
      6 except ImportError:
      7     ancestriesLoader = None
      8 
      9 class AncestriesLoader(BuiltDataLoader):
     10     __resBuiltFile__ = 'res:/staticData/ancestries.fsdbinary'
     11     __clientAutobuildBuiltFile__ = 'eve/autobuild/staticData/client/ancestries.fsdbinary'
     12     __serverAutobuildBuiltFile__ = 'eve/autobuild/staticData/server/ancestries.fsdbinary'
     13     __loader__ = ancestriesLoader
     14 
     15 
     16 def get_ancestries():
     17     return AncestriesLoader.GetData()
     18 
     19 
     20 def iter_ancestries():
     21     for ancestry_id, data in get_ancestries().iteritems():
     22         yield (ancestry_id, data)
     23 
     24 
     25 def get_ancestry(ancestry_id):
     26     return get_ancestries()[ancestry_id]
     27 
     28 
     29 def get_ancestry_name(ancestry_id, ancestry = None, language_id = None):
     30     if not ancestry:
     31         ancestry = get_ancestry(ancestry_id)
     32     return _get_message(ancestry.nameID, language_id)
     33 
     34 
     35 def iter_ancestry_id_name_mapping():
     36     for ancestry_id, ancestry_name in get_ancestry_id_name_mapping().iteritems():
     37         yield (ancestry_id, ancestry_name)
     38 
     39 
     40 def get_ancestry_id_name_mapping(bloodline_id = None):
     41     return {ancestry_id:get_ancestry_name(ancestry_id, ancestry) for ancestry_id, ancestry in iter_ancestries() if not bloodline_id or ancestry.bloodlineID == bloodline_id}
     42 
     43 
     44 def get_ancestries_for_bloodline(bloodline_id, shuffle = False):
     45     ancestries = [ (ancestry_id, ancestry) for ancestry_id, ancestry in iter_ancestries() if ancestry.bloodlineID == bloodline_id ]
     46     if ancestries and shuffle:
     47         random.shuffle(ancestries)
     48     return ancestries
     49 
     50 
     51 def get_ancestry_ids_for_bloodline(bloodline_id = None):
     52     return [ ancestry_id for ancestry_id, ancestry in iter_ancestries() if not bloodline_id or ancestry.bloodlineID == bloodline_id ]
     53 
     54 
     55 def get_random_ancestry_id(bloodline_id = None):
     56     return random.choice(get_ancestry_ids_for_bloodline(bloodline_id))
     57 
     58 
     59 def get_ancestry_name_id(ancestry_id):
     60     return get_ancestry(ancestry_id).nameID
     61 
     62 
     63 def get_ancestry_description(ancestry_id, ancestry = None, language_id = None):
     64     if not ancestry:
     65         ancestry = get_ancestry(ancestry_id)
     66     return _get_message(ancestry.descriptionID, language_id)
     67 
     68 
     69 def _get_message(message_id, language_id = None):
     70     import localization
     71     return localization.GetByMessageID(message_id, language_id=language_id)