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

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