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