scannerProbe.py (2979B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\environment\spaceObject\scannerProbe.py 2 from eve.client.script.environment.spaceObject.spaceObject import SpaceObject 3 import blue 4 import uthread 5 import trinity 6 import random 7 8 class ScannerProbe(SpaceObject): 9 10 def __init__(self): 11 SpaceObject.__init__(self) 12 13 def Release(self, origin = None): 14 SpaceObject.Release(self) 15 16 def FakeWarp(self): 17 blue.pyos.synchro.SleepSim(random.randint(100, 1000)) 18 url = 'res:/FisFX/Module/ProbeWarp_Tr_T1a.red' 19 gfx = trinity.Load(url) 20 if gfx.__bluetype__ != 'trinity.EveRootTransform': 21 root = trinity.EveRootTransform() 22 root.children.append(gfx) 23 root.name = url 24 gfx = root 25 gfx.translationCurve = self 26 scene = self.spaceMgr.GetScene() 27 if scene is not None: 28 scene.objects.append(gfx) 29 uthread.pool('ScannerProbe::HideBall', self.HideBall) 30 uthread.pool('ScannerProbe::DelayedRemove', self.DelayedRemove, 3000, self.model) 31 uthread.pool('ScannerProbe::DelayedRemove', self.DelayedRemove, 3000, gfx) 32 33 def DelayedRemove(self, duration, gfx): 34 if gfx is None: 35 return 36 if duration != 0: 37 blue.pyos.synchro.SleepSim(duration) 38 if hasattr(gfx, 'translationCurve'): 39 gfx.translationCurve = None 40 scene = self.spaceMgr.GetScene() 41 if scene is not None: 42 scene.objects.fremove(gfx) 43 44 def HideBall(self): 45 blue.pyos.synchro.SleepSim(500) 46 if self.model: 47 self.model.display = 0 48 49 def OnSlimItemUpdated(self, newItem): 50 if not getattr(newItem, 'warpingAway', 0): 51 return 52 uthread.pool('ScanProbe::FakeWarp', self.FakeWarp) 53 54 def Assemble(self): 55 SpaceObject.Assemble(self) 56 warpDisruptionStartTime = self.typeData['slimItem'].warpDisruptionStartTime 57 if warpDisruptionStartTime is None: 58 return 59 godmaStateManager = self.sm.GetService('godma').GetStateManager() 60 godmaType = godmaStateManager.GetType(self.typeID) 61 effectRadius = godmaType.warpScrambleRange 62 if effectRadius: 63 emitter = self.GetNamedAudioEmitterFromObservers('forcefield_audio') 64 if emitter: 65 emitter.SetAttenuationScalingFactor(effectRadius) 66 scale = self.model.scaling[0] / 20000.0 * effectRadius 67 self.model.scaling = (scale, scale, scale) 68 timeNow = blue.os.GetSimTime() 69 if blue.os.TimeDiffInMs(warpDisruptionStartTime, timeNow) < 10000.0: 70 for cs in self.model.curveSets: 71 cs.Play() 72 73 def Explode(self): 74 if self.exploded: 75 return 0 76 slimItem = self.typeData.get('slimItem') 77 self.sm.ScatterEvent('OnObjectExplode', slimItem.typeID, slimItem.itemID) 78 self.exploded = True 79 return 0