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

itemObject.py (3614B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\tooltip\itemObject.py
      2 import evetypes
      3 import menucheckers
      4 import inventorycommon.const as invconst
      5 from omega.client.clone_grade_svc import get_clone_grade_svc
      6 
      7 class ItemObject(object):
      8 
      9     def __init__(self, itemTypeID, item = None):
     10         self.itemTypeID = itemTypeID
     11         self.item = item
     12         self.skillSvc = sm.GetService('skills')
     13         self.isMissingRarePrereq = None
     14 
     15     def NeedsOmegaUpgrade(self):
     16         isOmegaRestricted = get_clone_grade_svc().is_requirements_restricted(self.itemTypeID)
     17         isUnlockedWithExpertSystem = self.skillSvc.IsUnlockedWithExpertSystem(self.itemTypeID)
     18         if isOmegaRestricted and not isUnlockedWithExpertSystem:
     19             return True
     20         isSkill = evetypes.GetCategoryID(self.itemTypeID) == invconst.categorySkill
     21         if not isSkill:
     22             return False
     23         level = self.skillSvc.MySkillLevelIncludingQueued(self.itemTypeID)
     24         if get_clone_grade_svc().is_skill_level_restricted(self.itemTypeID, level):
     25             return True
     26         if level < 5 and get_clone_grade_svc().is_skill_level_restricted(self.itemTypeID, level + 1):
     27             return True
     28         return False
     29 
     30     def CanInjectSkill(self):
     31         if self.item is None:
     32             return False
     33         checker = menucheckers.ItemChecker(self.item)
     34         return checker.OfferInjectSkill()
     35 
     36     def CanActivateSkinLicense(self):
     37         if self.item is None:
     38             return False
     39         checker = menucheckers.ItemChecker(self.item)
     40         return checker.OfferActivateShipSkinLicense()
     41 
     42     def CanApplySkin(self):
     43         if self.item is None:
     44             return False
     45         checker = menucheckers.ItemChecker(self.item)
     46         return checker.IsSkinForCurrentShip()
     47 
     48     def CanConsumeSkinDesignComponent(self):
     49         if self.item is None:
     50             return False
     51         checker = menucheckers.ItemChecker(self.item)
     52         return checker.OfferConsumeShipSkinDesignComponent()
     53 
     54     def GetMissingSkillBooks(self):
     55         if self.skillSvc.IsSkillRequirementMet(self.itemTypeID):
     56             return []
     57         missingSkills = self.skillSvc.GetSkillsMissingToUseItemRecursive(self.itemTypeID)
     58         missing = [ typeID for typeID in missingSkills.iterkeys() if self.skillSvc.GetSkillIncludingLapsed(typeID) is None ]
     59         if evetypes.GetCategoryID(self.itemTypeID) == invconst.categorySkill:
     60             if self.skillSvc.GetSkillIncludingLapsed(self.itemTypeID) is None:
     61                 missing.append(self.itemTypeID)
     62         return missing
     63 
     64     def CanTrainNow(self):
     65         if not evetypes.IsPublished(self.itemTypeID):
     66             return False
     67         isRequirementsMet = sm.GetService('skills').IsSkillRequirementMetIncludingSkillQueue(self.itemTypeID)
     68         if not isRequirementsMet:
     69             return True
     70         return self.IsSkill() and sm.GetService('skillqueue').CheckCanAppendSkill(self.itemTypeID, check=True)
     71 
     72     def IsRareSkill(self):
     73         if not self.IsSkill():
     74             return False
     75         return not evetypes.IsSkillAvailableForPurchase(self.itemTypeID)
     76 
     77     def IsMissingRarePrereqs(self):
     78         if self.isMissingRarePrereq is not None:
     79             return self.isMissingRarePrereq
     80         missingSkillbooks = self.GetMissingSkillBooks()
     81         self.isMissingRarePrereq = any((not evetypes.IsSkillAvailableForPurchase(typeID) for typeID in missingSkillbooks))
     82         return self.isMissingRarePrereq
     83 
     84     def IsSkill(self):
     85         return evetypes.GetCategoryID(self.itemTypeID) == invconst.categorySkill