util.py (2667B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\crimewatch\util.py 2 import collections 3 import hashlib 4 import math 5 import evetypes 6 from eve.common.lib import appConst as const 7 from inventorycommon.const import categoryDrone, categoryFighter 8 try: 9 from carbon.common.script.sys.basesession import FindSessions 10 except ImportError: 11 FindSession = lambda x, y: None 12 13 def GetShipIDForCharID(charID): 14 sessions = FindSessions('charid', [charID]) 15 if sessions: 16 return sessions[0].shipid 17 18 19 def GetAggressorIdFromEffectData(effect_key, effect_info): 20 category_id = evetypes.GetCategoryID(effect_info.moduleTypeID) 21 source_owner_id = effect_info.sourceOwnerID 22 aggressor_id = effect_key.shipID 23 return GetAggressorId(category_id, source_owner_id, aggressor_id) 24 25 26 def GetAggressorId(category_id, source_owner_id, aggressor_id): 27 if category_id in (categoryDrone, categoryFighter): 28 ship_id = GetShipIDForCharID(source_owner_id) 29 if ship_id: 30 return ship_id 31 return aggressor_id 32 33 34 def CalculateTagRequirementsForSecIncrease(startSecStatus, requestedSecStatus): 35 if not const.characterSecurityStatusMin < requestedSecStatus <= const.characterSecurityStatusMax: 36 raise RuntimeError('CalculateTagRequirementsForSecIncrease called with out-of-range requestedSecStatus', requestedSecStatus) 37 if requestedSecStatus <= startSecStatus: 38 raise RuntimeError('CalculateTagRequirementsForSecIncrease: requestedSecStatus must be higher than startSecStatus', requestedSecStatus, startSecStatus) 39 requiredTags = collections.OrderedDict() 40 secStatus = startSecStatus 41 while secStatus < requestedSecStatus: 42 for tagTypeID, (minSecStatus, maxSecStatus) in const.securityLevelsPerTagType.iteritems(): 43 if minSecStatus <= secStatus < maxSecStatus: 44 numTagsRequired = int(math.ceil((min(requestedSecStatus, maxSecStatus) - secStatus) / const.securityGainPerTag)) 45 requiredTags[tagTypeID] = numTagsRequired 46 secStatus += numTagsRequired * const.securityGainPerTag 47 break 48 else: 49 raise RuntimeError('CalculateTagRequirementsForSecIncrease: No tags available for reaching requestedSecStatus', requestedSecStatus, secStatus, startSecStatus) 50 51 return requiredTags 52 53 54 def IsItemFreeForAggression(targetGroupID): 55 return targetGroupID in const.targetGroupsWithNoPenalties 56 57 58 def GetKillReportHashValue(kill): 59 string = '%s%s%s%s' % (kill.victimCharacterID, 60 kill.finalCharacterID, 61 kill.victimShipTypeID, 62 kill.killTime) 63 return hashlib.sha1(string).hexdigest()