station.py (3961B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\environment\spaceObject\station.py 2 from eve.client.script.environment.spaceObject.spaceObject import SpaceObject 3 import evegraphics.utils as gfxutils 4 import uthread2 5 from eve.common.script.sys.idCheckers import IsTriglavianSystem 6 from stackless_response_router.exceptions import TimeoutException 7 8 class Station(SpaceObject): 9 __notifyevents__ = ['OnSlimItemUpdated'] 10 11 def __init__(self): 12 SpaceObject.__init__(self) 13 self.OnSlimItemUpdated(self.typeData.get('slimItem')) 14 sm.RegisterNotify(self) 15 16 def GetDNA(self): 17 materialSetID = self.typeData.get('slimItem').skinMaterialSetID 18 return gfxutils.BuildSOFDNAFromGraphicID(self.typeData.get('graphicID'), materialSetID=materialSetID) 19 20 def Assemble(self): 21 super(Station, self).Assemble() 22 if hasattr(self.model, 'ChainAnimationEx'): 23 self.model.ChainAnimationEx('NormalLoop', 0, 0, 1.0) 24 self.SetupAmbientAudio() 25 self._SetAudioVariables() 26 if IsTriglavianSystem(session.solarsystemid): 27 self.TriggerStateObject('triglavianOwned') 28 self.SetStaticRotation() 29 uthread2.StartTasklet(self._SetCorruptionAndSuppression) 30 31 def _SetAudioVariables(self): 32 if self.model: 33 races = ['amarr', 34 'gallente', 35 'caldari', 36 'minmatar'] 37 race = self.model.dna.split(':')[2] 38 specialStationNames = ['60008494', 39 '60004588', 40 '60011866', 41 '60005686'] 42 if self.model.name in specialStationNames: 43 specialStationValue = float(specialStationNames.index(self.model.name) + 1) 44 else: 45 specialStationValue = 0.0 46 if race in races: 47 raceValue = races.index(race) + 1 48 else: 49 raceValue = 0 50 self.model.SetControllerVariable('boundingSphereRadius', self.model.boundingSphereRadius) 51 self.model.SetControllerVariable('race', raceValue) 52 self.model.SetControllerVariable('specialStation', specialStationValue) 53 54 def _SetCorruptionAndSuppression(self): 55 if self.model is None: 56 return 57 try: 58 css = sm.GetService('corruptionSuppressionSvc') 59 if css is not None and hasattr(session, 'solarsystemid'): 60 corruptionStage, suppressionStage = (0, 0) 61 maximumSuppressionStages = max(len(css.GetSuppressionStages()), 5) 62 maximumCorruptionStages = max(len(css.GetCorruptionStages()), 5) 63 corruptionStateData = css.GetCurrentSystemCorruption_Cached() 64 if corruptionStateData is not None: 65 corruptionStage = corruptionStateData.stage or 0 66 suppressionStateData = css.GetCurrentSystemSuppression_Cached() 67 if suppressionStateData is not None: 68 suppressionStage = suppressionStateData.stage or 0 69 suppression = float(suppressionStage) / float(maximumSuppressionStages) 70 corruption = float(corruptionStage) / float(maximumCorruptionStages) 71 self.model.SetControllerVariable('suppression', suppression) 72 self.model.SetControllerVariable('corruption', corruption) 73 except TimeoutException: 74 self.logger.debug('Station._SetCorruptionAndSuppression corruptionSuppressionSvc timeout') 75 76 def OnSlimItemUpdated(self, item): 77 celestialEffect = getattr(item, 'celestialEffect', None) 78 if celestialEffect is not None: 79 effectGuid, graphicInfo = celestialEffect 80 self.logger.debug('Station.OnSlimItemUpdated found celestialEffect %s %s', effectGuid, graphicInfo) 81 sm.ScatterEvent('OnSpecialFX', self.id, None, None, None, None, effectGuid, False, 1, True, graphicInfo=graphicInfo)