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)