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)