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

validator.py (3987B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\abyss\client\validator.py
      2 from abyss.error import Error
      3 from abyss.common.validator import BaseValidator
      4 import blue
      5 import dogma.const
      6 from eve.common.lib import appConst
      7 
      8 class ClientValidator(BaseValidator):
      9 
     10     def __init__(self, game_mode, gate_id = None, key = None, type_id = None):
     11         super(ClientValidator, self).__init__(game_mode)
     12         self._is_cloaking = False
     13         self._is_invulnerable = self._is_invulnerable_timer_active()
     14         self._type_id = type_id
     15         self._key = key
     16         self._gate_id = gate_id
     17 
     18     def set_cloaking(self, is_cloaking):
     19         self._is_cloaking = is_cloaking
     20 
     21     def set_invulnerable(self, is_invulnerable):
     22         self._is_invulnerable = is_invulnerable
     23 
     24     def raise_errors(self):
     25         raise Error(self._errors)
     26 
     27     def get_session(self):
     28         return session
     29 
     30     def get_ship_item(self):
     31         dogmaLocation = sm.GetService('clientDogmaIM').GetDogmaLocation()
     32         while dogmaLocation.IsItemLoading(session.shipid):
     33             blue.synchro.Yield()
     34 
     35         try:
     36             return dogmaLocation.GetDogmaItem(session.shipid)
     37         except KeyError:
     38             raise Error([(Error.SHIP_NOT_FOUND, ())])
     39 
     40     def get_solar_system_security_level(self):
     41         return sm.GetService('securitySvc').get_modified_security_level(self.get_session().solarsystemid2)
     42 
     43     def is_cloaked(self):
     44         ship_ball = sm.GetService('michelle').GetBall(session.shipid)
     45         is_cloaked = ship_ball is not None and ship_ball.isCloaked
     46         return self._is_cloaking or is_cloaked
     47 
     48     def is_invulnerable(self):
     49         if self.is_demo_filament():
     50             return False
     51         return self._is_invulnerable
     52 
     53     def is_in_banned_system(self):
     54         return False
     55 
     56     def is_in_active_encounter(self):
     57         return False
     58 
     59     def is_in_force_field(self):
     60         return False
     61 
     62     def is_pvp_timer_active(self):
     63         state, timeout = sm.GetService('crimewatchSvc').GetPvpTimer()
     64         return state != appConst.pvpTimerStateIdle
     65 
     66     def is_self_destructing(self):
     67         slimItem = sm.GetService('michelle').GetItem(session.shipid)
     68         return getattr(slimItem, 'selfDestructTime', None) is not None
     69 
     70     def is_tethered(self):
     71         fxSequencer = sm.GetService('FxSequencer')
     72         effects = fxSequencer.GetAllBallActivations(session.shipid)
     73         for effect in effects:
     74             if effect.guid == 'effects.Tethering':
     75                 return True
     76 
     77         return False
     78 
     79     def is_warping(self):
     80         return sm.GetService('michelle').InWarp()
     81 
     82     def is_warp_scrambled(self):
     83         return False
     84 
     85     def get_closest_of_type(self, types):
     86         return None
     87 
     88     def get_key_item(self):
     89         return self._key
     90 
     91     def get_key_tier(self):
     92         dogmaStaticSvc = sm.GetService('clientDogmaStaticSvc')
     93         type_id = self._type_id or self.get_key_item().typeID
     94         return dogmaStaticSvc.GetTypeAttribute2(type_id, dogma.const.attributeDifficultyTier)
     95 
     96     def is_blocked_by_dungeon(self):
     97         return False
     98 
     99     def is_item_reachable(self, item):
    100         return True
    101 
    102     def is_safety_green(self):
    103         if self.is_demo_filament():
    104             return False
    105         safetyLevel = sm.GetService('crimewatchSvc').GetSafetyLevel()
    106         return safetyLevel == appConst.shipSafetyLevelFull
    107 
    108     def get_distance_to_entrance(self):
    109         return 0
    110 
    111     def get_gate_id(self):
    112         return self._gate_id
    113 
    114     def get_ships(self):
    115         return None
    116 
    117     def is_entrance_gate_open(self):
    118         ballpark = sm.GetService('michelle').GetBallpark()
    119         slim_item = ballpark.GetInvItem(self.get_gate_id())
    120         return getattr(slim_item, 'isAbyssGateOpen', False)
    121 
    122     def is_in_same_fleet(self):
    123         return True
    124 
    125     def _is_invulnerable_timer_active(self):
    126         combatTimers = sm.GetService('infoPanel').combatTimerContainer
    127         return combatTimers.invulnTimer is not None