races.py (3181B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\characterdata\races.py 2 from caching import Memoize 3 from characterskills import GetSPForLevelRaw 4 from dogma.const import attributeSkillTimeConstant 5 from dogma.data import get_type_attribute 6 from eve.common.lib.appConst import raceAmarr 7 from eve.common.lib.appConst import raceCaldari 8 from eve.common.lib.appConst import raceGallente 9 from eve.common.lib.appConst import raceMinmatar 10 from fsdBuiltData.common.base import BuiltDataLoader 11 try: 12 import racesLoader 13 except ImportError: 14 racesLoader = None 15 16 CHARACTER_CREATION_RACE_IDS = [raceCaldari, 17 raceGallente, 18 raceMinmatar, 19 raceAmarr] 20 21 class RacesLoader(BuiltDataLoader): 22 __resBuiltFile__ = 'res:/staticData/races.fsdbinary' 23 __clientAutobuildBuiltFile__ = 'eve/autobuild/staticData/client/races.fsdbinary' 24 __serverAutobuildBuiltFile__ = 'eve/autobuild/staticData/server/races.fsdbinary' 25 __loader__ = racesLoader 26 27 28 def _get_races(): 29 return RacesLoader.GetData() 30 31 32 def iter_races(): 33 for race_id, race_data in _get_races().iteritems(): 34 yield (race_id, race_data) 35 36 37 def iter_race_ids(): 38 for race_id in _get_races().iterkeys(): 39 yield race_id 40 41 42 def get_race(race_id): 43 return _get_races()[race_id] 44 45 46 def get_race_id_name_mapping(language_id = None): 47 return {race_id:get_race_name(race_data.nameID, race_data, language_id) for race_id, race_data in iter_races()} 48 49 50 def iter_race_id_name_mapping(language_id = None): 51 for race_id, race_name in get_race_id_name_mapping(language_id).iteritems(): 52 yield (race_id, race_name) 53 54 55 @Memoize 56 def get_newbie_skills_for_race(race_id): 57 skills = get_race_skills(race_id, {}) 58 newbie_skills = {} 59 for skill_type_id, levels in skills.iteritems(): 60 type_attribute = get_type_attribute(skill_type_id, attributeSkillTimeConstant) 61 if type_attribute: 62 skill_points = GetSPForLevelRaw(type_attribute, levels) 63 newbie_skills[skill_type_id] = {'skillPoints': skill_points, 64 'skillLevel': levels} 65 66 return newbie_skills 67 68 69 def get_newbie_skill_points_for_race(race_id): 70 newbie_skills = get_newbie_skills_for_race(race_id) 71 return {skill_type_id:newbie_skill['skillPoints'] for skill_type_id, newbie_skill in newbie_skills.iteritems()} 72 73 74 def race_exists(race_id): 75 return race_id in _get_races() 76 77 78 def get_race_skills(race_id, default = None): 79 race = get_race(race_id) 80 return getattr(race, 'skills', default) 81 82 83 def get_race_name(race_id, race = None, language_id = None): 84 if not race: 85 race = get_race(race_id) 86 return _get_message(race.nameID, language_id) 87 88 89 def get_race_description(race_id, race = None): 90 if not race: 91 race = get_race(race_id) 92 return _get_message(race.descriptionID) 93 94 95 def get_race_name_id(race_id): 96 return get_race(race_id).nameID 97 98 99 def get_race_description_id(race_id): 100 return get_race(race_id).descriptionID 101 102 103 def _get_message(message_id, language_id = None): 104 import localization 105 return localization.GetByMessageID(message_id, language_id) 106 107 108 def get_ship_type_id(race_id): 109 return get_race(race_id).shipTypeID