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

purchase.py (2462B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\characterskills\common\purchase.py
      2 from future.utils import raise_
      3 import characterskills
      4 import eveexceptions
      5 import evetypes
      6 import globalConfig
      7 import logging
      8 DIRECT_PURCHASE_TAX_RATE = 0.3
      9 
     10 def is_skill_purchase_enabled(macho_net_service):
     11     return globalConfig.IsSkillPurchaseEnabled(macho_net_service)
     12 
     13 
     14 def check_skill_purchase_enabled(macho_net_service):
     15     if not is_skill_purchase_enabled(macho_net_service):
     16         raise eveexceptions.UserError('SkillPurchaseDisabled')
     17 
     18 
     19 def get_direct_purchase_price(skill_type_id):
     20     if not evetypes.IsSkill(skill_type_id):
     21         raise characterskills.TypeIsNotSkillError(skill_type_id)
     22     if not is_available_for_purchase(skill_type_id):
     23         raise characterskills.SkillUnavailableForPurchaseError(skill_type_id)
     24     base_price = evetypes.GetBasePrice(skill_type_id)
     25     return base_price * (1.0 + DIRECT_PURCHASE_TAX_RATE)
     26 
     27 
     28 def is_available_for_purchase(skill_type_id):
     29     return evetypes.IsSkillAvailableForPurchase(skill_type_id)
     30 
     31 
     32 def handle_skill_purchase_error(error, traceback):
     33     if isinstance(error, eveexceptions.UserError):
     34         raise_(error, None, traceback)
     35     if isinstance(error, characterskills.TypeIsNotSkillError):
     36         key = 'ItemNotASkill'
     37         args = {'skillName': error.type_id}
     38     elif isinstance(error, characterskills.NotEnoughMoneyError):
     39         key = 'NotEnoughMoney'
     40         args = {'balance': error.current_balance,
     41          'amount': error.required_amount}
     42     elif isinstance(error, characterskills.SkillAlreadyInjectedError):
     43         key = 'CharacterAlreadyKnowsSkill'
     44         args = {'skillName': error.type_id}
     45     elif isinstance(error, characterskills.SkillUnavailableForPurchaseError):
     46         key = 'SkillUnavailableForPurchase'
     47         args = {'type': error.type_id}
     48     else:
     49         key = 'SkillPurchaseUnknownError'
     50         args = None
     51         logging.exception('Unknown exception caught while attempting to purchase skills')
     52     raise_(eveexceptions.UserError(key, args), None, traceback)
     53 
     54 
     55 class SkillPurchaseValidator(characterskills.SkillPurchaseValidator):
     56 
     57     def get_skill_price(self, skill_type_id):
     58         return get_direct_purchase_price(skill_type_id)
     59 
     60     def is_skill(self, type_id):
     61         return evetypes.IsSkill(type_id)
     62 
     63     def is_skill_available_for_purchase(self, skill_type_id):
     64         return is_available_for_purchase(skill_type_id)