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

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