activity.py (2120B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\industry\activity.py 2 import math 3 import operator 4 import immutable 5 import industry 6 import structures 7 from functools import reduce 8 9 class Activity(industry.Base): 10 __metaclass__ = immutable.Immutable 11 REQUIRES_ORIGINAL = False 12 REQUIRES_COPY = False 13 MAX_RUNS = industry.MAX_RUNS_HARD_CAP 14 15 def __new__(cls, *args, **kwargs): 16 obj = industry.Base.__new__(cls) 17 obj.time = 0 18 obj.materials = [] 19 obj.skills = [] 20 obj.products = [] 21 return obj 22 23 def job_modifiers(self, job): 24 return [] 25 26 def job_probability(self, job): 27 return 1.0 28 29 def job_time(self, job): 30 return self.time * job.runs 31 32 def job_cost(self, job): 33 return 0 34 35 def job_max_runs(self, job): 36 modifiers = [ modifier.amount for modifier in job.input_modifiers if isinstance(modifier, industry.TimeModifier) and modifier.activity in (None, job.activityID) ] 37 return min(int(math.ceil(industry.MAX_RUN_LENGTH / float(self.time) / reduce(operator.mul, modifiers, 1.0))), self.MAX_RUNS) 38 39 def job_material_runs(self, job): 40 return job.runs 41 42 def job_output_products(self, job): 43 return [] 44 45 def job_output_extras(self, job): 46 return [] 47 48 def job_validate(self, job): 49 pass 50 51 def activity_tax(self, facility): 52 if facility.tax is not None: 53 return facility.tax 54 typeID = None 55 if self.activityID in (industry.MANUFACTURING, industry.REACTION): 56 typeID = self.products[0].typeID 57 serviceID = structures.GetServiceID(self.activityID, typeID) 58 return facility.serviceAccess.get(serviceID, 0) or 0 59 60 def is_compatible(self, blueprint): 61 if self.REQUIRES_ORIGINAL is True and not blueprint.original: 62 return False 63 if self.REQUIRES_COPY is True and blueprint.original: 64 return False 65 return True 66 67 def _get_activityID(self): 68 return industry.ACTIVITY_IDS[self.__class__] 69 70 activityID = property(_get_activityID)