helper.py (13487B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\spacecomponents\common\helper.py 2 from __future__ import absolute_import 3 from . import componentConst 4 from spacecomponents.common.data import type_has_space_component 5 from spacecomponents.common.data import get_type_ids_with_space_component 6 from spacecomponents.common.data import get_space_component_for_type 7 8 def GetComponentTypeAttributes(typeID, componentClassName): 9 return get_space_component_for_type(typeID, componentClassName) 10 11 12 def HasScoopComponent(typeID): 13 return type_has_space_component(typeID, componentConst.SCOOP_CLASS) 14 15 16 def HasActivateComponent(typeID): 17 return type_has_space_component(typeID, componentConst.ACTIVATE_CLASS) 18 19 20 def HasDeployComponent(typeID): 21 return type_has_space_component(typeID, componentConst.DEPLOY_CLASS) 22 23 24 def HasDecayComponent(typeID): 25 return type_has_space_component(typeID, componentConst.DECAY_CLASS) 26 27 28 def HasDogmaticComponent(typeID): 29 return type_has_space_component(typeID, componentConst.DOGMATIC_CLASS) 30 31 32 def HasFittingComponent(typeID): 33 return type_has_space_component(typeID, componentConst.FITTING_CLASS) 34 35 36 def HasCargoBayComponent(typeID): 37 return type_has_space_component(typeID, componentConst.CARGO_BAY) 38 39 40 def HasUnderConstructionComponent(typeID): 41 return type_has_space_component(typeID, componentConst.UNDER_CONSTRUCTION) 42 43 44 def HasReinforceComponent(typeID): 45 return type_has_space_component(typeID, componentConst.REINFORCE_CLASS) 46 47 48 def HasProximityLockComponent(typeID): 49 return type_has_space_component(typeID, componentConst.PROXIMITY_LOCK_CLASS) 50 51 52 def HasProximitySensorComponent(typeID): 53 return type_has_space_component(typeID, componentConst.PROXIMITY_SENSOR_CLASS) 54 55 56 def HasPhysicsComponent(typeID): 57 return type_has_space_component(typeID, componentConst.PHYSICS_CLASS) 58 59 60 def HasSiphonComponent(typeID): 61 return type_has_space_component(typeID, componentConst.SIPHON_CLASS) 62 63 64 def HasMicroJumpDriverComponent(typeID): 65 return type_has_space_component(typeID, componentConst.MICRO_JUMP_DRIVER_CLASS) 66 67 68 def HasTurboShieldComponent(typeID): 69 return type_has_space_component(typeID, componentConst.TURBO_SHIELD_CLASS) 70 71 72 def HasShipGroupComponent(typeID): 73 return type_has_space_component(typeID, componentConst.SHIP_GROUP_CLASS) 74 75 76 def HasShipcasterComponent(typeID): 77 return type_has_space_component(typeID, componentConst.SHIPCASTER_LAUNCHER) 78 79 80 def HasStarterShipcasterComponent(typeID): 81 return type_has_space_component(typeID, componentConst.STARTER_SHIPCASTER) 82 83 84 def HasAutoMoonMinerComponent(typeID): 85 return type_has_space_component(typeID, componentConst.AUTO_MOON_MINER) 86 87 88 def HasPresenceTrackerComponent(typeID): 89 return type_has_space_component(typeID, componentConst.PILOT_PRESENCE_TRACKER) 90 91 92 def HasBreachPointAsteroidComponent(typeID): 93 return type_has_space_component(typeID, componentConst.BREACH_POINT_ASTEROID) 94 95 96 def IsActiveComponent(componentRegistry, typeID, itemID): 97 if HasActivateComponent(typeID): 98 activateComponent = componentRegistry.GetComponentForItem(itemID, componentConst.ACTIVATE_CLASS) 99 return activateComponent.IsActive() 100 return True 101 102 103 def is_character_authorized_to_skyhook_reagent_silo_component(component_registry, type_id, item_id, character_session): 104 if not HasSkyhookReagentSiloComponent(type_id): 105 return True 106 silo_component = component_registry.GetComponentForItem(item_id, componentConst.SKYHOOK_REAGENT_SILO) 107 skyhook_id = silo_component.get_parent_skyhook_id() 108 if not instance_has_orbital_skyhook_component(component_registry, skyhook_id): 109 return True 110 skyhook_component = component_registry.GetComponentForItem(skyhook_id, componentConst.ORBITAL_SKYHOOK) 111 return skyhook_component.IsCharacterAuthorised(character_session) 112 113 114 def is_theft_vulnerable_skyhook_reagent_silo_component(component_registry, type_id, item_id): 115 if not HasSkyhookReagentSiloComponent(type_id): 116 return True 117 silo_component = component_registry.GetComponentForItem(item_id, componentConst.SKYHOOK_REAGENT_SILO) 118 skyhook_id = silo_component.get_parent_skyhook_id() 119 if not instance_has_orbital_skyhook_component(component_registry, skyhook_id): 120 return True 121 skyhook_component = component_registry.GetComponentForItem(skyhook_id, componentConst.ORBITAL_SKYHOOK) 122 return skyhook_component.is_vulnerable_to_theft() 123 124 125 def IsReinforcedComponent(componentRegistry, typeID, itemID): 126 if HasReinforceComponent(typeID): 127 reinforceComponent = componentRegistry.GetComponentForItem(itemID, componentConst.REINFORCE_CLASS) 128 return reinforceComponent.IsReinforced() 129 return False 130 131 132 def HasWarpDisruptionComponent(typeID): 133 return type_has_space_component(typeID, componentConst.WARP_DISRUPTION_CLASS) 134 135 136 def HasBehaviorComponent(typeID): 137 return type_has_space_component(typeID, componentConst.BEHAVIOR) 138 139 140 def HasNpcPilotComponent(typeID): 141 return type_has_space_component(typeID, componentConst.NPC_PILOT) 142 143 144 def HasTargetingComponent(typeID): 145 return type_has_space_component(typeID, componentConst.TARGETING) 146 147 148 def GetTargetingComponent(componentRegistry, item): 149 if HasTargetingComponent(item.typeID): 150 return componentRegistry.GetComponentForItem(item.itemID, componentConst.TARGETING) 151 152 153 def GetTypesWithBehaviorComponent(): 154 return get_type_ids_with_space_component(componentConst.BEHAVIOR) 155 156 157 def GetReinforcedComponent(componentRegistry, typeID, itemID): 158 if HasReinforceComponent(typeID): 159 return componentRegistry.GetComponentForItem(itemID, componentConst.REINFORCE_CLASS) 160 elif HasTurboShieldComponent(typeID): 161 return componentRegistry.GetComponentForItem(itemID, componentConst.TURBO_SHIELD_CLASS) 162 elif HasFighterSquadronComponent(typeID): 163 return componentRegistry.GetComponentForItem(itemID, componentConst.FIGHTER_SQUADRON_CLASS) 164 else: 165 return None 166 167 168 def HasEntosisCommandNodeComponent(typeID): 169 return type_has_space_component(typeID, componentConst.ENTOSIS_COMMAND_NODE) 170 171 172 def HasEntosisLootTargetComponent(typeID): 173 return type_has_space_component(typeID, componentConst.ENTOSIS_LOOT_TARGET) 174 175 176 def HasEntosisSovereigntyHubComponent(typeID): 177 return type_has_space_component(typeID, componentConst.ENTOSIS_SOVEREIGNTY_HUB) 178 179 180 def GetEntosisTargetComponentClasses(typeID): 181 componentClasses = [] 182 if HasEntosisCommandNodeComponent(typeID): 183 componentClasses.append(componentConst.ENTOSIS_COMMAND_NODE) 184 if HasEntosisLootTargetComponent(typeID): 185 componentClasses.append(componentConst.ENTOSIS_LOOT_TARGET) 186 if HasEntosisSovereigntyHubComponent(typeID): 187 componentClasses.append(componentConst.ENTOSIS_SOVEREIGNTY_HUB) 188 return componentClasses 189 190 191 def HasNpcWarpBeacon(typeID): 192 return type_has_space_component(typeID, componentConst.NPC_WARP_BEACON) 193 194 195 def HasItemTrader(typeID): 196 return type_has_space_component(typeID, componentConst.ITEM_TRADER) 197 198 199 def HasJumpPolarizationComponent(typeID): 200 return type_has_space_component(typeID, componentConst.JUMP_POLARIZATION_CLASS) 201 202 203 def HasProximityUnlockComponent(typeID): 204 return type_has_space_component(typeID, componentConst.PROXIMITY_LOCK_CLASS) 205 206 207 def HasFighterSquadronComponent(typeID): 208 return type_has_space_component(typeID, componentConst.FIGHTER_SQUADRON_CLASS) 209 210 211 def HasEntityStandingsComponent(typeID): 212 return type_has_space_component(typeID, componentConst.ENTITY_STANDINGS_CLASS) 213 214 215 def HasDynamicEntityNameComponent(typeID): 216 return type_has_space_component(typeID, componentConst.DYNAMIC_ENTITY_NAME_CLASS) 217 218 219 def HasEntityBountyComponent(typeID): 220 return type_has_space_component(typeID, componentConst.ENTITY_BOUNTY_CLASS) 221 222 223 def HasFilamentSpoolupComponent(typeID): 224 return type_has_space_component(typeID, componentConst.FILAMENT_SPOOLUP) 225 226 227 def GetEntityBountyTypeAttributes(typeID): 228 return GetComponentTypeAttributes(typeID, componentConst.ENTITY_BOUNTY_CLASS) 229 230 231 def GetDeploymentComponentTypeAttributes(typeID): 232 if HasDeployComponent(typeID): 233 return GetComponentTypeAttributes(typeID, componentConst.DEPLOY_CLASS) 234 235 236 def GetMineableComponentTypeAttributes(typeID): 237 if HasMineableComponent(typeID): 238 return GetComponentTypeAttributes(typeID, componentConst.MINEABLE) 239 240 241 def HasIgnoreFittingRestrictionsComponent(typeID): 242 return type_has_space_component(typeID, componentConst.IGNORE_FITTING_RESTRICTIONS_CLASS) 243 244 245 def HasAdditionalLootComponent(typeID): 246 return type_has_space_component(typeID, componentConst.ADDITIONAL_LOOT) 247 248 249 def InstanceHasDogmaComponent(componentRegistry, itemId): 250 return InstanceHasComponent(componentRegistry, itemId, componentConst.DOGMATIC_CLASS) 251 252 253 def HasEnforceCriminalFlagComponent(typeID): 254 return type_has_space_component(typeID, componentConst.ENFORCE_CRIMINAL_FLAG_CLASS) 255 256 257 def HasStoreSlimItemFieldInItemSettingsComponent(typeID): 258 return type_has_space_component(typeID, componentConst.STORE_SLIM_ITEM_FIELD_IN_ITEM_SETTINGS) 259 260 261 def HasAlignmentBasedTollSpaceComponent(typeID): 262 return type_has_space_component(typeID, componentConst.ALIGNMENT_BASED_TOLL) 263 264 265 def GetAlignmentBasedTollSpaceComponent(componentRegistry, itemID): 266 return componentRegistry.GetComponentForItem(itemID, componentConst.ALIGNMENT_BASED_TOLL) 267 268 269 def HasStandingsRestrictionSpaceComponent(typeID): 270 return type_has_space_component(typeID, componentConst.STANDINGS_RESTRICTIONS) 271 272 273 def GetStandingsRestrictionSpaceComponent(componentRegistry, itemID): 274 return componentRegistry.GetComponentForItem(itemID, componentConst.STANDINGS_RESTRICTIONS) 275 276 277 def GetFilamentSpoolupSpaceComponent(componentRegistry, itemID): 278 return componentRegistry.GetComponentForItem(itemID, componentConst.FILAMENT_SPOOLUP) 279 280 281 def GetActivateSpaceComponent(componentRegistry, itemID): 282 return componentRegistry.GetComponentForItem(itemID, componentConst.ACTIVATE_CLASS) 283 284 285 def InstanceHasBehaviorComponent(componentRegistry, itemId): 286 return InstanceHasComponent(componentRegistry, itemId, componentConst.BEHAVIOR) 287 288 289 def InstanceHasEntityStandingComponent(componentRegistry, itemId): 290 return InstanceHasComponent(componentRegistry, itemId, componentConst.ENTITY_STANDINGS_CLASS) 291 292 293 def InstanceHasRoomCaptureComponent(componentRegistry, itemId): 294 return InstanceHasComponent(componentRegistry, itemId, componentConst.ROOM_CAPTURE_PROXIMITY_TRIGGER) 295 296 297 def instance_has_orbital_skyhook_component(componentRegistry, itemId): 298 return InstanceHasComponent(componentRegistry, itemId, componentConst.ORBITAL_SKYHOOK) 299 300 301 def InstanceHasComponent(componentRegistry, itemId, component): 302 try: 303 componentRegistry.GetComponentForItem(itemId, component) 304 return True 305 except KeyError: 306 return False 307 308 309 def GetEntityStandingsAttributes(typeID): 310 return GetComponentTypeAttributes(typeID, componentConst.ENTITY_STANDINGS_CLASS) 311 312 313 def HasDestinyServerBallClassComponent(typeID): 314 return type_has_space_component(typeID, componentConst.DESTINY_SERVER_BALL_CLASS) 315 316 317 def GetDestinyServerBallClassAttributes(typeID): 318 return GetComponentTypeAttributes(typeID, componentConst.DESTINY_SERVER_BALL_CLASS) 319 320 321 def HasEssRegistrationComponent(typeID): 322 return type_has_space_component(typeID, componentConst.ESS_REGISTRATION_CLASS) 323 324 325 def HasEssLinkComponent(typeID): 326 return type_has_space_component(typeID, componentConst.ESS_LINK_CLASS) 327 328 329 def HasLinkWithShipComponent(typeID): 330 return type_has_space_component(typeID, componentConst.LINK_WITH_SHIP) 331 332 333 def HasHostileBaiterComponent(typeID): 334 return type_has_space_component(typeID, componentConst.HOSTILE_BAITER) 335 336 337 def HasBoomboxComponent(typeID): 338 return type_has_space_component(typeID, componentConst.BOOMBOX) 339 340 341 def HasTowGameObjectiveComponent(typeID): 342 return type_has_space_component(typeID, componentConst.TOW_GAME_OBJECTIVE) 343 344 345 def HasSkyhookReagentSiloComponent(typeID): 346 return type_has_space_component(typeID, componentConst.SKYHOOK_REAGENT_SILO) 347 348 349 def HasMercenaryDenComponent(typeID): 350 return type_has_space_component(typeID, componentConst.MERCENARY_DEN) 351 352 353 def HasMineableComponent(typeID): 354 return type_has_space_component(typeID, componentConst.MINEABLE) 355 356 357 def HasPhaseStabilizerComponent(typeID): 358 return type_has_space_component(typeID, componentConst.PHASE_STABILIZER) 359 360 361 def GetPhaseStabilizerAttributes(typeID): 362 return GetComponentTypeAttributes(typeID, componentConst.PHASE_STABILIZER) 363 364 365 def HasJumpBridgeComponent(typeID): 366 return type_has_space_component(typeID, componentConst.JUMP_BRIDGE) 367 368 369 def GetJumpBridgeAttributes(typeID): 370 return GetComponentTypeAttributes(typeID, componentConst.JUMP_BRIDGE) 371 372 373 def GetItemTraderComponent(typeID): 374 if HasItemTrader(typeID): 375 return GetComponentTypeAttributes(typeID, componentConst.ITEM_TRADER) 376 377 378 def GetClosestComponentWithinRange(ballID, ballpark, component_class, max_distance): 379 closestDistance = max_distance 380 closestComponentInstance = None 381 componentInstances = ballpark.componentRegistry.GetInstancesWithComponentClass(component_class) 382 for componentInstance in componentInstances: 383 d = ballpark.DistanceBetween(ballID, componentInstance.itemID) 384 if ballpark.IsBallDeparting(componentInstance.itemID): 385 continue 386 if d < closestDistance: 387 closestDistance = d 388 closestComponentInstance = componentInstance 389 390 return closestComponentInstance