# =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== import eos.config from eos.calc import calculateRangeFactor from eos.const import FittingModuleState, FitSystemSecurity from eos.utils.spoolSupport import SpoolType, SpoolOptions, calculateSpoolup, resolveSpoolOptions class BaseEffect: dealsDamage = False @staticmethod def handler(fit, module, context, projectionRange, **kwargs): pass class DummyEffect(BaseEffect): pass class Effect100000(BaseEffect): """ pyfaCustomSuppressionTackleRange Used by: Celestial: Insurgency Suppression Interdiction Range Beacon """ runTime = 'early' type = ('projected', 'passive', 'gang') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): if id := beacon.getModifiedItemAttr('warfareBuff1ID'): value = beacon.getModifiedItemAttr('warfareBuff1Value') if id: fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early') class Effect100001(BaseEffect): """ pyfaCustomSovUpgradeBuffEffect Used by: Infrastructure Upgradess from group: Sovereignty Hub System Effect Generator Upgrades (4 of 4) """ runTime = 'early' type = ('projected', 'passive', 'gang') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): for i in range(1, 4): if id := beacon.getModifiedItemAttr(f'warfareBuff{i}ID'): value = beacon.getModifiedItemAttr(f'warfareBuff{i}Value') fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early') class Effect4(BaseEffect): """ shieldBoosting Used by: Modules from group: Shield Booster (94 of 94) """ runTime = 'late' type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): amount = module.getModifiedItemAttr('shieldBonus') speed = module.getModifiedItemAttr('duration') / 1000.0 fit.extraAttributes.increase('shieldRepair', amount / speed, **kwargs) class Effect10(BaseEffect): """ targetAttack Used by: Celestials from group: Destructible Effect Beacon (6 of 6) Drones from group: Combat Drone (80 of 80) Modules from group: Energy Weapon (216 of 220) Celestial: BH Sentry Gun Celestial: EDENCOM Stockpile Non-Interactable (Do not translate) Celestial: Liberation Games Firework Sentry ( DO NOT TRANSLATE) Celestial: Minmatar Sentry Gun (DO NOT TRANSLATE) """ dealsDamage = True type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): # Set reload time to 1 second module.reloadTime = 1000 class Effect17(BaseEffect): """ mining Used by: Drones from group: Mining Drone (14 of 14) """ grouped = True type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): miningDroneAmountPercent = container.getModifiedItemAttr('miningDroneAmountPercent') if (miningDroneAmountPercent is None) or (miningDroneAmountPercent == 0): pass else: container.multiplyItemAttr('miningAmount', miningDroneAmountPercent / 100, **kwargs) class Effect21(BaseEffect): """ shieldCapacityBonusOnline Used by: Modules from group: Shield Extender (36 of 36) Modules from group: Shield Resistance Amplifier (84 of 84) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('shieldCapacity', module.getModifiedItemAttr('capacityBonus'), **kwargs) class Effect25(BaseEffect): """ capacitorCapacityBonus Used by: Modules from group: Capacitor Battery (30 of 30) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('capacitorCapacity', ship.getModifiedItemAttr('capacitorBonus'), **kwargs) class Effect26(BaseEffect): """ structureRepair Used by: Modules from group: Hull Repair Unit (25 of 25) """ runTime = 'late' type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): amount = module.getModifiedItemAttr('structureDamageAmount') speed = module.getModifiedItemAttr('duration') / 1000.0 fit.extraAttributes.increase('hullRepair', amount / speed, **kwargs) class Effect27(BaseEffect): """ armorRepair Used by: Modules from group: Armor Repair Unit (105 of 105) """ runTime = 'late' type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): amount = module.getModifiedItemAttr('armorDamageAmount') speed = module.getModifiedItemAttr('duration') / 1000.0 rps = amount / speed fit.extraAttributes.increase('armorRepair', rps, **kwargs) fit.extraAttributes.increase('armorRepairPreSpool', rps, **kwargs) fit.extraAttributes.increase('armorRepairFullSpool', rps, **kwargs) class Effect34(BaseEffect): """ projectileFired Used by: Modules from group: Hybrid Weapon (223 of 223) Modules from group: Projectile Weapon (167 of 167) """ dealsDamage = True type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): rt = module.getModifiedItemAttr('reloadTime') if not rt: # Set reload time to 10 seconds module.reloadTime = 10000 else: module.reloadTime = rt class Effect38(BaseEffect): """ empWave Used by: Modules from group: Smart Bomb (137 of 137) """ dealsDamage = True type = 'active' class Effect39(BaseEffect): """ warpDisrupt Used by: Modules named like: Warp Disruptor (29 of 29) """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return if module.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0): return fit.ship.increaseItemAttr('warpScrambleStatus', module.getModifiedItemAttr('warpScrambleStrength'), **kwargs) class Effect46(BaseEffect): """ shipScan Used by: Modules from group: Ship Scanner (3 of 3) """ type = 'active' class Effect47(BaseEffect): """ cargoScan Used by: Modules from group: Cargo Scanner (4 of 4) """ type = 'active' class Effect48(BaseEffect): """ powerBooster Used by: Modules from group: Capacitor Booster (43 of 43) """ type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): # Set reload time to 10 seconds module.reloadTime = 10000 # Make so that reloads are always taken into account during clculations module.forceReload = True if module.charge is None: return capAmount = module.getModifiedChargeAttr('capacitorBonus') or 0 module.itemModifiedAttributes['capacitorNeed'] = -capAmount class Effect50(BaseEffect): """ modifyShieldRechargeRate Used by: Modules from group: Capacitor Power Relay (20 of 20) Modules from group: Power Diagnostic System (23 of 23) Modules from group: Reactor Control Unit (22 of 22) Modules from group: Shield Recharger (4 of 4) Modules named like: Flux Coil (12 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('shieldRechargeRate', module.getModifiedItemAttr('shieldRechargeRateMultiplier') or 1, **kwargs) class Effect51(BaseEffect): """ modifyPowerRechargeRate Used by: Modules from group: Capacitor Flux Coil (6 of 6) Modules from group: Capacitor Power Relay (20 of 20) Modules from group: Capacitor Recharger (18 of 18) Modules from group: Power Diagnostic System (23 of 23) Modules from group: Reactor Control Unit (22 of 22) Modules from group: Shield Power Relay (6 of 6) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('rechargeRate', module.getModifiedItemAttr('capacitorRechargeRateMultiplier'), **kwargs) class Effect54(BaseEffect): """ targetPassively Used by: Modules from group: Passive Targeting System (6 of 6) """ type = 'active' class Effect55(BaseEffect): """ targetHostiles Used by: Modules from group: Automated Targeting System (6 of 6) """ type = 'active' class Effect56(BaseEffect): """ powerOutputMultiply Used by: Modules from group: Capacitor Flux Coil (6 of 6) Modules from group: Capacitor Power Relay (20 of 20) Modules from group: Power Diagnostic System (23 of 23) Modules from group: Reactor Control Unit (22 of 22) Variations of structure module: Standup Reactor Control Unit I (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): # We default this to None as there are times when the source attribute doesn't exist (for example, Cap Power Relay). # It will return 0 as it doesn't exist, which would nullify whatever the target attribute is fit.ship.multiplyItemAttr('powerOutput', module.getModifiedItemAttr('powerOutputMultiplier', None), **kwargs) class Effect57(BaseEffect): """ shieldCapacityMultiply Used by: Modules from group: Capacitor Power Relay (20 of 20) Modules from group: Power Diagnostic System (23 of 23) Modules from group: Reactor Control Unit (22 of 22) Modules named like: Flux Coil (12 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): # We default this to None as there are times when the source attribute doesn't exist (for example, Cap Power Relay). # It will return 0 as it doesn't exist, which would nullify whatever the target attribute is fit.ship.multiplyItemAttr('shieldCapacity', module.getModifiedItemAttr('shieldCapacityMultiplier', None), **kwargs) class Effect58(BaseEffect): """ capacitorCapacityMultiply Used by: Modules from group: Capacitor Flux Coil (6 of 6) Modules from group: Capacitor Power Relay (20 of 20) Modules from group: Power Diagnostic System (23 of 23) Modules from group: Propulsion Module (73 of 147) Modules from group: Reactor Control Unit (22 of 22) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): # We default this to None as there are times when the source attribute doesn't exist (for example, Cap Power Relay). # It will return 0 as it doesn't exist, which would nullify whatever the target attribute is fit.ship.multiplyItemAttr('capacitorCapacity', module.getModifiedItemAttr('capacitorCapacityMultiplier', None), **kwargs) class Effect59(BaseEffect): """ cargoCapacityMultiply Used by: Modules from group: Expanded Cargohold (7 of 7) Modules from group: Overdrive Injector System (7 of 7) Modules from group: Reinforced Bulkhead (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('capacity', module.getModifiedItemAttr('cargoCapacityMultiplier'), **kwargs) class Effect60(BaseEffect): """ structureHPMultiply Used by: Modules from group: Nanofiber Internal Structure (7 of 7) Modules from group: Reinforced Bulkhead (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('hp', module.getModifiedItemAttr('structureHPMultiplier'), **kwargs) class Effect61(BaseEffect): """ agilityBonus Used by: Subsystems named like: Propulsion Interdiction Nullifier (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('agility', src.getModifiedItemAttr('agilityBonusAdd'), **kwargs) class Effect63(BaseEffect): """ armorHPMultiply Used by: Modules from group: Armor Coating (184 of 184) Modules from group: Energized Armor Membrane (169 of 169) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('armorHP', module.getModifiedItemAttr('armorHPMultiplier'), **kwargs) class Effect67(BaseEffect): """ miningLaser Used by: Modules from group: Frequency Mining Laser (6 of 6) Modules from group: Mining Laser (18 of 18) Modules from group: Strip Miner (9 of 9) Module: Citizen Miner """ type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): # Set reload time to 1 second module.reloadTime = 1000 class Effect89(BaseEffect): """ projectileWeaponSpeedMultiply Used by: Modules from group: Gyrostabilizer (14 of 14) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Projectile Weapon', 'speed', module.getModifiedItemAttr('speedMultiplier'), stackingPenalties=True, **kwargs) class Effect91(BaseEffect): """ energyWeaponDamageMultiply Used by: Modules from group: Heat Sink (20 of 20) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Energy Weapon', 'damageMultiplier', module.getModifiedItemAttr('damageMultiplier'), stackingPenalties=True, **kwargs) class Effect92(BaseEffect): """ projectileWeaponDamageMultiply Used by: Modules from group: Gyrostabilizer (14 of 14) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Projectile Weapon', 'damageMultiplier', module.getModifiedItemAttr('damageMultiplier'), stackingPenalties=True, **kwargs) class Effect93(BaseEffect): """ hybridWeaponDamageMultiply Used by: Modules from group: Magnetic Field Stabilizer (15 of 15) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'damageMultiplier', module.getModifiedItemAttr('damageMultiplier'), stackingPenalties=True, **kwargs) class Effect95(BaseEffect): """ energyWeaponSpeedMultiply Used by: Modules from group: Heat Sink (20 of 20) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Energy Weapon', 'speed', module.getModifiedItemAttr('speedMultiplier'), stackingPenalties=True, **kwargs) class Effect96(BaseEffect): """ hybridWeaponSpeedMultiply Used by: Modules from group: Magnetic Field Stabilizer (15 of 15) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'speed', module.getModifiedItemAttr('speedMultiplier'), stackingPenalties=True, **kwargs) class Effect101(BaseEffect): """ useMissiles Used by: Modules from group: Missile Launcher Heavy (12 of 12) Modules from group: Missile Launcher Rocket (16 of 16) Modules named like: Launcher (158 of 158) Structure Modules named like: Standup Launcher (7 of 7) """ dealsDamage = True type = 'active', 'projected' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): # Set reload time to 10 seconds src.reloadTime = 10000 if 'projected' not in context: return if src.item.group.name == 'Missile Launcher Bomb': # Bomb Launcher Cooldown Timer moduleReactivationDelay = src.getModifiedItemAttr('moduleReactivationDelay') speed = src.getModifiedItemAttr('speed') # Void and Focused Void Bombs neutAmount = src.getModifiedChargeAttr('energyNeutralizerAmount') if moduleReactivationDelay and neutAmount and speed: fit.addDrain(src, speed + moduleReactivationDelay, neutAmount, 0) # Lockbreaker Bombs ecmStrengthBonus = src.getModifiedChargeAttr('scan{0}StrengthBonus'.format(fit.scanType)) if ecmStrengthBonus: fit.addProjectedEcm(ecmStrengthBonus) elif src.item.group.name == 'Interdiction Sphere Launcher': speedFactor = src.getModifiedChargeAttr('speedFactor') if speedFactor: fit.ship.boostItemAttr('maxVelocity', speedFactor, **kwargs) class Effect118(BaseEffect): """ electronicAttributeModifyOnline Used by: Modules from group: Automated Targeting System (6 of 6) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('maxLockedTargets', module.getModifiedItemAttr('maxLockedTargetsBonus'), **kwargs) class Effect157(BaseEffect): """ largeHybridTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringLargeHybridTurret Used by: Implants named like: Zainou 'Deadeye' Large Hybrid Turret LH (6 of 6) Implant: Festival-only 'Longbow' HD4 Dose Implant: Festival-only 'Longbow' HD6 Dose Skill: Large Hybrid Turret """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect159(BaseEffect): """ mediumEnergyTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringMediumEnergyTurret Used by: Implants named like: Inherent Implants 'Lancer' Medium Energy Turret ME (6 of 6) Implant: Festival-only 'Longbow' ED3 Dose Implant: Festival-only 'Longbow' ED6 Dose Skill: Medium Energy Turret """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect160(BaseEffect): """ mediumHybridTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringMediumHybridTurret Used by: Implants named like: Zainou 'Deadeye' Medium Hybrid Turret MH (6 of 6) Implant: Festival-only 'Longbow' HD3 Dose Implant: Festival-only 'Longbow' HD6 Dose Skill: Medium Hybrid Turret """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect161(BaseEffect): """ mediumProjectileTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringMediumProjectileTurret Used by: Implants named like: Eifyr and Co. 'Gunslinger' Medium Projectile Turret MP (6 of 6) Implant: Festival-only 'Longbow' PD3 Dose Implant: Festival-only 'Longbow' PD6 Dose Skill: Medium Projectile Turret """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect162(BaseEffect): """ largeEnergyTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringLargeEnergyTurret Used by: Implants named like: Inherent Implants 'Lancer' Large Energy Turret LE (6 of 6) Implant: Festival-only 'Longbow' ED4 Dose Implant: Festival-only 'Longbow' ED6 Dose Implant: Pashan's Turret Handling Mindlink Skill: Large Energy Turret """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect172(BaseEffect): """ smallEnergyTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringSmallEnergyTurret Used by: Implants named like: Inherent Implants 'Lancer' Small Energy Turret SE (6 of 6) Implant: Festival-only 'Longbow' ED2 Dose Implant: Festival-only 'Longbow' ED6 Dose Skill: Small Energy Turret """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect173(BaseEffect): """ smallHybridTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringSmallHybridTurret Used by: Implants named like: Zainou 'Deadeye' Small Hybrid Turret SH (6 of 6) Implant: Festival-only 'Longbow' HD2 Dose Implant: Festival-only 'Longbow' HD6 Dose Skill: Small Hybrid Turret """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect174(BaseEffect): """ smallProjectileTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringSmallProjectileTurret Used by: Implants named like: Eifyr and Co. 'Gunslinger' Small Projectile Turret SP (6 of 6) Implant: Festival-only 'Longbow' PD2 Dose Implant: Festival-only 'Longbow' PD6 Dose Skill: Small Projectile Turret """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect212(BaseEffect): """ sensorUpgradesCpuNeedBonusPostPercentCpuLocationShipModulesRequiringSensorUpgrades Used by: Implants named like: Zainou 'Gypsy' Electronics Upgrades EU (6 of 6) Modules named like: Liquid Cooled Electronics (8 of 8) Skill: Electronics Upgrades """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Electronics Upgrades'), 'cpu', container.getModifiedItemAttr('cpuNeedBonus') * level, **kwargs) class Effect214(BaseEffect): """ targetingMaxTargetBonusModAddMaxLockedTargetsLocationChar Used by: Skills named like: Target Management (2 of 2) """ type = 'passive', 'structure' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): amount = skill.getModifiedItemAttr('maxTargetBonus') * skill.level fit.extraAttributes.increase('maxTargetsLockedFromSkills', amount, **kwargs) class Effect223(BaseEffect): """ navigationVelocityBonusPostPercentMaxVelocityLocationShip Used by: Implant: Low-grade Snake Alpha Implant: Mid-grade Snake Alpha """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', implant.getModifiedItemAttr('velocityBonus'), **kwargs) class Effect227(BaseEffect): """ accerationControlCapNeedBonusPostPercentCapacitorNeedLocationShipGroupAfterburner Used by: Modules named like: Dynamic Fuel Valve (8 of 8) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Propulsion Module', 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus'), **kwargs) class Effect230(BaseEffect): """ afterburnerDurationBonusPostPercentDurationLocationShipModulesRequiringAfterburner Used by: Implants named like: Eifyr and Co. 'Rogue' Afterburner AB (6 of 6) Implants named like: Eifyr and Co. 'Rogue' Agility (2 of 2) Implants named like: Serenity Limited 'Overclocker' Dose (3 of 3) Implant: Zor's Custom Navigation Link Skill: Afterburner """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'duration', container.getModifiedItemAttr('durationBonus') * level, **kwargs) class Effect235(BaseEffect): """ warpdriveoperationWarpCapacitorNeedBonusPostPercentWarpCapacitorNeedLocationShip Used by: Implants named like: Eifyr and Co. 'Rogue' Warp Drive Operation WD (6 of 6) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpCapacitorNeed', implant.getModifiedItemAttr('warpCapacitorNeedBonus'), **kwargs) class Effect242(BaseEffect): """ accerationControlSpeedFBonusPostPercentSpeedFactorLocationShipGroupAfterburner Used by: Implants named like: Eifyr and Co. 'Rogue' Acceleration Control AC (6 of 6) Implants named like: Eifyr and Co. 'Rogue' Agility (2 of 2) Implants named like: Serenity Limited 'Overclocker' Dose (3 of 3) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Propulsion Module', 'speedFactor', implant.getModifiedItemAttr('speedFBonus'), **kwargs) class Effect244(BaseEffect): """ highSpeedManuveringCapacitorNeedMultiplierPostPercentCapacitorNeedLocationShipModulesRequiringHighSpeedManuvering Used by: Implants named like: Eifyr and Co. 'Rogue' High Speed Maneuvering HS (6 of 6) Skill: High Speed Maneuvering """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs) class Effect271(BaseEffect): """ hullUpgradesArmorHpBonusPostPercentHpLocationShip Used by: Implants named like: Halcyon G Booster (5 of 5) Implants named like: grade Amulet (15 of 18) Modules named like: Trimark Armor Pump (8 of 8) Implant: Low-grade Snake Epsilon Implant: Mid-grade Snake Epsilon Skill: Hull Upgrades """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.ship.boostItemAttr('armorHP', (container.getModifiedItemAttr('armorHpBonus') or 0) * level, **kwargs) class Effect272(BaseEffect): """ repairSystemsDurationBonusPostPercentDurationLocationShipModulesRequiringRepairSystems Used by: Implants named like: Chemal Tech Repair Booster (3 of 3) Implants named like: Inherent Implants 'Noble' Repair Systems RS (6 of 6) Modules named like: Nanobot Accelerator (8 of 8) Implant: AIR Repairer Booster III Implant: Numon Family Heirloom Skill: Repair Systems """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Repair Systems'), 'duration', container.getModifiedItemAttr('durationSkillBonus') * level, **kwargs) class Effect273(BaseEffect): """ shieldUpgradesPowerNeedBonusPostPercentPowerLocationShipModulesRequiringShieldUpgrades Used by: Implants named like: Zainou 'Gnome' Shield Upgrades SU (6 of 6) Modules named like: Core Defense Charge Economizer (8 of 8) Skill: Shield Upgrades """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Upgrades'), 'power', container.getModifiedItemAttr('powerNeedBonus') * level, **kwargs) class Effect277(BaseEffect): """ tacticalshieldManipulationSkillBoostUniformityBonus Used by: Skill: Tactical Shield Manipulation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('shieldUniformity', skill.getModifiedItemAttr('uniformityBonus') * skill.level, **kwargs) class Effect279(BaseEffect): """ shieldEmmisionSystemsCapNeedBonusPostPercentCapacitorNeedLocationShipModulesRequiringShieldEmmisionSystems Used by: Implants named like: Zainou 'Gnome' Shield Emission Systems SE (6 of 6) Skill: Shield Emission Systems """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Emission Systems') or mod.item.requiresSkill('Capital Shield Emission Systems'), 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs) class Effect287(BaseEffect): """ controlledBurstsCapNeedBonusPostPercentCapacitorNeedLocationShipModulesRequiringGunnery Used by: Implants named like: Inherent Implants 'Lancer' Controlled Bursts CB (6 of 6) Skill: Controlled Bursts """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs) class Effect290(BaseEffect): """ sharpshooterRangeSkillBonusPostPercentMaxRangeLocationShipModulesRequiringGunnery Used by: Implants named like: Frentix Booster (4 of 4) Implants named like: Halcyon B Booster (5 of 5) Implants named like: Zainou 'Deadeye' Sharpshooter ST (6 of 6) Skill: Sharpshooter """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'maxRange', container.getModifiedItemAttr('rangeSkillBonus') * level, **kwargs) class Effect298(BaseEffect): """ surgicalStrikeFalloffBonusPostPercentFalloffLocationShipModulesRequiringGunnery Used by: Implants named like: Halcyon B Booster (5 of 5) Implants named like: Sooth Sayer Booster (4 of 4) Implants named like: Zainou 'Deadeye' Trajectory Analysis TA (6 of 6) Skill: Trajectory Analysis """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'falloff', container.getModifiedItemAttr('falloffBonus') * level, **kwargs) class Effect315(BaseEffect): """ dronesSkillBoostMaxActiveDroneBonus Used by: Skill: Drones """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): amount = skill.getModifiedItemAttr('maxActiveDroneBonus') * skill.level fit.extraAttributes.increase('maxActiveDrones', amount, **kwargs) class Effect391(BaseEffect): """ astrogeologyMiningAmountBonusPostPercentMiningAmountLocationShipModulesRequiringMining Used by: Implants named like: Inherent Implants 'Highwall' Mining MX (3 of 3) Implants named like: Mining Booster (6 of 8) Implants named like: ORE 'Harvester' Efficiency (2 of 2) Implants named like: Serenity Limited 'Efficiency' Dose (3 of 3) Implants named like: Serenity Poteque 'Prospector' Harvesting MC (3 of 3) Implant: Michi's Excavation Augmentor Skill: Astrogeology Skill: Mining """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining'), 'miningAmount', container.getModifiedItemAttr('miningAmountBonus') * level, **kwargs) class Effect392(BaseEffect): """ mechanicHullHpBonusPostPercentHpShip Used by: Implants named like: Capsuleer Defense Augmentation Chip (3 of 3) Implants named like: Festival only 'Rock' HH Dose (4 of 4) Implants named like: Halcyon G Booster (5 of 5) Implants named like: Inherent Implants 'Noble' Mechanic MC (6 of 6) Implants named like: Serenity Limited 'Hardshell' Dose (3 of 3) Modules named like: Transverse Bulkhead (8 of 8) Skill: Mechanics """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.ship.boostItemAttr('hp', container.getModifiedItemAttr('hullHpBonus') * level, **kwargs) class Effect394(BaseEffect): """ navigationVelocityBonusPostPercentMaxVelocityShip Used by: Modules from group: Rig Anchor (4 of 4) Implants named like: Agency 'Overclocker' SB Dose (4 of 4) Implants named like: Grand Prix Booster (5 of 6) Implants named like: Halcyon R Booster (5 of 5) Implants named like: grade Snake (16 of 18) Modules named like: Auxiliary Thrusters (8 of 8) Implant: AIR Overclocker Booster II Implant: Quafe Zero Classic Implant: Serenity YC122.9 Season Booster - Max Velocity Implant: Starsi Blast! Classic Implant: Wisdom of Gheinok Skill: Navigation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 amount = container.getModifiedItemAttr('velocityBonus') or 0 penalties = 'skill' not in context and 'implant' not in context and 'booster' not in context fit.ship.boostItemAttr('maxVelocity', amount * level, stackingPenalties=penalties, **kwargs) class Effect395(BaseEffect): """ evasiveManeuveringAgilityBonusPostPercentAgilityShip Used by: Modules from group: Rig Anchor (4 of 4) Implants named like: Eifyr and Co. 'Rogue' Evasive Maneuvering EM (6 of 6) Implants named like: Grand Prix Booster (4 of 6) Implants named like: Halcyon G Booster (5 of 5) Implants named like: Halcyon Y Booster (5 of 5) Implants named like: grade Nomad (10 of 12) Modules named like: Low Friction Nozzle Joints (8 of 8) Implant: AIR Agility Booster II Implant: AIR Overclocker Booster III Implant: Genolution Core Augmentation CA-4 Implant: Quafe Zero Green Apple Implant: Serenity YC122.9 Season Booster - Agility Implant: Starsi Blast! Classic Skill: Evasive Maneuvering Skill: Spaceship Command """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 penalties = 'skill' not in context and 'implant' not in context and 'booster' not in context fit.ship.boostItemAttr('agility', container.getModifiedItemAttr('agilityBonus') * level, stackingPenalties=penalties, **kwargs) class Effect396(BaseEffect): """ energyGridUpgradesCpuNeedBonusPostPercentCpuLocationShipModulesRequiringEnergyGridUpgrades Used by: Implants named like: Inherent Implants 'Squire' Energy Grid Upgrades EU (6 of 6) Modules named like: Powergrid Subroutine Maximizer (8 of 8) Skill: Energy Grid Upgrades """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Energy Grid Upgrades'), 'cpu', container.getModifiedItemAttr('cpuNeedBonus') * level, **kwargs) class Effect397(BaseEffect): """ electronicsCpuOutputBonusPostPercentCpuOutputLocationShipGroupComputer Used by: Implants named like: Zainou 'Gypsy' CPU Management EE (6 of 6) Modules named like: Processor Overclocking Unit (8 of 8) Subsystems named like: Core Electronic Efficiency Gate (2 of 2) Implant: Basic Capsuleer Engineering Augmentation Chip Implant: Genolution Core Augmentation CA-2 Skill: CPU Management """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.ship.boostItemAttr('cpuOutput', container.getModifiedItemAttr('cpuOutputBonus2') * level, **kwargs) class Effect408(BaseEffect): """ largeProjectileTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringLargeProjectileTurret Used by: Implants named like: Eifyr and Co. 'Gunslinger' Large Projectile Turret LP (6 of 6) Implant: Festival-only 'Longbow' PD4 Dose Implant: Festival-only 'Longbow' PD6 Dose Skill: Large Projectile Turret """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect414(BaseEffect): """ gunneryTurretSpeeBonusPostPercentSpeedLocationShipModulesRequiringGunnery Used by: Implants named like: Halcyon R Booster (5 of 5) Implants named like: Inherent Implants 'Lancer' Gunnery RF (6 of 6) Implant: Pashan's Turret Customization Mindlink Skill: Gunnery """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'speed', container.getModifiedItemAttr('turretSpeeBonus') * level, **kwargs) class Effect446(BaseEffect): """ shieldManagementShieldCapacityBonusPostPercentCapacityLocationShipGroupShield Used by: Implants named like: Capsuleer Defense Augmentation Chip (3 of 3) Implants named like: Festival only 'Rock' SH Dose (4 of 4) Implants named like: Halcyon G Booster (5 of 5) Implants named like: Nirvana Booster (5 of 5) Implants named like: Serenity Limited 'Hardshell' Dose (3 of 3) Implants named like: Zainou 'Gnome' Shield Management SM (6 of 6) Modules named like: Core Defense Field Extender (8 of 8) Implant: Genolution Core Augmentation CA-3 Implant: Sansha Modified 'Gnome' Implant Skill: Shield Management """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.ship.boostItemAttr('shieldCapacity', container.getModifiedItemAttr('shieldCapacityBonus') * level, **kwargs) class Effect485(BaseEffect): """ capacitorRechargeTimeBonusPostPercentPassive Used by: Implants named like: Halcyon G Booster (5 of 5) Implants named like: Halcyon R Booster (5 of 5) Implants named like: Inherent Implants 'Squire' Capacitor Systems Operation EO (6 of 6) Implants named like: Wightstorm Rapture Booster (4 of 4) Implants named like: grade Rapture (15 of 18) Modules named like: Capacitor Control Circuit (8 of 8) Implant: AIR Overclocker Booster III Implant: AIR Rapture Booster II Implant: Basic Capsuleer Engineering Augmentation Chip Implant: Genolution Core Augmentation CA-2 Implant: Quafe Zero Green Apple Implant: Starsi Blast! Orange Skill: Capacitor Systems Operation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.ship.boostItemAttr('rechargeRate', container.getModifiedItemAttr('capRechargeBonus') * level, **kwargs) class Effect486(BaseEffect): """ shieldOperationRechargeratebonusPostPercentRechargeRateLocationShipGroupShield Used by: Implants named like: Zainou 'Gnome' Shield Operation SP (6 of 6) Modules named like: Core Defense Field Purger (8 of 8) Implant: Sansha Modified 'Gnome' Implant Skill: Shield Operation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.ship.boostItemAttr('shieldRechargeRate', container.getModifiedItemAttr('rechargeratebonus') * level, **kwargs) class Effect490(BaseEffect): """ engineeringPowerEngineeringOutputBonusPostPercentPowerOutputLocationShipGroupPowerCore Used by: Implants named like: Inherent Implants 'Squire' Power Grid Management EG (6 of 6) Modules named like: Ancillary Current Router (8 of 8) Subsystems named like: Core Augmented Reactor (4 of 4) Implant: Basic Capsuleer Engineering Augmentation Chip Implant: Genolution Core Augmentation CA-1 Skill: Power Grid Management """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.ship.boostItemAttr('powerOutput', container.getModifiedItemAttr('powerEngineeringOutputBonus') * level, **kwargs) class Effect494(BaseEffect): """ warpDriveOperationWarpCapacitorNeedBonusPostPercentWarpCapacitorNeedLocationShipGroupPropulsion Used by: Modules named like: Warp Core Optimizer (8 of 8) Skill: Warp Drive Operation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.ship.boostItemAttr('warpCapacitorNeed', container.getModifiedItemAttr('warpCapacitorNeedBonus') * level, stackingPenalties='skill' not in context, **kwargs) class Effect504(BaseEffect): """ scoutDroneOperationDroneRangeBonusModAddDroneControlDistanceChar Used by: Implants named like: Halcyon Y Booster (5 of 5) Modules named like: Drone Control Range Augmentor (8 of 8) Skills named like: Drone Avionics (2 of 2) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 amount = container.getModifiedItemAttr('droneRangeBonus') * level fit.extraAttributes.increase('droneControlRange', amount, **kwargs) class Effect506(BaseEffect): """ fuelConservationCapNeedBonusPostPercentCapacitorNeedLocationShipModulesRequiringAfterburner Used by: Skill: Afterburner Skill: Fuel Conservation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'capacitorNeed', skill.getModifiedItemAttr('capNeedBonus') * skill.level, **kwargs) class Effect507(BaseEffect): """ longRangeTargetingMaxTargetRangeBonusPostPercentMaxTargetRangeLocationShipGroupElectronic Used by: Implants named like: Halcyon G Booster (5 of 5) Implants named like: Halcyon Y Booster (5 of 5) Implants named like: Zainou 'Gypsy' Long Range Targeting LT (6 of 6) Skill: Long Range Targeting """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.ship.boostItemAttr('maxTargetRange', container.getModifiedItemAttr('maxTargetRangeBonus') * level, **kwargs) class Effect508(BaseEffect): """ shipPDmgBonusMF Used by: Ship: Freki Ship: Republic Fleet Firetail Ship: Slasher Ship: Stiletto Ship: Wolf """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect511(BaseEffect): """ shipEnergyTCapNeedBonusAF Used by: Ship: Crusader Ship: Executioner Ship: Gold Magnate Ship: Punisher Ship: Retribution Ship: Silver Magnate Ship: Tormentor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs) class Effect512(BaseEffect): """ shipSHTDmgBonusGF Used by: Variations of ship: Incursus (3 of 3) Ship: Atron Ship: Federation Navy Comet Ship: Pacifier Ship: Shapash Ship: Taranis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs) class Effect514(BaseEffect): """ shipSETDmgBonusAF Used by: Variations of ship: Magnate (3 of 5) Ship: Executioner Ship: Tormentor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect516(BaseEffect): """ shipTCapNeedBonusAC Used by: Ship: Devoter Ship: Omen Ship: Zealot """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs) class Effect521(BaseEffect): """ shipHRangeBonusCC Used by: Ship: Eagle """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs) class Effect527(BaseEffect): """ shipVelocityBonusMI Used by: Variations of ship: Mammoth (2 of 2) Ship: Hoarder Ship: Prowler """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('shipBonusMI'), skill='Minmatar Hauler', **kwargs) class Effect529(BaseEffect): """ shipCargoBonusAI Used by: Variations of ship: Sigil (2 of 2) Ship: Bestower """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('capacity', ship.getModifiedItemAttr('shipBonusAI'), skill='Amarr Hauler', **kwargs) class Effect536(BaseEffect): """ cpuMultiplierPostMulCpuOutputShip Used by: Modules from group: CPU Enhancer (19 of 19) Variations of structure module: Standup Co-Processor Array I (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('cpuOutput', module.getModifiedItemAttr('cpuMultiplier'), **kwargs) class Effect542(BaseEffect): """ shipCapNeedBonusAB Used by: Ships named like: Imperial Issue (2 of 2) Ship: Redeemer """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect549(BaseEffect): """ shipPTDmgBonusMB Used by: Variations of ship: Tempest (3 of 4) Ship: Machariel Ship: Panther """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect550(BaseEffect): """ shipHTDmgBonusGB Used by: Ships from group: Black Ops (3 of 6) Ship: Dominix Navy Issue Ship: Hyperion Ship: Kronos Ship: Megathron Federate Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGB'), skill='Gallente Battleship', **kwargs) class Effect553(BaseEffect): """ shipHTTrackingBonusGB Used by: Ship: Vindicator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGB'), skill='Gallente Battleship', **kwargs) class Effect562(BaseEffect): """ shipHTDmgBonusfixedGC Used by: Variations of ship: Vexor (3 of 4) Ship: Adrestia Ship: Arazu Ship: Cobra Ship: Cybele Ship: Deimos Ship: Enforcer Ship: Exequror Navy Issue Ship: Thorax """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs) class Effect581(BaseEffect): """ weaponUpgradesCpuNeedBonusPostPercentCpuLocationShipModulesRequiringGunnery Used by: Implants named like: Zainou 'Gnome' Weapon Upgrades WU (6 of 6) Skill: Weapon Upgrades """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery') or mod.item.requiresSkill('Vorton Projector Operation'), 'cpu', container.getModifiedItemAttr('cpuNeedBonus') * level, **kwargs) class Effect582(BaseEffect): """ rapidFiringRofBonusPostPercentSpeedLocationShipModulesRequiringGunnery Used by: Skill: Rapid Firing """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'speed', skill.getModifiedItemAttr('rofBonus') * skill.level, **kwargs) class Effect584(BaseEffect): """ surgicalStrikeDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringGunnery Used by: Implants named like: 'Pyrolancea' Dose (7 of 7) Implants named like: Chemal Tech Turret Booster (3 of 3) Implants named like: Eifyr and Co. 'Gunslinger' Surgical Strike SS (6 of 6) Implants named like: Halcyon Y Booster (5 of 5) Implant: AIR Pyrolancea Booster II """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'damageMultiplier', implant.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect587(BaseEffect): """ surgicalStrikeDamageMultiplierBonusPostPercentDamageMultiplierLocationShipGroupEnergyWeapon Used by: Skill: Surgical Strike """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Weapon', 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect588(BaseEffect): """ surgicalStrikeDamageMultiplierBonusPostPercentDamageMultiplierLocationShipGroupProjectileWeapon Used by: Skill: Surgical Strike """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Projectile Weapon', 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect589(BaseEffect): """ surgicalStrikeDamageMultiplierBonusPostPercentDamageMultiplierLocationShipGroupHybridWeapon Used by: Skill: Surgical Strike """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect590(BaseEffect): """ energyPulseWeaponsDurationBonusPostPercentDurationLocationShipModulesRequiringEnergyPulseWeapons Used by: Implants named like: Inherent Implants 'Squire' Energy Pulse Weapons EP (6 of 6) Skill: Energy Pulse Weapons """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Energy Pulse Weapons'), 'duration', container.getModifiedItemAttr('durationBonus') * level, **kwargs) class Effect596(BaseEffect): """ ammoInfluenceRange Used by: Items from category: Charge (608 of 1023) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.multiplyItemAttr('maxRange', module.getModifiedChargeAttr('weaponRangeMultiplier'), **kwargs) class Effect598(BaseEffect): """ ammoSpeedMultiplier Used by: Charges from group: Festival Charges (40 of 40) Charges from group: Interdiction Probe (2 of 2) Charges from group: Structure Festival Charges (2 of 2) Special Edition Assetss from group: Festival Charges Expired (4 of 4) Charge: Stasis Webification Probe """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.multiplyItemAttr('speed', module.getModifiedChargeAttr('speedMultiplier') or 1, **kwargs) class Effect599(BaseEffect): """ ammoFallofMultiplier Used by: Charges from group: Advanced Artillery Ammo (8 of 8) Charges from group: Advanced Autocannon Ammo (8 of 8) Charges from group: Advanced Beam Laser Crystal (8 of 8) Charges from group: Advanced Blaster Charge (8 of 8) Charges from group: Advanced Pulse Laser Crystal (8 of 8) Charges from group: Advanced Railgun Charge (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.multiplyItemAttr('falloff', module.getModifiedChargeAttr('fallofMultiplier') or 1, **kwargs) class Effect600(BaseEffect): """ ammoTrackingMultiplier Used by: Charges from group: Advanced Artillery Ammo (8 of 8) Charges from group: Advanced Autocannon Ammo (8 of 8) Charges from group: Advanced Beam Laser Crystal (8 of 8) Charges from group: Advanced Blaster Charge (8 of 8) Charges from group: Advanced Exotic Plasma Charge (6 of 6) Charges from group: Advanced Pulse Laser Crystal (8 of 8) Charges from group: Advanced Railgun Charge (8 of 8) Charges from group: Projectile Ammo (128 of 128) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.multiplyItemAttr('trackingSpeed', module.getModifiedChargeAttr('trackingSpeedMultiplier'), **kwargs) class Effect602(BaseEffect): """ shipPTurretSpeedBonusMC Used by: Variations of ship: Stabber (3 of 3) Ship: Broadsword Ship: Cobra Ship: Enforcer Ship: Huginn Ship: Scythe Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'speed', ship.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs) class Effect604(BaseEffect): """ shipPTspeedBonusMB2 Used by: Ships from group: Black Ops (3 of 6) Variations of ship: Tempest (3 of 4) Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'speed', ship.getModifiedItemAttr('shipBonusMB2'), skill='Minmatar Battleship', **kwargs) class Effect607(BaseEffect): """ cloaking Used by: Modules from group: Cloaking Device (10 of 14) """ runTime = 'early' type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): # Set flag which is used to determine if ship is cloaked or not # This is used to apply cloak-only bonuses, like Black Ops' speed bonus fit.extraAttributes['cloaked'] = True # Apply speed penalty fit.ship.multiplyItemAttr('maxVelocity', module.getModifiedItemAttr('maxVelocityModifier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect623(BaseEffect): """ miningDroneOperationMiningAmountBonusPostPercentMiningDroneAmountPercentChar Used by: Modules named like: Drone Mining Augmentor (8 of 8) Skill: Mining Drone Operation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Mining Drone Operation'), 'miningAmount', container.getModifiedItemAttr('miningAmountBonus') * level, **kwargs) class Effect627(BaseEffect): """ powerIncrease Used by: Modules from group: Auxiliary Power Core (6 of 6) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('powerOutput', module.getModifiedItemAttr('powerIncrease'), **kwargs) class Effect657(BaseEffect): """ agilityMultiplierEffect Used by: Modules from group: Inertial Stabilizer (7 of 7) Modules from group: Nanofiber Internal Structure (7 of 7) Modules from group: Reinforced Bulkhead (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', module.getModifiedItemAttr('agilityMultiplier'), stackingPenalties=True, **kwargs) class Effect660(BaseEffect): """ missileEMDmgBonus Used by: Skills named like: Missiles (5 of 7) Skill: Rockets Skill: Torpedoes """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill(skill), 'emDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect661(BaseEffect): """ missileExplosiveDmgBonus Used by: Skills named like: Missiles (5 of 7) Skill: Rockets Skill: Torpedoes """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill(skill), 'explosiveDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect662(BaseEffect): """ missileThermalDmgBonus Used by: Skills named like: Missiles (5 of 7) Skill: Rockets Skill: Torpedoes """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill(skill), 'thermalDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect668(BaseEffect): """ missileKineticDmgBonus2 Used by: Skills named like: Missiles (5 of 7) Skill: Rockets Skill: Torpedoes """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill(skill), 'kineticDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect675(BaseEffect): """ weaponUpgradesCpuNeedBonusPostPercentCpuLocationShipModulesRequiringEnergyPulseWeapons Used by: Skill: Weapon Upgrades """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Energy Pulse Weapons'), 'cpu', skill.getModifiedItemAttr('cpuNeedBonus') * skill.level, **kwargs) class Effect677(BaseEffect): """ weaponUpgradesCpuNeedBonusPostPercentCpuLocationShipModulesRequiringMissileLauncherOperation Used by: Implants named like: Zainou 'Gnome' Launcher CPU Efficiency LE (6 of 6) Skill: Weapon Upgrades """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'cpu', container.getModifiedItemAttr('cpuNeedBonus') * level, **kwargs) class Effect699(BaseEffect): """ signatureAnalysisScanResolutionBonusPostPercentScanResolutionShip Used by: Implants named like: Halcyon B Booster (5 of 5) Implants named like: Halcyon R Booster (5 of 5) Implants named like: Zainou 'Gypsy' Signature Analysis SA (6 of 6) Modules named like: Targeting System Subcontroller (8 of 8) Implant: Quafe Zero Classic Implant: Starsi Blast! Orange Skill: Signature Analysis """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 penalized = False if 'skill' in context or 'implant' in context or 'booster' in context else True fit.ship.boostItemAttr('scanResolution', container.getModifiedItemAttr('scanResolutionBonus') * level, stackingPenalties=penalized, **kwargs) class Effect706(BaseEffect): """ covertOpsWarpResistance Used by: Ships from group: Covert Ops (5 of 9) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('warpFactor', src.getModifiedItemAttr('eliteBonusCovertOps1'), skill='Covert Ops', **kwargs) class Effect726(BaseEffect): """ shipBonusCargo2GI Used by: Variations of ship: Miasmos (3 of 4) Variations of ship: Nereus (2 of 2) Ship: Iteron Mark V """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): # TODO: investigate if we can live without such ifs or hardcoding # Viator doesn't have GI bonus if 'shipBonusGI' in fit.ship.item.attributes: bonusAttr = 'shipBonusGI' else: bonusAttr = 'shipBonusGI2' fit.ship.boostItemAttr('capacity', ship.getModifiedItemAttr(bonusAttr), skill='Gallente Hauler', **kwargs) class Effect727(BaseEffect): """ shipBonusCargoCI Used by: Variations of ship: Badger (2 of 2) Ship: Tayra """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('capacity', ship.getModifiedItemAttr('shipBonusCI'), skill='Caldari Hauler', **kwargs) class Effect728(BaseEffect): """ shipBonusCargoMI Used by: Variations of ship: Wreathe (2 of 2) Ship: Mammoth """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('capacity', ship.getModifiedItemAttr('shipBonusMI'), skill='Minmatar Hauler', **kwargs) class Effect729(BaseEffect): """ shipBonusVelocityGI Used by: Variations of ship: Epithal (2 of 2) Variations of ship: Miasmos (4 of 4) Ship: Iteron Mark V Ship: Kryos Ship: Viator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): # TODO: investigate if we can live without such ifs or hardcoding # Viator doesn't have GI bonus if 'shipBonusGI' in fit.ship.item.attributes: bonusAttr = 'shipBonusGI' else: bonusAttr = 'shipBonusGI2' fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr(bonusAttr), skill='Gallente Hauler', **kwargs) class Effect730(BaseEffect): """ shipBonusVelocityCI Used by: Variations of ship: Tayra (2 of 2) Ship: Crane """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('shipBonusCI'), skill='Caldari Hauler', **kwargs) class Effect732(BaseEffect): """ shipVelocityBonusAI Used by: Variations of ship: Bestower (2 of 2) Ship: Prorator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('shipBonusAI'), skill='Amarr Hauler', **kwargs) class Effect736(BaseEffect): """ shipBonusCapCapAB Used by: Ship: Apocalypse Imperial Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('capacitorCapacity', ship.getModifiedItemAttr('shipBonusAB2'), skill='Amarr Battleship', **kwargs) class Effect744(BaseEffect): """ surveyScanspeedBonusPostPercentDurationLocationShipModulesRequiringElectronics Used by: Modules named like: Signal Focusing Kit (8 of 8) Skill: Survey """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('CPU Management'), 'duration', container.getModifiedItemAttr('scanspeedBonus') * level, **kwargs) class Effect754(BaseEffect): """ shipHybridDamageBonusCF Used by: Ship: Raptor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) class Effect757(BaseEffect): """ shipETDamageAF Used by: Ship: Crucifier Navy Issue Ship: Crusader Ship: Imperial Navy Slicer Ship: Pacifier """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect760(BaseEffect): """ shipBonusSmallMissileRoFCF2 Used by: Ship: Hawk Ship: Pacifier """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'speed', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect763(BaseEffect): """ missileDMGBonus Used by: Modules from group: Ballistic Control System (22 of 22) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): for dmgType in ('em', 'kinetic', 'explosive', 'thermal'): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation') or mod.charge.requiresSkill('Defender Missiles'), '%sDamage' % dmgType, container.getModifiedItemAttr('missileDamageMultiplierBonus'), stackingPenalties=True, **kwargs) class Effect784(BaseEffect): """ missileBombardmentMaxFlightTimeBonusPostPercentExplosionDelayOwnerCharModulesRequiringMissileLauncherOperation Used by: Implants named like: Halcyon B Booster (5 of 5) Implants named like: Zainou 'Deadeye' Missile Bombardment MB (6 of 6) Modules named like: Rocket Fuel Cache Partition (8 of 8) Implant: Antipharmakon Toxot Skill: Missile Bombardment """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 penalized = False if 'skill' in context or 'implant' in context or 'booster' in context else True fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosionDelay', container.getModifiedItemAttr('maxFlightTimeBonus') * level, stackingPenalties=penalized, **kwargs) class Effect804(BaseEffect): """ ammoInfluenceCapNeed Used by: Items from category: Charge (544 of 1023) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): # Dirty hack to work around cap charges setting cap booster # injection amount to zero rawAttr = module.item.getAttribute('capacitorNeed') if rawAttr is not None and rawAttr >= 0: module.boostItemAttr('capacitorNeed', module.getModifiedChargeAttr('capNeedBonus') or 0, **kwargs) class Effect836(BaseEffect): """ skillFreightBonus Used by: Modules named like: Cargohold Optimization (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('capacity', module.getModifiedItemAttr('cargoCapacityBonus'), **kwargs) class Effect848(BaseEffect): """ cloakingTargetingDelayBonusPostPercentCloakingTargetingDelayBonusForShipModulesRequiringCloaking Used by: Skill: Cloaking """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Cloaking'), 'cloakingTargetingDelay', skill.getModifiedItemAttr('cloakingTargetingDelayBonus') * skill.level, **kwargs) class Effect854(BaseEffect): """ cloakingScanResolutionMultiplier Used by: Modules from group: Cloaking Device (12 of 14) """ type = 'offline' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('scanResolution', module.getModifiedItemAttr('scanResolutionMultiplier'), stackingPenalties=True, penaltyGroup='cloakingScanResolutionMultiplier', **kwargs) class Effect856(BaseEffect): """ warpSkillSpeed Used by: Implants named like: Eifyr and Co. 'Rogue' Agility (2 of 2) Implants named like: Eifyr and Co. 'Rogue' Warp Drive Speed WS (6 of 6) Implants named like: Grand Prix Booster (5 of 6) Implants named like: Halcyon B Booster (5 of 5) Implants named like: Serenity Limited 'Overclocker' Dose (3 of 3) Implants named like: grade Ascendancy (10 of 12) Modules named like: Hyperspatial Velocity Optimizer (8 of 8) Implant: Serenity YC122.9 Season Booster - Warp Speed """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): penalized = False if 'skill' in context or 'implant' in context or 'booster' in context else True fit.ship.boostItemAttr('warpSpeedMultiplier', container.getModifiedItemAttr('WarpSBonus'), stackingPenalties=penalized, **kwargs) class Effect882(BaseEffect): """ shipHybridRangeBonusCF2 Used by: Ship: Harpy Ship: Raptor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect887(BaseEffect): """ shipETspeedBonusAB2 Used by: Ship: Armageddon Imperial Issue Ship: Redeemer """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'speed', ship.getModifiedItemAttr('shipBonusAB2'), skill='Amarr Battleship', **kwargs) class Effect889(BaseEffect): """ missileLauncherSpeedMultiplier Used by: Modules from group: Ballistic Control System (22 of 22) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'speed', module.getModifiedItemAttr('speedMultiplier'), stackingPenalties=True, **kwargs) class Effect891(BaseEffect): """ shipCruiseMissileVelocityBonusCB3 Used by: Variations of ship: Raven (3 of 4) Module: Anhinga Tertiary Mode """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): if 'ship' in context: skill = 'Caldari Battleship' penalties = False else: skill = None penalties = True fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusCB3'), skill=skill, stackingPenalties=penalties, **kwargs) class Effect892(BaseEffect): """ shipTorpedosVelocityBonusCB3 Used by: Variations of ship: Raven (3 of 4) Module: Anhinga Tertiary Mode """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): if 'ship' in context: skill = 'Caldari Battleship' penalties = False else: skill = None penalties = True fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Torpedoes'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusCB3'), skill=skill, stackingPenalties=penalties, **kwargs) class Effect896(BaseEffect): """ covertOpsCpuBonus1 Used by: Ships from group: Stealth Bomber (4 of 5) Subsystems named like: Defensive Covert Reconfiguration (4 of 4) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cloaking Device', 'cpu', container.getModifiedItemAttr('cloakingCpuNeedBonus'), **kwargs) class Effect898(BaseEffect): """ shipMissileKineticDamageCF Used by: Ship: Condor Ship: Hawk """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) class Effect899(BaseEffect): """ shipMissileKineticDamageCC Used by: Ship: Cerberus Ship: Laelaps Ship: Onyx Ship: Orthrus """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs) class Effect907(BaseEffect): """ shipLaserRofAC2 Used by: Ship: Omen """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'speed', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect909(BaseEffect): """ shipArmorHpAC2 Used by: Ship: Augoror Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorHP', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect912(BaseEffect): """ shipMissileLauncherRofCC2 Used by: Ship: Laelaps Ship: Onyx """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'speed', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect918(BaseEffect): """ shipDronesMaxGC2 Used by: Ship: Guardian-Vexor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.extraAttributes.increase('maxActiveDrones', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect919(BaseEffect): """ shipHybridTrackingGC2 Used by: Ship: Cobra Ship: Enforcer Ship: Thorax """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect958(BaseEffect): """ shipArmorEmResistanceAC2 Used by: Ship: Maller """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorEmDamageResonance', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect959(BaseEffect): """ shipArmorExplosiveResistanceAC2 Used by: Ship: Maller """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect960(BaseEffect): """ shipArmorKineticResistanceAC2 Used by: Ship: Maller """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorKineticDamageResonance', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect961(BaseEffect): """ shipArmorThermalResistanceAC2 Used by: Ship: Maller """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorThermalDamageResonance', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect968(BaseEffect): """ shipProjectileDmgMC2 Used by: Ship: Broadsword Ship: Cynabal Ship: Moracha """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect980(BaseEffect): """ cloakingWarpSafe Used by: Modules named like: Covert Ops Cloaking Device II (2 of 2) """ runTime = 'early' type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.extraAttributes['cloaked'] = True fit.ship.multiplyItemAttr('maxVelocity', module.getModifiedItemAttr('maxVelocityModifier'), **kwargs) class Effect989(BaseEffect): """ eliteBonusGunshipHybridOptimal1 Used by: Ship: Enyo Ship: Harpy Ship: Ishkur """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect991(BaseEffect): """ eliteBonusGunshipLaserOptimal1 Used by: Ship: Retribution """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'maxRange', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect996(BaseEffect): """ eliteBonusGunshipHybridTracking2 Used by: Ship: Enyo """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates', **kwargs) class Effect998(BaseEffect): """ eliteBonusGunshipProjectileFalloff2 Used by: Ship: Wolf """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'falloff', ship.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates', **kwargs) class Effect999(BaseEffect): """ eliteBonusGunshipShieldBoost2 Used by: Ship: Hawk """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', ship.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates', **kwargs) class Effect1001(BaseEffect): """ eliteBonusGunshipCapRecharge2 Used by: Ship: Vengeance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('rechargeRate', ship.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates', **kwargs) class Effect1003(BaseEffect): """ selfT2SmallLaserPulseDamageBonus Used by: Skill: Small Pulse Laser Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Pulse Laser Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1004(BaseEffect): """ selfT2SmallLaserBeamDamageBonus Used by: Skill: Small Beam Laser Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Beam Laser Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1005(BaseEffect): """ selfT2SmallHybridBlasterDamageBonus Used by: Skill: Small Blaster Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Blaster Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1006(BaseEffect): """ selfT2SmallHybridRailDamageBonus Used by: Skill: Small Railgun Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Railgun Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1007(BaseEffect): """ selfT2SmallProjectileACDamageBonus Used by: Skill: Small Autocannon Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Autocannon Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1008(BaseEffect): """ selfT2SmallProjectileArtyDamageBonus Used by: Skill: Small Artillery Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Artillery Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1009(BaseEffect): """ selfT2MediumLaserPulseDamageBonus Used by: Skill: Medium Pulse Laser Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Pulse Laser Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1010(BaseEffect): """ selfT2MediumLaserBeamDamageBonus Used by: Skill: Medium Beam Laser Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Beam Laser Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1011(BaseEffect): """ selfT2MediumHybridBlasterDamageBonus Used by: Skill: Medium Blaster Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Blaster Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1012(BaseEffect): """ selfT2MediumHybridRailDamageBonus Used by: Skill: Medium Railgun Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Railgun Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1013(BaseEffect): """ selfT2MediumProjectileACDamageBonus Used by: Skill: Medium Autocannon Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Autocannon Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1014(BaseEffect): """ selfT2MediumProjectileArtyDamageBonus Used by: Skill: Medium Artillery Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Artillery Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1015(BaseEffect): """ selfT2LargeLaserPulseDamageBonus Used by: Skill: Large Pulse Laser Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Pulse Laser Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1016(BaseEffect): """ selfT2LargeLaserBeamDamageBonus Used by: Skill: Large Beam Laser Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Beam Laser Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1017(BaseEffect): """ selfT2LargeHybridBlasterDamageBonus Used by: Skill: Large Blaster Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Blaster Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1018(BaseEffect): """ selfT2LargeHybridRailDamageBonus Used by: Skill: Large Railgun Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Railgun Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1019(BaseEffect): """ selfT2LargeProjectileACDamageBonus Used by: Skill: Large Autocannon Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Autocannon Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1020(BaseEffect): """ selfT2LargeProjectileArtyDamageBonus Used by: Skill: Large Artillery Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Artillery Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1021(BaseEffect): """ eliteBonusGunshipHybridDmg2 Used by: Ship: Harpy """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates', **kwargs) class Effect1024(BaseEffect): """ shipMissileHeavyVelocityBonusCC2 Used by: Module: Anhinga Tertiary Mode Ship: Caracal Ship: Osprey Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): if 'ship' in context: skill = 'Caldari Cruiser' penalties = False else: skill = None penalties = True fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusCC2'), skill=skill, stackingPenalties=penalties, **kwargs) class Effect1030(BaseEffect): """ remoteArmorSystemsCapNeedBonusPostPercentCapacitorNeedLocationShipModulesRequiringRemoteArmorSystems Used by: Implants named like: Inherent Implants 'Noble' Remote Armor Repair Systems RA (6 of 6) Modules named like: Remote Repair Augmentor (6 of 8) Skill: Remote Armor Repair Systems """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems') or mod.item.requiresSkill('Capital Remote Armor Repair Systems'), 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs) class Effect1033(BaseEffect): """ eliteBonusLogisticRemoteArmorRepairCapNeed1 Used by: Ship: Oneiros """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', src.getModifiedItemAttr('eliteBonusLogistics1'), skill='Logistics Cruisers', **kwargs) class Effect1034(BaseEffect): """ eliteBonusLogisticRemoteArmorRepairCapNeed2 Used by: Ship: Guardian Ship: Rabisu """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', src.getModifiedItemAttr('eliteBonusLogistics2'), skill='Logistics Cruisers', **kwargs) class Effect1035(BaseEffect): """ eliteBonusLogisticShieldTransferCapNeed2 Used by: Ship: Scimitar """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed', src.getModifiedItemAttr('eliteBonusLogistics2'), skill='Logistics Cruisers', **kwargs) class Effect1036(BaseEffect): """ eliteBonusLogisticShieldTransferCapNeed1 Used by: Ship: Basilisk Ship: Etana """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed', src.getModifiedItemAttr('eliteBonusLogistics1'), skill='Logistics Cruisers', **kwargs) class Effect1046(BaseEffect): """ shipRemoteArmorRangeGC1 Used by: Ship: Oneiros """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'maxRange', src.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs) class Effect1047(BaseEffect): """ shipRemoteArmorRangeAC2 Used by: Ship: Guardian """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'maxRange', src.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect1048(BaseEffect): """ shipShieldTransferRangeCC1 Used by: Ship: Basilisk Ship: Etana """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'maxRange', src.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs) class Effect1049(BaseEffect): """ shipShieldTransferRangeMC2 Used by: Ship: Scimitar """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'maxRange', src.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect1058(BaseEffect): """ eliteBonusHeavyGunshipLaserOptimal1 Used by: Ship: Zealot """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'maxRange', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers', **kwargs) class Effect1060(BaseEffect): """ eliteBonusHeavyGunshipProjectileFallOff1 Used by: Ship: Vagabond """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'falloff', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers', **kwargs) class Effect1061(BaseEffect): """ eliteBonusHeavyGunshipHybridDmg2 Used by: Ship: Deimos Ship: Eagle """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers', **kwargs) class Effect1062(BaseEffect): """ eliteBonusHeavyGunshipLaserDmg2 Used by: Ship: Zealot """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers', **kwargs) class Effect1080(BaseEffect): """ eliteBonusHeavyGunshipHybridFallOff1 Used by: Ship: Deimos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'falloff', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers', **kwargs) class Effect1084(BaseEffect): """ eliteBonusHeavyGunshipDroneControlRange1 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.extraAttributes.increase('droneControlRange', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers', **kwargs) class Effect1087(BaseEffect): """ eliteBonusHeavyGunshipProjectileDmg2 Used by: Ship: Vagabond """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers', **kwargs) class Effect1099(BaseEffect): """ shipProjectileTrackingMF2 Used by: Variations of ship: Slasher (3 of 3) Ship: Republic Fleet Firetail Ship: Wolf """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs) class Effect1176(BaseEffect): """ accerationControlSkillAb&MwdSpeedBoost Used by: Implant: Zor's Custom Navigation Hyper-Link Skill: Acceleration Control """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Propulsion Module', 'speedFactor', container.getModifiedItemAttr('speedFBonus') * level, **kwargs) class Effect1179(BaseEffect): """ eliteBonusGunshipLaserDamage2 Used by: Ship: Retribution """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates', **kwargs) class Effect1181(BaseEffect): """ eliteBonusLogisticEnergyTransferCapNeed1 Used by: Ship: Guardian """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter', 'capacitorNeed', ship.getModifiedItemAttr('eliteBonusLogistics1'), skill='Logistics Cruisers', **kwargs) class Effect1182(BaseEffect): """ shipEnergyTransferRange1 Used by: Ship: Guardian """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter', 'maxRange', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs) class Effect1183(BaseEffect): """ eliteBonusLogisticEnergyTransferCapNeed2 Used by: Ship: Basilisk Ship: Etana """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter', 'capacitorNeed', ship.getModifiedItemAttr('eliteBonusLogistics2'), skill='Logistics Cruisers', **kwargs) class Effect1184(BaseEffect): """ shipEnergyTransferRange2 Used by: Ship: Basilisk Ship: Etana """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter', 'maxRange', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect1185(BaseEffect): """ structureStealthEmitterArraySigDecrease Used by: Implants named like: Halcyon R Booster (5 of 5) Implants named like: X Instinct Booster (4 of 4) Implants named like: grade Halo (15 of 18) Implant: Serenity YC122.9 Season Booster - Signature Radius """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.ship.boostItemAttr('signatureRadius', implant.getModifiedItemAttr('signatureRadiusBonus'), **kwargs) class Effect1190(BaseEffect): """ iceHarvestCycleTimeModulesRequiringIceHarvesting Used by: Implants named like: Inherent Implants 'Yeti' Ice Harvesting IH (3 of 3) Implants named like: ORE 'Harvester' Efficiency (2 of 2) Implants named like: Serenity Limited 'Efficiency' Dose (3 of 3) Implants named like: Serenity Poteque 'Prospector' Harvesting MC (3 of 3) Module: Medium Ice Harvester Accelerator I Skill: Ice Harvesting """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'duration', container.getModifiedItemAttr('iceHarvestCycleBonus') * level, **kwargs) class Effect1200(BaseEffect): """ miningCrystalsMiningAtributesAdjustments Used by: Charges from group: Mercoxit Mining Crystal (6 of 6) Charges from group: Mining Crystal (66 of 66) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.multiplyItemAttr( 'miningAmount', module.getModifiedChargeAttr('specializationAsteroidYieldMultiplier'), **kwargs) module.increaseItemAttr( 'miningWastedVolumeMultiplier', module.getModifiedChargeAttr('specializationCrystalMiningWastedVolumeMultiplierBonus'), **kwargs) module.increaseItemAttr( 'miningWasteProbability', module.getModifiedChargeAttr('specializationCrystalMiningWasteProbabilityBonus'), **kwargs) class Effect1212(BaseEffect): """ crystalMiningamountInfo2 Used by: Modules from group: Frequency Mining Laser (6 of 6) """ runTime = 'late' type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.preAssignItemAttr('specialtyMiningAmount', module.getModifiedItemAttr('miningAmount'), **kwargs) class Effect1215(BaseEffect): """ shipEnergyDrainAmountAF1 Used by: Ship: Caedes Ship: Cruor Ship: Sentinel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect1218(BaseEffect): """ shipBonusPirateSmallHybridDmg Used by: Ship: Daredevil Ship: Hecate Ship: Metamorphosis Ship: Sunesis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect1219(BaseEffect): """ shipEnergyVampireTransferAmountBonusAB Used by: Ship: Bhaalgorn """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect1220(BaseEffect): """ shipEnergyVampireTransferAmountBonusAc Used by: Ship: Ashimmu Ship: Rabisu Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs) class Effect1221(BaseEffect): """ shipStasisWebRangeBonusMB Used by: Ship: Bhaalgorn """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect1222(BaseEffect): """ shipStasisWebRangeBonusMC2 Used by: Ship: Ashimmu """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect1228(BaseEffect): """ shipProjectileTrackingGF Used by: Ship: Chremoas Ship: Dramiel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs) class Effect1230(BaseEffect): """ shipMissileVelocityPirateFactionFrigate Used by: Module: Anhinga Primary Mode Ship: Barghest Ship: Garmur Ship: Laelaps Ship: Orthrus Ship: Raiju """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): penalties = 'ship' not in context fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusRole7'), stackingPenalties=penalties, **kwargs) class Effect1232(BaseEffect): """ shipProjectileRofPirateCruiser Used by: Ship: Cynabal Ship: Moracha """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'speed', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect1233(BaseEffect): """ shipHybridDmgPirateCruiser Used by: Ship: Gnosis Ship: Vigilant """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect1234(BaseEffect): """ shipMissileVelocityPirateFactionLight Used by: Ship: Corax Ship: Talwar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect1239(BaseEffect): """ shipProjectileRofPirateBattleship Used by: Ship: Machariel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'speed', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect1240(BaseEffect): """ shipHybridDmgPirateBattleship Used by: Ship: Vindicator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect1255(BaseEffect): """ setBonusBloodraider Used by: Implants named like: grade Talisman (18 of 18) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant', 'durationBonus', implant.getModifiedItemAttr('implantSetBloodraider'), **kwargs) class Effect1256(BaseEffect): """ setBonusBloodraiderNosferatu Used by: Implants named like: grade Talisman (15 of 18) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capacitor Emission Systems'), 'duration', implant.getModifiedItemAttr('durationBonus'), **kwargs) class Effect1261(BaseEffect): """ setBonusSerpentis Used by: Implants named like: grade Snake (18 of 18) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant', 'velocityBonus', implant.getModifiedItemAttr('implantSetSerpentis'), **kwargs) class Effect1264(BaseEffect): """ interceptor2HybridTracking Used by: Ship: Taranis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusInterceptor2'), skill='Interceptors', **kwargs) class Effect1268(BaseEffect): """ interceptor2LaserTracking Used by: Ship: Crusader """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusInterceptor2'), skill='Interceptors', **kwargs) class Effect1281(BaseEffect): """ structuralAnalysisEffect Used by: Implants named like: Inherent Implants 'Noble' Repair Proficiency RP (6 of 6) Modules named like: Auxiliary Nano Pump (8 of 8) Implant: Imperial Navy Modified 'Noble' Implant """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): penalized = 'implant' not in context fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', container.getModifiedItemAttr('repairBonus'), stackingPenalties=penalized, **kwargs) class Effect1318(BaseEffect): """ ewSkillScanStrengthBonus Used by: Modules named like: Particle Dispersion Augmentor (8 of 8) Skill: Signal Dispersion """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): groups = ('ECM', 'Burst Jammer') level = container.level if 'skill' in context else 1 for scanType in ('Gravimetric', 'Ladar', 'Magnetometric', 'Radar'): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'scan{0}StrengthBonus'.format(scanType), container.getModifiedItemAttr('scanSkillEwStrengthBonus') * level, stackingPenalties=False if 'skill' in context else True, **kwargs) class Effect1360(BaseEffect): """ ewSkillRsdCapNeedBonusSkillLevel Used by: Implants named like: Zainou 'Gypsy' Sensor Linking SL (6 of 6) Skill: Sensor Linking """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Sensor Linking'), 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs) class Effect1361(BaseEffect): """ ewSkillTdCapNeedBonusSkillLevel Used by: Implants named like: Zainou 'Gypsy' Weapon Disruption WD (6 of 6) Skill: Weapon Disruption """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs) class Effect1370(BaseEffect): """ ewSkillTpCapNeedBonusSkillLevel Used by: Implants named like: Zainou 'Gypsy' Target Painting TG (6 of 6) Skill: Target Painting """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Target Painting'), 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs) class Effect1372(BaseEffect): """ ewSkillEwCapNeedSkillLevel Used by: Implants named like: Zainou 'Gypsy' Electronic Warfare EW (6 of 6) Modules named like: Signal Disruption Amplifier (8 of 8) Skill: Electronic Warfare """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs) class Effect1395(BaseEffect): """ shieldBoostAmplifierPassive Used by: Implants named like: grade Crystal (15 of 18) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', container.getModifiedItemAttr('shieldBoostMultiplier'), **kwargs) class Effect1397(BaseEffect): """ setBonusGuristas Used by: Implants named like: grade Crystal (18 of 18) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant', 'shieldBoostMultiplier', implant.getModifiedItemAttr('implantSetGuristas'), **kwargs) class Effect1409(BaseEffect): """ systemScanDurationSkillAstrometrics Used by: Implants named like: Halcyon R Booster (5 of 5) Implants named like: Poteque 'Prospector' Astrometric Acquisition AQ (3 of 3) Implants named like: Poteque 'Prospector' Sharpeye (2 of 2) Implants named like: Serenity Limited 'Sharpeye' Dose (3 of 3) Implant: AIR Astro-Acquisition II Booster Skill: Astrometric Acquisition Skill: Astrometrics """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Astrometrics'), 'duration', container.getModifiedItemAttr('durationBonus') * level, **kwargs) class Effect1410(BaseEffect): """ propulsionSkillCapNeedBonusSkillLevel Used by: Implants named like: Zainou 'Gypsy' Propulsion Jamming PJ (6 of 6) Skill: Propulsion Jamming """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Propulsion Jamming'), 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs) class Effect1412(BaseEffect): """ shipBonusHybridOptimalCB Used by: Ship: Rokh """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs) class Effect1434(BaseEffect): """ caldariShipEwStrengthCB Used by: Ship: Scorpion """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for sensorType in ('Gravimetric', 'Ladar', 'Magnetometric', 'Radar'): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Electronic Warfare'), 'scan{0}StrengthBonus'.format(sensorType), ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs) class Effect1441(BaseEffect): """ caldariShipEwOptimalRangeCB3 Used by: Ship: Scorpion """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'maxRange', ship.getModifiedItemAttr('shipBonusCB3'), skill='Caldari Battleship', **kwargs) class Effect1442(BaseEffect): """ caldariShipEwOptimalRangeCC2 Used by: Ship: Blackbird """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'maxRange', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect1443(BaseEffect): """ caldariShipEwCapacitorNeedCC Used by: Ship: Chameleon Ship: Falcon Ship: Rook """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'capacitorNeed', ship.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs) class Effect1445(BaseEffect): """ ewSkillRsdMaxRangeBonus Used by: Modules named like: Particle Dispersion Projector (8 of 8) Skill: Long Distance Jamming """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 penalize = False if 'skill' in context or 'booster' in context else True fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Sensor Linking'), 'maxRange', container.getModifiedItemAttr('rangeSkillBonus') * level, stackingPenalties=penalize, **kwargs) class Effect1446(BaseEffect): """ ewSkillTpMaxRangeBonus Used by: Modules named like: Particle Dispersion Projector (8 of 8) Skill: Long Distance Jamming """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 penalize = False if 'skill' in context or 'booster' in context else True fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'maxRange', container.getModifiedItemAttr('rangeSkillBonus') * level, stackingPenalties=penalize, **kwargs) class Effect1448(BaseEffect): """ ewSkillTdMaxRangeBonus Used by: Modules named like: Particle Dispersion Projector (8 of 8) Skill: Long Distance Jamming """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 penalize = False if 'skill' in context or 'booster' in context else True fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Weapon Disruptor', 'maxRange', container.getModifiedItemAttr('rangeSkillBonus') * level, stackingPenalties=penalize, **kwargs) class Effect1449(BaseEffect): """ ewSkillRsdFallOffBonus Used by: Skill: Frequency Modulation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Sensor Linking'), 'falloffEffectiveness', container.getModifiedItemAttr('falloffBonus') * level, **kwargs) class Effect1450(BaseEffect): """ ewSkillTpFallOffBonus Used by: Skill: Frequency Modulation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'falloffEffectiveness', container.getModifiedItemAttr('falloffBonus') * level, **kwargs) class Effect1451(BaseEffect): """ ewSkillTdFallOffBonus Used by: Skill: Frequency Modulation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Weapon Disruptor', 'falloffEffectiveness', container.getModifiedItemAttr('falloffBonus') * level, **kwargs) class Effect1452(BaseEffect): """ ewSkillEwMaxRangeBonus Used by: Implants named like: grade Centurion (10 of 12) Modules named like: Particle Dispersion Projector (8 of 8) Implant: Serenity YC122.9 Season Booster - EW Range Skill: Long Distance Jamming """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'maxRange', container.getModifiedItemAttr('rangeSkillBonus') * level, stackingPenalties='skill' not in context and 'implant' not in context, **kwargs) class Effect1453(BaseEffect): """ ewSkillEwFallOffBonus Used by: Skill: Frequency Modulation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'falloffEffectiveness', container.getModifiedItemAttr('falloffBonus') * level, **kwargs) class Effect1472(BaseEffect): """ missileSkillAoeCloudSizeBonus Used by: Implants named like: Zainou 'Deadeye' Guided Missile Precision GP (6 of 6) Modules named like: Warhead Rigor Catalyst (8 of 8) Skill: Guided Missile Precision """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 penalize = False if 'skill' in context or 'implant' in context or 'booster' in context else True fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeCloudSize', container.getModifiedItemAttr('aoeCloudSizeBonus') * level, stackingPenalties=penalize, **kwargs) class Effect1500(BaseEffect): """ shieldOperationSkillBoostCapacitorNeedBonus Used by: Modules named like: Core Defense Capacitor Safeguard (8 of 8) Skill: Shield Compensation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'capacitorNeed', container.getModifiedItemAttr('shieldBoostCapacitorBonus') * level, **kwargs) class Effect1550(BaseEffect): """ ewSkillTargetPaintingStrengthBonus Used by: Skill: Signature Focusing """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): level = skill.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'signatureRadiusBonus', skill.getModifiedItemAttr('scanSkillTargetPaintStrengthBonus') * level, **kwargs) class Effect1551(BaseEffect): """ minmatarShipEwTargetPainterMF2 Used by: Ship: Hyena Ship: Vigil """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'signatureRadiusBonus', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs) class Effect1577(BaseEffect): """ haloSetBonus Used by: Implants named like: grade Halo (18 of 18) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply( lambda implant: implant.item.requiresSkill('Cybernetics'), 'signatureRadiusBonus', implant.getModifiedItemAttr('implantSetHalo'), **kwargs) class Effect1579(BaseEffect): """ setBonusSansha Used by: Implants named like: grade Amulet (18 of 18) Implant: High-grade Halo Omega """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'), 'armorHpBonus', implant.getModifiedItemAttr('implantSetAmulet') or 1, **kwargs) class Effect1581(BaseEffect): """ jumpDriveSkillsRangeBonus Used by: Skill: Jump Drive Calibration """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.ship.boostItemAttr('jumpDriveRange', skill.getModifiedItemAttr('jumpDriveRangeBonus') * skill.level, **kwargs) class Effect1585(BaseEffect): """ capitalTurretSkillLaserDamage Used by: Skill: Capital Energy Turret """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Energy Turret'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1586(BaseEffect): """ capitalTurretSkillProjectileDamage Used by: Skill: Capital Projectile Turret """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1587(BaseEffect): """ capitalTurretSkillHybridDamage Used by: Skill: Capital Hybrid Turret """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1588(BaseEffect): """ capitalLauncherSkillCitadelKineticDamage Used by: Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6) Skill: XL Torpedoes """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'kineticDamage', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect1590(BaseEffect): """ missileSkillAoeVelocityBonus Used by: Implants named like: Halcyon G Booster (5 of 5) Implants named like: Zainou 'Deadeye' Target Navigation Prediction TN (6 of 6) Modules named like: Warhead Flare Catalyst (8 of 8) Skill: Target Navigation Prediction """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 penalize = False if 'skill' in context or 'implant' in context or 'booster' in context else True fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeVelocity', container.getModifiedItemAttr('aoeVelocityBonus') * level, stackingPenalties=penalize, **kwargs) class Effect1592(BaseEffect): """ capitalLauncherSkillCitadelEmDamage Used by: Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6) Skill: XL Torpedoes """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'emDamage', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect1593(BaseEffect): """ capitalLauncherSkillCitadelExplosiveDamage Used by: Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6) Skill: XL Torpedoes """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'explosiveDamage', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect1594(BaseEffect): """ capitalLauncherSkillCitadelThermalDamage Used by: Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6) Skill: XL Torpedoes """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'thermalDamage', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect1595(BaseEffect): """ missileSkillWarheadUpgradesEmDamageBonus Used by: Implants named like: 'Pyrolancea' Dose (7 of 7) Implants named like: Halcyon Y Booster (5 of 5) Implant: AIR Pyrolancea Booster II Skill: Warhead Upgrades """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): mod = src.level if 'skill' in context else 1 fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'emDamage', src.getModifiedItemAttr('damageMultiplierBonus') * mod, **kwargs) class Effect1596(BaseEffect): """ missileSkillWarheadUpgradesExplosiveDamageBonus Used by: Implants named like: 'Pyrolancea' Dose (7 of 7) Implants named like: Halcyon Y Booster (5 of 5) Implant: AIR Pyrolancea Booster II Skill: Warhead Upgrades """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): mod = src.level if 'skill' in context else 1 fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosiveDamage', src.getModifiedItemAttr('damageMultiplierBonus') * mod, **kwargs) class Effect1597(BaseEffect): """ missileSkillWarheadUpgradesKineticDamageBonus Used by: Implants named like: 'Pyrolancea' Dose (7 of 7) Implants named like: Halcyon Y Booster (5 of 5) Implant: AIR Pyrolancea Booster II Skill: Warhead Upgrades """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): mod = src.level if 'skill' in context else 1 fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', src.getModifiedItemAttr('damageMultiplierBonus') * mod, **kwargs) class Effect1615(BaseEffect): """ shipAdvancedSpaceshipCommandAgilityBonus Used by: Items from market group: Ships > Capital Ships (52 of 52) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): skillName = 'Advanced Spaceship Command' skill = fit.character.getSkill(skillName) fit.ship.boostItemAttr('agility', skill.getModifiedItemAttr('agilityBonus'), skill=skillName, **kwargs) class Effect1616(BaseEffect): """ skillCapitalShipsAdvancedAgility Used by: Skill: Capital Ships """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): if fit.ship.item.requiresSkill('Capital Ships'): fit.ship.boostItemAttr('agility', skill.getModifiedItemAttr('agilityBonus') * skill.level, **kwargs) class Effect1617(BaseEffect): """ shipCapitalAgilityBonus Used by: Ships from group: Carrier (4 of 4) Ships from group: Dreadnought (13 of 13) Ships from group: Force Auxiliary (6 of 6) Ships from group: Lancer Dreadnought (4 of 4) Ships from group: Supercarrier (6 of 6) Ships from group: Titan (8 of 8) Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('agility', src.getModifiedItemAttr('advancedCapitalAgility'), stackingPenalties=True, **kwargs) class Effect1634(BaseEffect): """ capitalShieldOperationSkillCapacitorNeedBonus Used by: Modules named like: Core Defense Capacitor Safeguard (8 of 8) Skill: Capital Shield Operation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Operation'), 'capacitorNeed', container.getModifiedItemAttr('shieldBoostCapacitorBonus') * level, **kwargs) class Effect1635(BaseEffect): """ capitalRepairSystemsSkillDurationBonus Used by: Implants named like: Chemal Tech Repair Booster (3 of 3) Modules named like: Nanobot Accelerator (8 of 8) Implant: AIR Repairer Booster III Skill: Capital Repair Systems """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Repair Systems'), 'duration', container.getModifiedItemAttr('durationSkillBonus') * level, **kwargs) class Effect1638(BaseEffect): """ skillAdvancedWeaponUpgradesPowerNeedBonus Used by: Skill: Advanced Weapon Upgrades """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: (mod.item.requiresSkill('Gunnery') or mod.item.requiresSkill('Missile Launcher Operation') or mod.item.requiresSkill('Vorton Projector Operation')), 'power', skill.getModifiedItemAttr('powerNeedBonus') * skill.level, **kwargs) class Effect1643(BaseEffect): """ armoredCommandMindlink Used by: Implants from group: Cyber Leadership (4 of 13) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff2Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff1Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff4Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff3Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'buffDuration', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) class Effect1644(BaseEffect): """ skirmishCommandMindlink Used by: Implants from group: Cyber Leadership (4 of 13) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff3Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff4Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff2Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff1Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'buffDuration', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) class Effect1645(BaseEffect): """ shieldCommandMindlink Used by: Implants from group: Cyber Leadership (4 of 13) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff4Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff3Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff2Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff1Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'buffDuration', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) class Effect1646(BaseEffect): """ informationCommandMindlink Used by: Implants from group: Cyber Leadership (4 of 13) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff4Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff3Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff1Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff2Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'buffDuration', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) class Effect1650(BaseEffect): """ skillSiegeModuleConsumptionQuantityBonus Used by: Skill: Tactical Weapon Reconfiguration """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): amount = -skill.getModifiedItemAttr('consumptionQuantityBonus') fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill(skill), 'consumptionQuantity', amount * skill.level, **kwargs) class Effect1657(BaseEffect): """ missileSkillWarheadUpgradesThermalDamageBonus Used by: Implants named like: 'Pyrolancea' Dose (7 of 7) Implants named like: Halcyon Y Booster (5 of 5) Implant: AIR Pyrolancea Booster II Skill: Warhead Upgrades """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): mod = src.level if 'skill' in context else 1 fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', src.getModifiedItemAttr('damageMultiplierBonus') * mod, **kwargs) class Effect1668(BaseEffect): """ freighterCargoBonusA2 Used by: Variations of ship: Providence (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('capacity', ship.getModifiedItemAttr('freighterBonusA2'), skill='Amarr Freighter', **kwargs) class Effect1669(BaseEffect): """ freighterCargoBonusC2 Used by: Variations of ship: Charon (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('capacity', ship.getModifiedItemAttr('freighterBonusC2'), skill='Caldari Freighter', **kwargs) class Effect1670(BaseEffect): """ freighterCargoBonusG2 Used by: Variations of ship: Obelisk (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('capacity', ship.getModifiedItemAttr('freighterBonusG2'), skill='Gallente Freighter', **kwargs) class Effect1671(BaseEffect): """ freighterCargoBonusM2 Used by: Variations of ship: Fenrir (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('capacity', ship.getModifiedItemAttr('freighterBonusM2'), skill='Minmatar Freighter', **kwargs) class Effect1672(BaseEffect): """ freighterMaxVelocityBonusA1 Used by: Ship: Providence """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('freighterBonusA1'), skill='Amarr Freighter', **kwargs) class Effect1673(BaseEffect): """ freighterMaxVelocityBonusC1 Used by: Ship: Charon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('freighterBonusC1'), skill='Caldari Freighter', **kwargs) class Effect1674(BaseEffect): """ freighterMaxVelocityBonusG1 Used by: Ship: Obelisk """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('freighterBonusG1'), skill='Gallente Freighter', **kwargs) class Effect1675(BaseEffect): """ freighterMaxVelocityBonusM1 Used by: Ship: Fenrir """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('freighterBonusM1'), skill='Minmatar Freighter', **kwargs) class Effect1720(BaseEffect): """ shieldBoostAmplifier Used by: Modules from group: Capacitor Power Relay (20 of 20) Modules from group: Shield Boost Amplifier (23 of 23) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Operation') or mod.item.requiresSkill('Capital Shield Operation'), 'shieldBonus', module.getModifiedItemAttr('shieldBoostMultiplier'), stackingPenalties=True, **kwargs) class Effect1722(BaseEffect): """ jumpDriveSkillsCapacitorNeedBonus Used by: Skill: Jump Drive Operation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.ship.boostItemAttr('jumpDriveCapacitorNeed', skill.getModifiedItemAttr('jumpDriveCapacitorNeedBonus') * skill.level, **kwargs) class Effect1730(BaseEffect): """ droneDmgBonus Used by: Skills from group: Drones (9 of 28) """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill(skill), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1738(BaseEffect): """ doHacking Used by: Modules from group: Data Miners (11 of 11) """ type = 'active' class Effect1763(BaseEffect): """ missileSkillRapidLauncherRoF Used by: Implants named like: Halcyon R Booster (5 of 5) Implants named like: Zainou 'Deadeye' Rapid Launch RL (6 of 6) Implant: Whelan Machorin's Ballistic Smartlink Skill: Missile Launcher Operation Skill: Rapid Launch """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'speed', container.getModifiedItemAttr('rofBonus') * level, **kwargs) class Effect1764(BaseEffect): """ missileSkillMissileProjectileVelocityBonus Used by: Implants named like: Zainou 'Deadeye' Missile Projection MP (6 of 6) Modules named like: Hydraulic Bay Thrusters (8 of 8) Skill: Missile Projection """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 penalized = False if 'skill' in context or 'implant' in context or 'booster' in context else True fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', container.getModifiedItemAttr('speedFactor') * level, stackingPenalties=penalized, **kwargs) class Effect1773(BaseEffect): """ shipBonusSHTFalloffGF2 Used by: Ship: Atron Ship: Daredevil """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect1804(BaseEffect): """ shipArmorEMResistanceAF1 Used by: Ship: Astero Ship: Malice Ship: Punisher """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorEmDamageResonance', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect1805(BaseEffect): """ shipArmorTHResistanceAF1 Used by: Ship: Astero Ship: Malice Ship: Punisher """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorThermalDamageResonance', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect1806(BaseEffect): """ shipArmorKNResistanceAF1 Used by: Ship: Astero Ship: Malice Ship: Punisher """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorKineticDamageResonance', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect1807(BaseEffect): """ shipArmorEXResistanceAF1 Used by: Ship: Astero Ship: Malice Ship: Punisher """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect1812(BaseEffect): """ shipShieldEMResistanceCC2 Used by: Variations of ship: Moa (3 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldEmDamageResonance', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect1813(BaseEffect): """ shipShieldThermalResistanceCC2 Used by: Variations of ship: Moa (3 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldThermalDamageResonance', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect1814(BaseEffect): """ shipShieldKineticResistanceCC2 Used by: Variations of ship: Moa (3 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldKineticDamageResonance', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect1815(BaseEffect): """ shipShieldExplosiveResistanceCC2 Used by: Variations of ship: Moa (3 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect1816(BaseEffect): """ shipShieldEMResistanceCF2 Used by: Variations of ship: Merlin (3 of 4) Ship: Cambion Ship: Whiptail """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldEmDamageResonance', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) class Effect1817(BaseEffect): """ shipShieldThermalResistanceCF2 Used by: Variations of ship: Merlin (3 of 4) Ship: Cambion Ship: Whiptail """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldThermalDamageResonance', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) class Effect1819(BaseEffect): """ shipShieldKineticResistanceCF2 Used by: Variations of ship: Merlin (3 of 4) Ship: Cambion Ship: Whiptail """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldKineticDamageResonance', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) class Effect1820(BaseEffect): """ shipShieldExplosiveResistanceCF2 Used by: Variations of ship: Merlin (3 of 4) Ship: Cambion Ship: Whiptail """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) class Effect1848(BaseEffect): """ miningForemanMindlink Used by: Implant: Mining Foreman Mindlink Implant: ORE Mining Director Mindlink """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff4Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff2Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff1Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff3Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'buffDuration', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) class Effect1851(BaseEffect): """ selfRof Used by: Skills named like: Missile Specialization (4 of 5) Skill: Rocket Specialization Skill: Torpedo Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), 'speed', skill.getModifiedItemAttr('rofBonus') * skill.level, **kwargs) class Effect1862(BaseEffect): """ shipMissileEMDamageCF2 Used by: Ship: Garmur Ship: Raiju """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'emDamage', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect1863(BaseEffect): """ shipMissileThermalDamageCF2 Used by: Ship: Garmur Ship: Raiju """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect1864(BaseEffect): """ shipMissileExplosiveDamageCF2 Used by: Ship: Garmur Ship: Raiju """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect1882(BaseEffect): """ miningYieldMultiplyPercent Used by: Modules from group: Mining Upgrade (7 of 12) Variations of module: Mining Laser Upgrade I (5 of 5) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining'), 'miningAmount', module.getModifiedItemAttr('miningAmountBonus'), **kwargs) class Effect1885(BaseEffect): """ shipCruiseLauncherROFBonus2CB Used by: Modules named like: Anhinga Mode (3 of 3) Ship: Raven Ship: Raven State Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): if 'ship' in context: skill = 'Caldari Battleship' penalties = False penaltyGroup = None else: skill = None penalties = True penaltyGroup = 'postPerc' fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Missile Launcher Cruise', 'speed', ship.getModifiedItemAttr('shipBonus2CB'), skill=skill, stackingPenalties=penalties, penaltyGroup=penaltyGroup, **kwargs) class Effect1886(BaseEffect): """ shipSiegeLauncherROFBonus2CB Used by: Modules named like: Anhinga Mode (3 of 3) Ship: Raven Ship: Raven State Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): if 'ship' in context: skill = 'Caldari Battleship' penalties = False penaltyGroup = None else: skill = None penalties = True penaltyGroup = 'postPerc' fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Missile Launcher Torpedo', 'speed', ship.getModifiedItemAttr('shipBonus2CB'), skill=skill, stackingPenalties=penalties, penaltyGroup=penaltyGroup, **kwargs) class Effect1910(BaseEffect): """ eliteBonusVampireDrainAmount2 Used by: Ship: Curse Ship: Pilgrim """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', ship.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships', **kwargs) class Effect1911(BaseEffect): """ eliteReconBonusGravimetricStrength2 Used by: Ship: Chameleon Ship: Falcon Ship: Rook """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanGravimetricStrengthBonus', ship.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships', **kwargs) class Effect1912(BaseEffect): """ eliteReconBonusMagnetometricStrength2 Used by: Ship: Chameleon Ship: Falcon Ship: Rook """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanMagnetometricStrengthBonus', ship.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships', **kwargs) class Effect1913(BaseEffect): """ eliteReconBonusRadarStrength2 Used by: Ship: Chameleon Ship: Falcon Ship: Rook """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanRadarStrengthBonus', ship.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships', **kwargs) class Effect1914(BaseEffect): """ eliteReconBonusLadarStrength2 Used by: Ship: Chameleon Ship: Falcon Ship: Rook """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanLadarStrengthBonus', ship.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships', **kwargs) class Effect1921(BaseEffect): """ eliteReconStasisWebBonus2 Used by: Ship: Huginn Ship: Moracha Ship: Rapier Ship: Victor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', ship.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships', **kwargs) class Effect1922(BaseEffect): """ eliteReconScramblerRangeBonus2 Used by: Ship: Arazu Ship: Enforcer Ship: Lachesis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', ship.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships', **kwargs) class Effect1959(BaseEffect): """ armorReinforcerMassAdd Used by: Modules from group: Armor Plate (51 of 51) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('mass', module.getModifiedItemAttr('massAddition'), **kwargs) class Effect1964(BaseEffect): """ shipBonusShieldTransferCapneed1 Used by: Ship: Osprey """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed', src.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs) class Effect1969(BaseEffect): """ shipBonusRemoteArmorRepairCapNeedGC1 Used by: Ship: Exequror """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', src.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs) class Effect1996(BaseEffect): """ caldariShipEwCapacitorNeedCF2 Used by: Ship: Griffin Ship: Kitsune """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'capacitorNeed', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect2000(BaseEffect): """ droneRangeBonusAdd Used by: Modules from group: Drone Control Range Module (7 of 7) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): amount = module.getModifiedItemAttr('droneRangeBonus') fit.extraAttributes.increase('droneControlRange', amount, **kwargs) class Effect2008(BaseEffect): """ cynosuralDurationBonus Used by: Ships from group: Black Ops (6 of 6) Ships from group: Force Recon Ship (9 of 10) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Cynosural Field Theory'), 'duration', ship.getModifiedItemAttr('durationBonus'), **kwargs) class Effect2013(BaseEffect): """ droneMaxVelocityBonus Used by: Implants named like: Halcyon R Booster (5 of 5) Modules named like: Drone Speed Augmentor (6 of 8) Implant: Overmind 'Goliath' Drone Tuner T25-10S Implant: Overmind 'Hawkmoth' Drone Tuner S10-25T """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 penalties = False if 'implant' in context or 'booster' in context else True fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'maxVelocity', container.getModifiedItemAttr('droneMaxVelocityBonus') * level, stackingPenalties=penalties, **kwargs) class Effect2014(BaseEffect): """ droneMaxRangeBonus Used by: Modules named like: Drone Scope Chip (6 of 8) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 penalized = False if 'skill' in context else True fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'maxRange', container.getModifiedItemAttr('rangeSkillBonus') * level, stackingPenalties=penalized, **kwargs) class Effect2015(BaseEffect): """ droneDurabilityShieldCapBonus Used by: Modules named like: Drone Durability Enhancer (6 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'shieldCapacity', module.getModifiedItemAttr('hullHpBonus'), **kwargs) class Effect2016(BaseEffect): """ droneDurabilityArmorHPBonus Used by: Modules named like: Drone Durability Enhancer (6 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'armorHP', module.getModifiedItemAttr('hullHpBonus'), **kwargs) class Effect2017(BaseEffect): """ droneDurabilityHPBonus Used by: Modules named like: Drone Durability Enhancer (6 of 8) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'hp', container.getModifiedItemAttr('hullHpBonus') * level, **kwargs) class Effect2019(BaseEffect): """ repairDroneShieldBonusBonus Used by: Implants named like: Black Market 'Valdimar' Repair Drone Operation DR (3 of 3) Modules named like: Drone Repair Augmentor (8 of 8) Skill: Repair Drone Operation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 penalized = False if 'skill' in context or 'implant' in context else True fit.drones.filteredItemBoost(lambda drone: drone.item.group.name == 'Logistic Drone', 'shieldBonus', container.getModifiedItemAttr('damageHP') * level, stackingPenalties=penalized, **kwargs) class Effect2020(BaseEffect): """ repairDroneArmorDamageAmountBonus Used by: Implants named like: Black Market 'Valdimar' Repair Drone Operation DR (3 of 3) Modules named like: Drone Repair Augmentor (8 of 8) Skill: Repair Drone Operation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 penalized = False if 'skill' in context or 'implant' in context else True fit.drones.filteredItemBoost(lambda drone: drone.item.group.name == 'Logistic Drone', 'armorDamageAmount', container.getModifiedItemAttr('damageHP') * level, stackingPenalties=penalized, **kwargs) class Effect2029(BaseEffect): """ addToSignatureRadius2 Used by: Modules from group: Missile Launcher Bomb (2 of 2) Modules from group: Shield Extender (36 of 36) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('signatureRadius', module.getModifiedItemAttr('signatureRadiusAdd'), **kwargs) class Effect2041(BaseEffect): """ modifyArmorResonancePostPercent Used by: Modules from group: Armor Coating (184 of 184) Modules from group: Energized Armor Membrane (169 of 169) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for type in ('kinetic', 'thermal', 'explosive', 'em'): fit.ship.boostItemAttr('armor%sDamageResonance' % type.capitalize(), module.getModifiedItemAttr('%sDamageResistanceBonus' % type), stackingPenalties=True, **kwargs) class Effect2052(BaseEffect): """ modifyShieldResonancePostPercent Used by: Modules from group: Shield Resistance Amplifier (84 of 84) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for type in ('kinetic', 'thermal', 'explosive', 'em'): fit.ship.boostItemAttr('shield%sDamageResonance' % type.capitalize(), module.getModifiedItemAttr('%sDamageResistanceBonus' % type), stackingPenalties=True, **kwargs) class Effect2053(BaseEffect): """ emShieldCompensationHardeningBonusGroupShieldAmp Used by: Skill: EM Shield Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Shield Resistance Amplifier', 'emDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs) class Effect2054(BaseEffect): """ explosiveShieldCompensationHardeningBonusGroupShieldAmp Used by: Skill: Explosive Shield Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Shield Resistance Amplifier', 'explosiveDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs) class Effect2055(BaseEffect): """ kineticShieldCompensationHardeningBonusGroupShieldAmp Used by: Skill: Kinetic Shield Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Shield Resistance Amplifier', 'kineticDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs) class Effect2056(BaseEffect): """ thermalShieldCompensationHardeningBonusGroupShieldAmp Used by: Skill: Thermal Shield Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Shield Resistance Amplifier', 'thermalDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs) class Effect2105(BaseEffect): """ emArmorCompensationHardeningBonusGroupArmorCoating Used by: Skill: EM Armor Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Coating', 'emDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs) class Effect2106(BaseEffect): """ explosiveArmorCompensationHardeningBonusGroupArmorCoating Used by: Skill: Explosive Armor Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Coating', 'explosiveDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs) class Effect2107(BaseEffect): """ kineticArmorCompensationHardeningBonusGroupArmorCoating Used by: Skill: Kinetic Armor Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Coating', 'kineticDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs) class Effect2108(BaseEffect): """ thermicArmorCompensationHardeningBonusGroupArmorCoating Used by: Skill: Thermal Armor Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Coating', 'thermalDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs) class Effect2109(BaseEffect): """ emArmorCompensationHardeningBonusGroupEnergized Used by: Skill: EM Armor Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energized Armor Membrane', 'emDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs) class Effect2110(BaseEffect): """ explosiveArmorCompensationHardeningBonusGroupEnergized Used by: Skill: Explosive Armor Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energized Armor Membrane', 'explosiveDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs) class Effect2111(BaseEffect): """ kineticArmorCompensationHardeningBonusGroupEnergized Used by: Skill: Kinetic Armor Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energized Armor Membrane', 'kineticDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs) class Effect2112(BaseEffect): """ thermicArmorCompensationHardeningBonusGroupEnergized Used by: Skill: Thermal Armor Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energized Armor Membrane', 'thermalDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs) class Effect2130(BaseEffect): """ smallHybridMaxRangeBonus Used by: Ship: Catalyst Ship: Cormorant """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('maxRangeBonus'), **kwargs) class Effect2131(BaseEffect): """ smallEnergyMaxRangeBonus Used by: Ship: Coercer Ship: Gold Magnate Ship: Silver Magnate """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'maxRange', ship.getModifiedItemAttr('maxRangeBonus'), **kwargs) class Effect2132(BaseEffect): """ smallProjectileMaxRangeBonus Used by: Ship: Thrasher """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'maxRange', ship.getModifiedItemAttr('maxRangeBonus'), **kwargs) class Effect2133(BaseEffect): """ energyTransferArrayMaxRangeBonus Used by: Ship: Augoror Ship: Osprey """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter', 'maxRange', ship.getModifiedItemAttr('maxRangeBonus2'), **kwargs) class Effect2134(BaseEffect): """ shieldTransporterMaxRangeBonus Used by: Ships from group: Industrial Command Ship (2 of 2) Ship: Osprey Ship: Rorqual Ship: Scythe """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Shield Booster', 'maxRange', ship.getModifiedItemAttr('maxRangeBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Ancillary Remote Shield Booster', 'maxRange', ship.getModifiedItemAttr('maxRangeBonus'), **kwargs) class Effect2135(BaseEffect): """ armorRepairProjectorMaxRangeBonus Used by: Variations of ship: Navitas (2 of 2) Ship: Augoror Ship: Deacon Ship: Exequror Ship: Inquisitor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Armor Repairer', 'maxRange', src.getModifiedItemAttr('maxRangeBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Ancillary Remote Armor Repairer', 'maxRange', src.getModifiedItemAttr('maxRangeBonus'), **kwargs) class Effect2143(BaseEffect): """ minmatarShipEwTargetPainterMC2 Used by: Ship: Huginn """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'signatureRadiusBonus', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect2152(BaseEffect): """ jumpPortalGeneration Used by: Module: Industrial Jump Portal Generator I Module: Jump Portal Generator I """ type = 'active' @staticmethod def handler(fit, mod, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) class Effect2155(BaseEffect): """ eliteBonusCommandShipProjectileDamageCS1 Used by: Ship: Sleipnir """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusCommandShips1'), skill='Command Ships', **kwargs) class Effect2156(BaseEffect): """ eliteBonusCommandShipProjectileFalloffCS2 Used by: Ship: Sleipnir """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'falloff', ship.getModifiedItemAttr('eliteBonusCommandShips2'), skill='Command Ships', **kwargs) class Effect2157(BaseEffect): """ eliteBonusCommandShipLaserDamageCS1 Used by: Ship: Absolution """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusCommandShips1'), skill='Command Ships', **kwargs) class Effect2160(BaseEffect): """ eliteBonusCommandShipHybridFalloffCS2 Used by: Ship: Astarte """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'falloff', ship.getModifiedItemAttr('eliteBonusCommandShips2'), skill='Command Ships', **kwargs) class Effect2179(BaseEffect): """ shipBonusDroneHitpointsGC2 Used by: Ships named like: Stratios (2 of 2) Ship: Vexor Ship: Vexor Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for type in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), type, ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect2181(BaseEffect): """ shipBonusDroneHitpointsFixedAC2 Used by: Variations of ship: Arbitrator (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for type in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), type, ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect2186(BaseEffect): """ shipBonusDroneHitpointsGB2 Used by: Variations of ship: Dominix (3 of 3) Ship: Nestor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for type in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), type, ship.getModifiedItemAttr('shipBonusGB2'), skill='Gallente Battleship', **kwargs) class Effect2187(BaseEffect): """ shipBonusDroneDamageMultiplierGB2 Used by: Variations of ship: Dominix (3 of 3) Ship: Nestor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGB2'), skill='Gallente Battleship', **kwargs) class Effect2188(BaseEffect): """ shipBonusDroneDamageMultiplierGC2 Used by: Ships named like: Stratios (2 of 2) Ship: Vexor Ship: Vexor Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect2189(BaseEffect): """ shipBonusDroneDamageMultiplierAC2 Used by: Variations of ship: Arbitrator (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect2201(BaseEffect): """ eliteBonusInterdictorsProjectileFalloff1 Used by: Ship: Sabre """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'falloff', ship.getModifiedItemAttr('eliteBonusInterdictors1'), skill='Interdictors', **kwargs) class Effect2215(BaseEffect): """ shipBonusPirateFrigateProjDamage Used by: Ship: Chremoas Ship: Dramiel Ship: Mekubal Ship: Metamorphosis Ship: Sunesis Ship: Svipul """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect2232(BaseEffect): """ scanStrengthBonusPercentOnline Used by: Modules from group: Signal Amplifier (7 of 7) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for type in ('Gravimetric', 'Magnetometric', 'Radar', 'Ladar'): fit.ship.boostItemAttr('scan%sStrength' % type, module.getModifiedItemAttr('scan%sStrengthPercent' % type), stackingPenalties=True, **kwargs) class Effect2249(BaseEffect): """ shipBonusDroneMiningAmountAC2 Used by: Ship: Arbitrator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'miningAmount', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect2250(BaseEffect): """ shipBonusDroneMiningAmountGC2 Used by: Ship: Vexor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Mining Drone Operation'), 'miningAmount', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect2251(BaseEffect): """ commandshipMultiRelayEffect Used by: Ships from group: Command Ship (8 of 8) Ships from group: Industrial Command Ship (2 of 2) Ship: Odysseus Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupOnline', src.getModifiedItemAttr('maxGangModules'), **kwargs) fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupActive', src.getModifiedItemAttr('maxGangModules'), **kwargs) class Effect2252(BaseEffect): """ covertOpsAndReconOpsCloakModuleDelayBonus Used by: Ships from group: Black Ops (6 of 6) Ships from group: Blockade Runner (5 of 5) Ships from group: Covert Ops (9 of 9) Ships from group: Expedition Frigate (2 of 2) Ships from group: Force Recon Ship (10 of 10) Ships from group: Stealth Bomber (5 of 5) Ships named like: Stratios (2 of 2) Subsystems named like: Defensive Covert Reconfiguration (4 of 4) Ship: Astero Ship: Cenotaph Ship: Metamorphosis Ship: Odysseus Ship: Rabisu Ship: Tholos """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredItemForce(lambda mod: mod.item.requiresSkill('Cloaking'), 'moduleReactivationDelay', container.getModifiedItemAttr('covertOpsAndReconOpsCloakModuleDelay'), **kwargs) class Effect2253(BaseEffect): """ covertOpsStealthBomberTargettingDelayBonus Used by: Ships from group: Black Ops (6 of 6) Ships from group: Stealth Bomber (5 of 5) Ship: Caedes Ship: Chremoas Ship: Endurance Ship: Etana Ship: Rabisu Ship: Sidewinder """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemForce(lambda mod: mod.item.group.name == 'Cloaking Device', 'cloakingTargetingDelay', ship.getModifiedItemAttr('covertOpsStealthBomberTargettingDelay'), **kwargs) class Effect2255(BaseEffect): """ tractorBeamCan Used by: Deployables from group: Mobile Tractor Unit (5 of 5) Modules from group: Tractor Beam (6 of 6) """ type = 'active' class Effect2296(BaseEffect): """ modifyArmorResonancePassivePostPercentPassive Used by: Implants named like: Halcyon Y Booster (5 of 5) Implants named like: Tetrimon Resistance Booster (4 of 4) """ type = 'passive' @staticmethod def handler(fit, booster, context, projectionRange, **kwargs): for srcResType, tgtResType in ( ('Em', 'Em'), ('Explosive', 'Explosive'), ('Kinetic', 'Kinetic'), ('Thermic', 'Thermal') ): fit.ship.boostItemAttr(f'armor{tgtResType}DamageResonance', booster.getModifiedItemAttr(f'passive{srcResType}DamageResistanceBonus'), **kwargs) class Effect2297(BaseEffect): """ modifyShieldResonancePassivePostPercentPassive Used by: Implants named like: Halcyon B Booster (5 of 5) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for srcResType, tgtResType in ( ('Em', 'Em'), ('Explosive', 'Explosive'), ('Kinetic', 'Kinetic'), ('Thermic', 'Thermal') ): fit.ship.boostItemAttr(f'shield{tgtResType}DamageResonance', ship.getModifiedItemAttr(f'passive{srcResType}DamageResistanceBonus'), **kwargs) class Effect2298(BaseEffect): """ scanStrengthBonusPercentPassive Used by: Implants named like: Halcyon B Booster (5 of 5) Implants named like: Halcyon G Booster (5 of 5) Implants named like: High grade Grail (5 of 6) Implants named like: High grade Jackal (5 of 6) Implants named like: High grade Spur (5 of 6) Implants named like: High grade Talon (5 of 6) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): for type in ('Gravimetric', 'Magnetometric', 'Radar', 'Ladar'): sensorType = 'scan{0}Strength'.format(type) sensorBoost = 'scan{0}StrengthPercent'.format(type) if sensorBoost in implant.item.attributes: fit.ship.boostItemAttr(sensorType, implant.getModifiedItemAttr(sensorBoost), **kwargs) class Effect2302(BaseEffect): """ damageControl Used by: Modules from group: Damage Control (25 of 30) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for layer, attrPrefix in (('shield', 'shield'), ('armor', 'armor'), ('hull', '')): for damageType in ('Kinetic', 'Thermal', 'Explosive', 'Em'): bonus = '%s%sDamageResonance' % (attrPrefix, damageType) bonus = '%s%s' % (bonus[0].lower(), bonus[1:]) booster = '%s%sDamageResonance' % (layer, damageType) fit.ship.multiplyItemAttr(bonus, module.getModifiedItemAttr(booster), stackingPenalties=True, penaltyGroup='preMul', **kwargs) class Effect2305(BaseEffect): """ eliteReconBonusEnergyNeutAmount2 Used by: Ship: Curse Ship: Pilgrim """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', ship.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships', **kwargs) class Effect2354(BaseEffect): """ capitalRemoteArmorRepairerCapNeedBonusSkill Used by: Variations of module: Capital Remote Repair Augmentor I (2 of 2) Skill: Capital Remote Armor Repair Systems """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Remote Armor Repair Systems'), 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs) class Effect2355(BaseEffect): """ capitalRemoteShieldTransferCapNeedBonusSkill Used by: Skill: Capital Shield Emission Systems """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Emission Systems'), 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs) class Effect2356(BaseEffect): """ capitalRemoteEnergyTransferCapNeedBonusSkill Used by: Skill: Capital Capacitor Emission Systems """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Capacitor Emission Systems'), 'capacitorNeed', skill.getModifiedItemAttr('capNeedBonus') * skill.level, **kwargs) class Effect2402(BaseEffect): """ skillSuperWeaponDmgBonus Used by: Skill: Advanced Doomsday Operation Skill: Doomsday Operation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): damageTypes = ('em', 'explosive', 'kinetic', 'thermal') for dmgType in damageTypes: fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Doomsday Operation'), f'{dmgType}Damage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect2422(BaseEffect): """ implantVelocityBonus Used by: Implants named like: Eifyr and Co. 'Rogue' Navigation NN (6 of 6) Implant: Genolution Core Augmentation CA-3 Implant: Shaqil's Speed Enhancer """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', implant.getModifiedItemAttr('implantBonusVelocity'), **kwargs) class Effect2432(BaseEffect): """ energyManagementCapacitorCapacityBonusPostPercentPassive Used by: Implants named like: Halcyon B Booster (5 of 5) Implants named like: Halcyon Y Booster (5 of 5) Implants named like: Inherent Implants 'Squire' Capacitor Management EM (6 of 6) Implants named like: Mindflood Booster (4 of 4) Implants named like: Tetrimon Capacitor Booster (4 of 4) Modules named like: Semiconductor Memory Cell (8 of 8) Implant: Antipharmakon Aeolis Implant: Basic Capsuleer Engineering Augmentation Chip Implant: Genolution Core Augmentation CA-1 Skill: Capacitor Management """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.ship.boostItemAttr('capacitorCapacity', container.getModifiedItemAttr('capacitorCapacityBonus') * level, **kwargs) class Effect2444(BaseEffect): """ minerCpuUsageMultiplyPercent2 Used by: Modules from group: Mining Upgrade (7 of 12) Variations of module: Mining Laser Upgrade I (5 of 5) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining'), 'cpu', module.getModifiedItemAttr('cpuPenaltyPercent'), **kwargs) class Effect2445(BaseEffect): """ iceMinerCpuUsagePercent Used by: Variations of module: Ice Harvester Upgrade I (5 of 5) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'cpu', module.getModifiedItemAttr('cpuPenaltyPercent'), **kwargs) class Effect2456(BaseEffect): """ miningUpgradeCPUPenaltyReductionModulesRequiringMiningUpgradePercent Used by: Implants named like: Inherent Implants 'Highwall' Mining Upgrades MU (3 of 3) Skill: Mining Upgrades """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Upgrades'), 'cpuPenaltyPercent', container.getModifiedItemAttr('miningUpgradeCPUReductionBonus') * level, **kwargs) class Effect2465(BaseEffect): """ shipBonusArmorResistAB Used by: Ship: Abaddon Ship: Nestor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for type in ('Em', 'Explosive', 'Kinetic', 'Thermal'): fit.ship.boostItemAttr('armor{0}DamageResonance'.format(type), ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect2479(BaseEffect): """ iceHarvestCycleTimeModulesRequiringIceHarvestingOnline Used by: Variations of module: Ice Harvester Upgrade I (5 of 5) Module: Frostline 'Omnivore' Harvester Upgrade """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'duration', module.getModifiedItemAttr('iceHarvestCycleBonus'), **kwargs) class Effect2485(BaseEffect): """ implantArmorHpBonus2 Used by: Implants named like: Capsuleer Defense Augmentation Chip (3 of 3) Implants named like: Festival only 'Rock' AH Dose (4 of 4) Implants named like: Inherent Implants 'Noble' Hull Upgrades HG (7 of 7) Implants named like: Serenity Limited 'Hardshell' Dose (3 of 3) Implant: Genolution Core Augmentation CA-4 Implant: Imperial Navy Modified 'Noble' Implant Implant: Imperial Special Ops Field Enhancer - Standard """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorHP', implant.getModifiedItemAttr('armorHpBonus2'), **kwargs) class Effect2488(BaseEffect): """ implantVelocityBonus2 Used by: Implant: Republic Special Ops Field Enhancer - Gamma """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', implant.getModifiedItemAttr('velocityBonus2'), **kwargs) class Effect2489(BaseEffect): """ shipBonusRemoteTrackingComputerFalloffMC Used by: Ship: Scimitar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer', 'falloffEffectiveness', ship.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs) class Effect2490(BaseEffect): """ shipBonusRemoteTrackingComputerFalloffGC2 Used by: Ship: Oneiros """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer', 'falloffEffectiveness', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect2491(BaseEffect): """ ewSkillEcmBurstRangeBonus Used by: Modules named like: Particle Dispersion Projector (8 of 8) Skill: Long Distance Jamming """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Burst Jammer', 'ecmBurstRange', container.getModifiedItemAttr('rangeSkillBonus') * level, **kwargs) class Effect2492(BaseEffect): """ ewSkillEcmBurstCapNeedBonus Used by: Implants named like: Zainou 'Gypsy' Electronic Warfare EW (6 of 6) Modules named like: Signal Disruption Amplifier (8 of 8) Skill: Electronic Warfare """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Burst Jammer', 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs) class Effect2503(BaseEffect): """ shipHTTrackingBonusGB2 Used by: Ships named like: Megathron (3 of 3) Ship: Marshal Ship: Python """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGB2'), skill='Gallente Battleship', **kwargs) class Effect2504(BaseEffect): """ shipBonusHybridTrackingGF2 Used by: Ship: Ares Ship: Federation Navy Comet Ship: Pacifier Ship: Sidewinder Ship: Tristan """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect2561(BaseEffect): """ eliteBonusAssaultShipMissileVelocity1 Used by: Ship: Hawk """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect2589(BaseEffect): """ modifyBoosterEffectChanceWithBoosterChanceBonusPostPercent Used by: Implants named like: Eifyr and Co. 'Alchemist' Neurotoxin Recovery NR (2 of 2) Skill: Neurotoxin Recovery """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 for i in range(5): attr = 'boosterEffectChance{0}'.format(i + 1) fit.boosters.filteredItemBoost(lambda booster: attr in booster.itemModifiedAttributes, attr, container.getModifiedItemAttr('boosterChanceBonus') * level, **kwargs) class Effect2602(BaseEffect): """ shipBonusEmShieldResistanceCB2 Used by: Ship: Rattlesnake Ship: Rokh Ship: Scorpion Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldEmDamageResonance', ship.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship', **kwargs) class Effect2603(BaseEffect): """ shipBonusExplosiveShieldResistanceCB2 Used by: Ship: Rattlesnake Ship: Rokh Ship: Scorpion Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship', **kwargs) class Effect2604(BaseEffect): """ shipBonusKineticShieldResistanceCB2 Used by: Ship: Rattlesnake Ship: Rokh Ship: Scorpion Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldKineticDamageResonance', ship.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship', **kwargs) class Effect2605(BaseEffect): """ shipBonusThermicShieldResistanceCB2 Used by: Ship: Rattlesnake Ship: Rokh Ship: Scorpion Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldThermalDamageResonance', ship.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship', **kwargs) class Effect2611(BaseEffect): """ eliteBonusGunshipProjectileDamage1 Used by: Ship: Wolf """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect2644(BaseEffect): """ increaseSignatureRadiusOnline Used by: Modules from group: Inertial Stabilizer (7 of 7) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('signatureRadius', module.getModifiedItemAttr('signatureRadiusBonus'), stackingPenalties=True, **kwargs) class Effect2645(BaseEffect): """ scanResolutionMultiplierOnline Used by: Modules from group: Interdiction Nullifier (4 of 4) Modules from group: Warp Core Stabilizer (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('scanResolution', module.getModifiedItemAttr('scanResolutionMultiplier'), stackingPenalties=True, **kwargs) class Effect2646(BaseEffect): """ maxTargetRangeBonus Used by: Modules from group: Interdiction Nullifier (4 of 4) Modules from group: Warp Core Stabilizer (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRangeBonus'), stackingPenalties=True, **kwargs) class Effect2647(BaseEffect): """ eliteBonusHeavyGunshipHeavyMissileLauncherRof2 Used by: Ship: Cerberus Ship: Muninn """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy', 'speed', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers', **kwargs) class Effect2648(BaseEffect): """ eliteBonusHeavyGunshipHeavyAssaultMissileLauncherRof2 Used by: Ship: Cerberus Ship: Muninn """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy Assault', 'speed', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers', **kwargs) class Effect2649(BaseEffect): """ eliteBonusHeavyGunshipAssaultMissileLauncherRof2 Used by: Ship: Cerberus Ship: Muninn """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rapid Light', 'speed', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers', **kwargs) class Effect2670(BaseEffect): """ sensorBoosterActivePercentage Used by: Modules from group: Sensor Booster (16 of 16) """ type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRangeBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('scanResolution', module.getModifiedItemAttr('scanResolutionBonus'), stackingPenalties=True, **kwargs) for scanType in ('Gravimetric', 'Magnetometric', 'Radar', 'Ladar'): fit.ship.boostItemAttr( 'scan{}Strength'.format(scanType), module.getModifiedItemAttr('scan{}StrengthPercent'.format(scanType)), stackingPenalties=True, **kwargs) class Effect2688(BaseEffect): """ capNeedBonusEffectLasers Used by: Modules named like: Energy Discharge Elutriation (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Weapon', 'capacitorNeed', module.getModifiedItemAttr('capNeedBonus'), **kwargs) class Effect2689(BaseEffect): """ capNeedBonusEffectHybrids Used by: Modules named like: Hybrid Discharge Elutriation (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'capacitorNeed', module.getModifiedItemAttr('capNeedBonus'), **kwargs) class Effect2690(BaseEffect): """ cpuNeedBonusEffectLasers Used by: Modules named like: Algid Energy Administrations Unit (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Weapon', 'cpu', module.getModifiedItemAttr('cpuNeedBonus'), **kwargs) class Effect2691(BaseEffect): """ cpuNeedBonusEffectHybrid Used by: Modules named like: Algid Hybrid Administrations Unit (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'cpu', module.getModifiedItemAttr('cpuNeedBonus'), **kwargs) class Effect2693(BaseEffect): """ falloffBonusEffectLasers Used by: Modules named like: Energy Ambit Extension (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): penalize = False if 'booster' in context else True fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Weapon', 'falloff', module.getModifiedItemAttr('falloffBonus'), stackingPenalties=penalize, **kwargs) class Effect2694(BaseEffect): """ falloffBonusEffectHybrids Used by: Modules named like: Hybrid Ambit Extension (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): penalize = 'booster' not in context fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'falloff', module.getModifiedItemAttr('falloffBonus'), stackingPenalties=penalize, **kwargs) class Effect2695(BaseEffect): """ falloffBonusEffectProjectiles Used by: Modules named like: Projectile Ambit Extension (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): penalize = 'booster' not in context fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Projectile Weapon', 'falloff', module.getModifiedItemAttr('falloffBonus'), stackingPenalties=penalize, **kwargs) class Effect2696(BaseEffect): """ maxRangeBonusEffectLasers Used by: Implants named like: Tetrimon Precision Booster (4 of 4) Modules named like: Energy Locus Coordinator (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): penalties = 'booster' not in context fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Weapon', 'maxRange', module.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=penalties, **kwargs) class Effect2697(BaseEffect): """ maxRangeBonusEffectHybrids Used by: Modules named like: Hybrid Locus Coordinator (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): penalties = 'booster' not in context fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'maxRange', module.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=penalties, **kwargs) class Effect2698(BaseEffect): """ maxRangeBonusEffectProjectiles Used by: Modules named like: Projectile Locus Coordinator (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): penalize = False if 'booster' in context else True fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Projectile Weapon', 'maxRange', module.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=penalize, **kwargs) class Effect2706(BaseEffect): """ drawbackPowerNeedLasers Used by: Modules from group: Rig Energy Weapon (56 of 56) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Weapon', 'power', module.getModifiedItemAttr('drawback'), **kwargs) class Effect2707(BaseEffect): """ drawbackPowerNeedHybrids Used by: Modules from group: Rig Hybrid Weapon (56 of 56) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'power', module.getModifiedItemAttr('drawback'), **kwargs) class Effect2708(BaseEffect): """ drawbackPowerNeedProjectiles Used by: Modules from group: Rig Projectile Weapon (40 of 40) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Projectile Weapon', 'power', module.getModifiedItemAttr('drawback'), **kwargs) class Effect2712(BaseEffect): """ drawbackArmorHP Used by: Modules from group: Rig Navigation (48 of 64) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorHP', module.getModifiedItemAttr('drawback'), **kwargs) class Effect2713(BaseEffect): """ drawbackCPUOutput Used by: Modules from group: Rig Drones (58 of 64) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('cpuOutput', module.getModifiedItemAttr('drawback'), **kwargs) class Effect2714(BaseEffect): """ drawbackCPUNeedLaunchers Used by: Modules from group: Rig Launcher (48 of 48) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'cpu', module.getModifiedItemAttr('drawback'), **kwargs) class Effect2716(BaseEffect): """ drawbackSigRad Used by: Modules from group: Rig Shield (72 of 72) Modules named like: Optimizer (16 of 16) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('signatureRadius', module.getModifiedItemAttr('drawback'), stackingPenalties=True, **kwargs) class Effect2717(BaseEffect): """ drawbackAgility Used by: Modules from group: Rig Armor (48 of 72) Modules from group: Rig Resource Processing (8 of 10) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', module.getModifiedItemAttr('drawback'), stackingPenalties=True, **kwargs) class Effect2718(BaseEffect): """ drawbackShieldCapacity Used by: Modules from group: Rig Electronic Systems (40 of 48) Modules from group: Rig Targeting (16 of 16) Modules named like: Signal Focusing Kit (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldCapacity', module.getModifiedItemAttr('drawback'), **kwargs) class Effect2726(BaseEffect): """ miningClouds Used by: Modules named like: Gas Cloud (10 of 10) """ type = 'active' class Effect2727(BaseEffect): """ gasCloudHarvestingMaxGroupSkillLevel Used by: Skill: Gas Cloud Harvesting """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.group.name == 'Gas Cloud Scoops', 'maxGroupActive', skill.level, **kwargs) class Effect2734(BaseEffect): """ shipECMScanStrengthBonusCF Used by: Ship: Griffin Ship: Kitsune """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for type in ('Gravimetric', 'Ladar', 'Radar', 'Magnetometric'): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scan{0}StrengthBonus'.format(type), ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) class Effect2735(BaseEffect): """ boosterArmorHpPenalty Used by: Implants named like: Crash Booster (3 of 4) Implants named like: Exile Booster (3 of 4) Implants named like: Frentix Booster (3 of 4) Implants named like: X Instinct Booster (3 of 4) """ runTime = 'late' attr = 'boosterArmorHPPenalty' displayName = 'Armor Capacity' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorHP', booster.getModifiedItemAttr(cls.attr), **kwargs) class Effect2736(BaseEffect): """ boosterArmorRepairAmountPenalty Used by: Implants named like: Drop Booster (3 of 4) Implants named like: Mindflood Booster (3 of 4) Implants named like: Sooth Sayer Booster (3 of 4) """ runTime = 'late' attr = 'boosterArmorRepairAmountPenalty' displayName = 'Armor Repair Amount' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Armor Repair Unit', 'Ancillary Armor Repairer'), 'armorDamageAmount', booster.getModifiedItemAttr(cls.attr), **kwargs) class Effect2737(BaseEffect): """ boosterShieldCapacityPenalty Used by: Implants named like: Blue Pill Booster (3 of 5) Implants named like: Drop Booster (3 of 4) Implants named like: Sooth Sayer Booster (3 of 4) Implants named like: X Instinct Booster (3 of 4) """ runTime = 'late' attr = 'boosterShieldCapacityPenalty' displayName = 'Shield Capacity' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldCapacity', booster.getModifiedItemAttr(cls.attr), **kwargs) class Effect2739(BaseEffect): """ boosterTurretOptimalRangePenalty Used by: Implants named like: Blue Pill Booster (3 of 5) Implants named like: Mindflood Booster (3 of 4) Implants named like: Sooth Sayer Booster (3 of 4) """ runTime = 'late' attr = 'boosterTurretOptimalRangePenalty' displayName = 'Turret Optimal Range' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'maxRange', booster.getModifiedItemAttr(cls.attr), **kwargs) class Effect2741(BaseEffect): """ boosterTurretFalloffPenalty Used by: Implants named like: Drop Booster (3 of 4) Implants named like: X Instinct Booster (3 of 4) """ runTime = 'late' attr = 'boosterTurretFalloffPenalty' displayName = 'Turret Falloff' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'falloff', booster.getModifiedItemAttr(cls.attr), **kwargs) class Effect2745(BaseEffect): """ boosterCapacitorCapacityPenalty Used by: Implants named like: Blue Pill Booster (3 of 5) Implants named like: Exile Booster (3 of 4) """ runTime = 'late' attr = 'boosterCapacitorCapacityPenalty' displayName = 'Cap Capacity' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context, projectionRange, **kwargs): fit.ship.boostItemAttr('capacitorCapacity', booster.getModifiedItemAttr(cls.attr), **kwargs) class Effect2746(BaseEffect): """ boosterMaxVelocityPenalty Used by: Implants named like: Crash Booster (3 of 4) Items from market group: Implants & Boosters > Booster > Booster Slot 02 (9 of 13) """ runTime = 'late' attr = 'boosterMaxVelocityPenalty' displayName = 'Velocity' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', booster.getModifiedItemAttr(cls.attr), **kwargs) class Effect2747(BaseEffect): """ boosterTurretTrackingPenalty Used by: Implants named like: Exile Booster (3 of 4) Implants named like: Frentix Booster (3 of 4) """ runTime = 'late' attr = 'boosterTurretTrackingPenalty' displayName = 'Turret Tracking' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'trackingSpeed', booster.getModifiedItemAttr(cls.attr), **kwargs) class Effect2748(BaseEffect): """ boosterMissileVelocityPenalty Used by: Implants named like: Crash Booster (3 of 4) Implants named like: X Instinct Booster (3 of 4) """ runTime = 'late' attr = 'boosterMissileVelocityPenalty' displayName = 'Missile Velocity' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', booster.getModifiedItemAttr(cls.attr), **kwargs) class Effect2749(BaseEffect): """ boosterMissileExplosionVelocityPenalty Used by: Implants named like: Blue Pill Booster (3 of 5) """ runTime = 'late' attr = 'boosterAOEVelocityPenalty' displayName = 'Missile Explosion Velocity' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeVelocity', booster.getModifiedItemAttr(cls.attr), **kwargs) class Effect2756(BaseEffect): """ shipBonusECMStrengthBonusCC Used by: Ship: Blackbird """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for type in ('Gravimetric', 'Magnetometric', 'Ladar', 'Radar'): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scan{0}StrengthBonus'.format(type), ship.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs) class Effect2757(BaseEffect): """ salvaging Used by: Modules from group: Salvager (3 of 3) """ type = 'active' class Effect2760(BaseEffect): """ boosterModifyBoosterArmorPenalties Used by: Implants named like: Eifyr and Co. 'Alchemist' Neurotoxin Control NC (2 of 2) Implants named like: grade Edge (10 of 12) Skill: Neurotoxin Control """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 attrs = ('boosterArmorHPPenalty', 'boosterArmorRepairAmountPenalty') for attr in attrs: fit.boosters.filteredItemBoost(lambda booster: True, attr, container.getModifiedItemAttr('boosterAttributeModifier') * level, **kwargs) class Effect2763(BaseEffect): """ boosterModifyBoosterShieldPenalty Used by: Implants named like: Eifyr and Co. 'Alchemist' Neurotoxin Control NC (2 of 2) Implants named like: grade Edge (10 of 12) Skill: Neurotoxin Control """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 attrs = ('boosterShieldBoostAmountPenalty', 'boosterShieldCapacityPenalty', 'shieldBoostMultiplier') for attr in attrs: # shieldBoostMultiplier can be positive (Blue Pill) and negative value (other boosters) # We're interested in decreasing only side-effects fit.boosters.filteredItemBoost(lambda booster: booster.getModifiedItemAttr(attr) < 0, attr, container.getModifiedItemAttr('boosterAttributeModifier') * level, **kwargs) class Effect2766(BaseEffect): """ boosterModifyBoosterMaxVelocityAndCapacitorPenalty Used by: Implants named like: Eifyr and Co. 'Alchemist' Neurotoxin Control NC (2 of 2) Implants named like: grade Edge (10 of 12) Skill: Neurotoxin Control """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 attrs = ('boosterCapacitorCapacityPenalty', 'boosterMaxVelocityPenalty') for attr in attrs: fit.boosters.filteredItemBoost(lambda booster: True, attr, container.getModifiedItemAttr('boosterAttributeModifier') * level, **kwargs) class Effect2776(BaseEffect): """ boosterModifyBoosterMissilePenalty Used by: Implants named like: Eifyr and Co. 'Alchemist' Neurotoxin Control NC (2 of 2) Implants named like: grade Edge (10 of 12) Skill: Neurotoxin Control """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 attrs = ('boosterAOEVelocityPenalty', 'boosterMissileAOECloudPenalty', 'boosterMissileVelocityPenalty') for attr in attrs: fit.boosters.filteredItemBoost(lambda booster: True, attr, container.getModifiedItemAttr('boosterAttributeModifier') * level, **kwargs) class Effect2778(BaseEffect): """ boosterModifyBoosterTurretPenalty Used by: Implants named like: Eifyr and Co. 'Alchemist' Neurotoxin Control NC (2 of 2) Implants named like: grade Edge (10 of 12) Skill: Neurotoxin Control """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 attrs = ('boosterTurretFalloffPenalty', 'boosterTurretOptimalRangePenalty', 'boosterTurretTrackingPenalty') for attr in attrs: fit.boosters.filteredItemBoost(lambda booster: True, attr, container.getModifiedItemAttr('boosterAttributeModifier') * level, **kwargs) class Effect2791(BaseEffect): """ boosterMissileExplosionCloudPenaltyFixed Used by: Implants named like: Exile Booster (3 of 4) Implants named like: Mindflood Booster (3 of 4) """ attr = 'boosterMissileAOECloudPenalty' displayName = 'Missile Explosion Radius' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeCloudSize', booster.getModifiedItemAttr(cls.attr), **kwargs) class Effect2792(BaseEffect): """ modifyArmorResonancePostPercentPassive Used by: Modules named like: Armor Reinforcer (32 of 32) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for type in ('kinetic', 'thermal', 'explosive', 'em'): fit.ship.boostItemAttr('armor' + type.capitalize() + 'DamageResonance', module.getModifiedItemAttr(type + 'DamageResistanceBonus') or 0, stackingPenalties=True, **kwargs) class Effect2794(BaseEffect): """ salvagingAccessDifficultyBonusEffectPassive Used by: Modules from group: Rig Resource Processing (8 of 10) Implant: Poteque 'Prospector' Salvaging SV-905 """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Salvaging'), 'accessDifficultyBonus', container.getModifiedItemAttr('accessDifficultyBonus'), position='post', **kwargs) class Effect2795(BaseEffect): """ modifyShieldResonancePostPercentPassive Used by: Modules named like: Shield Reinforcer (32 of 32) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for type in ('kinetic', 'thermal', 'explosive', 'em'): fit.ship.boostItemAttr('shield' + type.capitalize() + 'DamageResonance', module.getModifiedItemAttr(type + 'DamageResistanceBonus') or 0, stackingPenalties=True, **kwargs) class Effect2796(BaseEffect): """ massReductionBonusPassive Used by: Modules from group: Rig Anchor (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('mass', module.getModifiedItemAttr('massBonusPercentage'), stackingPenalties=True, **kwargs) class Effect2797(BaseEffect): """ projectileWeaponSpeedMultiplyPassive Used by: Modules named like: Projectile Burst Aerator (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Projectile Weapon', 'speed', module.getModifiedItemAttr('speedMultiplier'), stackingPenalties=True, **kwargs) class Effect2798(BaseEffect): """ projectileWeaponDamageMultiplyPassive Used by: Modules named like: Projectile Collision Accelerator (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): penalize = 'booster' not in context fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Projectile Weapon', 'damageMultiplier', module.getModifiedItemAttr('damageMultiplier'), stackingPenalties=penalize, **kwargs) class Effect2799(BaseEffect): """ missileLauncherSpeedMultiplierPassive Used by: Modules named like: Bay Loading Accelerator (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'speed', module.getModifiedItemAttr('speedMultiplier'), stackingPenalties=True, **kwargs) class Effect2801(BaseEffect): """ energyWeaponSpeedMultiplyPassive Used by: Modules named like: Energy Burst Aerator (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Energy Weapon', 'speed', module.getModifiedItemAttr('speedMultiplier'), stackingPenalties=True, **kwargs) class Effect2802(BaseEffect): """ hybridWeaponDamageMultiplyPassive Used by: Modules named like: Hybrid Collision Accelerator (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): penalize = 'booster' not in context fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'damageMultiplier', module.getModifiedItemAttr('damageMultiplier'), stackingPenalties=penalize, **kwargs) class Effect2803(BaseEffect): """ energyWeaponDamageMultiplyPassive Used by: Implants named like: Harvest Damage Booster (4 of 4) Implants named like: Wightstorm Vitarka Booster (4 of 4) Modules named like: Energy Collision Accelerator (8 of 8) Implant: Wisdom of Gheinok """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): penalties = 'booster' not in context fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Energy Weapon', 'damageMultiplier', module.getModifiedItemAttr('damageMultiplier'), stackingPenalties=penalties, **kwargs) class Effect2804(BaseEffect): """ hybridWeaponSpeedMultiplyPassive Used by: Modules named like: Hybrid Burst Aerator (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'speed', module.getModifiedItemAttr('speedMultiplier'), stackingPenalties=True, **kwargs) class Effect2805(BaseEffect): """ shipBonusLargeEnergyWeaponDamageAB2 Used by: Ship: Abaddon Ship: Marshal Ship: Python """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusAB2'), skill='Amarr Battleship', **kwargs) class Effect2809(BaseEffect): """ shipMissileAssaultMissileVelocityBonusCC2 Used by: Ship: Caracal Ship: Osprey Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect2812(BaseEffect): """ caldariShipECMBurstOptimalRangeCB3 Used by: Ship: Scorpion """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Burst Jammer', 'ecmBurstRange', ship.getModifiedItemAttr('shipBonusCB3'), skill='Caldari Battleship', **kwargs) class Effect2837(BaseEffect): """ armorHPBonusAdd Used by: Modules from group: Armor Plate (51 of 51) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('armorHP', module.getModifiedItemAttr('armorHPBonusAdd'), **kwargs) class Effect2847(BaseEffect): """ trackingSpeedBonusPassiveRequiringGunneryTrackingSpeedBonus Used by: Implants named like: Chemal Tech Turret Booster (3 of 3) Implants named like: Drop Booster (4 of 4) Implants named like: Eifyr and Co. 'Gunslinger' Motion Prediction MR (6 of 6) Implants named like: Halcyon G Booster (5 of 5) Implant: Antipharmakon Iokira Implant: Ogdin's Eye Coordination Enhancer Skill: Motion Prediction """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'trackingSpeed', container.getModifiedItemAttr('trackingSpeedBonus') * level, **kwargs) class Effect2848(BaseEffect): """ accessDifficultyBonusModifierRequiringArchaelogy Used by: Modules named like: Emission Scope Sharpener (8 of 8) Implant: Poteque 'Prospector' Archaeology AC-905 Implant: Poteque 'Prospector' Environmental Analysis EY-1005 """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda module: module.item.requiresSkill('Archaeology'), 'accessDifficultyBonus', container.getModifiedItemAttr('accessDifficultyBonusModifier'), **kwargs) class Effect2849(BaseEffect): """ accessDifficultyBonusModifierRequiringHacking Used by: Modules named like: Memetic Algorithm Bank (8 of 8) Implant: Neural Lace 'Blackglass' Net Intrusion 920-40 Implant: Neural Lace 'Bluefire' Net Ablation 960-10 Implant: Poteque 'Prospector' Environmental Analysis EY-1005 Implant: Poteque 'Prospector' Hacking HC-905 """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda c: c.item.requiresSkill('Hacking'), 'accessDifficultyBonus', container.getModifiedItemAttr('accessDifficultyBonusModifier'), **kwargs) class Effect2850(BaseEffect): """ durationBonusForGroupAfterburner Used by: Modules named like: Engine Thermal Shielding (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Propulsion Module', 'duration', module.getModifiedItemAttr('durationBonus'), **kwargs) class Effect2851(BaseEffect): """ missileDMGBonusPassive Used by: Modules named like: Warhead Calefaction Catalyst (8 of 8) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): penalize = False if 'booster' in context else True for dmgType in ('em', 'kinetic', 'explosive', 'thermal'): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), '%sDamage' % dmgType, container.getModifiedItemAttr('missileDamageMultiplierBonus'), stackingPenalties=penalize, **kwargs) class Effect2853(BaseEffect): """ cloakingTargetingDelayBonusLRSMCloakingPassive Used by: Modules named like: Targeting Systems Stabilizer (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda module: module.item.requiresSkill('Cloaking'), 'cloakingTargetingDelay', module.getModifiedItemAttr('cloakingTargetingDelayBonus'), **kwargs) class Effect2857(BaseEffect): """ cynosuralGeneration Used by: Modules from group: Cynosural Field Generator (3 of 3) """ type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', module.getModifiedItemAttr('speedFactor'), **kwargs) class Effect2858(BaseEffect): """ cloneJumpAccepting Used by: Module: Clone Vat Bay I """ type = 'active' @staticmethod def handler(fit, mod, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) fit.ship.forceItemAttr('canCloak', mod.getModifiedChargeAttr('canCloak'), **kwargs) class Effect2865(BaseEffect): """ velocityBonusOnline Used by: Modules from group: Entosis Link (6 of 6) Modules from group: Nanofiber Internal Structure (7 of 7) Modules from group: Overdrive Injector System (7 of 7) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', module.getModifiedItemAttr('implantBonusVelocity'), stackingPenalties=True, **kwargs) class Effect2866(BaseEffect): """ biologyTimeBonusFixed Used by: Implants named like: Eifyr and Co. 'Alchemist' Biology BY (2 of 2) Skill: Biology """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.boosters.filteredItemBoost(lambda bst: True, 'boosterDuration', container.getModifiedItemAttr('durationBonus') * level, **kwargs) class Effect2867(BaseEffect): """ sentryDroneDamageBonus Used by: Modules named like: Sentry Damage Augmentor (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'damageMultiplier', module.getModifiedItemAttr('damageMultiplierBonus'), stackingPenalties=True, **kwargs) class Effect2868(BaseEffect): """ armorDamageAmountBonusCapitalArmorRepairers Used by: Modules named like: Auxiliary Nano Pump (8 of 8) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Repair Systems'), 'armorDamageAmount', implant.getModifiedItemAttr('repairBonus'), stackingPenalties=True, **kwargs) class Effect2872(BaseEffect): """ missileVelocityBonusDefender Used by: Implants named like: Zainou 'Snapshot' Defender Missiles DM (6 of 6) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Defender Missiles'), 'maxVelocity', container.getModifiedItemAttr('missileVelocityBonus'), **kwargs) class Effect2881(BaseEffect): """ missileEMDmgBonusCruise3 Used by: Implants named like: Zainou 'Snapshot' Cruise Missiles CM (6 of 6) Implant: Festival-only 'Longbow' CM3 Dose Implant: Festival-only 'Longbow' MD6 Dose """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'emDamage', implant.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2882(BaseEffect): """ missileExplosiveDmgBonusCruise3 Used by: Implants named like: Zainou 'Snapshot' Cruise Missiles CM (6 of 6) Implant: Festival-only 'Longbow' CM3 Dose Implant: Festival-only 'Longbow' MD6 Dose """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'explosiveDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2883(BaseEffect): """ missileKineticDmgBonusCruise3 Used by: Implants named like: Zainou 'Snapshot' Cruise Missiles CM (6 of 6) Implant: Festival-only 'Longbow' CM3 Dose Implant: Festival-only 'Longbow' MD6 Dose """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'kineticDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2884(BaseEffect): """ missileThermalDmgBonusCruise3 Used by: Implants named like: Zainou 'Snapshot' Cruise Missiles CM (6 of 6) Implant: Festival-only 'Longbow' CM3 Dose Implant: Festival-only 'Longbow' MD6 Dose """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'thermalDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2885(BaseEffect): """ gasHarvestingCycleTimeModulesRequiringGasCloudHarvesting Used by: Implants named like: Eifyr and Co. 'Alchemist' Gas Harvesting GH (3 of 3) Implants named like: ORE 'Harvester' Efficiency (2 of 2) Implants named like: Serenity Limited 'Efficiency' Dose (3 of 3) Implants named like: Serenity Poteque 'Prospector' Harvesting MC (3 of 3) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gas Cloud Harvesting'), 'duration', implant.getModifiedItemAttr('durationBonus'), **kwargs) class Effect2887(BaseEffect): """ missileEMDmgBonusRocket Used by: Implants named like: Zainou 'Snapshot' Rockets RD (6 of 6) Implant: Festival-only 'Longbow' MD6 Dose Implant: Festival-only 'Longbow' RD2 Dose """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'emDamage', implant.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2888(BaseEffect): """ missileExplosiveDmgBonusRocket Used by: Implants named like: Zainou 'Snapshot' Rockets RD (6 of 6) Implant: Festival-only 'Longbow' MD6 Dose Implant: Festival-only 'Longbow' RD2 Dose """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'explosiveDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2889(BaseEffect): """ missileKineticDmgBonusRocket Used by: Implants named like: Zainou 'Snapshot' Rockets RD (6 of 6) Implant: Festival-only 'Longbow' MD6 Dose Implant: Festival-only 'Longbow' RD2 Dose """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'kineticDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2890(BaseEffect): """ missileThermalDmgBonusRocket Used by: Implants named like: Zainou 'Snapshot' Rockets RD (6 of 6) Implant: Festival-only 'Longbow' MD6 Dose Implant: Festival-only 'Longbow' RD2 Dose """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'thermalDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2891(BaseEffect): """ missileEMDmgBonusStandard Used by: Implants named like: Festival only 'Longbow' MD Dose (2 of 2) Implants named like: Zainou 'Snapshot' Light Missiles LM (6 of 6) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'emDamage', implant.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2892(BaseEffect): """ missileExplosiveDmgBonusStandard Used by: Implants named like: Festival only 'Longbow' MD Dose (2 of 2) Implants named like: Zainou 'Snapshot' Light Missiles LM (6 of 6) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'explosiveDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2893(BaseEffect): """ missileKineticDmgBonusStandard Used by: Implants named like: Festival only 'Longbow' MD Dose (2 of 2) Implants named like: Zainou 'Snapshot' Light Missiles LM (6 of 6) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'kineticDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2894(BaseEffect): """ missileThermalDmgBonusStandard Used by: Implants named like: Festival only 'Longbow' MD Dose (2 of 2) Implants named like: Zainou 'Snapshot' Light Missiles LM (6 of 6) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'thermalDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2899(BaseEffect): """ missileEMDmgBonusHeavy Used by: Implants named like: Zainou 'Snapshot' Heavy Missiles HM (6 of 6) Implant: Festival-only 'Longbow' HM4 Dose Implant: Festival-only 'Longbow' MD6 Dose """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'emDamage', implant.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2900(BaseEffect): """ missileExplosiveDmgBonusHeavy Used by: Implants named like: Zainou 'Snapshot' Heavy Missiles HM (6 of 6) Implant: Festival-only 'Longbow' HM4 Dose Implant: Festival-only 'Longbow' MD6 Dose """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'explosiveDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2901(BaseEffect): """ missileKineticDmgBonusHeavy Used by: Implants named like: Zainou 'Snapshot' Heavy Missiles HM (6 of 6) Implant: Festival-only 'Longbow' HM4 Dose Implant: Festival-only 'Longbow' MD6 Dose """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2902(BaseEffect): """ missileThermalDmgBonusHeavy Used by: Implants named like: Zainou 'Snapshot' Heavy Missiles HM (6 of 6) Implant: Festival-only 'Longbow' HM4 Dose Implant: Festival-only 'Longbow' MD6 Dose """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'thermalDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2903(BaseEffect): """ missileEMDmgBonusHAM Used by: Implants named like: Zainou 'Snapshot' Heavy Assault Missiles AM (6 of 6) Implant: Festival-only 'Longbow' HAM4 Dose Implant: Festival-only 'Longbow' MD6 Dose """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'emDamage', implant.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2904(BaseEffect): """ missileExplosiveDmgBonusHAM Used by: Implants named like: Zainou 'Snapshot' Heavy Assault Missiles AM (6 of 6) Implant: Festival-only 'Longbow' HAM4 Dose Implant: Festival-only 'Longbow' MD6 Dose """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'explosiveDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2905(BaseEffect): """ missileKineticDmgBonusHAM Used by: Implants named like: Zainou 'Snapshot' Heavy Assault Missiles AM (6 of 6) Implant: Festival-only 'Longbow' HAM4 Dose Implant: Festival-only 'Longbow' MD6 Dose """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'kineticDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2906(BaseEffect): """ missileThermalDmgBonusHAM Used by: Implants named like: Zainou 'Snapshot' Heavy Assault Missiles AM (6 of 6) Implant: Festival-only 'Longbow' HAM4 Dose Implant: Festival-only 'Longbow' MD6 Dose """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'thermalDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2907(BaseEffect): """ missileEMDmgBonusTorpedo Used by: Implants named like: Zainou 'Snapshot' Torpedoes TD (6 of 6) Implant: Festival-only 'Longbow' MD6 Dose Implant: Festival-only 'Longbow' TP3 Dose """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'emDamage', implant.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2908(BaseEffect): """ missileExplosiveDmgBonusTorpedo Used by: Implants named like: Zainou 'Snapshot' Torpedoes TD (6 of 6) Implant: Festival-only 'Longbow' MD6 Dose Implant: Festival-only 'Longbow' TP3 Dose """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'explosiveDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2909(BaseEffect): """ missileKineticDmgBonusTorpedo Used by: Implants named like: Zainou 'Snapshot' Torpedoes TD (6 of 6) Implant: Festival-only 'Longbow' MD6 Dose Implant: Festival-only 'Longbow' TP3 Dose """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'kineticDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2910(BaseEffect): """ missileThermalDmgBonusTorpedo Used by: Implants named like: Zainou 'Snapshot' Torpedoes TD (6 of 6) Implant: Festival-only 'Longbow' MD6 Dose Implant: Festival-only 'Longbow' TP3 Dose """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'thermalDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2911(BaseEffect): """ dataminerModuleDurationReduction Used by: Implant: Poteque 'Prospector' Environmental Analysis EY-1005 """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Data Miners', 'duration', implant.getModifiedItemAttr('durationBonus'), **kwargs) class Effect2967(BaseEffect): """ skillTriageModuleConsumptionQuantityBonus Used by: Skill: Tactical Logistics Reconfiguration """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): amount = -skill.getModifiedItemAttr('consumptionQuantityBonus') fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill(skill), 'consumptionQuantity', amount * skill.level, **kwargs) class Effect2979(BaseEffect): """ skillRemoteHullRepairSystemsCapNeedBonus Used by: Skill: Remote Hull Repair Systems """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Hull Repair Systems'), 'capacitorNeed', skill.getModifiedItemAttr('capNeedBonus') * skill.level, **kwargs) class Effect2980(BaseEffect): """ skillCapitalRemoteHullRepairSystemsCapNeedBonus Used by: Skill: Capital Remote Hull Repair Systems """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Remote Hull Repair Systems'), 'capacitorNeed', skill.getModifiedItemAttr('capNeedBonus') * skill.level, **kwargs) class Effect2982(BaseEffect): """ skillRemoteECMDurationBonus Used by: Skill: Burst Projector Operation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): # We need to make sure that the attribute exists, otherwise we add attributes that don't belong. See #927 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation') and mod.item.getAttribute('duration'), 'duration', skill.getModifiedItemAttr('projECMDurationBonus') * skill.level, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation') and mod.item.getAttribute('durationECMJammerBurstProjector'), 'durationECMJammerBurstProjector', skill.getModifiedItemAttr('projECMDurationBonus') * skill.level, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation') and mod.item.getAttribute('durationTargetIlluminationBurstProjector'), 'durationTargetIlluminationBurstProjector', skill.getModifiedItemAttr('projECMDurationBonus') * skill.level, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation') and mod.item.getAttribute('durationSensorDampeningBurstProjector'), 'durationSensorDampeningBurstProjector', skill.getModifiedItemAttr('projECMDurationBonus') * skill.level, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation') and mod.item.getAttribute('durationWeaponDisruptionBurstProjector'), 'durationWeaponDisruptionBurstProjector', skill.getModifiedItemAttr('projECMDurationBonus') * skill.level, **kwargs) class Effect3001(BaseEffect): """ overloadRofBonus Used by: Modules from group: Missile Launcher Torpedo (22 of 22) Items from market group: Ship Equipment > Turrets & Launchers (446 of 930) Module: Interdiction Sphere Launcher I """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('speed', module.getModifiedItemAttr('overloadRofBonus'), stackingPenalties=True, penaltyGroup='postPerc', **kwargs) class Effect3002(BaseEffect): """ overloadSelfDurationBonus Used by: Modules from group: Armor Resistance Shift Hardener (2 of 2) Modules from group: Capacitor Booster (43 of 43) Modules from group: Energy Neutralizer (57 of 57) Modules from group: Energy Nosferatu (58 of 58) Modules from group: Hull Repair Unit (25 of 25) Modules from group: Remote Capacitor Transmitter (37 of 37) Modules from group: Remote Hull Repairer (8 of 8) Modules from group: Smart Bomb (137 of 137) Modules from group: Warp Disrupt Field Generator (8 of 8) """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('duration', module.getModifiedItemAttr('overloadSelfDurationBonus') or 0, **kwargs) class Effect3024(BaseEffect): """ eliteBonusCoverOpsBombExplosiveDmg1 Used by: Ship: Hound Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'explosiveDamage', ship.getModifiedItemAttr('eliteBonusCovertOps1'), skill='Covert Ops', **kwargs) class Effect3025(BaseEffect): """ overloadSelfDamageBonus Used by: Modules from group: Energy Weapon (105 of 220) Modules from group: Hybrid Weapon (107 of 223) Modules from group: Precursor Weapon (19 of 19) Modules from group: Projectile Weapon (101 of 167) Modules named like: Pulse Laser (89 of 90) """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('damageMultiplier', module.getModifiedItemAttr('overloadDamageModifier'), **kwargs) class Effect3026(BaseEffect): """ eliteBonusCoverOpsBombKineticDmg1 Used by: Ship: Manticore """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'kineticDamage', ship.getModifiedItemAttr('eliteBonusCovertOps1'), skill='Covert Ops', **kwargs) class Effect3027(BaseEffect): """ eliteBonusCoverOpsBombThermalDmg1 Used by: Ship: Nemesis Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'thermalDamage', ship.getModifiedItemAttr('eliteBonusCovertOps1'), skill='Covert Ops', **kwargs) class Effect3028(BaseEffect): """ eliteBonusCoverOpsBombEmDmg1 Used by: Ship: Purifier """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'emDamage', ship.getModifiedItemAttr('eliteBonusCovertOps1'), skill='Covert Ops', **kwargs) class Effect3029(BaseEffect): """ overloadSelfEmHardeningBonus Used by: Variations of module: EM Armor Hardener I (37 of 37) Variations of module: EM Shield Hardener I (20 of 20) Module: Civilian EM Shield Hardener """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('emDamageResistanceBonus', module.getModifiedItemAttr('overloadHardeningBonus'), **kwargs) class Effect3030(BaseEffect): """ overloadSelfThermalHardeningBonus Used by: Variations of module: Thermal Armor Hardener I (37 of 37) Variations of module: Thermal Shield Hardener I (20 of 20) Module: Civilian Thermal Shield Hardener """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('thermalDamageResistanceBonus', module.getModifiedItemAttr('overloadHardeningBonus'), **kwargs) class Effect3031(BaseEffect): """ overloadSelfExplosiveHardeningBonus Used by: Variations of module: Explosive Armor Hardener I (37 of 37) Variations of module: Explosive Shield Hardener I (20 of 20) Module: Civilian Explosive Shield Hardener """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('explosiveDamageResistanceBonus', module.getModifiedItemAttr('overloadHardeningBonus'), **kwargs) class Effect3032(BaseEffect): """ overloadSelfKineticHardeningBonus Used by: Variations of module: Kinetic Armor Hardener I (37 of 37) Variations of module: Kinetic Shield Hardener I (20 of 20) Module: Civilian Kinetic Shield Hardener """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('kineticDamageResistanceBonus', module.getModifiedItemAttr('overloadHardeningBonus'), **kwargs) class Effect3035(BaseEffect): """ overloadSelfHardeningInvulnerabilityBonus Used by: Modules named like: Capital Flex Hardener (9 of 9) Variations of module: Multispectrum Shield Hardener I (19 of 19) """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for type in ('kinetic', 'thermal', 'explosive', 'em'): module.boostItemAttr('%sDamageResistanceBonus' % type, module.getModifiedItemAttr('overloadHardeningBonus'), **kwargs) class Effect3036(BaseEffect): """ skillBombDeploymentModuleReactivationDelayBonus Used by: Skill: Bomb Deployment """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Bomb', 'moduleReactivationDelay', skill.getModifiedItemAttr('reactivationDelayBonus') * skill.level, **kwargs) class Effect3046(BaseEffect): """ modifyMaxVelocityOfShipPassive Used by: Modules from group: Expanded Cargohold (7 of 7) """ type = 'offline' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('maxVelocity', module.getModifiedItemAttr('maxVelocityModifier'), stackingPenalties=True, **kwargs) class Effect3047(BaseEffect): """ structureHPMultiplyPassive Used by: Modules from group: Expanded Cargohold (7 of 7) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('hp', module.getModifiedItemAttr('structureHPMultiplier'), **kwargs) class Effect3061(BaseEffect): """ heatDamageBonus Used by: Modules from group: Shield Boost Amplifier (23 of 23) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'heatDamage', module.getModifiedItemAttr('heatDamageBonus'), **kwargs) class Effect3169(BaseEffect): """ shieldTransportCpuNeedBonusEffect Used by: Ships from group: Logistics (3 of 7) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'cpu', src.getModifiedItemAttr('shieldTransportCpuNeedBonus'), **kwargs) class Effect3172(BaseEffect): """ droneArmorDamageBonusEffect Used by: Ships from group: Logistics (6 of 7) Ship: Exequror Ship: Scythe """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): # This is actually level-less bonus, anyway you have to train cruisers 5 # and will get 100% (20%/lvl as stated by description) fit.drones.filteredItemBoost(lambda drone: drone.item.group.name == 'Logistic Drone', 'armorDamageAmount', ship.getModifiedItemAttr('droneArmorDamageAmountBonus'), **kwargs) class Effect3173(BaseEffect): """ droneShieldBonusBonusEffect Used by: Ships from group: Logistics (6 of 7) Ship: Exequror Ship: Scythe """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): # This is actually level-less bonus, anyway you have to train cruisers 5 # and will get 100% (20%/lvl as stated by description) fit.drones.filteredItemBoost(lambda drone: drone.item.group.name == 'Logistic Drone', 'shieldBonus', ship.getModifiedItemAttr('droneShieldBonusBonus'), **kwargs) class Effect3174(BaseEffect): """ overloadSelfRangeBonus Used by: Modules from group: Stasis Grappler (8 of 8) Modules from group: Stasis Web (19 of 19) Modules from group: Warp Scrambler (56 of 57) """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('maxRange', module.getModifiedItemAttr('overloadRangeBonus'), stackingPenalties=True, **kwargs) class Effect3175(BaseEffect): """ overloadSelfSpeedBonus Used by: Modules from group: Propulsion Module (147 of 147) """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('speedFactor', module.getModifiedItemAttr('overloadSpeedFactorBonus'), stackingPenalties=True, **kwargs) class Effect3182(BaseEffect): """ overloadSelfECMStrenghtBonus Used by: Modules from group: Burst Jammer (11 of 11) Modules from group: ECM (43 of 43) """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for scanType in ('Gravimetric', 'Magnetometric', 'Radar', 'Ladar'): module.boostItemAttr('scan{0}StrengthBonus'.format(scanType), module.getModifiedItemAttr('overloadECMStrengthBonus'), stackingPenalties=True, **kwargs) class Effect3196(BaseEffect): """ thermodynamicsSkillDamageBonus Used by: Implants named like: Wightstorm Sunyata Booster (4 of 4) Skill: Thermodynamics """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost( lambda mod: 'heatDamage' in mod.item.attributes, 'heatDamage', container.getModifiedItemAttr('thermodynamicsHeatDamage') * level, **kwargs) class Effect3200(BaseEffect): """ overloadSelfArmorDamageAmountDurationBonus Used by: Modules from group: Ancillary Armor Repairer (12 of 12) Modules from group: Armor Repair Unit (105 of 105) Modules from group: Remote Armor Repairer (43 of 43) Modules named like: Remote Armor Repairer (52 of 52) """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('duration', module.getModifiedItemAttr('overloadSelfDurationBonus')) module.boostItemAttr('armorDamageAmount', module.getModifiedItemAttr('overloadArmorDamageAmount'), stackingPenalties=True, **kwargs) class Effect3201(BaseEffect): """ overloadSelfShieldBonusDurationBonus Used by: Modules from group: Ancillary Remote Shield Booster (4 of 4) Modules from group: Ancillary Shield Booster (14 of 14) Modules from group: Remote Shield Booster (42 of 42) Modules from group: Shield Booster (94 of 94) """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('duration', module.getModifiedItemAttr('overloadSelfDurationBonus')) module.boostItemAttr('shieldBonus', module.getModifiedItemAttr('overloadShieldBonus'), stackingPenalties=True, **kwargs) class Effect3212(BaseEffect): """ missileSkillFoFAoeCloudSizeBonus Used by: Implants named like: Zainou 'Snapshot' Auto Targeting Explosion Radius FR (6 of 6) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Auto-Targeting Missiles'), 'aoeCloudSize', container.getModifiedItemAttr('aoeCloudSizeBonus') * level, **kwargs) class Effect3234(BaseEffect): """ shipRocketExplosiveDmgAF Used by: Ship: Vengeance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect3235(BaseEffect): """ shipRocketKineticDmgAF Used by: Ship: Vengeance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect3236(BaseEffect): """ shipRocketThermalDmgAF Used by: Ship: Vengeance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect3237(BaseEffect): """ shipRocketEmDmgAF Used by: Ship: Vengeance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'emDamage', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect3241(BaseEffect): """ eliteBonusGunshipArmorEmResistance1 Used by: Ship: Vengeance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorEmDamageResonance', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect3242(BaseEffect): """ eliteBonusGunshipArmorThermalResistance1 Used by: Ship: Vengeance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorThermalDamageResonance', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect3243(BaseEffect): """ eliteBonusGunshipArmorKineticResistance1 Used by: Ship: Vengeance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorKineticDamageResonance', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect3244(BaseEffect): """ eliteBonusGunshipArmorExplosiveResistance1 Used by: Ship: Vengeance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorExplosiveDamageResonance', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect3264(BaseEffect): """ skillCapitalIndustrialReconfigurationConsumptionQuantityBonus Used by: Skill: Capital Industrial Reconfiguration """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): amount = -skill.getModifiedItemAttr('consumptionQuantityBonus') fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill(skill), 'consumptionQuantity', amount * skill.level, **kwargs) class Effect3267(BaseEffect): """ shipConsumptionQuantityBonusIndustrialReconfigurationORECapital1 Used by: Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Industrial Reconfiguration'), 'consumptionQuantity', ship.getModifiedItemAttr('shipBonusORECapital1'), skill='Capital Industrial Ships', **kwargs) class Effect3297(BaseEffect): """ shipEnergyNeutralizerTransferAmountBonusAB Used by: Ship: Bhaalgorn """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect3298(BaseEffect): """ shipEnergyNeutralizerTransferAmountBonusAC Used by: Ship: Ashimmu Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs) class Effect3299(BaseEffect): """ shipEnergyNeutralizerTransferAmountBonusAF Used by: Ship: Caedes Ship: Cruor Ship: Sentinel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect3313(BaseEffect): """ cloneVatMaxJumpCloneBonusSkillNew Used by: Skill: Cloning Facility Operation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxJumpClones', skill.getModifiedItemAttr('maxJumpClonesBonus') * skill.level, **kwargs) class Effect3331(BaseEffect): """ eliteBonusCommandShipArmorHP1 Used by: Ship: Damnation """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorHP', ship.getModifiedItemAttr('eliteBonusCommandShips1'), skill='Command Ships', **kwargs) class Effect3335(BaseEffect): """ shipArmorEmResistanceMC2 Used by: Ship: Mimir """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorEmDamageResonance', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect3336(BaseEffect): """ shipArmorExplosiveResistanceMC2 Used by: Ship: Mimir """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect3339(BaseEffect): """ shipArmorKineticResistanceMC2 Used by: Ship: Mimir """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorKineticDamageResonance', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect3340(BaseEffect): """ shipArmorThermalResistanceMC2 Used by: Ship: Mimir """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorThermalDamageResonance', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect3343(BaseEffect): """ eliteBonusHeavyInterdictorsProjectileFalloff1 Used by: Ship: Broadsword """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'falloff', ship.getModifiedItemAttr('eliteBonusHeavyInterdictors1'), skill='Heavy Interdiction Cruisers', **kwargs) class Effect3355(BaseEffect): """ eliteBonusHeavyInterdictorHeavyMissileVelocityBonus1 Used by: Ship: Onyx """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'maxVelocity', ship.getModifiedItemAttr('eliteBonusHeavyInterdictors1'), skill='Heavy Interdiction Cruisers', **kwargs) class Effect3356(BaseEffect): """ eliteBonusHeavyInterdictorHeavyAssaultMissileVelocityBonus Used by: Ship: Onyx """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'maxVelocity', ship.getModifiedItemAttr('eliteBonusHeavyInterdictors1'), skill='Heavy Interdiction Cruisers', **kwargs) class Effect3366(BaseEffect): """ shipRemoteSensorDampenerCapNeedGF Used by: Ship: Keres Ship: Maulus Ship: Raiju """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'capacitorNeed', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs) class Effect3367(BaseEffect): """ eliteBonusElectronicAttackShipWarpScramblerMaxRange1 Used by: Ship: Keres Ship: Raiju """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', ship.getModifiedItemAttr('eliteBonusElectronicAttackShip1'), skill='Electronic Attack Ships', **kwargs) class Effect3369(BaseEffect): """ eliteBonusElectronicAttackShipECMOptimalRange1 Used by: Ship: Kitsune """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'maxRange', ship.getModifiedItemAttr('eliteBonusElectronicAttackShip1'), skill='Electronic Attack Ships', **kwargs) class Effect3370(BaseEffect): """ eliteBonusElectronicAttackShipStasisWebMaxRange1 Used by: Ship: Hyena """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', ship.getModifiedItemAttr('eliteBonusElectronicAttackShip1'), skill='Electronic Attack Ships', **kwargs) class Effect3371(BaseEffect): """ eliteBonusElectronicAttackShipWarpScramblerCapNeed2 Used by: Ship: Keres Ship: Raiju """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'capacitorNeed', ship.getModifiedItemAttr('eliteBonusElectronicAttackShip2'), skill='Electronic Attack Ships', **kwargs) class Effect3374(BaseEffect): """ eliteBonusElectronicAttackShipSignatureRadius2 Used by: Ship: Hyena """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('signatureRadius', ship.getModifiedItemAttr('eliteBonusElectronicAttackShip2'), skill='Electronic Attack Ships', **kwargs) class Effect3379(BaseEffect): """ implantHardwiringABcapacitorNeed Used by: Implants named like: Eifyr and Co. 'Rogue' Fuel Conservation FC (6 of 6) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'capacitorNeed', implant.getModifiedItemAttr('capNeedBonus'), **kwargs) class Effect3380(BaseEffect): """ warpDisruptSphere Used by: Modules from group: Warp Disrupt Field Generator (8 of 8) """ runTime = 'early' type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' in context: if module.charge is None: return if module.getModifiedItemAttr('warpScrambleRange', 0) < (projectionRange or 0): return if module.charge.ID in (29003, 45010): fit.ship.increaseItemAttr('warpScrambleStatus', module.getModifiedItemAttr('warpScrambleStrength'), **kwargs) if module.charge.ID == 45010: fit.modules.filteredItemIncrease( lambda mod: mod.item.requiresSkill('High Speed Maneuvering') or mod.item.requiresSkill('Micro Jump Drive Operation'), 'activationBlocked', 1, **kwargs) else: fit.ship.forceItemAttr('disallowAssistance', 1, **kwargs) if module.charge is not None: return fit.ship.boostItemAttr('mass', module.getModifiedItemAttr('massBonusPercentage'), **kwargs) fit.ship.boostItemAttr('signatureRadius', module.getModifiedItemAttr('signatureRadiusBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Propulsion Module', 'speedBoostFactor', module.getModifiedItemAttr('speedBoostFactorBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Propulsion Module', 'speedFactor', module.getModifiedItemAttr('speedFactorBonus'), **kwargs) class Effect3392(BaseEffect): """ eliteBonusBlackOpsLargeEnergyTurretTracking1 Used by: Ship: Redeemer """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusBlackOps1'), skill='Black Ops', **kwargs) class Effect3415(BaseEffect): """ eliteBonusViolatorsLargeEnergyTurretDamageRole1 Used by: Ship: Paladin """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusViolatorsRole1'), **kwargs) class Effect3416(BaseEffect): """ eliteBonusViolatorsLargeHybridTurretDamageRole1 Used by: Ship: Kronos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusViolatorsRole1'), **kwargs) class Effect3417(BaseEffect): """ eliteBonusViolatorsLargeProjectileTurretDamageRole1 Used by: Ship: Vargur """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusViolatorsRole1'), **kwargs) class Effect3424(BaseEffect): """ eliteBonusViolatorsLargeHybridTurretTracking1 Used by: Ship: Kronos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusViolators1'), skill='Marauders', **kwargs) class Effect3425(BaseEffect): """ eliteBonusViolatorsLargeProjectileTurretTracking1 Used by: Ship: Vargur """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusViolators1'), skill='Marauders', **kwargs) class Effect3427(BaseEffect): """ eliteBonusViolatorsTractorBeamMaxRangeRole2 Used by: Ships from group: Marauder (5 of 5) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Tractor Beam', 'maxRange', ship.getModifiedItemAttr('eliteBonusViolatorsRole2'), **kwargs) class Effect3439(BaseEffect): """ eliteBonusViolatorsEwTargetPainting1 Used by: Ship: Golem """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'signatureRadiusBonus', ship.getModifiedItemAttr('eliteBonusViolators1'), skill='Marauders', **kwargs) class Effect3447(BaseEffect): """ shipBonusPTFalloffMB1 Used by: Ship: Marshal Ship: Python Ship: Vargur """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect3466(BaseEffect): """ eliteBonusElectronicAttackShipRechargeRate2 Used by: Ship: Sentinel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('rechargeRate', ship.getModifiedItemAttr('eliteBonusElectronicAttackShip2'), skill='Electronic Attack Ships', **kwargs) class Effect3467(BaseEffect): """ eliteBonusElectronicAttackShipCapacitorCapacity2 Used by: Ship: Kitsune """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('capacitorCapacity', ship.getModifiedItemAttr('eliteBonusElectronicAttackShip2'), skill='Electronic Attack Ships', **kwargs) class Effect3468(BaseEffect): """ eliteBonusHeavyInterdictorsWarpDisruptFieldGeneratorWarpScrambleRange2 Used by: Ships from group: Heavy Interdiction Cruiser (6 of 6) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Disrupt Field Generator', 'warpScrambleRange', ship.getModifiedItemAttr('eliteBonusHeavyInterdictors2'), skill='Heavy Interdiction Cruisers', **kwargs) class Effect3473(BaseEffect): """ eliteBonusViolatorsTractorBeamMaxTractorVelocityRole3 Used by: Ships from group: Marauder (5 of 5) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Tractor Beam', 'maxTractorVelocity', ship.getModifiedItemAttr('eliteBonusViolatorsRole3'), **kwargs) class Effect3478(BaseEffect): """ shipLaserDamagePirateBattleship Used by: Ship: Bhaalgorn Ship: Nightmare """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect3480(BaseEffect): """ shipTrackingBonusAB Used by: Ship: Nightmare """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusAB2'), skill='Amarr Battleship', **kwargs) class Effect3483(BaseEffect): """ shipBonusMediumEnergyTurretDamagePirateFaction Used by: Ships named like: Stratios (2 of 2) Ship: Ashimmu Ship: Fiend Ship: Gnosis Ship: Phantasm """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect3484(BaseEffect): """ shipBonusMediumEnergyTurretTrackingAC2 Used by: Ship: Fiend Ship: Phantasm """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect3487(BaseEffect): """ shipBonusSmallEnergyTurretDamagePirateFaction Used by: Ship: Caedes Ship: Confessor Ship: Cruor Ship: Imp Ship: Metamorphosis Ship: Succubus Ship: Sunesis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect3489(BaseEffect): """ shipBonusSmallEnergyTurretTracking2AF Used by: Ship: Imp Ship: Succubus """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs) class Effect3493(BaseEffect): """ rorqualCargoScanRangeBonus Used by: Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Cargo Scanner', 'cargoScanRange', ship.getModifiedItemAttr('cargoScannerRangeBonus'), **kwargs) class Effect3495(BaseEffect): """ shipCapPropulsionJamming Used by: Ships from group: Interceptor (10 of 10) Ship: Atron Ship: Condor Ship: Executioner Ship: Slasher """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): groups = ('Stasis Web', 'Warp Scrambler') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'capacitorNeed', ship.getModifiedItemAttr('eliteBonusInterceptorRole'), **kwargs) class Effect3496(BaseEffect): """ setBonusThukker Used by: Implants named like: grade Nomad (12 of 12) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant', 'agilityBonus', implant.getModifiedItemAttr('implantSetThukker'), **kwargs) class Effect3498(BaseEffect): """ setBonusSisters Used by: Implants named like: grade Virtue (12 of 12) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant', 'scanStrengthBonus', implant.getModifiedItemAttr('implantSetSisters'), **kwargs) class Effect3499(BaseEffect): """ setBonusSyndicate Used by: Implants named like: grade Edge (12 of 12) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant', 'boosterAttributeModifier', implant.getModifiedItemAttr('implantSetSyndicate'), **kwargs) class Effect3513(BaseEffect): """ setBonusMordus Used by: Implants named like: grade Centurion (12 of 12) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant', 'rangeSkillBonus', implant.getModifiedItemAttr('implantSetMordus'), **kwargs) class Effect3514(BaseEffect): """ Interceptor2WarpScrambleRange Used by: Ships from group: Interceptor (6 of 10) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', ship.getModifiedItemAttr('eliteBonusInterceptor2'), skill='Interceptors', **kwargs) class Effect3519(BaseEffect): """ weaponUpgradesCpuNeedBonusPostPercentCpuLocationShipModulesRequiringBombLauncher Used by: Skill: Weapon Upgrades """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Bomb Deployment'), 'cpu', skill.getModifiedItemAttr('cpuNeedBonus') * skill.level, **kwargs) class Effect3520(BaseEffect): """ skillAdvancedWeaponUpgradesPowerNeedBonusBombLaunchers Used by: Skill: Advanced Weapon Upgrades """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Bomb Deployment'), 'power', skill.getModifiedItemAttr('powerNeedBonus') * skill.level, **kwargs) class Effect3526(BaseEffect): """ cynosuralTheoryConsumptionBonus Used by: Ships from group: Force Recon Ship (9 of 10) Ships named like: Venture (2 of 2) Skill: Cynosural Field Theory """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Cynosural Field Generator', 'consumptionQuantity', container.getModifiedItemAttr('consumptionQuantityBonusPercentage') * level, **kwargs) class Effect3532(BaseEffect): """ skillJumpDriveConsumptionAmountBonusPercentage Used by: Skill: Jump Fuel Conservation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.ship.boostItemAttr('jumpDriveConsumptionAmount', skill.getModifiedItemAttr('consumptionQuantityBonusPercentage') * skill.level, **kwargs) class Effect3561(BaseEffect): """ ewSkillTrackingDisruptionTrackingSpeedBonus Used by: Modules named like: Tracking Diagnostic Subroutines (8 of 8) Skill: Weapon Destabilization """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Weapon Disruptor', 'trackingSpeedBonus', container.getModifiedItemAttr('scanSkillEwStrengthBonus') * level, **kwargs) class Effect3568(BaseEffect): """ eliteBonusLogisticsTrackingLinkMaxRangeBonus1 Used by: Ship: Scimitar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer', 'maxRangeBonus', ship.getModifiedItemAttr('eliteBonusLogistics1'), skill='Logistics Cruisers', **kwargs) class Effect3569(BaseEffect): """ eliteBonusLogisticsTrackingLinkMaxRangeBonus2 Used by: Ship: Oneiros """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer', 'maxRangeBonus', ship.getModifiedItemAttr('eliteBonusLogistics2'), skill='Logistics Cruisers', **kwargs) class Effect3570(BaseEffect): """ eliteBonusLogisticsTrackingLinkTrackingSpeedBonus2 Used by: Ship: Oneiros """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer', 'trackingSpeedBonus', ship.getModifiedItemAttr('eliteBonusLogistics2'), skill='Logistics Cruisers', **kwargs) class Effect3571(BaseEffect): """ eliteBonusLogisticsTrackingLinkTrackingSpeedBonus1 Used by: Ship: Scimitar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer', 'trackingSpeedBonus', ship.getModifiedItemAttr('eliteBonusLogistics1'), skill='Logistics Cruisers', **kwargs) class Effect3586(BaseEffect): """ ewSkillSignalSuppressionScanResolutionBonus Used by: Modules named like: Inverted Signal Field Projector (8 of 8) Skill: Signal Suppression """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 penalized = False if 'skill' in context else True fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'scanResolutionBonus', container.getModifiedItemAttr('scanSkillEwStrengthBonus') * level, stackingPenalties=penalized, **kwargs) class Effect3587(BaseEffect): """ shipBonusEwRemoteSensorDampenerMaxTargetRangeBonusGC2 Used by: Variations of ship: Celestis (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'maxTargetRangeBonus', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect3588(BaseEffect): """ shipBonusEwRemoteSensorDampenerMaxTargetRangeBonusGF2 Used by: Ship: Keres Ship: Maulus Ship: Raiju """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'maxTargetRangeBonus', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect3589(BaseEffect): """ shipBonusEwRemoteSensorDampenerScanResolutionBonusGF2 Used by: Ship: Keres Ship: Maulus Ship: Raiju """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'scanResolutionBonus', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect3590(BaseEffect): """ shipBonusEwRemoteSensorDampenerScanResolutionBonusGC2 Used by: Variations of ship: Celestis (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'scanResolutionBonus', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect3591(BaseEffect): """ ewSkillSignalSuppressionMaxTargetRangeBonus Used by: Modules named like: Inverted Signal Field Projector (8 of 8) Skill: Signal Suppression """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'maxTargetRangeBonus', container.getModifiedItemAttr('scanSkillEwStrengthBonus') * level, **kwargs) class Effect3592(BaseEffect): """ eliteBonusJumpFreighterHullHP1 Used by: Ships from group: Jump Freighter (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('hp', ship.getModifiedItemAttr('eliteBonusJumpFreighter1'), skill='Jump Freighters', **kwargs) class Effect3593(BaseEffect): """ eliteBonusJumpFreighterJumpDriveConsumptionAmount2 Used by: Ships from group: Jump Freighter (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('jumpDriveConsumptionAmount', ship.getModifiedItemAttr('eliteBonusJumpFreighter2'), skill='Jump Freighters', **kwargs) class Effect3597(BaseEffect): """ scriptSensorBoosterScanResolutionBonusBonus Used by: Charges from group: Sensor Booster Script (3 of 3) Charges from group: Sensor Dampener Script (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('scanResolutionBonus', module.getModifiedChargeAttr('scanResolutionBonusBonus'), **kwargs) class Effect3598(BaseEffect): """ scriptSensorBoosterMaxTargetRangeBonusBonus Used by: Charges from group: Sensor Booster Script (3 of 3) Charges from group: Sensor Dampener Script (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('maxTargetRangeBonus', module.getModifiedChargeAttr('maxTargetRangeBonusBonus'), **kwargs) class Effect3599(BaseEffect): """ scriptTrackingComputerTrackingSpeedBonusBonus Used by: Charges from group: Tracking Disruption Script (2 of 2) Charges from group: Tracking Script (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('trackingSpeedBonus', module.getModifiedChargeAttr('trackingSpeedBonusBonus'), **kwargs) class Effect3600(BaseEffect): """ scriptTrackingComputerMaxRangeBonusBonus Used by: Charges from group: Tracking Disruption Script (2 of 2) Charges from group: Tracking Script (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('maxRangeBonus', module.getModifiedChargeAttr('maxRangeBonusBonus'), **kwargs) class Effect3601(BaseEffect): """ scriptWarpDisruptionFieldGeneratorSetDisallowInEmpireandHazardSpace Used by: Charges from group: Warp Disruption Script (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.forceItemAttr('disallowInEmpireSpace', module.getModifiedChargeAttr('disallowInEmpireSpace'), **kwargs) module.forceItemAttr('disallowInHazardSystem', module.getModifiedChargeAttr('disallowInHazardSystem'), **kwargs) class Effect3602(BaseEffect): """ scriptDurationBonus Used by: Charges from group: Warp Disruption Script (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('duration', module.getModifiedChargeAttr('durationBonus'), **kwargs) class Effect3617(BaseEffect): """ scriptSignatureRadiusBonusBonus Used by: Charges from group: Warp Disruption Script (2 of 2) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('signatureRadiusBonus', module.getModifiedChargeAttr('signatureRadiusBonusBonus'), **kwargs) class Effect3648(BaseEffect): """ scriptWarpScrambleRangeBonus Used by: Charges from group: Warp Disruption Script (2 of 2) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('warpScrambleRange', module.getModifiedChargeAttr('warpScrambleRangeBonus'), **kwargs) class Effect3649(BaseEffect): """ eliteBonusViolatorsLargeEnergyTurretDamage1 Used by: Ship: Paladin """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusViolators1'), skill='Marauders', **kwargs) class Effect3650(BaseEffect): """ ewGroupRsdMaxRangeBonus Used by: Implants named like: grade Centurion (10 of 12) Implant: Serenity YC122.9 Season Booster - EW Range """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'maxRange', implant.getModifiedItemAttr('rangeSkillBonus'), **kwargs) class Effect3651(BaseEffect): """ ewGroupTpMaxRangeBonus Used by: Implants named like: grade Centurion (10 of 12) Implant: Serenity YC122.9 Season Booster - EW Range """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'maxRange', implant.getModifiedItemAttr('rangeSkillBonus'), **kwargs) class Effect3652(BaseEffect): """ ewGroupTdMaxRangeBonus Used by: Implants named like: grade Centurion (10 of 12) Implant: Serenity YC122.9 Season Booster - EW Range """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Weapon Disruptor', 'maxRange', implant.getModifiedItemAttr('rangeSkillBonus'), **kwargs) class Effect3653(BaseEffect): """ ewGroupEcmBurstMaxRangeBonus Used by: Implants named like: grade Centurion (10 of 12) Implant: Serenity YC122.9 Season Booster - EW Range """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Burst Projectors', 'maxRange', implant.getModifiedItemAttr('rangeSkillBonus'), **kwargs) class Effect3655(BaseEffect): """ gunneryMaxRangeBonusOnline Used by: Modules from group: Tracking Enhancer (10 of 10) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'maxRange', module.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True, **kwargs) class Effect3656(BaseEffect): """ gunneryTrackingSpeedBonusOnline Used by: Modules from group: Tracking Enhancer (10 of 10) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'trackingSpeed', module.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=True, **kwargs) class Effect3657(BaseEffect): """ shipScanResolutionBonusOnline Used by: Modules from group: Signal Amplifier (7 of 7) Structure Modules from group: Structure Signal Amplifier (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('scanResolution', module.getModifiedItemAttr('scanResolutionBonus'), stackingPenalties=True, **kwargs) class Effect3659(BaseEffect): """ shipMaxTargetRangeBonusOnline Used by: Modules from group: Signal Amplifier (7 of 7) Structure Modules from group: Structure Signal Amplifier (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRangeBonus'), stackingPenalties=True, **kwargs) class Effect3660(BaseEffect): """ shipMaxLockedTargetsBonusAddOnline Used by: Modules from group: Signal Amplifier (7 of 7) Structure Modules from group: Structure Signal Amplifier (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('maxLockedTargets', module.getModifiedItemAttr('maxLockedTargetsBonus'), **kwargs) class Effect3668(BaseEffect): """ miningLaserRangeBonus Used by: Implants named like: Halcyon R Booster (5 of 5) Implants named like: Halcyon Y Booster (5 of 5) Implants named like: grade Harvest (10 of 12) Implant: Serenity YC122.9 Season Booster - Mining Range """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Mining Laser', 'maxRange', implant.getModifiedItemAttr('maxRangeBonus'), **kwargs) class Effect3669(BaseEffect): """ frequencyMiningLaserMaxRangeBonus Used by: Implants named like: Halcyon R Booster (5 of 5) Implants named like: Halcyon Y Booster (5 of 5) Implants named like: grade Harvest (10 of 12) Implant: Serenity YC122.9 Season Booster - Mining Range """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Frequency Mining Laser', 'maxRange', implant.getModifiedItemAttr('maxRangeBonus'), **kwargs) class Effect3670(BaseEffect): """ stripMinerMaxRangeBonus Used by: Implants named like: Halcyon R Booster (5 of 5) Implants named like: Halcyon Y Booster (5 of 5) Implants named like: grade Harvest (10 of 12) Implant: Serenity YC122.9 Season Booster - Mining Range """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Strip Miner', 'maxRange', implant.getModifiedItemAttr('maxRangeBonus'), **kwargs) class Effect3671(BaseEffect): """ gasHarvesterMaxRangeBonus Used by: Implants named like: grade Harvest (10 of 12) Implant: Serenity YC122.9 Season Booster - Mining Range """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Gas Cloud Scoops', 'maxRange', implant.getModifiedItemAttr('maxRangeBonus'), **kwargs) class Effect3672(BaseEffect): """ setBonusOre Used by: Implants named like: grade Harvest (12 of 12) Implant: Serenity YC122.9 Season Booster - Mining Range """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant', 'maxRangeBonus', implant.getModifiedItemAttr('implantSetORE'), **kwargs) class Effect3674(BaseEffect): """ jumpPortalGenerationBO Used by: Module: Covert Jump Portal Generator I """ type = 'active' @staticmethod def handler(fit, mod, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) class Effect3677(BaseEffect): """ shipBonusLargeEnergyTurretMaxRangeAB2 Used by: Ship: Apocalypse Ship: Apocalypse Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusAB2'), skill='Amarr Battleship', **kwargs) class Effect3678(BaseEffect): """ eliteBonusJumpFreighterShieldHP1 Used by: Ship: Nomad Ship: Rhea """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldCapacity', ship.getModifiedItemAttr('eliteBonusJumpFreighter1'), skill='Jump Freighters', **kwargs) class Effect3679(BaseEffect): """ eliteBonusJumpFreighterArmorHP1 Used by: Ship: Anshar Ship: Ark """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorHP', ship.getModifiedItemAttr('eliteBonusJumpFreighter1'), skill='Jump Freighters', **kwargs) class Effect3680(BaseEffect): """ freighterAgilityBonusC1 Used by: Ship: Rhea """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('freighterBonusC1'), skill='Caldari Freighter', **kwargs) class Effect3681(BaseEffect): """ freighterAgilityBonusM1 Used by: Ship: Nomad """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('freighterBonusM1'), skill='Minmatar Freighter', **kwargs) class Effect3682(BaseEffect): """ freighterAgilityBonusG1 Used by: Ship: Anshar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('freighterBonusG1'), skill='Gallente Freighter', **kwargs) class Effect3683(BaseEffect): """ freighterAgilityBonusA1 Used by: Ship: Ark """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('freighterBonusA1'), skill='Amarr Freighter', **kwargs) class Effect3686(BaseEffect): """ scriptTrackingComputerFalloffBonusBonus Used by: Charges from group: Tracking Disruption Script (2 of 2) Charges from group: Tracking Script (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('falloffBonus', module.getModifiedChargeAttr('falloffBonusBonus'), **kwargs) class Effect3703(BaseEffect): """ shipMissileLauncherSpeedBonusMC2 Used by: Ship: Bellicose """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): groups = ('Missile Launcher Rapid Light', 'Missile Launcher Heavy', 'Missile Launcher Heavy Assault') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'speed', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect3705(BaseEffect): """ shipHybridTurretROFBonusGC2 Used by: Ship: Phobos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'speed', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect3706(BaseEffect): """ shipBonusProjectileTrackingMC2 Used by: Ship: Rupture Ship: Stabber Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect3726(BaseEffect): """ agilityMultiplierEffectPassive Used by: Modules named like: Polycarbon Engine Housing (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', module.getModifiedItemAttr('agilityBonus'), stackingPenalties=True, **kwargs) class Effect3727(BaseEffect): """ velocityBonusPassive Used by: Modules named like: Polycarbon Engine Housing (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', module.getModifiedItemAttr('implantBonusVelocity'), stackingPenalties=True, **kwargs) class Effect3739(BaseEffect): """ zColinOrcaTractorRangeBonus Used by: Ships from group: Industrial Command Ship (2 of 2) Ship: Outrider """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Tractor Beam', 'maxRange', src.getModifiedItemAttr('roleBonusTractorBeamRange'), **kwargs) class Effect3740(BaseEffect): """ zColinOrcaTractorVelocityBonus Used by: Ships from group: Industrial Command Ship (2 of 2) Ship: Outrider """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Tractor Beam', 'maxTractorVelocity', ship.getModifiedItemAttr('roleBonusTractorBeamVelocity'), **kwargs) class Effect3744(BaseEffect): """ miningForemanBurstBonusICS2 Used by: Ships from group: Industrial Command Ship (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusICS2'), skill='Industrial Command Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusICS2'), skill='Industrial Command Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'buffDuration', src.getModifiedItemAttr('shipBonusICS2'), skill='Industrial Command Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusICS2'), skill='Industrial Command Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusICS2'), skill='Industrial Command Ships', **kwargs) class Effect3765(BaseEffect): """ covertOpsStealthBomberSiegeMissileLauncherPowerNeedBonus Used by: Ships from group: Stealth Bomber (5 of 5) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Missile Launcher Torpedo', 'power', ship.getModifiedItemAttr('stealthBomberLauncherPower'), **kwargs) class Effect3766(BaseEffect): """ interceptorMWDSignatureRadiusBonus Used by: Ships from group: Interceptor (10 of 10) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'signatureRadiusBonus', ship.getModifiedItemAttr('eliteBonusInterceptor'), skill='Interceptors', **kwargs) class Effect3771(BaseEffect): """ armorHPBonusAddPassive Used by: Subsystems from group: Defensive Subsystem (9 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('armorHP', module.getModifiedItemAttr('armorHPBonusAdd') or 0, **kwargs) class Effect3773(BaseEffect): """ hardPointModifierEffect Used by: Subsystems from group: Offensive Subsystem (12 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('turretSlotsLeft', module.getModifiedItemAttr('turretHardPointModifier'), **kwargs) fit.ship.increaseItemAttr('launcherSlotsLeft', module.getModifiedItemAttr('launcherHardPointModifier'), **kwargs) class Effect3774(BaseEffect): """ slotModifier Used by: Items from category: Subsystem (48 of 48) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('hiSlots', module.getModifiedItemAttr('hiSlotModifier'), **kwargs) fit.ship.increaseItemAttr('medSlots', module.getModifiedItemAttr('medSlotModifier'), **kwargs) fit.ship.increaseItemAttr('lowSlots', module.getModifiedItemAttr('lowSlotModifier'), **kwargs) class Effect3782(BaseEffect): """ powerOutputAddPassive Used by: Subsystems from group: Offensive Subsystem (12 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('powerOutput', module.getModifiedItemAttr('powerOutput'), **kwargs) class Effect3783(BaseEffect): """ cpuOutputAddCpuOutputPassive Used by: Subsystems from group: Offensive Subsystem (8 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('cpuOutput', module.getModifiedItemAttr('cpuOutput'), **kwargs) class Effect3797(BaseEffect): """ droneBandwidthAddPassive Used by: Subsystems from group: Offensive Subsystem (12 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('droneBandwidth', module.getModifiedItemAttr('droneBandwidth'), **kwargs) class Effect3799(BaseEffect): """ droneCapacityAdddroneCapacityPassive Used by: Subsystems from group: Offensive Subsystem (12 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('droneCapacity', module.getModifiedItemAttr('droneCapacity'), **kwargs) class Effect3807(BaseEffect): """ maxTargetRangeAddPassive Used by: Subsystems named like: Propulsion Interdiction Nullifier (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRange'), **kwargs) class Effect3808(BaseEffect): """ signatureRadiusAddPassive Used by: Subsystems from group: Defensive Subsystem (8 of 12) Subsystems named like: Propulsion Interdiction Nullifier (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('signatureRadius', module.getModifiedItemAttr('signatureRadius'), **kwargs) class Effect3810(BaseEffect): """ capacityAddPassive Used by: Subsystems named like: Defensive Covert Reconfiguration (4 of 4) Subsystem: Legion Defensive - Nanobot Injector """ type = 'passive' @staticmethod def handler(fit, subsystem, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('capacity', subsystem.getModifiedItemAttr('cargoCapacityAdd') or 0, **kwargs) class Effect3811(BaseEffect): """ capacitorCapacityAddPassive Used by: Items from category: Subsystem (20 of 48) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('capacitorCapacity', module.getModifiedItemAttr('capacitorCapacity') or 0, **kwargs) class Effect3831(BaseEffect): """ shieldCapacityAddPassive Used by: Subsystems from group: Defensive Subsystem (8 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('shieldCapacity', module.getModifiedItemAttr('shieldCapacity'), **kwargs) class Effect3857(BaseEffect): """ subsystemBonusAmarrPropulsionMaxVelocity Used by: Subsystem: Legion Propulsion - Intercalated Nanofibers """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', module.getModifiedItemAttr('subsystemBonusAmarrPropulsion'), skill='Amarr Propulsion Systems', **kwargs) class Effect3859(BaseEffect): """ subsystemBonusCaldariPropulsionMaxVelocity Used by: Subsystem: Tengu Propulsion - Chassis Optimization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', src.getModifiedItemAttr('subsystemBonusCaldariPropulsion'), skill='Caldari Propulsion Systems', **kwargs) class Effect3860(BaseEffect): """ subsystemBonusMinmatarPropulsionMaxVelocity Used by: Subsystem: Loki Propulsion - Intercalated Nanofibers """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', module.getModifiedItemAttr('subsystemBonusMinmatarPropulsion'), skill='Minmatar Propulsion Systems', **kwargs) class Effect3861(BaseEffect): """ subsystemBonusMinmatarPropulsionAfterburnerSpeedFactor Used by: Subsystem: Loki Propulsion - Wake Limiter """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'speedFactor', module.getModifiedItemAttr('subsystemBonusMinmatarPropulsion'), skill='Minmatar Propulsion Systems', **kwargs) class Effect3863(BaseEffect): """ subsystemBonusCaldariPropulsionAfterburnerSpeedFactor Used by: Subsystem: Tengu Propulsion - Fuel Catalyst """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'speedFactor', module.getModifiedItemAttr('subsystemBonusCaldariPropulsion'), skill='Caldari Propulsion Systems', **kwargs) class Effect3864(BaseEffect): """ subsystemBonusAmarrPropulsionAfterburnerSpeedFactor Used by: Subsystem: Legion Propulsion - Wake Limiter """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'speedFactor', module.getModifiedItemAttr('subsystemBonusAmarrPropulsion'), skill='Amarr Propulsion Systems', **kwargs) class Effect3865(BaseEffect): """ subsystemBonusAmarrPropulsion2Agility Used by: Subsystem: Legion Propulsion - Intercalated Nanofibers """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', src.getModifiedItemAttr('subsystemBonusAmarrPropulsion2'), skill='Amarr Propulsion Systems', **kwargs) class Effect3866(BaseEffect): """ subsystemBonusCaldariPropulsion2Agility Used by: Subsystem: Tengu Propulsion - Chassis Optimization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', src.getModifiedItemAttr('subsystemBonusCaldariPropulsion2'), skill='Caldari Propulsion Systems', **kwargs) class Effect3867(BaseEffect): """ subsystemBonusGallentePropulsion2Agility Used by: Subsystem: Proteus Propulsion - Hyperspatial Optimization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', src.getModifiedItemAttr('subsystemBonusGallentePropulsion2'), skill='Gallente Propulsion Systems', **kwargs) class Effect3868(BaseEffect): """ subsystemBonusMinmatarPropulsion2Agility Used by: Subsystem: Loki Propulsion - Intercalated Nanofibers """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', src.getModifiedItemAttr('subsystemBonusMinmatarPropulsion2'), skill='Minmatar Propulsion Systems', **kwargs) class Effect3869(BaseEffect): """ subsystemBonusMinmatarPropulsion2MWDPenalty Used by: Subsystem: Loki Propulsion - Wake Limiter """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'signatureRadiusBonus', src.getModifiedItemAttr('subsystemBonusMinmatarPropulsion2'), skill='Minmatar Propulsion Systems', **kwargs) class Effect3872(BaseEffect): """ subsystemBonusAmarrPropulsion2MWDPenalty Used by: Subsystem: Legion Propulsion - Wake Limiter """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'signatureRadiusBonus', src.getModifiedItemAttr('subsystemBonusAmarrPropulsion2'), skill='Amarr Propulsion Systems', **kwargs) class Effect3875(BaseEffect): """ subsystemBonusGallentePropulsionABMWDCapNeed Used by: Subsystem: Proteus Propulsion - Localized Injectors """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Propulsion Module', 'capacitorNeed', module.getModifiedItemAttr('subsystemBonusGallentePropulsion'), skill='Gallente Propulsion Systems', **kwargs) class Effect3893(BaseEffect): """ subsystemBonusMinmatarCoreScanStrengthLADAR Used by: Subsystem: Loki Core - Dissolution Sequencer """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('scanLadarStrength', src.getModifiedItemAttr('subsystemBonusMinmatarCore'), skill='Minmatar Core Systems', **kwargs) class Effect3895(BaseEffect): """ subsystemBonusGallenteCoreScanStrengthMagnetometric Used by: Subsystem: Proteus Core - Electronic Efficiency Gate """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('scanMagnetometricStrength', src.getModifiedItemAttr('subsystemBonusGallenteCore'), skill='Gallente Core Systems', **kwargs) class Effect3897(BaseEffect): """ subsystemBonusCaldariCoreScanStrengthGravimetric Used by: Subsystem: Tengu Core - Electronic Efficiency Gate """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('scanGravimetricStrength', src.getModifiedItemAttr('subsystemBonusCaldariCore'), skill='Caldari Core Systems', **kwargs) class Effect3900(BaseEffect): """ subsystemBonusAmarrCoreScanStrengthRADAR Used by: Subsystem: Legion Core - Dissolution Sequencer """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('scanRadarStrength', src.getModifiedItemAttr('subsystemBonusAmarrCore'), skill='Amarr Core Systems', **kwargs) class Effect3959(BaseEffect): """ subsystemBonusAmarrDefensiveArmorRepairAmount Used by: Subsystem: Legion Defensive - Covert Reconfiguration Subsystem: Legion Defensive - Nanobot Injector """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', module.getModifiedItemAttr('subsystemBonusAmarrDefensive'), skill='Amarr Defensive Systems', **kwargs) class Effect3961(BaseEffect): """ subsystemBonusGallenteDefensiveArmorRepairAmount Used by: Subsystem: Proteus Defensive - Covert Reconfiguration Subsystem: Proteus Defensive - Nanobot Injector """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', module.getModifiedItemAttr('subsystemBonusGallenteDefensive'), skill='Gallente Defensive Systems', **kwargs) class Effect3962(BaseEffect): """ subsystemBonusMinmatarDefensiveShieldArmorRepairAmount Used by: Subsystem: Loki Defensive - Adaptive Defense Node Subsystem: Loki Defensive - Covert Reconfiguration """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive'), skill='Minmatar Defensive Systems', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive'), skill='Minmatar Defensive Systems', **kwargs) class Effect3964(BaseEffect): """ subsystemBonusCaldariDefensiveShieldBoostAmount Used by: Subsystem: Tengu Defensive - Amplification Node Subsystem: Tengu Defensive - Covert Reconfiguration """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', module.getModifiedItemAttr('subsystemBonusCaldariDefensive'), skill='Caldari Defensive Systems', **kwargs) class Effect3976(BaseEffect): """ subsystemBonusCaldariDefensiveShieldHP Used by: Subsystem: Tengu Defensive - Supplemental Screening """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldCapacity', module.getModifiedItemAttr('subsystemBonusCaldariDefensive'), skill='Caldari Defensive Systems', **kwargs) class Effect3979(BaseEffect): """ subsystemBonusMinmatarDefensiveShieldArmorHP Used by: Subsystem: Loki Defensive - Augmented Durability """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldCapacity', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive'), skill='Minmatar Defensive Systems', **kwargs) fit.ship.boostItemAttr('armorHP', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive'), skill='Minmatar Defensive Systems', **kwargs) class Effect3980(BaseEffect): """ subsystemBonusGallenteDefensiveArmorHP Used by: Subsystem: Proteus Defensive - Augmented Plating """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorHP', module.getModifiedItemAttr('subsystemBonusGallenteDefensive'), skill='Gallente Defensive Systems', **kwargs) class Effect3982(BaseEffect): """ subsystemBonusAmarrDefensiveArmorHP Used by: Subsystem: Legion Defensive - Augmented Plating """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorHP', module.getModifiedItemAttr('subsystemBonusAmarrDefensive'), skill='Amarr Defensive Systems', **kwargs) class Effect3992(BaseEffect): """ systemShieldHP Used by: Celestials named like: Class Pulsar Effects (6 of 6) Celestial: Republic Stellar Observatory Celestial: State Stellar Observatory """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('shieldCapacity', beacon.getModifiedItemAttr('shieldCapacityMultiplier'), **kwargs) class Effect3993(BaseEffect): """ systemTargetingRange Used by: Celestials named like: Class Black Hole Effects (6 of 6) Celestials named like: Class Magnetar Effects (6 of 6) Celestial: Turnur Aftermath """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('maxTargetRange', beacon.getModifiedItemAttr('maxTargetRangeMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect3995(BaseEffect): """ systemSignatureRadius Used by: Celestials named like: Class Pulsar Effects (6 of 6) Celestials named like: Class Wolf Rayet Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('signatureRadius', beacon.getModifiedItemAttr('signatureRadiusMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect3996(BaseEffect): """ systemArmorEmResistance Used by: Celestials named like: Class Pulsar Effects (6 of 6) Celestials named like: Incursion Effect (2 of 2) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorEmDamageResonance', beacon.getModifiedItemAttr('armorEmDamageResistanceBonus'), stackingPenalties=True, **kwargs) class Effect3997(BaseEffect): """ systemArmorExplosiveResistance Used by: Celestials named like: Class Pulsar Effects (6 of 6) Celestials named like: Incursion Effect (2 of 2) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorExplosiveDamageResonance', beacon.getModifiedItemAttr('armorExplosiveDamageResistanceBonus'), stackingPenalties=True, **kwargs) class Effect3998(BaseEffect): """ systemArmorKineticResistance Used by: Celestials named like: Class Pulsar Effects (6 of 6) Celestials named like: Incursion Effect (2 of 2) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorKineticDamageResonance', beacon.getModifiedItemAttr('armorKineticDamageResistanceBonus'), stackingPenalties=True, **kwargs) class Effect3999(BaseEffect): """ systemArmorThermalResistance Used by: Celestials named like: Class Pulsar Effects (6 of 6) Celestials named like: Incursion Effect (2 of 2) Celestials named like: Volatile Ice Storm (2 of 2) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorThermalDamageResonance', beacon.getModifiedItemAttr('armorThermalDamageResistanceBonus'), stackingPenalties=True, **kwargs) class Effect4002(BaseEffect): """ systemMissileVelocity Used by: Celestials named like: Class Black Hole Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', beacon.getModifiedItemAttr('missileVelocityMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4003(BaseEffect): """ systemMaxVelocity Used by: Celestials named like: Class Black Hole Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('maxVelocity', beacon.getModifiedItemAttr('maxVelocityMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4016(BaseEffect): """ systemDamageMultiplierGunnery Used by: Celestials named like: Class Magnetar Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Gunnery'), 'damageMultiplier', beacon.getModifiedItemAttr('damageMultiplierMultiplier'), stackingPenalties=True, **kwargs) class Effect4017(BaseEffect): """ systemDamageThermalMissiles Used by: Celestials named like: Class Magnetar Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', beacon.getModifiedItemAttr('damageMultiplierMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4018(BaseEffect): """ systemDamageEmMissiles Used by: Celestials named like: Class Magnetar Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'emDamage', beacon.getModifiedItemAttr('damageMultiplierMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4019(BaseEffect): """ systemDamageExplosiveMissiles Used by: Celestials named like: Class Magnetar Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosiveDamage', beacon.getModifiedItemAttr('damageMultiplierMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4020(BaseEffect): """ systemDamageKineticMissiles Used by: Celestials named like: Class Magnetar Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', beacon.getModifiedItemAttr('damageMultiplierMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4021(BaseEffect): """ systemDamageDrones Used by: Celestials named like: Class Magnetar Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.drones.filteredItemMultiply(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', beacon.getModifiedItemAttr('damageMultiplierMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4022(BaseEffect): """ systemTracking Used by: Celestials named like: Class Magnetar Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Gunnery'), 'trackingSpeed', module.getModifiedItemAttr('trackingSpeedMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4023(BaseEffect): """ systemAoeVelocity Used by: Celestials named like: Class Black Hole Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeVelocity', beacon.getModifiedItemAttr('aoeVelocityMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4033(BaseEffect): """ systemHeatDamage Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: 'heatDamage' in mod.itemModifiedAttributes, 'heatDamage', module.getModifiedItemAttr('heatDamageMultiplier'), **kwargs) class Effect4034(BaseEffect): """ systemOverloadArmor Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: 'overloadArmorDamageAmount' in mod.itemModifiedAttributes, 'overloadArmorDamageAmount', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs) class Effect4035(BaseEffect): """ systemOverloadDamageModifier Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: 'overloadDamageModifier' in mod.itemModifiedAttributes, 'overloadDamageModifier', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs) class Effect4036(BaseEffect): """ systemOverloadDurationBonus Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: 'overloadDurationBonus' in mod.itemModifiedAttributes, 'overloadDurationBonus', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs) class Effect4037(BaseEffect): """ systemOverloadEccmStrength Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: 'overloadECCMStrenghtBonus' in mod.itemModifiedAttributes, 'overloadECCMStrenghtBonus', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs) class Effect4038(BaseEffect): """ systemOverloadEcmStrength Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: 'overloadECMStrengthBonus' in mod.itemModifiedAttributes, 'overloadECMStrengthBonus', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs) class Effect4039(BaseEffect): """ systemOverloadHardening Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: 'overloadHardeningBonus' in mod.itemModifiedAttributes, 'overloadHardeningBonus', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs) class Effect4040(BaseEffect): """ systemOverloadRange Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: 'overloadRangeBonus' in mod.itemModifiedAttributes, 'overloadRangeBonus', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs) class Effect4041(BaseEffect): """ systemOverloadRof Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: 'overloadRofBonus' in mod.itemModifiedAttributes, 'overloadRofBonus', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs) class Effect4042(BaseEffect): """ systemOverloadSelfDuration Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: 'overloadSelfDurationBonus' in mod.itemModifiedAttributes, 'overloadSelfDurationBonus', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs) class Effect4043(BaseEffect): """ systemOverloadShieldBonus Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: 'overloadShieldBonus' in mod.itemModifiedAttributes, 'overloadShieldBonus', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs) class Effect4044(BaseEffect): """ systemOverloadSpeedFactor Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: 'overloadSpeedFactorBonus' in mod.itemModifiedAttributes, 'overloadSpeedFactorBonus', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs) class Effect4045(BaseEffect): """ systemSmartBombRange Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Smart Bomb', 'empFieldRange', module.getModifiedItemAttr('empFieldRangeMultiplier'), **kwargs) class Effect4046(BaseEffect): """ systemSmartBombEmDamage Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Smart Bomb', 'emDamage', module.getModifiedItemAttr('smartbombDamageMultiplier'), **kwargs) class Effect4047(BaseEffect): """ systemSmartBombThermalDamage Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Smart Bomb', 'thermalDamage', module.getModifiedItemAttr('smartbombDamageMultiplier'), **kwargs) class Effect4048(BaseEffect): """ systemSmartBombKineticDamage Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Smart Bomb', 'kineticDamage', module.getModifiedItemAttr('smartbombDamageMultiplier'), **kwargs) class Effect4049(BaseEffect): """ systemSmartBombExplosiveDamage Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Smart Bomb', 'explosiveDamage', module.getModifiedItemAttr('smartbombDamageMultiplier'), **kwargs) class Effect4054(BaseEffect): """ systemSmallEnergyDamage Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier', module.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, **kwargs) class Effect4055(BaseEffect): """ systemSmallProjectileDamage Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', module.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, **kwargs) class Effect4056(BaseEffect): """ systemSmallHybridDamage Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', module.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, **kwargs) class Effect4057(BaseEffect): """ systemRocketEmDamage Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Rockets'), 'emDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4058(BaseEffect): """ systemRocketExplosiveDamage Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Rockets'), 'explosiveDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4059(BaseEffect): """ systemRocketKineticDamage Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Rockets'), 'kineticDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4060(BaseEffect): """ systemRocketThermalDamage Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Rockets'), 'thermalDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4061(BaseEffect): """ systemStandardMissileThermalDamage Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'thermalDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4062(BaseEffect): """ systemStandardMissileEmDamage Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'emDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4063(BaseEffect): """ systemStandardMissileExplosiveDamage Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'explosiveDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4086(BaseEffect): """ systemArmorRepairAmount Used by: Celestials named like: Class Cataclysmic Variable Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Repair Systems') or mod.item.requiresSkill('Capital Repair Systems'), 'armorDamageAmount', module.getModifiedItemAttr('armorDamageAmountMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4088(BaseEffect): """ systemArmorRemoteRepairAmount Used by: Celestials named like: Class Cataclysmic Variable Effects (6 of 6) Celestial: Final Liminality Celestial: Triglavian Minor Victory """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems') or mod.item.requiresSkill('Capital Remote Armor Repair Systems'), 'armorDamageAmount', module.getModifiedItemAttr('armorDamageAmountMultiplierRemote'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4089(BaseEffect): """ systemShieldRemoteRepairAmount Used by: Celestials named like: Class Cataclysmic Variable Effects (6 of 6) Celestial: Final Liminality Celestial: Triglavian Minor Victory """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Shield Emission Systems') or mod.item.requiresSkill('Capital Shield Emission Systems'), 'shieldBonus', module.getModifiedItemAttr('shieldBonusMultiplierRemote'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4090(BaseEffect): """ systemCapacitorCapacity Used by: Celestials named like: Class Cataclysmic Variable Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('capacitorCapacity', beacon.getModifiedItemAttr('capacitorCapacityMultiplierSystem'), **kwargs) class Effect4091(BaseEffect): """ systemCapacitorRecharge Used by: Celestials named like: Class Cataclysmic Variable Effects (6 of 6) Celestials named like: Class Pulsar Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('rechargeRate', beacon.getModifiedItemAttr('rechargeRateMultiplier'), **kwargs) class Effect4093(BaseEffect): """ subsystemBonusAmarrOffensiveEnergyWeaponDamageMultiplier Used by: Subsystem: Legion Offensive - Liquid Crystal Magnifiers """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'damageMultiplier', module.getModifiedItemAttr('subsystemBonusAmarrOffensive'), skill='Amarr Offensive Systems', **kwargs) class Effect4104(BaseEffect): """ subsystemBonusCaldariOffensiveHybridWeaponMaxRange Used by: Subsystem: Tengu Offensive - Magnetic Infusion Basin """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'maxRange', module.getModifiedItemAttr('subsystemBonusCaldariOffensive'), skill='Caldari Offensive Systems', **kwargs) class Effect4106(BaseEffect): """ subsystemBonusGallenteOffensiveHybridWeaponFalloff Used by: Subsystem: Proteus Offensive - Hybrid Encoding Platform """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'falloff', module.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems', **kwargs) class Effect4114(BaseEffect): """ subsystemBonusMinmatarOffensiveProjectileWeaponFalloff Used by: Subsystem: Loki Offensive - Projectile Scoping Array """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'falloff', module.getModifiedItemAttr('subsystemBonusMinmatarOffensive'), skill='Minmatar Offensive Systems', **kwargs) class Effect4115(BaseEffect): """ subsystemBonusMinmatarOffensiveProjectileWeaponMaxRange Used by: Subsystem: Loki Offensive - Projectile Scoping Array """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'maxRange', module.getModifiedItemAttr('subsystemBonusMinmatarOffensive'), skill='Minmatar Offensive Systems', **kwargs) class Effect4122(BaseEffect): """ subsystemBonusCaldariOffensive1LauncherROF Used by: Subsystem: Tengu Offensive - Accelerated Ejection Bay """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): groups = ('Missile Launcher Heavy', 'Missile Launcher Rapid Light', 'Missile Launcher Heavy Assault') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'speed', src.getModifiedItemAttr('subsystemBonusCaldariOffensive'), skill='Caldari Offensive Systems', **kwargs) class Effect4135(BaseEffect): """ systemShieldEmResistance Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) Celestial: Drifter Crisis """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldEmDamageResonance', beacon.getModifiedItemAttr('shieldEmDamageResistanceBonus'), stackingPenalties=True, **kwargs) class Effect4136(BaseEffect): """ systemShieldExplosiveResistance Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) Celestial: Drifter Crisis """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldExplosiveDamageResonance', beacon.getModifiedItemAttr('shieldExplosiveDamageResistanceBonus'), stackingPenalties=True, **kwargs) class Effect4137(BaseEffect): """ systemShieldKineticResistance Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) Celestial: Drifter Crisis """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldKineticDamageResonance', beacon.getModifiedItemAttr('shieldKineticDamageResistanceBonus'), stackingPenalties=True, **kwargs) class Effect4138(BaseEffect): """ systemShieldThermalResistance Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) Celestials named like: Volatile Ice Storm (2 of 2) Celestial: Drifter Crisis """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldThermalDamageResonance', beacon.getModifiedItemAttr('shieldThermalDamageResistanceBonus'), stackingPenalties=True, **kwargs) class Effect4152(BaseEffect): """ subsystemBonusAmarrEngineeringHeatDamageReduction Used by: Subsystem: Legion Core - Energy Parasitic Complex """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', module.getModifiedItemAttr('subsystemBonusAmarrCore'), skill='Amarr Core Systems', **kwargs) class Effect4153(BaseEffect): """ subsystemBonusCaldariEngineeringHeatDamageReduction Used by: Subsystem: Tengu Core - Obfuscation Manifold """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', module.getModifiedItemAttr('subsystemBonusCaldariCore'), skill='Caldari Core Systems', **kwargs) class Effect4154(BaseEffect): """ subsystemBonusGallenteEngineeringHeatDamageReduction Used by: Subsystem: Proteus Core - Friction Extension Processor """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', module.getModifiedItemAttr('subsystemBonusGallenteCore'), skill='Gallente Core Systems', **kwargs) class Effect4155(BaseEffect): """ subsystemBonusMinmatarEngineeringHeatDamageReduction Used by: Subsystem: Loki Core - Immobility Drivers """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', module.getModifiedItemAttr('subsystemBonusMinmatarCore'), skill='Minmatar Core Systems', **kwargs) class Effect4158(BaseEffect): """ subsystemBonusCaldariCoreCapacitorCapacity Used by: Subsystem: Tengu Core - Augmented Graviton Reactor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('capacitorCapacity', src.getModifiedItemAttr('subsystemBonusCaldariCore'), skill='Caldari Core Systems', **kwargs) class Effect4159(BaseEffect): """ subsystemBonusAmarrCoreCapacitorCapacity Used by: Subsystem: Legion Core - Augmented Antimatter Reactor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('capacitorCapacity', src.getModifiedItemAttr('subsystemBonusAmarrCore'), skill='Amarr Core Systems', **kwargs) class Effect4161(BaseEffect): """ baseMaxScanDeviationModifierRequiringAstrometrics Used by: Implants named like: Halcyon R Booster (5 of 5) Implants named like: Poteque 'Prospector' Astrometric Pinpointing AP (3 of 3) Implants named like: Poteque 'Prospector' Sharpeye (2 of 2) Implants named like: Serenity Limited 'Sharpeye' Dose (3 of 3) Implant: AIR Astro-Pinpointing II Booster Skill: Astrometric Pinpointing Skill: Astrometrics """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseMaxScanDeviation', container.getModifiedItemAttr('maxScanDeviationModifier') * level, **kwargs) class Effect4162(BaseEffect): """ baseSensorStrengthModifierRequiringAstrometrics Used by: Modules from group: Scan Probe Launcher (4 of 7) Implants named like: Chemal Tech Exploration Booster (3 of 3) Implants named like: Halcyon G Booster (5 of 5) Implants named like: Poteque 'Prospector' Astrometric Rangefinding AR (3 of 3) Implants named like: Poteque 'Prospector' Sharpeye (2 of 2) Implants named like: Serenity Limited 'Sharpeye' Dose (3 of 3) Implants named like: grade Virtue (10 of 12) Modules named like: Gravity Capacitor Upgrade (8 of 8) Implant: AIR Astro-Rangefinding II Booster Implant: Serenity YC122.9 Season Booster - Probe Scanning Strength Skill: Astrometric Rangefinding Skill: Astrometrics """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 penalized = False if 'skill' in context or 'implant' in context or 'booster' in context else True fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength', container.getModifiedItemAttr('scanStrengthBonus') * level, stackingPenalties=penalized, **kwargs) class Effect4165(BaseEffect): """ shipBonusScanProbeStrengthCF2 Used by: Ships named like: Heron (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Scanner Probe', 'baseSensorStrength', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect4166(BaseEffect): """ shipBonusScanProbeStrengthMF2 Used by: Ships named like: Probe (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Scanner Probe', 'baseSensorStrength', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs) class Effect4167(BaseEffect): """ shipBonusScanProbeStrengthGF2 Used by: Ships named like: Imicus (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Scanner Probe', 'baseSensorStrength', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect4168(BaseEffect): """ eliteBonusCoverOpsScanProbeStrength2 Used by: Ships from group: Covert Ops (9 of 9) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Scanner Probe', 'baseSensorStrength', ship.getModifiedItemAttr('eliteBonusCovertOps2'), skill='Covert Ops', **kwargs) class Effect4187(BaseEffect): """ shipBonusStrategicCruiserAmarrHeatDamage Used by: Ship: Legion """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', ship.getModifiedItemAttr('shipBonusStrategicCruiserAmarr1'), skill='Amarr Strategic Cruiser', **kwargs) class Effect4188(BaseEffect): """ shipBonusStrategicCruiserCaldariHeatDamage Used by: Ship: Tengu """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', ship.getModifiedItemAttr('shipBonusStrategicCruiserCaldari1'), skill='Caldari Strategic Cruiser', **kwargs) class Effect4189(BaseEffect): """ shipBonusStrategicCruiserGallenteHeatDamage Used by: Ship: Proteus """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', ship.getModifiedItemAttr('shipBonusStrategicCruiserGallente1'), skill='Gallente Strategic Cruiser', **kwargs) class Effect4190(BaseEffect): """ shipBonusStrategicCruiserMinmatarHeatDamage Used by: Ship: Loki """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', ship.getModifiedItemAttr('shipBonusStrategicCruiserMinmatar1'), skill='Minmatar Strategic Cruiser', **kwargs) class Effect4215(BaseEffect): """ subsystemBonusAmarrOffensive2EnergyWeaponCapacitorNeed Used by: Subsystem: Legion Offensive - Liquid Crystal Magnifiers """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'capacitorNeed', module.getModifiedItemAttr('subsystemBonusAmarrOffensive2'), skill='Amarr Offensive Systems', **kwargs) class Effect4216(BaseEffect): """ subsystemBonusAmarrCore2EnergyVampireAmount Used by: Subsystem: Legion Core - Energy Parasitic Complex """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', src.getModifiedItemAttr('subsystemBonusAmarrCore2'), skill='Amarr Core Systems', **kwargs) class Effect4217(BaseEffect): """ subsystemBonusAmarrCore2EnergyDestabilizerAmount Used by: Subsystem: Legion Core - Energy Parasitic Complex """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', src.getModifiedItemAttr('subsystemBonusAmarrCore2'), skill='Amarr Core Systems', **kwargs) class Effect4248(BaseEffect): """ subsystemBonusCaldariOffensive2MissileLauncherKineticDamage Used by: Subsystem: Tengu Offensive - Accelerated Ejection Bay """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'kineticDamage', src.getModifiedItemAttr('subsystemBonusCaldariOffensive2'), skill='Caldari Offensive Systems', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage', src.getModifiedItemAttr('subsystemBonusCaldariOffensive2'), skill='Caldari Offensive Systems', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'kineticDamage', src.getModifiedItemAttr('subsystemBonusCaldariOffensive2'), skill='Caldari Offensive Systems', **kwargs) class Effect4250(BaseEffect): """ subsystemBonusGallenteOffensiveDroneDamageHP Used by: Subsystem: Proteus Offensive - Drone Synthesis Projector """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'armorHP', src.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems', **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'hp', src.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems', **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems', **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'shieldCapacity', src.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems', **kwargs) class Effect4251(BaseEffect): """ subsystemBonusMinmatarOffensive2ProjectileWeaponDamageMultiplier Used by: Subsystem: Loki Offensive - Projectile Scoping Array """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier', module.getModifiedItemAttr('subsystemBonusMinmatarOffensive2'), skill='Minmatar Offensive Systems', **kwargs) class Effect4256(BaseEffect): """ subsystemBonusMinmatarOffensive2MissileLauncherROF Used by: Subsystem: Loki Offensive - Launcher Efficiency Configuration """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): groups = ('Missile Launcher Heavy', 'Missile Launcher Rapid Light', 'Missile Launcher Heavy Assault') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'speed', src.getModifiedItemAttr('subsystemBonusMinmatarOffensive2'), skill='Minmatar Offensive Systems', **kwargs) class Effect4264(BaseEffect): """ subsystemBonusMinmatarCoreCapacitorRecharge Used by: Subsystem: Loki Core - Augmented Nuclear Reactor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('rechargeRate', src.getModifiedItemAttr('subsystemBonusMinmatarCore'), skill='Minmatar Core Systems', **kwargs) class Effect4265(BaseEffect): """ subsystemBonusGallenteCoreCapacitorRecharge Used by: Subsystem: Proteus Core - Augmented Fusion Reactor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('rechargeRate', src.getModifiedItemAttr('subsystemBonusGallenteCore'), skill='Gallente Core Systems', **kwargs) class Effect4269(BaseEffect): """ subsystemBonusAmarrCore3ScanResolution Used by: Subsystem: Legion Core - Dissolution Sequencer """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('scanResolution', src.getModifiedItemAttr('subsystemBonusAmarrCore3'), skill='Amarr Core Systems', **kwargs) class Effect4270(BaseEffect): """ subsystemBonusMinmatarCore3ScanResolution Used by: Subsystem: Loki Core - Dissolution Sequencer """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('scanResolution', src.getModifiedItemAttr('subsystemBonusMinmatarCore3'), skill='Minmatar Core Systems', **kwargs) class Effect4271(BaseEffect): """ subsystemBonusCaldariCore2MaxTargetingRange Used by: Subsystem: Tengu Core - Electronic Efficiency Gate """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxTargetRange', src.getModifiedItemAttr('subsystemBonusCaldariCore2'), skill='Caldari Core Systems', **kwargs) class Effect4272(BaseEffect): """ subsystemBonusGallenteCore2MaxTargetingRange Used by: Subsystem: Proteus Core - Electronic Efficiency Gate """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxTargetRange', src.getModifiedItemAttr('subsystemBonusGallenteCore2'), skill='Gallente Core Systems', **kwargs) class Effect4273(BaseEffect): """ subsystemBonusGallenteCore2WarpScrambleRange Used by: Subsystem: Proteus Core - Friction Extension Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', src.getModifiedItemAttr('subsystemBonusGallenteCore2'), skill='Gallente Core Systems', **kwargs) class Effect4274(BaseEffect): """ subsystemBonusMinmatarCore2StasisWebifierRange Used by: Subsystem: Loki Core - Immobility Drivers """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', src.getModifiedItemAttr('subsystemBonusMinmatarCore2'), skill='Minmatar Core Systems', **kwargs) class Effect4275(BaseEffect): """ subsystemBonusCaldariPropulsion2WarpSpeed Used by: Subsystem: Tengu Propulsion - Interdiction Nullifier """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('subsystemBonusCaldariPropulsion2'), skill='Caldari Propulsion Systems', **kwargs) class Effect4277(BaseEffect): """ subsystemBonusGallentePropulsionWarpCapacitor Used by: Subsystem: Proteus Propulsion - Interdiction Nullifier """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpCapacitorNeed', src.getModifiedItemAttr('subsystemBonusGallentePropulsion'), skill='Gallente Propulsion Systems', **kwargs) class Effect4278(BaseEffect): """ subsystemBonusGallentePropulsion2WarpSpeed Used by: Subsystem: Proteus Propulsion - Interdiction Nullifier """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('subsystemBonusGallentePropulsion2'), skill='Gallente Propulsion Systems', **kwargs) class Effect4280(BaseEffect): """ systemAgility Used by: Celestials named like: Class Black Hole Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('agility', beacon.getModifiedItemAttr('agilityMultiplier'), stackingPenalties=True, **kwargs) class Effect4282(BaseEffect): """ subsystemBonusGallenteOffensive2HybridWeaponDamageMultiplier Used by: Subsystem: Proteus Offensive - Hybrid Encoding Platform """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', module.getModifiedItemAttr('subsystemBonusGallenteOffensive2'), skill='Gallente Offensive Systems', **kwargs) class Effect4283(BaseEffect): """ subsystemBonusCaldariOffensive2HybridWeaponDamageMultiplier Used by: Subsystem: Tengu Offensive - Magnetic Infusion Basin """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', module.getModifiedItemAttr('subsystemBonusCaldariOffensive2'), skill='Caldari Offensive Systems', **kwargs) class Effect4286(BaseEffect): """ subsystemBonusAmarrOffensive2RemoteArmorRepairCapUse Used by: Subsystem: Legion Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', src.getModifiedItemAttr('subsystemBonusAmarrOffensive2'), skill='Amarr Offensive Systems', **kwargs) class Effect4288(BaseEffect): """ subsystemBonusGallenteOffensive2RemoteArmorRepairCapUse Used by: Subsystem: Proteus Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', src.getModifiedItemAttr('subsystemBonusGallenteOffensive2'), skill='Gallente Offensive Systems', **kwargs) class Effect4290(BaseEffect): """ subsystemBonusMinmatarOffensive2RemoteRepCapUse Used by: Subsystem: Loki Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems') or mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', src.getModifiedItemAttr('subsystemBonusMinmatarOffensive2'), skill='Minmatar Offensive Systems', **kwargs) class Effect4292(BaseEffect): """ subsystemBonusCaldariOffensive2RemoteShieldBoosterCapUse Used by: Subsystem: Tengu Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed', src.getModifiedItemAttr('subsystemBonusCaldariOffensive2'), skill='Caldari Offensive Systems', **kwargs) class Effect4321(BaseEffect): """ subsystemBonusCaldariCore2ECMStrengthRange Used by: Subsystem: Tengu Core - Obfuscation Manifold """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanLadarStrengthBonus', src.getModifiedItemAttr('subsystemBonusCaldariCore2'), skill='Caldari Core Systems', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanRadarStrengthBonus', src.getModifiedItemAttr('subsystemBonusCaldariCore2'), skill='Caldari Core Systems', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'maxRange', src.getModifiedItemAttr('subsystemBonusCaldariCore2'), skill='Caldari Core Systems', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanGravimetricStrengthBonus', src.getModifiedItemAttr('subsystemBonusCaldariCore2'), skill='Caldari Core Systems', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanMagnetometricStrengthBonus', src.getModifiedItemAttr('subsystemBonusCaldariCore2'), skill='Caldari Core Systems', **kwargs) class Effect4327(BaseEffect): """ subsystemBonusAmarrOffensive3DroneDamageHP Used by: Subsystem: Legion Offensive - Assault Optimization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'hp', src.getModifiedItemAttr('subsystemBonusAmarrOffensive3'), skill='Amarr Offensive Systems', **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'armorHP', src.getModifiedItemAttr('subsystemBonusAmarrOffensive3'), skill='Amarr Offensive Systems', **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'shieldCapacity', src.getModifiedItemAttr('subsystemBonusAmarrOffensive3'), skill='Amarr Offensive Systems', **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('subsystemBonusAmarrOffensive3'), skill='Amarr Offensive Systems', **kwargs) class Effect4330(BaseEffect): """ subsystemBonusAmarrOffensive3EnergyWeaponMaxRange Used by: Subsystem: Legion Offensive - Liquid Crystal Magnifiers """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'maxRange', module.getModifiedItemAttr('subsystemBonusAmarrOffensive3'), skill='Amarr Offensive Systems', **kwargs) class Effect4331(BaseEffect): """ subsystemBonusCaldariOffensive3HMLHAMVelocity Used by: Subsystem: Tengu Offensive - Accelerated Ejection Bay """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles') or mod.charge.requiresSkill('Heavy Assault Missiles'), 'maxVelocity', src.getModifiedItemAttr('subsystemBonusCaldariOffensive3'), skill='Caldari Offensive Systems', **kwargs) class Effect4342(BaseEffect): """ subsystemBonusMinmatarCore2MaxTargetingRange Used by: Subsystem: Loki Core - Dissolution Sequencer """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxTargetRange', src.getModifiedItemAttr('subsystemBonusMinmatarCore2'), skill='Minmatar Core Systems', **kwargs) class Effect4343(BaseEffect): """ subsystemBonusAmarrCore2MaxTargetingRange Used by: Subsystem: Legion Core - Dissolution Sequencer """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxTargetRange', src.getModifiedItemAttr('subsystemBonusAmarrCore2'), skill='Amarr Core Systems', **kwargs) class Effect4347(BaseEffect): """ subsystemBonusGallenteOffensive3TurretTracking Used by: Subsystem: Proteus Offensive - Drone Synthesis Projector Subsystem: Proteus Offensive - Hybrid Encoding Platform """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'trackingSpeed', module.getModifiedItemAttr('subsystemBonusGallenteOffensive3'), skill='Gallente Offensive Systems', **kwargs) class Effect4351(BaseEffect): """ subsystemBonusMinmatarOffensive3TurretTracking Used by: Subsystem: Loki Offensive - Projectile Scoping Array """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'trackingSpeed', module.getModifiedItemAttr('subsystemBonusMinmatarOffensive3'), skill='Minmatar Offensive Systems', **kwargs) class Effect4358(BaseEffect): """ ecmRangeBonusModuleEffect Used by: Modules from group: ECM Stabilizer (5 of 5) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'maxRange', module.getModifiedItemAttr('ecmRangeBonus'), stackingPenalties=True, **kwargs) class Effect4360(BaseEffect): """ subsystemBonusAmarrOffensiveMissileLauncherROF Used by: Subsystem: Legion Offensive - Assault Optimization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): groups = ('Missile Launcher Heavy', 'Missile Launcher Rapid Light', 'Missile Launcher Heavy Assault') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'speed', src.getModifiedItemAttr('subsystemBonusAmarrOffensive'), skill='Amarr Offensive Systems', **kwargs) class Effect4362(BaseEffect): """ subsystemBonusAmarrOffensive2MissileDamage Used by: Subsystem: Legion Offensive - Assault Optimization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'explosiveDamage', src.getModifiedItemAttr('subsystemBonusAmarrOffensive2'), skill='Amarr Offensive Systems', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'kineticDamage', src.getModifiedItemAttr('subsystemBonusAmarrOffensive2'), skill='Amarr Offensive Systems', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'emDamage', src.getModifiedItemAttr('subsystemBonusAmarrOffensive2'), skill='Amarr Offensive Systems', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'thermalDamage', src.getModifiedItemAttr('subsystemBonusAmarrOffensive2'), skill='Amarr Offensive Systems', **kwargs) class Effect4366(BaseEffect): """ shipBonusMediumHybridDmgCC2 Used by: Ship: Falcon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect4370(BaseEffect): """ caldariShipEwFalloffRangeCC2 Used by: Ship: Blackbird """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'falloffEffectiveness', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect4372(BaseEffect): """ caldariShipEwFalloffRangeCB3 Used by: Ship: Scorpion """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'falloffEffectiveness', ship.getModifiedItemAttr('shipBonusCB3'), skill='Caldari Battleship', **kwargs) class Effect4373(BaseEffect): """ subSystemBonusAmarrOffensiveCommandBursts Used by: Subsystem: Legion Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost(lambda mod: (mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command')), attrName, src.getModifiedItemAttr('subsystemBonusAmarrOffensive'), skill='Amarr Offensive Systems', **kwargs) class Effect4377(BaseEffect): """ shipBonusTorpedoVelocityGF2 Used by: Ship: Nemesis Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect4378(BaseEffect): """ shipBonusTorpedoVelocityMF2 Used by: Ship: Hound """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs) class Effect4379(BaseEffect): """ shipBonusTorpedoVelocity2AF Used by: Ship: Purifier """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'maxVelocity', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs) class Effect4380(BaseEffect): """ shipBonusTorpedoVelocityCF2 Used by: Ship: Manticore """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect4384(BaseEffect): """ eliteReconBonusHeavyMissileVelocity Used by: Ship: Rook """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'maxVelocity', ship.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships', **kwargs) class Effect4385(BaseEffect): """ eliteReconBonusHeavyAssaultMissileVelocity Used by: Ship: Rook """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'maxVelocity', ship.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships', **kwargs) class Effect4393(BaseEffect): """ shipBonusEliteCover2TorpedoThermalDamage Used by: Ship: Nemesis Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'thermalDamage', ship.getModifiedItemAttr('eliteBonusCovertOps2'), skill='Covert Ops', **kwargs) class Effect4394(BaseEffect): """ shipBonusEliteCover2TorpedoEMDamage Used by: Ship: Purifier """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'emDamage', ship.getModifiedItemAttr('eliteBonusCovertOps2'), skill='Covert Ops', **kwargs) class Effect4395(BaseEffect): """ shipBonusEliteCover2TorpedoExplosiveDamage Used by: Ship: Hound Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'explosiveDamage', ship.getModifiedItemAttr('eliteBonusCovertOps2'), skill='Covert Ops', **kwargs) class Effect4396(BaseEffect): """ shipBonusEliteCover2TorpedoKineticDamage Used by: Ship: Manticore """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'kineticDamage', ship.getModifiedItemAttr('eliteBonusCovertOps2'), skill='Covert Ops', **kwargs) class Effect4398(BaseEffect): """ shipBonusMF1TorpedoExplosionVelocity Used by: Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'aoeVelocity', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect4413(BaseEffect): """ shipBonusGF1TorpedoFlightTime Used by: Ship: Nemesis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'explosionDelay', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs) class Effect4415(BaseEffect): """ shipBonusMF1TorpedoFlightTime Used by: Ship: Hound Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'explosionDelay', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect4416(BaseEffect): """ shipBonusCF1TorpedoFlightTime Used by: Ship: Manticore """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'explosionDelay', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) class Effect4417(BaseEffect): """ shipBonusAF1TorpedoFlightTime Used by: Ship: Purifier """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'explosionDelay', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect4451(BaseEffect): """ ScanRadarStrengthModifierEffect Used by: Implants named like: Low grade Grail (5 of 6) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('scanRadarStrength', implant.getModifiedItemAttr('scanRadarStrengthModifier'), **kwargs) class Effect4452(BaseEffect): """ ScanLadarStrengthModifierEffect Used by: Implants named like: Low grade Jackal (5 of 6) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('scanLadarStrength', implant.getModifiedItemAttr('scanLadarStrengthModifier'), **kwargs) class Effect4453(BaseEffect): """ ScanGravimetricStrengthModifierEffect Used by: Implants named like: Low grade Talon (5 of 6) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('scanGravimetricStrength', implant.getModifiedItemAttr('scanGravimetricStrengthModifier'), **kwargs) class Effect4454(BaseEffect): """ ScanMagnetometricStrengthModifierEffect Used by: Implants named like: Low grade Spur (5 of 6) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('scanMagnetometricStrength', implant.getModifiedItemAttr('scanMagnetometricStrengthModifier'), **kwargs) class Effect4456(BaseEffect): """ federationsetbonus3 Used by: Implants named like: High grade Spur (6 of 6) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'), 'scanMagnetometricStrengthPercent', implant.getModifiedItemAttr('implantSetFederationNavy'), **kwargs) class Effect4457(BaseEffect): """ imperialsetbonus3 Used by: Implants named like: High grade Grail (6 of 6) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'), 'scanRadarStrengthPercent', implant.getModifiedItemAttr('implantSetImperialNavy'), **kwargs) class Effect4458(BaseEffect): """ republicsetbonus3 Used by: Implants named like: High grade Jackal (6 of 6) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'), 'scanLadarStrengthPercent', implant.getModifiedItemAttr('implantSetRepublicFleet'), **kwargs) class Effect4459(BaseEffect): """ caldarisetbonus3 Used by: Implants named like: High grade Talon (6 of 6) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'), 'scanGravimetricStrengthPercent', implant.getModifiedItemAttr('implantSetCaldariNavy'), **kwargs) class Effect4460(BaseEffect): """ imperialsetLGbonus Used by: Implants named like: Low grade Grail (6 of 6) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'), 'scanRadarStrengthModifier', implant.getModifiedItemAttr('implantSetLGImperialNavy'), **kwargs) class Effect4461(BaseEffect): """ federationsetLGbonus Used by: Implants named like: Low grade Spur (6 of 6) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'), 'scanMagnetometricStrengthModifier', implant.getModifiedItemAttr('implantSetLGFederationNavy'), **kwargs) class Effect4462(BaseEffect): """ caldarisetLGbonus Used by: Implants named like: Low grade Talon (6 of 6) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'), 'scanGravimetricStrengthModifier', implant.getModifiedItemAttr('implantSetLGCaldariNavy'), **kwargs) class Effect4463(BaseEffect): """ republicsetLGbonus Used by: Implants named like: Low grade Jackal (6 of 6) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'), 'scanLadarStrengthModifier', implant.getModifiedItemAttr('implantSetLGRepublicFleet'), **kwargs) class Effect4464(BaseEffect): """ shipProjectileRofMF Used by: Ship: Claw """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'speed', src.getModifiedItemAttr('shipBonusMF'), stackingPenalties=True, skill='Minmatar Frigate', **kwargs) class Effect4471(BaseEffect): """ shipBonusStasisMF2 Used by: Ship: Caedes Ship: Cruor Ship: Freki """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs) class Effect4472(BaseEffect): """ shipProjectileDmgMC Used by: Ship: Mimir Ship: Rupture """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs) class Effect4473(BaseEffect): """ shipVelocityBonusATC1 Used by: Ship: Adrestia Ship: Cybele Ship: Mimir """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('shipBonusATC1'), **kwargs) class Effect4474(BaseEffect): """ shipMTMaxRangeBonusATC Used by: Ship: Mimir """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusATC2'), **kwargs) class Effect4475(BaseEffect): """ shipMTFalloffBonusATC Used by: Ship: Mimir """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusATC2'), **kwargs) class Effect4476(BaseEffect): """ shipMTFalloffBonusATF Used by: Ship: Freki """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusATF2'), **kwargs) class Effect4477(BaseEffect): """ shipMTMaxRangeBonusATF Used by: Ship: Freki """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusATF2'), **kwargs) class Effect4478(BaseEffect): """ shipBonusAfterburnerCapNeedATF Used by: Ship: Freki """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Propulsion Module', 'capacitorNeed', ship.getModifiedItemAttr('shipBonusATF1'), **kwargs) class Effect4479(BaseEffect): """ shipBonusSurveyProbeExplosionDelaySkillSurveyCovertOps3 Used by: Ships from group: Covert Ops (6 of 9) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Survey Probe', 'explosionDelay', ship.getModifiedItemAttr('eliteBonusCovertOps3'), skill='Covert Ops', **kwargs) class Effect4482(BaseEffect): """ shipETOptimalRange2AF Used by: Ship: Imperial Navy Slicer Ship: Pacifier Ship: Sidewinder """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs) class Effect4484(BaseEffect): """ shipPTurretFalloffBonusGB Used by: Ship: Machariel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusGB'), skill='Gallente Battleship', **kwargs) class Effect4485(BaseEffect): """ shipBonusStasisWebSpeedFactorMB Used by: Ship: Vindicator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'speedFactor', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect4489(BaseEffect): """ superWeaponAmarr Used by: Module: 'Judgment' Electromagnetic Doomsday """ dealsDamage = True type = 'active' @staticmethod def handler(fit, mod, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) class Effect4490(BaseEffect): """ superWeaponCaldari Used by: Module: 'Oblivion' Kinetic Doomsday """ dealsDamage = True type = 'active' @staticmethod def handler(fit, mod, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) class Effect4491(BaseEffect): """ superWeaponGallente Used by: Module: 'Aurora Ominae' Thermal Doomsday """ dealsDamage = True type = 'active' @staticmethod def handler(fit, mod, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) class Effect4492(BaseEffect): """ superWeaponMinmatar Used by: Module: 'Gjallarhorn' Explosive Doomsday """ dealsDamage = True type = 'active' @staticmethod def handler(fit, mod, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) class Effect4510(BaseEffect): """ shipStasisWebStrengthBonusMC2 Used by: Ship: Victor Ship: Vigilant """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'speedFactor', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect4512(BaseEffect): """ shipPTurretFalloffBonusGC Used by: Ship: Cynabal Ship: Moracha """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs) class Effect4513(BaseEffect): """ shipStasisWebStrengthBonusMF2 Used by: Ship: Daredevil Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'speedFactor', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs) class Effect4515(BaseEffect): """ shipFalloffBonusMF Used by: Ship: Chremoas Ship: Dramiel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect4516(BaseEffect): """ shipHTurretFalloffBonusGC Used by: Ship: Victor Ship: Vigilant """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs) class Effect4527(BaseEffect): """ gunneryFalloffBonusOnline Used by: Modules from group: Tracking Enhancer (10 of 10) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'falloff', module.getModifiedItemAttr('falloffBonus'), stackingPenalties=True, **kwargs) class Effect4555(BaseEffect): """ capitalLauncherSkillCruiseCitadelEmDamage1 Used by: Skill: XL Cruise Missiles """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'emDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect4556(BaseEffect): """ capitalLauncherSkillCruiseCitadelExplosiveDamage1 Used by: Skill: XL Cruise Missiles """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'explosiveDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect4557(BaseEffect): """ capitalLauncherSkillCruiseCitadelKineticDamage1 Used by: Skill: XL Cruise Missiles """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'kineticDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect4558(BaseEffect): """ capitalLauncherSkillCruiseCitadelThermalDamage1 Used by: Skill: XL Cruise Missiles """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'thermalDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect4559(BaseEffect): """ gunneryMaxRangeFalloffTrackingSpeedBonus Used by: Modules from group: Tracking Computer (11 of 11) """ type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for attr in ('maxRange', 'falloff', 'trackingSpeed'): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), attr, module.getModifiedItemAttr('%sBonus' % attr), stackingPenalties=True, **kwargs) class Effect4575(BaseEffect): """ industrialCoreEffect2 Used by: Variations of module: Capital Industrial Core I (2 of 2) """ runTime = 'early' type = 'active' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', src.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) fit.ship.multiplyItemAttr('mass', src.getModifiedItemAttr('siegeMassMultiplier'), **kwargs) fit.ship.multiplyItemAttr('scanResolution', src.getModifiedItemAttr('scanResolutionMultiplier'), stackingPenalties=True, **kwargs) # Remote Shield Repper Bonuses fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Emission Systems'), 'duration', src.getModifiedItemAttr('industrialCoreRemoteLogisticsDurationBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Emission Systems'), 'maxRange', src.getModifiedItemAttr('industrialCoreRemoteLogisticsRangeBonus'), stackingPenalties=True, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Emission Systems'), 'capacitorNeed', src.getModifiedItemAttr('industrialCoreRemoteLogisticsDurationBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Emission Systems'), 'falloffEffectiveness', src.getModifiedItemAttr('industrialCoreRemoteLogisticsRangeBonus'), stackingPenalties=True, **kwargs) # Local Shield Repper Bonuses fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Operation'), 'duration', src.getModifiedItemAttr('industrialCoreLocalLogisticsDurationBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('industrialCoreLocalLogisticsAmountBonus'), stackingPenalties=True, **kwargs) # Mining Burst Bonuses fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff1Value', src.getModifiedItemAttr('industrialCoreBonusMiningBurstStrength'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff2Value', src.getModifiedItemAttr('industrialCoreBonusMiningBurstStrength'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff3Value', src.getModifiedItemAttr('industrialCoreBonusMiningBurstStrength'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff4Value', src.getModifiedItemAttr('industrialCoreBonusMiningBurstStrength'), **kwargs) # Command Burst Range Bonus fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'maxRange', src.getModifiedItemAttr('industrialCoreBonusCommandBurstRange'), stackingPenalties=True, **kwargs) # Drone Bonuses fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Ice Harvesting Drone Operation'), 'duration', src.getModifiedItemAttr('industrialCoreBonusDroneIceHarvesting'), **kwargs) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Mining Drone Operation'), 'miningAmount', src.getModifiedItemAttr('industrialCoreBonusDroneMining'), **kwargs) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'maxVelocity', src.getModifiedItemAttr('industrialCoreBonusDroneVelocity'), stackingPenalties=True, **kwargs) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('industrialCoreBonusDroneDamageHP'), stackingPenalties=True, **kwargs) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'shieldCapacity', src.getModifiedItemAttr('industrialCoreBonusDroneDamageHP'), **kwargs) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'armorHP', src.getModifiedItemAttr('industrialCoreBonusDroneDamageHP'), **kwargs) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'hp', src.getModifiedItemAttr('industrialCoreBonusDroneDamageHP'), **kwargs) # Remote impedance (no reps, etc) fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) fit.ship.boostItemAttr('remoteRepairImpedance', src.getModifiedItemAttr('remoteRepairImpedanceBonus'), **kwargs) fit.ship.increaseItemAttr('disallowTethering', src.getModifiedItemAttr('disallowTethering'), **kwargs) fit.ship.boostItemAttr('sensorDampenerResistance', src.getModifiedItemAttr('sensorDampenerResistanceBonus'), **kwargs) fit.ship.boostItemAttr('remoteAssistanceImpedance', src.getModifiedItemAttr('remoteAssistanceImpedanceBonus'), **kwargs) fit.ship.increaseItemAttr('disallowDocking', src.getModifiedItemAttr('disallowDocking'), **kwargs) class Effect4576(BaseEffect): """ eliteBonusLogisticsTrackingLinkFalloffBonus1 Used by: Ship: Scimitar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer', 'falloffBonus', ship.getModifiedItemAttr('eliteBonusLogistics1'), skill='Logistics Cruisers', **kwargs) class Effect4577(BaseEffect): """ eliteBonusLogisticsTrackingLinkFalloffBonus2 Used by: Ship: Oneiros """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer', 'falloffBonus', ship.getModifiedItemAttr('eliteBonusLogistics2'), skill='Logistics Cruisers', **kwargs) class Effect4579(BaseEffect): """ droneRigStasisWebSpeedFactorBonus Used by: Modules named like: Stasis Drone Augmentor (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.group.name == 'Stasis Webifying Drone', 'speedFactor', module.getModifiedItemAttr('webSpeedFactorBonus'), **kwargs) class Effect4619(BaseEffect): """ shipBonusDroneDamageGF2 Used by: Ship: Utu """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect4620(BaseEffect): """ shipBonusWarpScramblerMaxRangeGF2 Used by: Ship: Garmur Ship: Shapash Ship: Utu """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect4621(BaseEffect): """ shipBonusHeatDamageATF1 Used by: Ship: Cambion Ship: Etana Ship: Shapash Ship: Utu """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', ship.getModifiedItemAttr('shipBonusATF1'), **kwargs) class Effect4622(BaseEffect): """ shipBonusSmallHybridMaxRangeATF2 Used by: Ship: Utu """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusATF2'), **kwargs) class Effect4623(BaseEffect): """ shipBonusSmallHybridTrackingSpeedATF2 Used by: Ship: Utu """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusATF2'), **kwargs) class Effect4624(BaseEffect): """ shipBonusHybridTrackingATC2 Used by: Ship: Adrestia """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusATC2'), **kwargs) class Effect4625(BaseEffect): """ shipBonusHybridFalloffATC2 Used by: Ship: Adrestia """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusATC2'), **kwargs) class Effect4626(BaseEffect): """ shipBonusWarpScramblerMaxRangeGC2 Used by: Ship: Adrestia Ship: Cybele Ship: Orthrus """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect4635(BaseEffect): """ eliteBonusMaraudersCruiseAndTorpedoDamageRole1 Used by: Ship: Golem """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): damageTypes = ('em', 'explosive', 'kinetic', 'thermal') for damageType in damageTypes: fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Cruise Missiles') or mod.charge.requiresSkill('Torpedoes'), '{0}Damage'.format(damageType), ship.getModifiedItemAttr('eliteBonusViolatorsRole1'), **kwargs) class Effect4636(BaseEffect): """ shipBonusAoeVelocityCruiseAndTorpedoCB2 Used by: Ship: Golem """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Cruise Missiles') or mod.charge.requiresSkill('Torpedoes'), 'aoeVelocity', ship.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship', **kwargs) class Effect4637(BaseEffect): """ shipCruiseAndTorpedoVelocityBonusCB3 Used by: Ship: Golem Ship: Widow """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Cruise Missiles') or mod.charge.requiresSkill('Torpedoes'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusCB3'), skill='Caldari Battleship', **kwargs) class Effect4640(BaseEffect): """ shipArmorEMAndExpAndkinAndThmResistanceAC2 Used by: Ships named like: Stratios (2 of 2) Ship: Sacrilege Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): damageTypes = ('Em', 'Explosive', 'Kinetic', 'Thermal') for damageType in damageTypes: fit.ship.boostItemAttr('armor{0}DamageResonance'.format(damageType), ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect4643(BaseEffect): """ shipHeavyAssaultMissileEMAndExpAndKinAndThmDmgAC1 Used by: Ship: Sacrilege """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): damageTypes = ('em', 'explosive', 'kinetic', 'thermal') for damageType in damageTypes: fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), '{0}Damage'.format(damageType), ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs) class Effect4645(BaseEffect): """ eliteBonusHeavyGunshipHeavyAndHeavyAssaultAndAssaultMissileLauncherROF Used by: Ship: Bestla Ship: Sacrilege """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): groups = ('Missile Launcher Rapid Light', 'Missile Launcher Heavy Assault', 'Missile Launcher Heavy') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'speed', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers', **kwargs) class Effect4648(BaseEffect): """ eliteBonusBlackOpsECMGravAndLadarAndMagnetometricAndRadarStrength1 Used by: Ship: Widow """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): sensorTypes = ('Gravimetric', 'Ladar', 'Magnetometric', 'Radar') for type in sensorTypes: fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scan{0}StrengthBonus'.format(type), ship.getModifiedItemAttr('eliteBonusBlackOps1'), skill='Black Ops', **kwargs) class Effect4649(BaseEffect): """ shipCruiseAndSiegeLauncherROFBonus2CB Used by: Ship: Widow """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): affectedGroups = ('Missile Launcher Cruise', 'Missile Launcher Torpedo') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in affectedGroups, 'speed', ship.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship', **kwargs) class Effect4667(BaseEffect): """ shipBonusNoctisSalvageCycle Used by: Ship: Noctis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Salvaging'), 'duration', ship.getModifiedItemAttr('shipBonusOreIndustrial1'), skill='ORE Hauler', **kwargs) class Effect4668(BaseEffect): """ shipBonusNoctisTractorCycle Used by: Ship: Noctis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Tractor Beam', 'duration', ship.getModifiedItemAttr('shipBonusOreIndustrial1'), skill='ORE Hauler', **kwargs) class Effect4669(BaseEffect): """ shipBonusNoctisTractorVelocity Used by: Ship: Noctis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Tractor Beam', 'maxTractorVelocity', ship.getModifiedItemAttr('shipBonusOreIndustrial2'), skill='ORE Hauler', **kwargs) class Effect4670(BaseEffect): """ shipBonusNoctisTractorRange Used by: Ship: Noctis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Tractor Beam', 'maxRange', ship.getModifiedItemAttr('shipBonusOreIndustrial2'), skill='ORE Hauler', **kwargs) class Effect4728(BaseEffect): """ OffensiveDefensiveReduction Used by: Celestials named like: Drifter Incursion (6 of 6) Celestials named like: Sansha Incursion System Effects (3 of 3) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): damages = ('em', 'thermal', 'kinetic', 'explosive') for damage in damages: # Nerf missile damage fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), '{0}Damage'.format(damage), beacon.getModifiedItemAttr('systemEffectDamageReduction'), **kwargs) # Nerf smartbomb damage fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Smart Bomb', '{0}Damage'.format(damage), beacon.getModifiedItemAttr('systemEffectDamageReduction'), **kwargs) # Nerf armor resistances fit.ship.boostItemAttr('armor{0}DamageResonance'.format(damage.capitalize()), beacon.getModifiedItemAttr('armor{0}DamageResistanceBonus'.format(damage.capitalize())), **kwargs) # Nerf shield resistances fit.ship.boostItemAttr('shield{0}DamageResonance'.format(damage.capitalize()), beacon.getModifiedItemAttr('shield{0}DamageResistanceBonus'.format(damage.capitalize())), **kwargs) # Nerf drone damage output fit.drones.filteredItemBoost(lambda drone: True, 'damageMultiplier', beacon.getModifiedItemAttr('systemEffectDamageReduction'), **kwargs) # Nerf turret damage output fit.modules.filteredItemBoost(lambda module: module.item.requiresSkill('Gunnery'), 'damageMultiplier', beacon.getModifiedItemAttr('systemEffectDamageReduction'), **kwargs) class Effect4760(BaseEffect): """ subsystemBonusCaldariPropulsionWarpCapacitor Used by: Subsystem: Tengu Propulsion - Interdiction Nullifier """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpCapacitorNeed', src.getModifiedItemAttr('subsystemBonusCaldariPropulsion'), skill='Caldari Propulsion Systems', **kwargs) class Effect4775(BaseEffect): """ shipEnergyNeutralizerTransferAmountBonusAF2 Used by: Ship: Malice """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs) class Effect4782(BaseEffect): """ shipBonusSmallEnergyWeaponOptimalRangeATF2 Used by: Ship: Malice """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusATF2'), **kwargs) class Effect4789(BaseEffect): """ shipBonusSmallEnergyTurretDamageATF1 Used by: Ship: Malice """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusATF1'), **kwargs) class Effect4793(BaseEffect): """ shipBonusMissileLauncherHeavyROFATC1 Used by: Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy', 'speed', ship.getModifiedItemAttr('shipBonusATC1'), **kwargs) class Effect4794(BaseEffect): """ shipBonusMissileLauncherAssaultROFATC1 Used by: Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rapid Light', 'speed', ship.getModifiedItemAttr('shipBonusATC1'), **kwargs) class Effect4795(BaseEffect): """ shipBonusMissileLauncherHeavyAssaultROFATC1 Used by: Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy Assault', 'speed', ship.getModifiedItemAttr('shipBonusATC1'), **kwargs) class Effect4799(BaseEffect): """ eliteBonusBlackOpsECMBurstGravAndLadarAndMagnetoAndRadar Used by: Ship: Widow """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): sensorTypes = ('Gravimetric', 'Ladar', 'Magnetometric', 'Radar') for type in sensorTypes: fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Burst Jammer', 'scan{0}StrengthBonus'.format(type), ship.getModifiedItemAttr('eliteBonusBlackOps1'), skill='Black Ops', **kwargs) class Effect4804(BaseEffect): """ dataMiningSkillBoostAccessDifficultyBonusAbsolutePercent Used by: Skill: Archaeology Skill: Hacking Skill: Salvaging """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill(skill), 'accessDifficultyBonus', skill.getModifiedItemAttr('accessDifficultyBonusAbsolutePercent') * skill.level, **kwargs) class Effect4809(BaseEffect): """ ecmGravimetricStrengthBonusPercent Used by: Modules from group: ECM Stabilizer (5 of 5) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanGravimetricStrengthBonus', module.getModifiedItemAttr('ecmStrengthBonusPercent'), stackingPenalties=True, **kwargs) class Effect4810(BaseEffect): """ ecmLadarStrengthBonusPercent Used by: Modules from group: ECM Stabilizer (5 of 5) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanLadarStrengthBonus', module.getModifiedItemAttr('ecmStrengthBonusPercent'), stackingPenalties=True, **kwargs) class Effect4811(BaseEffect): """ ecmMagnetometricStrengthBonusPercent Used by: Modules from group: ECM Stabilizer (5 of 5) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanMagnetometricStrengthBonus', module.getModifiedItemAttr('ecmStrengthBonusPercent'), stackingPenalties=True, **kwargs) class Effect4812(BaseEffect): """ ecmRadarStrengthBonusPercent Used by: Modules from group: ECM Stabilizer (5 of 5) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanRadarStrengthBonus', module.getModifiedItemAttr('ecmStrengthBonusPercent'), stackingPenalties=True, **kwargs) class Effect4814(BaseEffect): """ jumpPortalConsumptionBonusPercentSkill Used by: Skill: Jump Portal Generation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), 'consumptionQuantity', skill.getModifiedItemAttr('consumptionQuantityBonusPercent') * skill.level, **kwargs) class Effect4817(BaseEffect): """ salvagerModuleDurationReduction Used by: Implant: Poteque 'Prospector' Environmental Analysis EY-1005 """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Salvager', 'duration', implant.getModifiedItemAttr('durationBonus'), **kwargs) class Effect4820(BaseEffect): """ bcLargeEnergyTurretPowerNeedBonus Used by: Ship: Oracle """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'power', ship.getModifiedItemAttr('bcLargeTurretPower'), **kwargs) class Effect4821(BaseEffect): """ bcLargeHybridTurretPowerNeedBonus Used by: Ship: Naga Ship: Talos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'power', ship.getModifiedItemAttr('bcLargeTurretPower'), **kwargs) class Effect4822(BaseEffect): """ bcLargeProjectileTurretPowerNeedBonus Used by: Ship: Tornado """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'power', ship.getModifiedItemAttr('bcLargeTurretPower'), **kwargs) class Effect4823(BaseEffect): """ bcLargeEnergyTurretCPUNeedBonus Used by: Ship: Oracle """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'cpu', ship.getModifiedItemAttr('bcLargeTurretCPU'), **kwargs) class Effect4824(BaseEffect): """ bcLargeHybridTurretCPUNeedBonus Used by: Ship: Naga Ship: Talos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'cpu', ship.getModifiedItemAttr('bcLargeTurretCPU'), **kwargs) class Effect4825(BaseEffect): """ bcLargeProjectileTurretCPUNeedBonus Used by: Ship: Tornado """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'cpu', ship.getModifiedItemAttr('bcLargeTurretCPU'), **kwargs) class Effect4826(BaseEffect): """ bcLargeEnergyTurretCapacitorNeedBonus Used by: Ship: Oracle """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('bcLargeTurretCap'), **kwargs) class Effect4827(BaseEffect): """ bcLargeHybridTurretCapacitorNeedBonus Used by: Ship: Naga Ship: Talos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'capacitorNeed', ship.getModifiedItemAttr('bcLargeTurretCap'), **kwargs) class Effect4867(BaseEffect): """ setBonusChristmasPowergrid Used by: Implants named like: Genolution Core Augmentation CA (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant', 'powerEngineeringOutputBonus', implant.getModifiedItemAttr('implantSetChristmas'), **kwargs) class Effect4868(BaseEffect): """ setBonusChristmasCapacitorCapacity Used by: Implants named like: Genolution Core Augmentation CA (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant', 'capacitorCapacityBonus', implant.getModifiedItemAttr('implantSetChristmas'), **kwargs) class Effect4869(BaseEffect): """ setBonusChristmasCPUOutput Used by: Implants named like: Genolution Core Augmentation CA (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant', 'cpuOutputBonus2', implant.getModifiedItemAttr('implantSetChristmas'), **kwargs) class Effect4871(BaseEffect): """ setBonusChristmasCapacitorRecharge2 Used by: Implants named like: Genolution Core Augmentation CA (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant', 'capRechargeBonus', implant.getModifiedItemAttr('implantSetChristmas'), **kwargs) class Effect4896(BaseEffect): """ shipBonusDroneHitpointsGF2 Used by: Ship: Ishkur """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'hp', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect4897(BaseEffect): """ shipBonusDroneArmorHitpointsGF2 Used by: Ship: Ishkur """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'armorHP', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect4898(BaseEffect): """ shipBonusDroneShieldHitpointsGF2 Used by: Ship: Ishkur """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect4901(BaseEffect): """ shipMissileSpeedBonusAF Used by: Ship: Vengeance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'speed', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs) class Effect4902(BaseEffect): """ MWDSignatureRadiusRoleBonus Used by: Ships from group: Assault Frigate (10 of 15) Ships from group: Command Destroyer (6 of 6) Ships from group: Heavy Assault Cruiser (9 of 14) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'signatureRadiusBonus', ship.getModifiedItemAttr('MWDSignatureRadiusBonus'), **kwargs) class Effect4906(BaseEffect): """ systemDamageFighters Used by: Celestials named like: Class Magnetar Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.fighters.filteredItemMultiply(lambda drone: drone.item.requiresSkill('Fighters'), 'damageMultiplier', beacon.getModifiedItemAttr('damageMultiplierMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4911(BaseEffect): """ modifyShieldRechargeRatePassive Used by: Modules named like: Processor Overclocking Unit (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('shieldRechargeRate', module.getModifiedItemAttr('shieldRechargeRateMultiplier'), **kwargs) class Effect4921(BaseEffect): """ microJumpDrive Used by: Modules named like: Micro Jump Drive (6 of 6) """ type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('signatureRadius', module.getModifiedItemAttr('signatureRadiusBonusPercent'), **kwargs) class Effect4923(BaseEffect): """ skillMJDdurationBonus Used by: Skill: Micro Jump Drive Operation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Micro Jump Drive Operation'), 'duration', skill.getModifiedItemAttr('durationBonus') * skill.level, **kwargs) class Effect4928(BaseEffect): """ adaptiveArmorHardener Used by: Modules from group: Armor Resistance Shift Hardener (2 of 2) """ runTime = 'late' type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): # pyfalog = Logger(__name__) damagePattern = module.rahPatternOverride if module.rahPatternOverride is not None else fit.damagePattern # pyfalog.debug('==============================') if damagePattern == 'disable': for attr in ('armorEmDamageResonance', 'armorThermalDamageResonance', 'armorKineticDamageResonance', 'armorExplosiveDamageResonance'): fit.ship.multiplyItemAttr(attr, module.getModifiedItemAttr(attr), stackingPenalties=True, penaltyGroup='preMul') return # Skip if there is no damage pattern. Example: projected ships or fleet boosters if damagePattern: # Populate a tuple with the damage profile modified by current armor resists. baseDamageTaken = ( damagePattern.emAmount * fit.ship.getModifiedItemAttr('armorEmDamageResonance'), damagePattern.thermalAmount * fit.ship.getModifiedItemAttr('armorThermalDamageResonance'), damagePattern.kineticAmount * fit.ship.getModifiedItemAttr('armorKineticDamageResonance'), damagePattern.explosiveAmount * fit.ship.getModifiedItemAttr('armorExplosiveDamageResonance'), ) # pyfalog.debug('Damage Adjusted for Armor Resists: %f/%f/%f/%f' % (baseDamageTaken[0], baseDamageTaken[1], baseDamageTaken[2], baseDamageTaken[3])) resistanceShiftAmount = module.getModifiedItemAttr( 'resistanceShiftAmount') / 100 # The attribute is in percent and we want a fraction RAHResistance = [ module.getModifiedItemAttr('armorEmDamageResonance'), module.getModifiedItemAttr('armorThermalDamageResonance'), module.getModifiedItemAttr('armorKineticDamageResonance'), module.getModifiedItemAttr('armorExplosiveDamageResonance'), ] # Simulate RAH cycles until the RAH either stops changing or enters a loop. # The number of iterations is limited to prevent an infinite loop if something goes wrong. cycleList = [] loopStart = -20 for num in range(50): # pyfalog.debug('Starting cycle %d.' % num) # The strange order is to emulate the ingame sorting when different types have taken the same amount of damage. # This doesn't take into account stacking penalties. In a few cases fitting a Damage Control causes an inaccurate result. damagePattern_tuples = [ (0, baseDamageTaken[0] * RAHResistance[0], RAHResistance[0]), (3, baseDamageTaken[3] * RAHResistance[3], RAHResistance[3]), (2, baseDamageTaken[2] * RAHResistance[2], RAHResistance[2]), (1, baseDamageTaken[1] * RAHResistance[1], RAHResistance[1]), ] # Sort the tuple to drop the highest damage value to the bottom sortedDamagePattern_tuples = sorted(damagePattern_tuples, key=lambda damagePattern: damagePattern[1]) if sortedDamagePattern_tuples[2][1] == 0: # One damage type: the top damage type takes from the other three # Since the resistances not taking damage will end up going to the type taking damage we just do the whole thing at once. change0 = 1 - sortedDamagePattern_tuples[0][2] change1 = 1 - sortedDamagePattern_tuples[1][2] change2 = 1 - sortedDamagePattern_tuples[2][2] change3 = -(change0 + change1 + change2) elif sortedDamagePattern_tuples[1][1] == 0: # Two damage types: the top two damage types take from the other two # Since the resistances not taking damage will end up going equally to the types taking damage we just do the whole thing at once. change0 = 1 - sortedDamagePattern_tuples[0][2] change1 = 1 - sortedDamagePattern_tuples[1][2] change2 = -(change0 + change1) / 2 change3 = -(change0 + change1) / 2 else: # Three or four damage types: the top two damage types take from the other two change0 = min(resistanceShiftAmount, 1 - sortedDamagePattern_tuples[0][2]) change1 = min(resistanceShiftAmount, 1 - sortedDamagePattern_tuples[1][2]) change2 = -(change0 + change1) / 2 change3 = -(change0 + change1) / 2 RAHResistance[sortedDamagePattern_tuples[0][0]] = sortedDamagePattern_tuples[0][2] + change0 RAHResistance[sortedDamagePattern_tuples[1][0]] = sortedDamagePattern_tuples[1][2] + change1 RAHResistance[sortedDamagePattern_tuples[2][0]] = sortedDamagePattern_tuples[2][2] + change2 RAHResistance[sortedDamagePattern_tuples[3][0]] = sortedDamagePattern_tuples[3][2] + change3 # pyfalog.debug('Resistances shifted to %f/%f/%f/%f' % ( RAHResistance[0], RAHResistance[1], RAHResistance[2], RAHResistance[3])) # See if the current RAH profile has been encountered before, indicating a loop. for i, val in enumerate(cycleList): tolerance = 1e-06 if abs(RAHResistance[0] - val[0]) <= tolerance and \ abs(RAHResistance[1] - val[1]) <= tolerance and \ abs(RAHResistance[2] - val[2]) <= tolerance and \ abs(RAHResistance[3] - val[3]) <= tolerance: loopStart = i # pyfalog.debug('Loop found: %d-%d' % (loopStart, num)) break if loopStart >= 0: break cycleList.append(list(RAHResistance)) # if loopStart < 0: # pyfalog.error('Reactive Armor Hardener failed to find equilibrium. Damage profile after armor: {0}/{1}/{2}/{3}'.format( # baseDamageTaken[0], baseDamageTaken[1], baseDamageTaken[2], baseDamageTaken[3])) # Average the profiles in the RAH loop, or the last 20 if it didn't find a loop. loopCycles = cycleList[loopStart:] numCycles = len(loopCycles) average = [0, 0, 0, 0] for cycle in loopCycles: for i in range(4): average[i] += cycle[i] for i in range(4): average[i] = round(average[i] / numCycles, 3) # Set the new resistances # pyfalog.debug('Setting new resist profile: %f/%f/%f/%f' % ( average[0], average[1], average[2],average[3])) for i, attr in enumerate(( 'armorEmDamageResonance', 'armorThermalDamageResonance', 'armorKineticDamageResonance', 'armorExplosiveDamageResonance')): module.increaseItemAttr(attr, average[i] - module.getModifiedItemAttr(attr)) fit.ship.multiplyItemAttr(attr, average[i], stackingPenalties=True, penaltyGroup='preMul', **kwargs) class Effect4934(BaseEffect): """ shipArmorRepairingGF2 Used by: Ship: Incursus """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect4936(BaseEffect): """ fueledShieldBoosting Used by: Modules from group: Ancillary Shield Booster (14 of 14) """ runTime = 'late' type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): amount = module.getModifiedItemAttr('shieldBonus') speed = module.getModifiedItemAttr('duration') / 1000.0 fit.extraAttributes.increase('shieldRepair', amount / speed, **kwargs) class Effect4941(BaseEffect): """ shipHybridDamageBonusCF2 Used by: Ship: Griffin Navy Issue Ship: Merlin """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect4945(BaseEffect): """ skillTargetBreakerDurationBonus2 Used by: Skill: Signature Masking """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Signature Suppressor', 'durationHighisGood', skill.getModifiedItemAttr('durationBonus') * skill.level, **kwargs) class Effect4950(BaseEffect): """ shipBonusShieldBoosterMB1a Used by: Ship: Maelstrom """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect4951(BaseEffect): """ shieldBoostAmplifierPassiveBooster Used by: Implants named like: Agency 'Hardshell' TB Dose (4 of 4) Implants named like: Blue Pill Booster (5 of 5) Implants named like: Halcyon R Booster (5 of 5) Implant: AIR Hardshell Booster II Implant: Antipharmakon Thureo """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Operation') or mod.item.requiresSkill('Capital Shield Operation'), 'shieldBonus', container.getModifiedItemAttr('shieldBoostMultiplier'), **kwargs) class Effect4961(BaseEffect): """ systemShieldRepairAmountShieldSkills Used by: Celestials named like: Class Cataclysmic Variable Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Shield Operation') or mod.item.requiresSkill('Capital Shield Operation'), 'shieldBonus', module.getModifiedItemAttr('shieldBonusMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4967(BaseEffect): """ shieldBoosterDurationBonusShieldSkills Used by: Implants named like: Chemal Tech Repair Booster (3 of 3) Modules named like: Core Defense Operational Solidifier (8 of 8) Implant: AIR Repairer Booster III """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Operation') or mod.item.requiresSkill('Capital Shield Operation'), 'duration', module.getModifiedItemAttr('durationSkillBonus'), **kwargs) class Effect4970(BaseEffect): """ boosterShieldBoostAmountPenaltyShieldSkills Used by: Implants named like: Crash Booster (3 of 4) Implants named like: Frentix Booster (3 of 4) Implants named like: Mindflood Booster (3 of 4) """ attr = 'boosterShieldBoostAmountPenalty' displayName = 'Shield Boost' type = 'boosterSideEffect' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation') or mod.item.requiresSkill('Capital Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('boosterShieldBoostAmountPenalty'), **kwargs) class Effect4972(BaseEffect): """ eliteBonusAssaultShipLightMissileROF Used by: Ship: Cambion """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Light', 'speed', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect4973(BaseEffect): """ eliteBonusAssaultShipRocketROF Used by: Ship: Cambion """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rocket', 'speed', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect4974(BaseEffect): """ eliteBonusMarauderShieldBonus2a Used by: Ship: Golem Ship: Vargur """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', ship.getModifiedItemAttr('eliteBonusViolators2'), skill='Marauders', **kwargs) class Effect4975(BaseEffect): """ shipBonusMissileKineticlATF2 Used by: Ship: Cambion """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusATF2'), **kwargs) class Effect4976(BaseEffect): """ skillReactiveArmorHardenerDurationBonus Used by: Skill: Resistance Phasing """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Resistance Shift Hardener', 'duration', src.getModifiedItemAttr('durationBonus') * lvl, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Resistance Phasing'), 'duration', src.getModifiedItemAttr('durationBonus') * lvl, **kwargs) class Effect4989(BaseEffect): """ missileSkillAoeCloudSizeBonusAllIncludingCapitals Used by: Implants named like: Crash Booster (4 of 4) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeCloudSize', implant.getModifiedItemAttr('aoeCloudSizeBonus'), **kwargs) class Effect4990(BaseEffect): """ shipEnergyTCapNeedBonusRookie Used by: Ship: Hematos Ship: Impairor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('rookieSETCapBonus'), **kwargs) class Effect4991(BaseEffect): """ shipSETDmgBonusRookie Used by: Ship: Hematos Ship: Immolator Ship: Impairor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('rookieSETDamageBonus'), **kwargs) class Effect4994(BaseEffect): """ shipArmorEMResistanceRookie Used by: Ship: Devoter Ship: Gold Magnate Ship: Impairor Ship: Phobos Ship: Silver Magnate """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorEmDamageResonance', ship.getModifiedItemAttr('rookieArmorResistanceBonus'), **kwargs) class Effect4995(BaseEffect): """ shipArmorEXResistanceRookie Used by: Ship: Devoter Ship: Gold Magnate Ship: Impairor Ship: Phobos Ship: Silver Magnate """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorExplosiveDamageResonance', ship.getModifiedItemAttr('rookieArmorResistanceBonus'), **kwargs) class Effect4996(BaseEffect): """ shipArmorKNResistanceRookie Used by: Ship: Devoter Ship: Gold Magnate Ship: Impairor Ship: Phobos Ship: Silver Magnate """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorKineticDamageResonance', ship.getModifiedItemAttr('rookieArmorResistanceBonus'), **kwargs) class Effect4997(BaseEffect): """ shipArmorTHResistanceRookie Used by: Ship: Devoter Ship: Gold Magnate Ship: Impairor Ship: Phobos Ship: Silver Magnate """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorThermalDamageResonance', ship.getModifiedItemAttr('rookieArmorResistanceBonus'), **kwargs) class Effect4999(BaseEffect): """ shipHybridRangeBonusRookie Used by: Ship: Ibis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('rookieSHTOptimalBonus'), **kwargs) class Effect5000(BaseEffect): """ shipMissileKineticDamageRookie Used by: Ship: Ibis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('rookieMissileKinDamageBonus'), **kwargs) class Effect5008(BaseEffect): """ shipShieldEMResistanceRookie Used by: Ships from group: Heavy Interdiction Cruiser (4 of 6) Ship: Ibis Ship: Taipan """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldEmDamageResonance', ship.getModifiedItemAttr('rookieShieldResistBonus'), **kwargs) class Effect5009(BaseEffect): """ shipShieldExplosiveResistanceRookie Used by: Ships from group: Heavy Interdiction Cruiser (4 of 6) Ship: Ibis Ship: Taipan """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldExplosiveDamageResonance', ship.getModifiedItemAttr('rookieShieldResistBonus'), **kwargs) class Effect5011(BaseEffect): """ shipShieldKineticResistanceRookie Used by: Ships from group: Heavy Interdiction Cruiser (4 of 6) Ship: Ibis Ship: Taipan """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldKineticDamageResonance', ship.getModifiedItemAttr('rookieShieldResistBonus'), **kwargs) class Effect5012(BaseEffect): """ shipShieldThermalResistanceRookie Used by: Ships from group: Heavy Interdiction Cruiser (4 of 6) Ship: Ibis Ship: Taipan """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldThermalDamageResonance', ship.getModifiedItemAttr('rookieShieldResistBonus'), **kwargs) class Effect5013(BaseEffect): """ shipSHTDmgBonusRookie Used by: Ship: Velator Ship: Violator Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('rookieSHTDamageBonus'), **kwargs) class Effect5014(BaseEffect): """ shipBonusDroneDamageMultiplierRookie Used by: Ship: Gnosis Ship: Praxis Ship: Sunesis Ship: Taipan Ship: Velator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', ship.getModifiedItemAttr('rookieDroneBonus'), **kwargs) class Effect5015(BaseEffect): """ shipBonusEwRemoteSensorDampenerMaxTargetRangeBonusRookie Used by: Ship: Velator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'maxTargetRangeBonus', ship.getModifiedItemAttr('rookieDampStrengthBonus'), **kwargs) class Effect5016(BaseEffect): """ shipBonusEwRemoteSensorDampenerScanResolutionBonusRookie Used by: Ship: Velator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'scanResolutionBonus', ship.getModifiedItemAttr('rookieDampStrengthBonus'), **kwargs) class Effect5017(BaseEffect): """ shipArmorRepairingRookie Used by: Ship: Velator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('rookieArmorRepBonus'), **kwargs) class Effect5018(BaseEffect): """ shipVelocityBonusRookie Used by: Ship: Reaper """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('rookieShipVelocityBonus'), **kwargs) class Effect5019(BaseEffect): """ minmatarShipEwTargetPainterRookie Used by: Ship: Reaper """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'signatureRadiusBonus', ship.getModifiedItemAttr('rookieTargetPainterStrengthBonus'), **kwargs) class Effect5020(BaseEffect): """ shipSPTDmgBonusRookie Used by: Ship: Echo Ship: Reaper """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('rookieSPTDamageBonus'), **kwargs) class Effect5021(BaseEffect): """ shipShieldBoostRookie Used by: Ship: Immolator Ship: Reaper """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', ship.getModifiedItemAttr('rookieShieldBoostBonus'), **kwargs) class Effect5028(BaseEffect): """ shipECMScanStrengthBonusRookie Used by: Ship: Ibis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for type in ('Gravimetric', 'Ladar', 'Radar', 'Magnetometric'): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scan{0}StrengthBonus'.format(type), ship.getModifiedItemAttr('rookieECMStrengthBonus'), **kwargs) class Effect5030(BaseEffect): """ shipBonusMiningDroneAmountPercentRookie Used by: Ship: Gnosis Ship: Praxis Ship: Taipan Ship: Velator """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Mining Drone Operation'), 'miningAmount', container.getModifiedItemAttr('rookieDroneBonus'), **kwargs) class Effect5035(BaseEffect): """ shipBonusDroneHitpointsRookie Used by: Ship: Gnosis Ship: Praxis Ship: Sunesis Ship: Taipan Ship: Velator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for type in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), type, ship.getModifiedItemAttr('rookieDroneBonus'), **kwargs) class Effect5036(BaseEffect): """ shipBonusSalvageCycleAF Used by: Ship: Magnate """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Salvaging'), 'duration', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect5045(BaseEffect): """ shipBonusSalvageCycleCF Used by: Ship: Heron """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Salvaging'), 'duration', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) class Effect5048(BaseEffect): """ shipBonusSalvageCycleGF Used by: Ship: Imicus """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Salvaging'), 'duration', ship.getModifiedItemAttr('shipBonusGF'), skill='Amarr Frigate', **kwargs) class Effect5051(BaseEffect): """ shipBonusSalvageCycleMF Used by: Ship: Probe """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Salvaging'), 'duration', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect5058(BaseEffect): """ miningYieldMultiplyPassive Used by: Ships named like: Venture (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Mining'), 'miningAmount', module.getModifiedItemAttr('miningAmountMultiplier'), **kwargs) class Effect5066(BaseEffect): """ shipBonusTargetPainterOptimalMF1 Used by: Ship: Hyena Ship: Vigil """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Target Painting'), 'maxRange', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect5067(BaseEffect): """ miningBargeBonusGeneralMiningHoldCapacity Used by: Variations of ship: Retriever (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'generalMiningHoldCapacity', ship.getModifiedItemAttr('miningBargeBonusGeneralMiningHoldCapacity'), skill='Mining Barge', **kwargs) class Effect5068(BaseEffect): """ miningBargeBonusShieldCapacity Used by: Variations of ship: Procurer (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldCapacity', ship.getModifiedItemAttr('miningBargeBonusShieldCapacity'), skill='Mining Barge', **kwargs) class Effect5069(BaseEffect): """ deepcoreMiningBonus Used by: Module: Medium Deep Core Mining Optimization I """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Mercoxit Ore Processing'), 'specializationAsteroidYieldMultiplier', module.getModifiedItemAttr('miningAmountBonus'), **kwargs) class Effect5079(BaseEffect): """ shipMissileKineticDamageCF2 Used by: Ship: Garmur Ship: Raiju """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect5080(BaseEffect): """ shipMissileVelocityCF Used by: Ship: Caldari Navy Hookbill Ship: Crow Ship: Kestrel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) class Effect5081(BaseEffect): """ maxTargetingRangeBonusPostPercentPassive Used by: Modules named like: Ionic Field Projector (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRangeBonus'), stackingPenalties=True, **kwargs) class Effect5087(BaseEffect): """ shipBonusDroneHitpointsGF Used by: Ship: Astero Ship: Imicus Navy Issue Ship: Maulus Navy Issue Ship: Tristan """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for layer in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), layer, ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs) class Effect5090(BaseEffect): """ shipShieldBoostMF Used by: Ship: Breacher Ship: Geri Ship: Jaguar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect5103(BaseEffect): """ shipBonusShieldTransferCapNeedCF Used by: Variations of ship: Bantam (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) class Effect5104(BaseEffect): """ shipBonusShieldTransferBoostAmountCF2 Used by: Variations of ship: Bantam (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect5105(BaseEffect): """ shipBonusShieldTransferCapNeedMF Used by: Variations of ship: Burst (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect5106(BaseEffect): """ shipBonusShieldTransferBoostAmountMF2 Used by: Variations of ship: Burst (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs) class Effect5107(BaseEffect): """ shipBonusRemoteArmorRepairCapNeedGF Used by: Variations of ship: Navitas (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', src.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs) class Effect5108(BaseEffect): """ shipBonusRemoteArmorRepairAmountGF2 Used by: Variations of ship: Navitas (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect5109(BaseEffect): """ shipBonusRemoteArmorRepairCapNeedAF Used by: Ship: Deacon Ship: Inquisitor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', src.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect5110(BaseEffect): """ shipBonusRemoteArmorRepairAmount2AF Used by: Ship: Deacon Ship: Inquisitor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs) class Effect5111(BaseEffect): """ shipBonusDroneTrackingGF Used by: Ship: Imicus Navy Issue Ship: Maulus Navy Issue Ship: Tristan """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs) class Effect5119(BaseEffect): """ shipBonusScanProbeStrength2AF Used by: Ship: Magnate Ship: Magnate Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Scanner Probe', 'baseSensorStrength', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs) class Effect5121(BaseEffect): """ energyTransferArrayTransferAmountBonus Used by: Ship: Augoror Ship: Osprey """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter', 'powerTransferAmount', ship.getModifiedItemAttr('energyTransferAmountBonus'), **kwargs) class Effect5122(BaseEffect): """ shipBonusShieldTransferCapneedMC1 Used by: Ship: Scythe """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs) class Effect5123(BaseEffect): """ shipBonusRemoteArmorRepairCapNeedAC1 Used by: Ship: Augoror """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', src.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs) class Effect5124(BaseEffect): """ shipBonusRemoteArmorRepairAmountAC2 Used by: Ship: Augoror """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect5125(BaseEffect): """ shipBonusRemoteArmorRepairAmountGC2 Used by: Ship: Exequror """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect5126(BaseEffect): """ shipBonusShieldTransferBoostAmountCC2 Used by: Ship: Osprey """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect5127(BaseEffect): """ shipBonusShieldTransferBoostAmountMC2 Used by: Ship: Scythe """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect5128(BaseEffect): """ shipBonusEwRemoteSensorDampenerOptimalBonusGC1 Used by: Ship: Celestis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'maxRange', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs) class Effect5129(BaseEffect): """ minmatarShipEwTargetPainterMC1 Used by: Ship: Bellicose Ship: Rapier """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'signatureRadiusBonus', ship.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs) class Effect5131(BaseEffect): """ shipMissileRofCC Used by: Ships named like: Caracal (2 of 2) Ship: Cobra Ship: Enforcer """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): groups = ('Missile Launcher Heavy', 'Missile Launcher Rapid Light', 'Missile Launcher Heavy Assault') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'speed', ship.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs) class Effect5132(BaseEffect): """ shipPTurretFalloffBonusMC2 Used by: Ship: Cobra Ship: Enforcer Ship: Stabber """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect5133(BaseEffect): """ shipHTDamageBonusCC Used by: Ship: Moa """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs) class Effect5136(BaseEffect): """ shipMETCDamageBonusAC Used by: Ship: Augoror Navy Issue Ship: Cobra Ship: Enforcer Ship: Maller Ship: Omen Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs) class Effect5139(BaseEffect): """ miningFrigateBonusOreMiningYield Used by: Variations of ship: Venture (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining'), 'miningAmount', module.getModifiedItemAttr('miningFrigatesBonusOreMiningYield'), skill='Mining Frigate', **kwargs) class Effect5153(BaseEffect): """ shipMissileVelocityPirateFactionRocket Used by: Ship: Corax Ship: Talwar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5162(BaseEffect): """ skillReactiveArmorHardenerCapNeedBonus Used by: Skill: Resistance Phasing """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Resistance Shift Hardener', 'capacitorNeed', src.getModifiedItemAttr('capNeedBonus') * lvl, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Resistance Phasing'), 'capacitorNeed', src.getModifiedItemAttr('capNeedBonus') * lvl, **kwargs) class Effect5165(BaseEffect): """ shipBonusDroneMWDboostrole Used by: Ship: Algos Ship: Dragoon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5168(BaseEffect): """ droneSalvageBonus Used by: Skill: Salvage Drone Operation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.drones.filteredItemIncrease( lambda drone: drone.item.requiresSkill('Salvage Drone Operation'), 'accessDifficultyBonus', container.getModifiedItemAttr('accessDifficultyBonus') * container.level, **kwargs) class Effect5180(BaseEffect): """ sensorCompensationSensorStrengthBonusGravimetric Used by: Skill: Gravimetric Sensor Compensation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.ship.boostItemAttr('scanGravimetricStrength', container.getModifiedItemAttr('sensorStrengthBonus') * container.level, **kwargs) class Effect5181(BaseEffect): """ sensorCompensationSensorStrengthBonusLadar Used by: Skill: Ladar Sensor Compensation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.ship.boostItemAttr('scanLadarStrength', container.getModifiedItemAttr('sensorStrengthBonus') * container.level, **kwargs) class Effect5182(BaseEffect): """ sensorCompensationSensorStrengthBonusMagnetometric Used by: Skill: Magnetometric Sensor Compensation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.ship.boostItemAttr('scanMagnetometricStrength', container.getModifiedItemAttr('sensorStrengthBonus') * container.level, **kwargs) class Effect5183(BaseEffect): """ sensorCompensationSensorStrengthBonusRadar Used by: Skill: Radar Sensor Compensation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.ship.boostItemAttr('scanRadarStrength', container.getModifiedItemAttr('sensorStrengthBonus') * container.level, **kwargs) class Effect5185(BaseEffect): """ shipEnergyVampireAmountBonusFixedAF2 Used by: Ship: Malice """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs) class Effect5187(BaseEffect): """ shipBonusEwRemoteSensorDampenerFalloffBonusGC1 Used by: Ship: Celestis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'falloffEffectiveness', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs) class Effect5188(BaseEffect): """ trackingSpeedBonusEffectHybrids Used by: Modules named like: Hybrid Metastasis Adjuster (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): penalize = 'booster' not in context fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'trackingSpeed', module.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=penalize, **kwargs) class Effect5189(BaseEffect): """ trackingSpeedBonusEffectLasers Used by: Implants named like: Tetrimon Precision Booster (4 of 4) Implants named like: Wightstorm Manasikara Booster (4 of 4) Modules named like: Energy Metastasis Adjuster (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): penalties = 'booster' not in context fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Weapon', 'trackingSpeed', module.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=penalties, **kwargs) class Effect5190(BaseEffect): """ trackingSpeedBonusEffectProjectiles Used by: Modules named like: Projectile Metastasis Adjuster (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): penalize = 'booster' not in context fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Projectile Weapon', 'trackingSpeed', module.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=penalize, **kwargs) class Effect5201(BaseEffect): """ armorUpgradesMassPenaltyReductionBonus Used by: Skills named like: Armor Layering (2 of 2) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Plate', 'massAddition', container.getModifiedItemAttr('massPenaltyReduction') * level, **kwargs) class Effect5205(BaseEffect): """ shipSETTrackingBonusRookie Used by: Ship: Immolator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'trackingSpeed', ship.getModifiedItemAttr('rookieSETTracking'), **kwargs) class Effect5206(BaseEffect): """ shipSETOptimalBonusRookie Used by: Ship: Immolator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'maxRange', ship.getModifiedItemAttr('rookieSETOptimal'), **kwargs) class Effect5207(BaseEffect): """ shipNOSTransferAmountBonusRookie Used by: Ship: Hematos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', ship.getModifiedItemAttr('rookieNosDrain'), **kwargs) class Effect5208(BaseEffect): """ shipNeutDestabilizationAmountBonusRookie Used by: Ship: Hematos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', ship.getModifiedItemAttr('rookieNeutDrain'), **kwargs) class Effect5209(BaseEffect): """ shipWebVelocityBonusRookie Used by: Ship: Hematos Ship: Violator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'speedFactor', ship.getModifiedItemAttr('rookieWebAmount'), **kwargs) class Effect5212(BaseEffect): """ shipDroneMWDSpeedBonusRookie Used by: Ship: Taipan """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: True, 'maxVelocity', ship.getModifiedItemAttr('rookieDroneMWDspeed'), **kwargs) class Effect5213(BaseEffect): """ shipRocketMaxVelocityBonusRookie Used by: Module: Skua Sharpshooter Mode Ship: Taipan """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): penalties = 'ship' not in context fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Rockets'), 'maxVelocity', ship.getModifiedItemAttr('rookieRocketVelocity'), stackingPenalties=penalties, **kwargs) class Effect5214(BaseEffect): """ shipLightMissileMaxVelocityBonusRookie Used by: Module: Skua Sharpshooter Mode Ship: Taipan """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): penalties = 'ship' not in context fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Light Missiles'), 'maxVelocity', ship.getModifiedItemAttr('rookieLightMissileVelocity'), stackingPenalties=penalties, **kwargs) class Effect5215(BaseEffect): """ shipSHTTrackingSpeedBonusRookie Used by: Ship: Violator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('rookieSHTTracking'), **kwargs) class Effect5216(BaseEffect): """ shipSHTFalloffBonusRookie Used by: Ship: Violator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'falloff', ship.getModifiedItemAttr('rookieSHTFalloff'), **kwargs) class Effect5217(BaseEffect): """ shipSPTTrackingSpeedBonusRookie Used by: Ship: Echo """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'trackingSpeed', ship.getModifiedItemAttr('rookieSPTTracking'), **kwargs) class Effect5218(BaseEffect): """ shipSPTFalloffBonusRookie Used by: Ship: Echo """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'falloff', ship.getModifiedItemAttr('rookieSPTFalloff'), **kwargs) class Effect5219(BaseEffect): """ shipSPTOptimalRangeBonusRookie Used by: Ship: Echo """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'maxRange', ship.getModifiedItemAttr('rookieSPTOptimal'), **kwargs) class Effect5220(BaseEffect): """ shipProjectileDmgPirateCruiser Used by: Ship: Gnosis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5221(BaseEffect): """ shipHeavyAssaultMissileEMDmgPirateCruiser Used by: Ship: Gnosis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'emDamage', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5222(BaseEffect): """ shipHeavyAssaultMissileKinDmgPirateCruiser Used by: Ship: Gnosis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5223(BaseEffect): """ shipHeavyAssaultMissileThermDmgPirateCruiser Used by: Ship: Gnosis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5224(BaseEffect): """ shipHeavyAssaultMissileExpDmgPirateCruiser Used by: Ship: Gnosis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5225(BaseEffect): """ shipHeavyMissileEMDmgPirateCruiser Used by: Ship: Gnosis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'emDamage', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5226(BaseEffect): """ shipHeavyMissileExpDmgPirateCruiser Used by: Ship: Gnosis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5227(BaseEffect): """ shipHeavyMissileKinDmgPirateCruiser Used by: Ship: Gnosis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5228(BaseEffect): """ shipHeavyMissileThermDmgPirateCruiser Used by: Ship: Gnosis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5229(BaseEffect): """ shipScanProbeStrengthBonusPirateCruiser Used by: Ships named like: Stratios (2 of 2) Ship: Astero Ship: Gnosis Ship: Odysseus Ship: Praxis Ship: Sunesis """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength', container.getModifiedItemAttr('shipBonusRole8'), **kwargs) class Effect5230(BaseEffect): """ modifyActiveShieldResonancePostPercent Used by: Modules from group: Flex Shield Hardener (5 of 5) Modules from group: Shield Hardener (103 of 103) """ type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for damageType in ('kinetic', 'thermal', 'explosive', 'em'): fit.ship.boostItemAttr('shield' + damageType.capitalize() + 'DamageResonance', module.getModifiedItemAttr(damageType + 'DamageResistanceBonus'), stackingPenalties=True, **kwargs) class Effect5231(BaseEffect): """ modifyActiveArmorResonancePostPercent Used by: Modules from group: Armor Hardener (148 of 148) Modules from group: Flex Armor Hardener (4 of 4) """ type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for damageType in ('kinetic', 'thermal', 'explosive', 'em'): fit.ship.boostItemAttr('armor%sDamageResonance' % damageType.capitalize(), module.getModifiedItemAttr('%sDamageResistanceBonus' % damageType), stackingPenalties=True, **kwargs) class Effect5234(BaseEffect): """ shipSmallMissileExpDmgCF2 Used by: Ship: Caldari Navy Hookbill Ship: Kestrel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Rockets') or mod.charge.requiresSkill('Light Missiles'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect5237(BaseEffect): """ shipSmallMissileKinDmgCF2 Used by: Ship: Kestrel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Rockets') or mod.charge.requiresSkill('Light Missiles'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect5240(BaseEffect): """ shipSmallMissileThermDmgCF2 Used by: Ship: Caldari Navy Hookbill Ship: Kestrel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Rockets') or mod.charge.requiresSkill('Light Missiles'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect5243(BaseEffect): """ shipSmallMissileEMDmgCF2 Used by: Ship: Caldari Navy Hookbill Ship: Kestrel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Rockets') or mod.charge.requiresSkill('Light Missiles'), 'emDamage', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect5259(BaseEffect): """ reconShipCloakCpuBonus1 Used by: Ships from group: Force Recon Ship (7 of 10) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Cloaking Device', 'cpu', ship.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships', **kwargs) class Effect5260(BaseEffect): """ covertOpsCloakCpuPercentBonus1 Used by: Ships from group: Covert Ops (6 of 9) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Cloaking'), 'cpu', ship.getModifiedItemAttr('eliteBonusCovertOps1'), skill='Covert Ops', **kwargs) class Effect5261(BaseEffect): """ CovertCloakCPUAddition Used by: Modules named like: Covert Ops Cloaking Device II (2 of 2) Module: Covert Cynosural Field Generator I """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.increaseItemAttr('cpu', module.getModifiedItemAttr('covertCloakCPUAdd') or 0, **kwargs) class Effect5262(BaseEffect): """ covertOpsCloakCpuPenalty Used by: Subsystems from group: Defensive Subsystem (8 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Cloaking'), 'covertCloakCPUAdd', module.getModifiedItemAttr('covertCloakCPUPenalty'), **kwargs) class Effect5263(BaseEffect): """ covertCynoCpuPenalty Used by: Subsystems from group: Defensive Subsystem (8 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Cynosural Field Theory'), 'covertCloakCPUAdd', module.getModifiedItemAttr('covertCloakCPUPenalty'), **kwargs) class Effect5264(BaseEffect): """ warfareLinkCPUAddition Used by: Modules from group: Command Burst (15 of 15) Modules from group: Gang Coordinator (6 of 6) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.increaseItemAttr('cpu', module.getModifiedItemAttr('warfareLinkCPUAdd') or 0, **kwargs) class Effect5265(BaseEffect): """ warfareLinkCpuPenalty Used by: Subsystems from group: Offensive Subsystem (8 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'warfareLinkCPUAdd', module.getModifiedItemAttr('warfareLinkCPUPenalty'), **kwargs) class Effect5266(BaseEffect): """ blockadeRunnerCloakCpuPercentBonus Used by: Ships from group: Blockade Runner (5 of 5) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Cloaking Device', 'cpu', ship.getModifiedItemAttr('eliteIndustrialCovertCloakBonus'), skill='Transport Ships', **kwargs) class Effect5267(BaseEffect): """ drawbackRepairSystemsPGNeed Used by: Modules named like: Auxiliary Nano Pump (6 of 8) Modules named like: Nanobot Accelerator (6 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'power', module.getModifiedItemAttr('drawback'), **kwargs) class Effect5268(BaseEffect): """ drawbackCapRepPGNeed Used by: Variations of module: Capital Auxiliary Nano Pump I (2 of 2) Variations of module: Capital Nanobot Accelerator I (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Repair Systems'), 'power', module.getModifiedItemAttr('drawback'), **kwargs) class Effect5275(BaseEffect): """ fueledArmorRepair Used by: Modules from group: Ancillary Armor Repairer (12 of 12) """ runTime = 'late' type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if module.charge and module.charge.name == 'Nanite Repair Paste': multiplier = 3 else: multiplier = 1 amount = module.getModifiedItemAttr('armorDamageAmount') * multiplier speed = module.getModifiedItemAttr('duration') / 1000.0 rps = amount / speed fit.extraAttributes.increase('armorRepair', rps, **kwargs) fit.extraAttributes.increase('armorRepairPreSpool', rps, **kwargs) fit.extraAttributes.increase('armorRepairFullSpool', rps, **kwargs) class Effect5293(BaseEffect): """ shipLaserCapNeed2AD1 Used by: Ship: Coercer """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer', **kwargs) class Effect5294(BaseEffect): """ shipLaserTracking2AD2 Used by: Ship: Coercer """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusAD2'), skill='Amarr Destroyer', **kwargs) class Effect5295(BaseEffect): """ shipBonusDroneDamageMultiplierAD1 Used by: Variations of ship: Dragoon (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer', **kwargs) class Effect5300(BaseEffect): """ shipBonusDroneHitpointsAD1 Used by: Variations of ship: Dragoon (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'shieldCapacity', src.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer', **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'hp', src.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer', **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'armorHP', src.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer', **kwargs) class Effect5303(BaseEffect): """ shipHybridRange1CD1 Used by: Ship: Cormorant """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer', **kwargs) class Effect5304(BaseEffect): """ shipHybridTrackingCD2 Used by: Ship: Cormorant """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer', **kwargs) class Effect5305(BaseEffect): """ shipBonusFrigateSizedMissileKineticDamageCD1 Used by: Ship: Corax """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer', **kwargs) class Effect5306(BaseEffect): """ shipRocketKineticDmgCD1 Used by: Ship: Corax """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer', **kwargs) class Effect5307(BaseEffect): """ shipBonusAoeVelocityRocketsCD2 Used by: Ship: Corax """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'aoeVelocity', ship.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer', **kwargs) class Effect5308(BaseEffect): """ shipBonusAoeVelocityStandardMissilesCD2 Used by: Ship: Corax """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'aoeVelocity', ship.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer', **kwargs) class Effect5309(BaseEffect): """ shipHybridFallOff1GD1 Used by: Ship: Catalyst """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer', **kwargs) class Effect5310(BaseEffect): """ shipHybridTracking1GD2 Used by: Ship: Algos Ship: Catalyst Ship: Eris """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGD2'), skill='Gallente Destroyer', **kwargs) class Effect5311(BaseEffect): """ shipBonusDroneDamageMultiplierGD1 Used by: Variations of ship: Algos (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer', **kwargs) class Effect5316(BaseEffect): """ shipBonusDroneHitpointsGD1 Used by: Variations of ship: Algos (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'shieldCapacity', src.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer', **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'armorHP', src.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer', **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'hp', src.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer', **kwargs) class Effect5317(BaseEffect): """ shipProjectileDamageMD1 Used by: Ship: Sabre Ship: Thrasher """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusMD1'), skill='Minmatar Destroyer', **kwargs) class Effect5318(BaseEffect): """ shipProjectileTracking1MD2 Used by: Ship: Sabre Ship: Thrasher """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusMD2'), skill='Minmatar Destroyer', **kwargs) class Effect5319(BaseEffect): """ shipBonusFrigateSizedLightMissileExplosiveDamageMD1 Used by: Ship: Talwar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusMD1'), skill='Minmatar Destroyer', **kwargs) class Effect5320(BaseEffect): """ shipRocketExplosiveDmgMD1 Used by: Ship: Talwar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusMD1'), skill='Minmatar Destroyer', **kwargs) class Effect5321(BaseEffect): """ shipBonusMWDSignatureRadiusMD2 Used by: Ship: Talwar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'signatureRadiusBonus', ship.getModifiedItemAttr('shipBonusMD2'), skill='Minmatar Destroyer', **kwargs) class Effect5322(BaseEffect): """ shipArmorEMResistance1ABC1 Used by: Ship: Absolution Ship: Damnation Ship: Prophecy """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorEmDamageResonance', ship.getModifiedItemAttr('shipBonusABC1'), skill='Amarr Battlecruiser', **kwargs) class Effect5323(BaseEffect): """ shipArmorExplosiveResistance1ABC1 Used by: Ship: Absolution Ship: Damnation Ship: Prophecy """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusABC1'), skill='Amarr Battlecruiser', **kwargs) class Effect5324(BaseEffect): """ shipArmorKineticResistance1ABC1 Used by: Ship: Absolution Ship: Damnation Ship: Prophecy """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorKineticDamageResonance', ship.getModifiedItemAttr('shipBonusABC1'), skill='Amarr Battlecruiser', **kwargs) class Effect5325(BaseEffect): """ shipArmorThermResistance1ABC1 Used by: Ship: Absolution Ship: Damnation Ship: Prophecy """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorThermalDamageResonance', ship.getModifiedItemAttr('shipBonusABC1'), skill='Amarr Battlecruiser', **kwargs) class Effect5326(BaseEffect): """ shipBonusDroneDamageMultiplierABC2 Used by: Ships named like: Prophecy (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusABC2'), skill='Amarr Battlecruiser', **kwargs) class Effect5331(BaseEffect): """ shipBonusDroneHitpointsABC2 Used by: Ships named like: Prophecy (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for layer in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), layer, ship.getModifiedItemAttr('shipBonusABC2'), skill='Amarr Battlecruiser', **kwargs) class Effect5332(BaseEffect): """ shipLaserCapABC1 Used by: Ship: Harbinger """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusABC1'), skill='Amarr Battlecruiser', **kwargs) class Effect5333(BaseEffect): """ shipLaserDamageBonusABC2 Used by: Ships named like: Harbinger (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusABC2'), skill='Amarr Battlecruiser', **kwargs) class Effect5334(BaseEffect): """ shipHybridOptimal1CBC1 Used by: Ship: Ferox Ship: Vulture """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser', **kwargs) class Effect5335(BaseEffect): """ shipShieldEmResistance1CBC2 Used by: Ship: Drake Ship: Nighthawk Ship: Vulture """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldEmDamageResonance', ship.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs) class Effect5336(BaseEffect): """ shipShieldExplosiveResistance1CBC2 Used by: Ship: Drake Ship: Nighthawk Ship: Vulture """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs) class Effect5337(BaseEffect): """ shipShieldKineticResistance1CBC2 Used by: Ship: Drake Ship: Nighthawk Ship: Vulture """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldKineticDamageResonance', ship.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs) class Effect5338(BaseEffect): """ shipShieldThermalResistance1CBC2 Used by: Ship: Drake Ship: Nighthawk Ship: Vulture """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldThermalDamageResonance', ship.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs) class Effect5339(BaseEffect): """ shipBonusHeavyAssaultMissileKineticDamageCBC1 Used by: Ship: Drake Ship: Nighthawk """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser', **kwargs) class Effect5340(BaseEffect): """ shipBonusHeavyMissileKineticDamageCBC1 Used by: Ship: Drake Ship: Nighthawk """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser', **kwargs) class Effect5341(BaseEffect): """ shipHybridDmg1GBC1 Used by: Variations of ship: Brutix (3 of 3) Ship: Myrmidon Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser', **kwargs) class Effect5342(BaseEffect): """ shipArmorRepairing1GBC2 Used by: Ships named like: Myrmidon (2 of 2) Ship: Astarte Ship: Brutix """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusGBC2'), skill='Gallente Battlecruiser', **kwargs) class Effect5343(BaseEffect): """ shipBonusDroneDamageMultiplierGBC1 Used by: Ships named like: Myrmidon (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser', **kwargs) class Effect5348(BaseEffect): """ shipBonusDroneHitpointsGBC1 Used by: Ships named like: Myrmidon (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for layer in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), layer, ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser', **kwargs) class Effect5349(BaseEffect): """ shipBonusHeavyMissileLauncherRofMBC2 Used by: Variations of ship: Cyclone (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy', 'speed', ship.getModifiedItemAttr('shipBonusMBC2'), skill='Minmatar Battlecruiser', **kwargs) class Effect5350(BaseEffect): """ shipBonusHeavyAssaultMissileLauncherRofMBC2 Used by: Variations of ship: Cyclone (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy Assault', 'speed', ship.getModifiedItemAttr('shipBonusMBC2'), skill='Minmatar Battlecruiser', **kwargs) class Effect5351(BaseEffect): """ shipShieldBoost1MBC1 Used by: Ship: Cyclone Ship: Sleipnir """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusMBC1'), skill='Minmatar Battlecruiser', **kwargs) class Effect5352(BaseEffect): """ shipBonusProjectileDamageMBC1 Used by: Ships named like: Hurricane (2 of 2) Ship: Khizriel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusMBC1'), skill='Minmatar Battlecruiser', **kwargs) class Effect5353(BaseEffect): """ shipProjectileRof1MBC2 Used by: Ship: Hurricane """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'speed', ship.getModifiedItemAttr('shipBonusMBC2'), skill='Minmatar Battlecruiser', **kwargs) class Effect5354(BaseEffect): """ shipLargeLaserCapABC1 Used by: Ship: Oracle """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusABC1'), skill='Amarr Battlecruiser', **kwargs) class Effect5355(BaseEffect): """ shipLargeLaserDamageBonusABC2 Used by: Ship: Oracle """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusABC2'), skill='Amarr Battlecruiser', **kwargs) class Effect5356(BaseEffect): """ shipHybridRangeBonusCBC1 Used by: Ship: Naga """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser', **kwargs) class Effect5357(BaseEffect): """ shipHybridDamageBonusCBC2 Used by: Ship: Naga """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs) class Effect5358(BaseEffect): """ shipLargeHybridTrackingBonusGBC1 Used by: Ship: Talos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser', **kwargs) class Effect5359(BaseEffect): """ shipHybridDamageBonusGBC2 Used by: Ship: Talos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGBC2'), skill='Gallente Battlecruiser', **kwargs) class Effect5360(BaseEffect): """ shipProjectileRofBonusMBC1 Used by: Ship: Tornado """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'speed', ship.getModifiedItemAttr('shipBonusMBC1'), skill='Minmatar Battlecruiser', **kwargs) class Effect5361(BaseEffect): """ shipProjectileFalloffBonusMBC2 Used by: Ship: Tornado """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusMBC2'), skill='Minmatar Battlecruiser', **kwargs) class Effect5364(BaseEffect): """ armorAllRepairSystemsAmountBonusPassive Used by: Implants named like: Agency 'Hardshell' TB Dose (4 of 4) Implants named like: Exile Booster (4 of 4) Implants named like: Halcyon R Booster (5 of 5) Implant: AIR Hardshell Booster II Implant: Antipharmakon Kosybo Implant: Wisdom of Gheinok """ type = 'passive' @staticmethod def handler(fit, booster, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Repair Systems') or mod.item.requiresSkill('Capital Repair Systems'), 'armorDamageAmount', booster.getModifiedItemAttr('armorDamageAmountBonus') or 0, **kwargs) class Effect5365(BaseEffect): """ eliteBonusViolatorsRepairSystemsArmorDamageAmount2 Used by: Ships from group: Marauder (3 of 5) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('eliteBonusViolators2'), skill='Marauders', **kwargs) class Effect5366(BaseEffect): """ shipBonusRepairSystemsBonusATC2 Used by: Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusATC2'), **kwargs) class Effect5367(BaseEffect): """ shipBonusRepairSystemsArmorRepairAmountGB2 Used by: Ship: Hyperion """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusGB2'), skill='Gallente Battleship', **kwargs) class Effect5378(BaseEffect): """ shipHeavyMissileAOECloudSizeCBC1 Used by: Ship: Drake Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'aoeCloudSize', ship.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser', **kwargs) class Effect5379(BaseEffect): """ shipHeavyAssaultMissileAOECloudSizeCBC1 Used by: Ship: Drake Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'aoeCloudSize', ship.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser', **kwargs) class Effect5380(BaseEffect): """ shipHybridTrackingGBC2 Used by: Ship: Brutix Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGBC2'), skill='Gallente Battlecruiser', **kwargs) class Effect5381(BaseEffect): """ shipEnergyTrackingABC1 Used by: Ship: Harbinger Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusABC1'), skill='Amarr Battlecruiser', **kwargs) class Effect5382(BaseEffect): """ shipBonusMETOptimalAC2 Used by: Ship: Cobra Ship: Enforcer Ship: Omen Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect5383(BaseEffect): """ shipMissileEMDamageCC Used by: Ship: Laelaps Ship: Orthrus Ship: Osprey Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'emDamage', ship.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs) class Effect5384(BaseEffect): """ shipMissileThermDamageCC Used by: Ship: Laelaps Ship: Orthrus Ship: Osprey Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs) class Effect5385(BaseEffect): """ shipMissileExpDamageCC Used by: Ship: Laelaps Ship: Orthrus Ship: Osprey Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs) class Effect5386(BaseEffect): """ shipMissileKinDamageCC2 Used by: Ship: Rook """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect5387(BaseEffect): """ shipHeavyAssaultMissileAOECloudSizeCC2 Used by: Ship: Caracal Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'aoeCloudSize', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect5388(BaseEffect): """ shipHeavyMissileAOECloudSizeCC2 Used by: Ship: Caracal Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'aoeCloudSize', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect5397(BaseEffect): """ baseMaxScanDeviationModifierModuleOnline2None Used by: Variations of module: Scan Pinpointing Array I (3 of 3) Module: Triplot Scan Acquisition Array """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseMaxScanDeviation', module.getModifiedItemAttr('maxScanDeviationModifierModule'), stackingPenalties=True, **kwargs) class Effect5398(BaseEffect): """ systemScanDurationModuleModifier Used by: Modules from group: Scanning Upgrade Time (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Astrometrics'), 'duration', module.getModifiedItemAttr('scanDurationBonus'), **kwargs) class Effect5399(BaseEffect): """ baseSensorStrengthModifierModule Used by: Variations of module: Scan Rangefinding Array I (3 of 3) Module: Triplot Scan Acquisition Array """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength', module.getModifiedItemAttr('scanStrengthBonusModule'), stackingPenalties=True, **kwargs) class Effect5402(BaseEffect): """ shipMissileHeavyAssaultVelocityABC2 Used by: Ship: Damnation """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusABC2'), skill='Amarr Battlecruiser', **kwargs) class Effect5403(BaseEffect): """ shipMissileHeavyVelocityABC2 Used by: Ship: Damnation """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusABC2'), skill='Amarr Battlecruiser', **kwargs) class Effect5410(BaseEffect): """ shipLaserCap1ABC2 Used by: Ship: Absolution """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusABC2'), skill='Amarr Battlecruiser', **kwargs) class Effect5411(BaseEffect): """ shipMissileVelocityCD1 Used by: Ship: Flycatcher """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer', **kwargs) class Effect5417(BaseEffect): """ shipBonusDroneDamageMultiplierAB Used by: Ship: Armageddon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect5418(BaseEffect): """ shipBonusDroneArmorHitPointsAB Used by: Ship: Armageddon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'armorHP', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect5419(BaseEffect): """ shipBonusDroneShieldHitPointsAB Used by: Ship: Armageddon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect5420(BaseEffect): """ shipBonusDroneStructureHitPointsAB Used by: Ship: Armageddon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'hp', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect5424(BaseEffect): """ shipLargeHybridTurretRofGB Used by: Ship: Megathron Ship: Megathron Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'speed', ship.getModifiedItemAttr('shipBonusGB'), skill='Gallente Battleship', **kwargs) class Effect5427(BaseEffect): """ shipBonusDroneTrackingGB Used by: Ship: Dominix """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGB'), skill='Gallente Battleship', **kwargs) class Effect5428(BaseEffect): """ shipBonusDroneOptimalRangeGB Used by: Ship: Dominix """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'maxRange', ship.getModifiedItemAttr('shipBonusGB'), skill='Gallente Battleship', **kwargs) class Effect5429(BaseEffect): """ shipBonusMissileAoeVelocityMB2 Used by: Ship: Typhoon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'aoeVelocity', ship.getModifiedItemAttr('shipBonusMB2'), skill='Minmatar Battleship', **kwargs) class Effect5430(BaseEffect): """ shipBonusAoeVelocityCruiseMissilesMB2 Used by: Ship: Typhoon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'aoeVelocity', ship.getModifiedItemAttr('shipBonusMB2'), skill='Minmatar Battleship', **kwargs) class Effect5433(BaseEffect): """ hackingSkillVirusBonus Used by: Implants named like: Halcyon B Booster (5 of 5) Modules named like: Memetic Algorithm Bank (8 of 8) Implant: Neural Lace 'Blackglass' Net Intrusion 920-40 Implant: Neural Lace 'Bluefire' Net Ablation 960-10 Implant: Poteque 'Prospector' Environmental Analysis EY-1005 Implant: Poteque 'Prospector' Hacking HC-905 Skill: Hacking """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Hacking'), 'virusCoherence', container.getModifiedItemAttr('virusCoherenceBonus') * level, **kwargs) class Effect5437(BaseEffect): """ archaeologySkillVirusBonus Used by: Implants named like: Halcyon Y Booster (5 of 5) Modules named like: Emission Scope Sharpener (8 of 8) Implant: Poteque 'Prospector' Archaeology AC-905 Implant: Poteque 'Prospector' Environmental Analysis EY-1005 Skill: Archaeology """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Archaeology'), 'virusCoherence', container.getModifiedItemAttr('virusCoherenceBonus') * level, **kwargs) class Effect5440(BaseEffect): """ systemStandardMissileKineticDamage Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'kineticDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5444(BaseEffect): """ shipTorpedoAOECloudSize1CB Used by: Ship: Raven Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'aoeCloudSize', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs) class Effect5445(BaseEffect): """ shipCruiseMissileAOECloudSize1CB Used by: Ship: Raven Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'aoeCloudSize', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs) class Effect5456(BaseEffect): """ shipCruiseMissileROFCB Used by: Ship: Scorpion Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Cruise', 'speed', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs) class Effect5457(BaseEffect): """ shipTorpedoROFCB Used by: Ship: Scorpion Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Torpedo', 'speed', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs) class Effect5459(BaseEffect): """ hackingVirusStrengthBonus Used by: Implants named like: Chemal Tech Exploration Booster (3 of 3) Implant: Neural Lace 'Blackglass' Net Intrusion 920-40 Implant: Neural Lace 'Bluefire' Net Ablation 960-10 """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Hacking'), 'virusStrength', src.getModifiedItemAttr('virusStrengthBonus'), **kwargs) class Effect5460(BaseEffect): """ minigameVirusStrengthBonus Used by: Ships from group: Covert Ops (8 of 9) Ships named like: Stratios (2 of 2) Subsystems named like: Defensive Covert Reconfiguration (4 of 4) Variations of ship: Heron (3 of 3) Variations of ship: Imicus (3 of 3) Variations of ship: Magnate (3 of 5) Variations of ship: Probe (3 of 3) Ship: Astero Ship: Metamorphosis Ship: Nestor Ship: Odysseus """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemIncrease( lambda mod: (mod.item.requiresSkill('Hacking') or mod.item.requiresSkill('Archaeology')), 'virusStrength', container.getModifiedItemAttr('virusStrengthBonus') * level, **kwargs) class Effect5461(BaseEffect): """ shieldOperationRechargeratebonusPostPercentOnline Used by: Modules from group: Shield Power Relay (6 of 6) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldRechargeRate', module.getModifiedItemAttr('rechargeratebonus') or 0, **kwargs) class Effect5468(BaseEffect): """ shipBonusAgilityCI2 Used by: Module: Anhinga Tertiary Mode Ship: Badger """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): if 'ship' in context: skill = 'Caldari Hauler' penalties = False else: skill = None penalties = True fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('shipBonusCI2'), skill=skill, stackingPenalties=penalties, **kwargs) class Effect5469(BaseEffect): """ shipBonusAgilityMI2 Used by: Ship: Wreathe """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('shipBonusMI2'), skill='Minmatar Hauler', **kwargs) class Effect5470(BaseEffect): """ shipBonusAgilityGI2 Used by: Ship: Nereus """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('shipBonusGI2'), skill='Gallente Hauler', **kwargs) class Effect5471(BaseEffect): """ shipBonusAgilityAI2 Used by: Ship: Sigil """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('shipBonusAI2'), skill='Amarr Hauler', **kwargs) class Effect5477(BaseEffect): """ shipBonusAmmoBayMI2 Used by: Ship: Hoarder """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('specialAmmoHoldCapacity', ship.getModifiedItemAttr('shipBonusMI2'), skill='Minmatar Hauler', **kwargs) class Effect5478(BaseEffect): """ shipBonusPICommoditiesHoldGI2 Used by: Ship: Epithal """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('specialPlanetaryCommoditiesHoldCapacity', ship.getModifiedItemAttr('shipBonusGI2'), skill='Gallente Hauler', **kwargs) class Effect5479(BaseEffect): """ shipBonusMineralBayGI2 Used by: Ship: Kryos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('specialMineralHoldCapacity', ship.getModifiedItemAttr('shipBonusGI2'), skill='Gallente Hauler', **kwargs) class Effect5480(BaseEffect): """ setBonusChristmasBonusVelocity Used by: Implants named like: Genolution Core Augmentation CA (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant', 'implantBonusVelocity', implant.getModifiedItemAttr('implantSetChristmas'), **kwargs) class Effect5482(BaseEffect): """ setBonusChristmasAgilityBonus Used by: Implants named like: Genolution Core Augmentation CA (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant', 'agilityBonus', implant.getModifiedItemAttr('implantSetChristmas'), **kwargs) class Effect5483(BaseEffect): """ setBonusChristmasShieldCapacityBonus Used by: Implants named like: Genolution Core Augmentation CA (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant', 'shieldCapacityBonus', implant.getModifiedItemAttr('implantSetChristmas'), **kwargs) class Effect5484(BaseEffect): """ setBonusChristmasArmorHPBonus2 Used by: Implants named like: Genolution Core Augmentation CA (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant', 'armorHpBonus2', implant.getModifiedItemAttr('implantSetChristmas'), **kwargs) class Effect5485(BaseEffect): """ shipSPTOptimalBonusMF Used by: Ship: Chremoas """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect5486(BaseEffect): """ shipBonusProjectileDamageMBC2 Used by: Ship: Sleipnir """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusMBC2'), skill='Minmatar Battlecruiser', **kwargs) class Effect5496(BaseEffect): """ eliteBonusCommandShipHAMRoFCS1 Used by: Ship: Claymore Ship: Nighthawk """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy Assault', 'speed', ship.getModifiedItemAttr('eliteBonusCommandShips1'), skill='Command Ships', **kwargs) class Effect5497(BaseEffect): """ eliteBonusCommandShipHMRoFCS1 Used by: Ship: Claymore Ship: Nighthawk """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy', 'speed', ship.getModifiedItemAttr('eliteBonusCommandShips1'), skill='Command Ships', **kwargs) class Effect5499(BaseEffect): """ eliteBonusCommandShipsHeavyAssaultMissileExplosionRadiusCS2 Used by: Ship: Nighthawk """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'aoeCloudSize', ship.getModifiedItemAttr('eliteBonusCommandShips2'), skill='Command Ships', **kwargs) class Effect5500(BaseEffect): """ eliteBonusCommandShipsHeavyMissileExplosionRadiusCS2 Used by: Ship: Nighthawk """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'aoeCloudSize', ship.getModifiedItemAttr('eliteBonusCommandShips2'), skill='Command Ships', **kwargs) class Effect5501(BaseEffect): """ eliteBonusCommandShipMediumHybridDamageCS2 Used by: Ship: Vulture """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusCommandShips2'), skill='Command Ships', **kwargs) class Effect5505(BaseEffect): """ eliteBonusCommandShipMediumHybridRoFCS1 Used by: Ship: Astarte """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'speed', ship.getModifiedItemAttr('eliteBonusCommandShips1'), skill='Command Ships', **kwargs) class Effect5514(BaseEffect): """ eliteBonusCommandShipHeavyAssaultMissileDamageCS2 Used by: Ship: Damnation """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): damageTypes = ('em', 'explosive', 'kinetic', 'thermal') for damageType in damageTypes: fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), '{0}Damage'.format(damageType), ship.getModifiedItemAttr('eliteBonusCommandShips2'), skill='Command Ships', **kwargs) class Effect5521(BaseEffect): """ eliteBonusCommandShipHeavyMissileDamageCS2 Used by: Ship: Damnation """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): damageTypes = ('em', 'explosive', 'kinetic', 'thermal') for damageType in damageTypes: fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), '{0}Damage'.format(damageType), ship.getModifiedItemAttr('eliteBonusCommandShips2'), skill='Command Ships', **kwargs) class Effect5539(BaseEffect): """ shipBonusHMLKineticDamageAC Used by: Ship: Sacrilege """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs) class Effect5540(BaseEffect): """ shipBonusHMLEMDamageAC Used by: Ship: Sacrilege """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'emDamage', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs) class Effect5541(BaseEffect): """ shipBonusHMLThermDamageAC Used by: Ship: Sacrilege """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs) class Effect5542(BaseEffect): """ shipBonusHMLExploDamageAC Used by: Ship: Sacrilege """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs) class Effect5552(BaseEffect): """ shipBonusHMLVelocityEliteBonusHeavyGunship1 Used by: Ship: Sacrilege """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'maxVelocity', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers', **kwargs) class Effect5553(BaseEffect): """ shipBonusHAMVelocityEliteBonusHeavyGunship1 Used by: Ship: Sacrilege """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'maxVelocity', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers', **kwargs) class Effect5554(BaseEffect): """ shipBonusArmorRepAmountGC2 Used by: Ship: Deimos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect5555(BaseEffect): """ shipBonusHeavyDroneSpeedGC Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs) class Effect5556(BaseEffect): """ shipBonusHeavyDRoneTrackingGC Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs) class Effect5557(BaseEffect): """ shipBonusSentryDroneOptimalRangeEliteBonusHeavyGunship2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'maxRange', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers', **kwargs) class Effect5558(BaseEffect): """ shipBonusSentryDroneTrackingEliteBonusHeavyGunship2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers', **kwargs) class Effect5559(BaseEffect): """ shipBonusShieldBoostAmountMC2 Used by: Ship: Vagabond """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect5560(BaseEffect): """ roleBonusMarauderMJDRReactivationDelayBonus Used by: Module: Anhinga Tertiary Mode """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): penalties = 'ship' not in context fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Micro Jump Drive', 'moduleReactivationDelay', ship.getModifiedItemAttr('roleBonusMarauder'), stackingPenalties=penalties, **kwargs) class Effect5564(BaseEffect): """ subSystemBonusCaldariOffensiveCommandBursts Used by: Subsystem: Tengu Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost(lambda mod: (mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command')), attrName, src.getModifiedItemAttr('subsystemBonusCaldariOffensive'), skill='Caldari Offensive Systems', **kwargs) class Effect5568(BaseEffect): """ subSystemBonusGallenteOffensiveCommandBursts Used by: Subsystem: Proteus Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost(lambda mod: (mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command')), attrName, src.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems', **kwargs) class Effect5570(BaseEffect): """ subSystemBonusMinmatarOffensiveCommandBursts Used by: Subsystem: Loki Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost(lambda mod: (mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Armored Command')), attrName, src.getModifiedItemAttr('subsystemBonusMinmatarOffensive'), skill='Minmatar Offensive Systems', **kwargs) class Effect5572(BaseEffect): """ eliteBonusCommandShipArmoredCS3 Used by: Ships from group: Command Ship (4 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), attrName, src.getModifiedItemAttr('eliteBonusCommandShips3'), skill='Command Ships', **kwargs) class Effect5573(BaseEffect): """ eliteBonusCommandShipSiegeCS3 Used by: Ships from group: Command Ship (4 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), attrName, src.getModifiedItemAttr('eliteBonusCommandShips3'), skill='Command Ships', **kwargs) class Effect5574(BaseEffect): """ eliteBonusCommandShipSkirmishCS3 Used by: Ships from group: Command Ship (4 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), attrName, src.getModifiedItemAttr('eliteBonusCommandShips3'), skill='Command Ships', **kwargs) class Effect5575(BaseEffect): """ eliteBonusCommandShipInformationCS3 Used by: Ships from group: Command Ship (4 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), attrName, src.getModifiedItemAttr('eliteBonusCommandShips3'), skill='Command Ships', **kwargs) class Effect5607(BaseEffect): """ capacitorEmissionSystemskill Used by: Implants named like: Inherent Implants 'Squire' Capacitor Emission Systems ES (6 of 6) Modules named like: Egress Port Maximizer (8 of 8) Skill: Capacitor Emission Systems """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capacitor Emission Systems'), 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs) class Effect5610(BaseEffect): """ shipBonusLargeEnergyTurretMaxRangeAB Used by: Ship: Marshal Ship: Paladin Ship: Python """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect5611(BaseEffect): """ shipBonusHTFalloffGB2 Used by: Ship: Kronos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusGB2'), skill='Gallente Battleship', **kwargs) class Effect5618(BaseEffect): """ shipBonusRHMLROF2CB Used by: Modules named like: Anhinga Mode (3 of 3) Ship: Raven Ship: Widow """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): if 'ship' in context: skill = 'Caldari Battleship' penalties = False penaltyGroup = None else: skill = None penalties = True penaltyGroup = 'postPerc' fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Missile Launcher Rapid Heavy', 'speed', ship.getModifiedItemAttr('shipBonus2CB'), skill=skill, stackingPenalties=penalties, penaltyGroup=penaltyGroup, **kwargs) class Effect5619(BaseEffect): """ shipBonusRHMLROFCB Used by: Ship: Scorpion Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rapid Heavy', 'speed', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs) class Effect5620(BaseEffect): """ shipBonusRHMLROFMB Used by: Ship: Typhoon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rapid Heavy', 'speed', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect5621(BaseEffect): """ shipBonusCruiseROFMB Used by: Ship: Typhoon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Cruise', 'speed', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect5622(BaseEffect): """ shipBonusTorpedoROFMB Used by: Ship: Typhoon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Torpedo', 'speed', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect5628(BaseEffect): """ shipBonusCruiseMissileEMDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'emDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect5629(BaseEffect): """ shipBonusCruiseMissileThermDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect5630(BaseEffect): """ shipBonusCruiseMissileKineticDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect5631(BaseEffect): """ shipBonusCruiseMissileExploDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect5632(BaseEffect): """ shipBonusTorpedoMissileExploDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect5633(BaseEffect): """ shipBonusTorpedoMissileEMDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'emDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect5634(BaseEffect): """ shipBonusTorpedoMissileThermDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect5635(BaseEffect): """ shipBonusTorpedoMissileKineticDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect5636(BaseEffect): """ shipBonusHeavyMissileEMDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'emDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect5637(BaseEffect): """ shipBonusHeavyMissileThermDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect5638(BaseEffect): """ shipBonusHeavyMissileKineticDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect5639(BaseEffect): """ shipBonusHeavyMissileExploDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect5644(BaseEffect): """ shipBonusMissileVelocityCC2 Used by: Ship: Cerberus """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect5647(BaseEffect): """ covertOpsCloakCPUPercentRoleBonus Used by: Ships from group: Expedition Frigate (2 of 2) Ship: Astero Ship: Cenotaph Ship: Cobra Ship: Enforcer Ship: Pacifier Ship: Sidewinder Ship: Tholos Ship: Victor Ship: Victorieux Luxury Yacht Ship: Virtuoso """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Cloaking'), 'cpu', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5650(BaseEffect): """ shipArmorResistanceAF1 Used by: Ship: Malediction """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): damageTypes = ('Em', 'Explosive', 'Kinetic', 'Thermal') for damageType in damageTypes: fit.ship.boostItemAttr('armor{0}DamageResonance'.format(damageType), ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect5657(BaseEffect): """ Interceptor2ShieldResist Used by: Ship: Raptor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): damageTypes = ('Em', 'Explosive', 'Kinetic', 'Thermal') for damageType in damageTypes: fit.ship.boostItemAttr('shield{0}DamageResonance'.format(damageType), ship.getModifiedItemAttr('eliteBonusInterceptor2'), skill='Interceptors', **kwargs) class Effect5673(BaseEffect): """ interceptor2ProjectileDamage Used by: Ship: Claw """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusInterceptor2'), skill='Interceptors', **kwargs) class Effect5695(BaseEffect): """ eliteBonusInterdictorsArmorResist1 Used by: Ship: Heretic """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for damageType in ('Em', 'Thermal', 'Explosive', 'Kinetic'): fit.ship.boostItemAttr('armor%sDamageResonance' % damageType, ship.getModifiedItemAttr('eliteBonusInterdictors1'), skill='Interdictors', **kwargs) class Effect5717(BaseEffect): """ implantSetWarpSpeed Used by: Implants named like: grade Ascendancy (12 of 12) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant', 'WarpSBonus', implant.getModifiedItemAttr('implantSetWarpSpeed'), **kwargs) class Effect5721(BaseEffect): """ shipBonusMETOptimalRangePirateFaction Used by: Ships named like: Stratios (2 of 2) Ship: Odysseus """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5723(BaseEffect): """ eliteBonusInterdictorsMWDSigRadius2 Used by: Ships from group: Interdictor (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'signatureRadiusBonus', ship.getModifiedItemAttr('eliteBonusInterdictors2'), skill='Interdictors', **kwargs) class Effect5724(BaseEffect): """ shipSHTOptimalBonusGF Used by: Ship: Ares """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs) class Effect5725(BaseEffect): """ shipBonusRemoteRepairAmountPirateFaction Used by: Ship: Nestor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5726(BaseEffect): """ shipBonusLETOptimalRangePirateFaction Used by: Ship: Nestor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5733(BaseEffect): """ eliteBonusMaraudersHeavyMissileDamageExpRole1 Used by: Ship: Golem """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'explosiveDamage', ship.getModifiedItemAttr('eliteBonusViolatorsRole1'), **kwargs) class Effect5734(BaseEffect): """ eliteBonusMaraudersHeavyMissileDamageKinRole1 Used by: Ship: Golem """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage', ship.getModifiedItemAttr('eliteBonusViolatorsRole1'), **kwargs) class Effect5735(BaseEffect): """ eliteBonusMaraudersHeavyMissileDamageEMRole1 Used by: Ship: Golem """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'emDamage', ship.getModifiedItemAttr('eliteBonusViolatorsRole1'), **kwargs) class Effect5736(BaseEffect): """ eliteBonusMaraudersHeavyMissileDamageThermRole1 Used by: Ship: Golem """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'thermalDamage', ship.getModifiedItemAttr('eliteBonusViolatorsRole1'), **kwargs) class Effect5737(BaseEffect): """ shipScanProbeStrengthBonusPirateFaction Used by: Ship: Nestor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5738(BaseEffect): """ shipBonusRemoteRepairRangePirateFaction2 Used by: Ship: Nestor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'maxRange', ship.getModifiedItemAttr('shipBonusRole8'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'falloffEffectiveness', ship.getModifiedItemAttr('shipBonusRole8'), **kwargs) class Effect5754(BaseEffect): """ overloadSelfTrackingModuleBonus Used by: Modules named like: Tracking Computer (19 of 19) Variations of module: Tracking Disruptor I (6 of 6) """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('maxRangeBonus', module.getModifiedItemAttr('overloadTrackingModuleStrengthBonus'), **kwargs) module.boostItemAttr('falloffBonus', module.getModifiedItemAttr('overloadTrackingModuleStrengthBonus'), **kwargs) module.boostItemAttr('trackingSpeedBonus', module.getModifiedItemAttr('overloadTrackingModuleStrengthBonus'), **kwargs) class Effect5757(BaseEffect): """ overloadSelfSensorModuleBonus Used by: Modules from group: Remote Sensor Booster (8 of 8) Modules from group: Sensor Booster (16 of 16) Modules from group: Sensor Dampener (6 of 6) """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('maxTargetRangeBonus', module.getModifiedItemAttr('overloadSensorModuleStrengthBonus'), **kwargs) module.boostItemAttr('scanResolutionBonus', module.getModifiedItemAttr('overloadSensorModuleStrengthBonus'), stackingPenalties=True, **kwargs) for scanType in ('Gravimetric', 'Magnetometric', 'Radar', 'Ladar'): module.boostItemAttr( 'scan{}StrengthPercent'.format(scanType), module.getModifiedItemAttr('overloadSensorModuleStrengthBonus'), stackingPenalties=True, **kwargs) class Effect5758(BaseEffect): """ overloadSelfPainterBonus Used by: Modules from group: Target Painter (9 of 9) """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('signatureRadiusBonus', module.getModifiedItemAttr('overloadPainterStrengthBonus') or 0, **kwargs) class Effect5769(BaseEffect): """ repairDroneHullBonusBonus Used by: Implants named like: Black Market 'Valdimar' Repair Drone Operation DR (3 of 3) Modules named like: Drone Repair Augmentor (8 of 8) Skill: Repair Drone Operation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.drones.filteredItemBoost(lambda drone: drone.item.group.name == 'Logistic Drone', 'structureDamageAmount', container.getModifiedItemAttr('damageHP') * level, **kwargs) class Effect5778(BaseEffect): """ shipMissileRoFMF2 Used by: Ship: Breacher Ship: Jaguar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'speed', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs) class Effect5779(BaseEffect): """ shipBonusSPTFalloffMF2 Used by: Ship: Pacifier Ship: Rifter Ship: Sidewinder """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs) class Effect5793(BaseEffect): """ ewSkillTrackingDisruptionRangeDisruptionBonus Used by: Modules named like: Tracking Diagnostic Subroutines (8 of 8) Skill: Weapon Destabilization """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 for attr in ('maxRangeBonus', 'falloffBonus'): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), attr, container.getModifiedItemAttr('scanSkillEwStrengthBonus') * level, **kwargs) class Effect5802(BaseEffect): """ shipBonusAfterburnerSpeedFactor2CB Used by: Ship: Nightmare """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'speedFactor', module.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship', **kwargs) class Effect5803(BaseEffect): """ shipBonusSentryDroneDamageMultiplierPirateFaction Used by: Ship: Rattlesnake """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5804(BaseEffect): """ shipBonusHeavyDroneDamageMultiplierPirateFaction Used by: Ship: Rattlesnake """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5805(BaseEffect): """ shipBonusSentryDroneHPPirateFaction Used by: Ship: Rattlesnake """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'hp', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5806(BaseEffect): """ shipBonusSentryDroneArmorHpPirateFaction Used by: Ship: Rattlesnake """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'armorHP', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5807(BaseEffect): """ shipBonusSentryDroneShieldHpPirateFaction Used by: Ship: Rattlesnake """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5808(BaseEffect): """ shipBonusHeavyDroneShieldHpPirateFaction Used by: Ship: Rattlesnake """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5809(BaseEffect): """ shipBonusHeavyDroneArmorHpPirateFaction Used by: Ship: Rattlesnake """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'armorHP', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5810(BaseEffect): """ shipBonusHeavyDroneHPPirateFaction Used by: Ship: Rattlesnake """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'hp', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5811(BaseEffect): """ shipBonusKineticMissileDamageGB2 Used by: Ship: Rattlesnake """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusGB2'), skill='Gallente Battleship', **kwargs) class Effect5812(BaseEffect): """ shipBonusThermalMissileDamageGB2 Used by: Ship: Rattlesnake """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusGB2'), skill='Gallente Battleship', **kwargs) class Effect5813(BaseEffect): """ shipBonusAfterburnerSpeedFactorCF2 Used by: Ship: Imp Ship: Succubus """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'speedFactor', module.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect5814(BaseEffect): """ shipBonusKineticMissileDamageGF Used by: Ship: Whiptail Ship: Worm """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs) class Effect5815(BaseEffect): """ shipBonusThermalMissileDamageGF Used by: Ship: Whiptail Ship: Worm """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs) class Effect5816(BaseEffect): """ shipBonusLightDroneDamageMultiplierPirateFaction Used by: Ship: Mamba Ship: Whiptail Ship: Worm """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5817(BaseEffect): """ shipBonusLightDroneHPPirateFaction Used by: Ship: Mamba Ship: Whiptail Ship: Worm """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'), 'hp', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5818(BaseEffect): """ shipBonusLightDroneArmorHPPirateFaction Used by: Ship: Mamba Ship: Whiptail Ship: Worm """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'), 'armorHP', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5819(BaseEffect): """ shipBonusLightDroneShieldHPPirateFaction Used by: Ship: Mamba Ship: Whiptail Ship: Worm """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5820(BaseEffect): """ shipBonusAfterburnerSpeedFactorCC2 Used by: Ship: Fiend Ship: Phantasm """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'speedFactor', module.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect5821(BaseEffect): """ shipBonusMediumDroneDamageMultiplierPirateFaction Used by: Ship: Alligator Ship: Chameleon Ship: Gila """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5822(BaseEffect): """ shipBonusMediumDroneHPPirateFaction Used by: Ship: Chameleon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'), 'hp', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5823(BaseEffect): """ shipBonusMediumDroneArmorHPPirateFaction Used by: Ship: Chameleon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'), 'armorHP', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5824(BaseEffect): """ shipBonusMediumDroneShieldHPPirateFaction Used by: Ship: Chameleon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5825(BaseEffect): """ shipBonusKineticMissileDamageGC2 Used by: Ship: Chameleon Ship: Gila """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect5826(BaseEffect): """ shipBonusThermalMissileDamageGC2 Used by: Ship: Chameleon Ship: Gila """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect5827(BaseEffect): """ shipBonusTDOptimalBonusAF1 Used by: Ship: Crucifier """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'maxRange', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect5852(BaseEffect): """ expeditionFrigateBonusOreMiningYield Used by: Ship: Prospect """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining'), 'miningAmount', ship.getModifiedItemAttr('expeditionFrigateBonusOreMiningYield'), skill='Expedition Frigates', **kwargs) class Effect5853(BaseEffect): """ expeditionFrigateBonusSignatureRadius Used by: Ship: Prospect """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('signatureRadius', ship.getModifiedItemAttr('expeditionFrigateBonusSignatureRadius'), skill='Expedition Frigates', **kwargs) class Effect5854(BaseEffect): """ shipBonusNosferatuOverride Used by: Ship: Ashimmu Ship: Bhaalgorn Ship: Caedes Ship: Chemosh Ship: Cruor Ship: Dagon Ship: Molok Ship: Rabisu """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemForce(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'nosOverride', ship.getModifiedItemAttr('nosOverride'), **kwargs) class Effect5862(BaseEffect): """ shipMissileEMDamageCB Used by: Ship: Barghest """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'emDamage', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs) class Effect5863(BaseEffect): """ shipMissileKinDamageCB Used by: Ship: Barghest """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs) class Effect5864(BaseEffect): """ shipMissileThermDamageCB Used by: Ship: Barghest """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs) class Effect5865(BaseEffect): """ shipMissileExploDamageCB Used by: Ship: Barghest """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs) class Effect5866(BaseEffect): """ shipBonusWarpScrambleMaxRangeGB Used by: Ship: Barghest """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', ship.getModifiedItemAttr('shipBonusGB'), skill='Gallente Battleship', **kwargs) class Effect5867(BaseEffect): """ shipBonusMissileExplosionDelayPirateFaction2 Used by: Module: Anhinga Primary Mode Module: Anhinga Secondary Mode Ship: Barghest Ship: Garmur Ship: Laelaps Ship: Orthrus Ship: Raiju """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): penalties = 'ship' not in context fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosionDelay', ship.getModifiedItemAttr('shipBonusRole8'), stackingPenalties=penalties, **kwargs) class Effect5868(BaseEffect): """ drawbackCargoCapacity Used by: Modules named like: Transverse Bulkhead (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('capacity', module.getModifiedItemAttr('drawback'), **kwargs) class Effect5869(BaseEffect): """ eliteIndustrialWarpSpeedBonus1 Used by: Ships from group: Blockade Runner (5 of 5) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpSpeedMultiplier', ship.getModifiedItemAttr('eliteBonusIndustrial1'), skill='Transport Ships', **kwargs) class Effect5870(BaseEffect): """ shipBonusShieldBoostCI2 Used by: Ship: Bustard """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusCI2'), skill='Caldari Hauler', **kwargs) class Effect5871(BaseEffect): """ shipBonusShieldBoostMI2 Used by: Ship: Mastodon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusMI2'), skill='Minmatar Hauler', **kwargs) class Effect5872(BaseEffect): """ shipBonusArmorRepairAI2 Used by: Ship: Impel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusAI2'), skill='Amarr Hauler', **kwargs) class Effect5873(BaseEffect): """ shipBonusArmorRepairGI2 Used by: Ship: Occator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusGI2'), skill='Gallente Hauler', **kwargs) class Effect5874(BaseEffect): """ eliteIndustrialFleetCapacity1 Used by: Ships from group: Deep Space Transport (5 of 5) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('fleetHangarCapacity', ship.getModifiedItemAttr('eliteBonusIndustrial1'), skill='Transport Ships', **kwargs) class Effect5881(BaseEffect): """ eliteIndustrialShieldResists2 Used by: Ships from group: Deep Space Transport (3 of 5) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for damageType in ('em', 'thermal', 'explosive', 'kinetic'): fit.ship.boostItemAttr('shield{}DamageResonance'.format(damageType.capitalize()), ship.getModifiedItemAttr('eliteBonusIndustrial2'), skill='Transport Ships', **kwargs) class Effect5888(BaseEffect): """ eliteIndustrialArmorResists2 Used by: Ship: Impel Ship: Occator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for damageType in ('em', 'thermal', 'explosive', 'kinetic'): fit.ship.boostItemAttr('armor{}DamageResonance'.format(damageType.capitalize()), ship.getModifiedItemAttr('eliteBonusIndustrial2'), skill='Transport Ships', **kwargs) class Effect5889(BaseEffect): """ eliteIndustrialABHeatBonus Used by: Ships from group: Deep Space Transport (5 of 5) Ships from group: Interceptor (4 of 10) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'overloadSpeedFactorBonus', ship.getModifiedItemAttr('roleBonusOverheatDST'), **kwargs) class Effect5890(BaseEffect): """ eliteIndustrialMWDHeatBonus Used by: Ships from group: Deep Space Transport (5 of 5) Ships from group: Interceptor (4 of 10) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'overloadSpeedFactorBonus', ship.getModifiedItemAttr('roleBonusOverheatDST'), **kwargs) class Effect5891(BaseEffect): """ eliteIndustrialArmorHardenerHeatBonus Used by: Ships from group: Deep Space Transport (5 of 5) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'overloadHardeningBonus', ship.getModifiedItemAttr('roleBonusOverheatDST'), **kwargs) class Effect5892(BaseEffect): """ eliteIndustrialReactiveArmorHardenerHeatBonus Used by: Ships from group: Deep Space Transport (5 of 5) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'overloadSelfDurationBonus', ship.getModifiedItemAttr('roleBonusOverheatDST'), **kwargs) class Effect5893(BaseEffect): """ eliteIndustrialShieldHardenerHeatBonus Used by: Ships from group: Deep Space Transport (5 of 5) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Tactical Shield Manipulation'), 'overloadHardeningBonus', ship.getModifiedItemAttr('roleBonusOverheatDST'), **kwargs) class Effect5896(BaseEffect): """ eliteIndustrialShieldBoosterHeatBonus Used by: Ships from group: Deep Space Transport (5 of 5) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'overloadShieldBonus', ship.getModifiedItemAttr('roleBonusOverheatDST'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'overloadSelfDurationBonus', ship.getModifiedItemAttr('roleBonusOverheatDST'), **kwargs) class Effect5899(BaseEffect): """ eliteIndustrialArmorRepairHeatBonus Used by: Ships from group: Deep Space Transport (5 of 5) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'overloadArmorDamageAmount', ship.getModifiedItemAttr('roleBonusOverheatDST'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'overloadSelfDurationBonus', ship.getModifiedItemAttr('roleBonusOverheatDST'), **kwargs) class Effect5900(BaseEffect): """ warpSpeedAddition Used by: Modules from group: Warp Accelerator (3 of 3) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('warpSpeedMultiplier', module.getModifiedItemAttr('warpSpeedAdd'), **kwargs) class Effect5901(BaseEffect): """ roleBonusBulkheadCPU Used by: Ships from group: Freighter (4 of 6) Ships from group: Jump Freighter (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Reinforced Bulkhead', 'cpu', ship.getModifiedItemAttr('cpuNeedBonus'), **kwargs) class Effect5911(BaseEffect): """ onlineJumpDriveConsumptionAmountBonusPercentage Used by: Modules from group: Jump Drive Economizer (3 of 3) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('jumpDriveConsumptionAmount', module.getModifiedItemAttr('consumptionQuantityBonusPercentage'), stackingPenalties=True, **kwargs) class Effect5912(BaseEffect): """ systemRemoteCapTransmitterAmount Used by: Celestials named like: Class Cataclysmic Variable Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter', 'powerTransferAmount', beacon.getModifiedItemAttr('energyTransferAmountBonus'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5913(BaseEffect): """ systemArmorHP Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) Celestial: Federal Stellar Observatory Celestial: Imperial Stellar Observatory """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('armorHP', beacon.getModifiedItemAttr('armorHPMultiplier'), **kwargs) class Effect5914(BaseEffect): """ systemEnergyNeutMultiplier Used by: Celestials named like: Class Pulsar Effects (6 of 6) Celestial: Imperial Stellar Observatory """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', beacon.getModifiedItemAttr('energyWarfareStrengthMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5915(BaseEffect): """ systemEnergyVampireMultiplier Used by: Celestials named like: Class Pulsar Effects (6 of 6) Celestial: Imperial Stellar Observatory """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', beacon.getModifiedItemAttr('energyWarfareStrengthMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5916(BaseEffect): """ systemDamageExplosiveBombs Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'explosiveDamage', beacon.getModifiedItemAttr('smartbombDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5917(BaseEffect): """ systemDamageKineticBombs Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'kineticDamage', beacon.getModifiedItemAttr('smartbombDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5918(BaseEffect): """ systemDamageThermalBombs Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'thermalDamage', beacon.getModifiedItemAttr('smartbombDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5919(BaseEffect): """ systemDamageEMBombs Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'emDamage', beacon.getModifiedItemAttr('smartbombDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5920(BaseEffect): """ systemAoeCloudSize Used by: Celestials named like: Class Magnetar Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeCloudSize', beacon.getModifiedItemAttr('aoeCloudSizeMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5921(BaseEffect): """ systemTargetPainterMultiplier Used by: Celestials named like: Class Magnetar Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Target Painting'), 'signatureRadiusBonus', beacon.getModifiedItemAttr('targetPainterStrengthMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5922(BaseEffect): """ systemWebifierStrengthMultiplier Used by: Celestials named like: Class Black Hole Effects (6 of 6) Celestial: Republic Stellar Observatory """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Stasis Web', 'speedFactor', beacon.getModifiedItemAttr('stasisWebStrengthMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5923(BaseEffect): """ systemNeutBombs Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'energyNeutralizerAmount', beacon.getModifiedItemAttr('smartbombDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5924(BaseEffect): """ systemGravimetricECMBomb Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'scanGravimetricStrengthBonus', beacon.getModifiedItemAttr('smartbombDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5925(BaseEffect): """ systemLadarECMBomb Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'scanLadarStrengthBonus', beacon.getModifiedItemAttr('smartbombDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5926(BaseEffect): """ systemMagnetrometricECMBomb Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'scanMagnetometricStrengthBonus', beacon.getModifiedItemAttr('smartbombDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5927(BaseEffect): """ systemRadarECMBomb Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'scanRadarStrengthBonus', beacon.getModifiedItemAttr('smartbombDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5929(BaseEffect): """ systemDroneTracking Used by: Celestials named like: Class Magnetar Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.drones.filteredItemMultiply(lambda drone: True, 'trackingSpeed', beacon.getModifiedItemAttr('trackingSpeedMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5934(BaseEffect): """ warpScrambleBlockMWDWithNPCEffect Used by: Modules named like: Warp Scrambler (28 of 28) """ runTime = 'early' type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return if module.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0): return fit.ship.increaseItemAttr('warpScrambleStatus', module.getModifiedItemAttr('warpScrambleStrength')) fit.modules.filteredItemIncrease( lambda mod: mod.item.requiresSkill('High Speed Maneuvering') or mod.item.requiresSkill('Micro Jump Drive Operation'), 'activationBlocked', module.getModifiedItemAttr('activationBlockedStrenght'), **kwargs) class Effect5939(BaseEffect): """ shipRocketRoFBonusAF2 Used by: Ship: Malediction """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rocket', 'speed', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs) class Effect5944(BaseEffect): """ shipMissileLauncherRoFAD1Fixed Used by: Ship: Heretic """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'speed', ship.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer', **kwargs) class Effect5945(BaseEffect): """ cloakingPrototype Used by: Modules named like: Prototype Cloaking Device I (2 of 2) """ runTime = 'early' type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): # Set flag which is used to determine if ship is cloaked or not # This is used to apply cloak-only bonuses, like Black Ops' speed bonus # Doesn't apply to covops cloaks fit.extraAttributes['cloaked'] = True # Apply speed penalty fit.ship.multiplyItemAttr('maxVelocity', module.getModifiedItemAttr('maxVelocityModifier'), **kwargs) class Effect5951(BaseEffect): """ drawbackWarpSpeed Used by: Modules from group: Rig Anchor (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpSpeedMultiplier', module.getModifiedItemAttr('drawback'), stackingPenalties=True, **kwargs) class Effect5956(BaseEffect): """ shipMETDamageBonusAC2 Used by: Ship: Devoter Ship: Zealot """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect5957(BaseEffect): """ eliteBonusHeavyInterdictorsMETOptimal Used by: Ship: Devoter """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'maxRange', ship.getModifiedItemAttr('eliteBonusHeavyInterdictors1'), skill='Heavy Interdiction Cruisers', **kwargs) class Effect5958(BaseEffect): """ shipHybridTrackingGC Used by: Ship: Lachesis Ship: Phobos Ship: Vexor Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs) class Effect5959(BaseEffect): """ eliteBonusHeavyInterdictorsHybridOptimal1 Used by: Ship: Phobos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('eliteBonusHeavyInterdictors1'), skill='Heavy Interdiction Cruisers', **kwargs) class Effect5994(BaseEffect): """ resistanceKillerHullAll Used by: Modules named like: Polarized (12 of 15) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for dmgType in ('em', 'thermal', 'kinetic', 'explosive'): tgtAttr = '{}DamageResonance'.format(dmgType) fit.ship.forceItemAttr(tgtAttr, module.getModifiedItemAttr('resistanceKillerHull'), **kwargs) class Effect5995(BaseEffect): """ resistanceKillerShieldArmorAll Used by: Modules named like: Polarized (12 of 15) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for layer in ('armor', 'shield'): for dmgType in ('em', 'thermal', 'kinetic', 'explosive'): tgtAttr = '{}{}DamageResonance'.format(layer, dmgType.capitalize()) fit.ship.forceItemAttr(tgtAttr, module.getModifiedItemAttr('resistanceKiller'), **kwargs) class Effect5998(BaseEffect): """ freighterSMACapacityBonusO1 Used by: Ship: Bowhead """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): # todo: stacking? fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('freighterBonusO2'), skill='ORE Freighter', stackingPenalties=True, **kwargs) class Effect6001(BaseEffect): """ freighterAgilityBonus2O2 Used by: Ship: Bowhead """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shipMaintenanceBayCapacity', ship.getModifiedItemAttr('freighterBonusO1'), skill='ORE Freighter', **kwargs) class Effect6006(BaseEffect): """ shipSETDamageAmarrTacticalDestroyer1 Used by: Ship: Confessor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusTacticalDestroyerAmarr1'), skill='Amarr Tactical Destroyer', **kwargs) class Effect6007(BaseEffect): """ shipSETCapNeedAmarrTacticalDestroyer2 Used by: Ship: Confessor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusTacticalDestroyerAmarr2'), skill='Amarr Tactical Destroyer', **kwargs) class Effect6008(BaseEffect): """ shipHeatDamageAmarrTacticalDestroyer3 Used by: Ship: Confessor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', ship.getModifiedItemAttr('shipBonusTacticalDestroyerAmarr3'), skill='Amarr Tactical Destroyer', **kwargs) class Effect6009(BaseEffect): """ probeLauncherCPUPercentRoleBonusT3 Used by: Ships from group: Strategic Cruiser (4 of 4) Ships from group: Tactical Destroyer (5 of 5) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Astrometrics'), 'cpu', src.getModifiedItemAttr('roleBonusT3ProbeCPU'), **kwargs) class Effect6010(BaseEffect): """ shipModeMaxTargetRangePostDiv Used by: Modules named like: Sharpshooter Mode (5 of 5) Module: Anhinga Primary Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr( 'maxTargetRange', 1 / module.getModifiedItemAttr('modeMaxTargetRangePostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6011(BaseEffect): """ shipModeSETOptimalRangePostDiv Used by: Module: Confessor Sharpshooter Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'maxRange', 1 / module.getModifiedItemAttr('modeMaxRangePostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6012(BaseEffect): """ shipModeScanStrengthPostDiv Used by: Modules named like: Sharpshooter Mode (5 of 5) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for scanType in ('Gravimetric', 'Magnetometric', 'Radar', 'Ladar'): fit.ship.multiplyItemAttr( 'scan{}Strength'.format(scanType), 1 / (module.getModifiedItemAttr('mode{}StrengthPostDiv'.format(scanType)) or 1), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6014(BaseEffect): """ modeSigRadiusPostDiv Used by: Modules named like: Defense Mode (3 of 5) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('signatureRadius', 1 / module.getModifiedItemAttr('modeSignatureRadiusPostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6015(BaseEffect): """ modeArmorResonancePostDiv Used by: Modules named like: Defense Mode (3 of 5) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for srcResType, tgtResType in ( ('Em', 'Em'), ('Explosive', 'Explosive'), ('Kinetic', 'Kinetic'), ('Thermic', 'Thermal') ): fit.ship.multiplyItemAttr( 'armor{0}DamageResonance'.format(tgtResType), 1 / module.getModifiedItemAttr('mode{0}ResistancePostDiv'.format(srcResType)), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6016(BaseEffect): """ modeAgilityPostDiv Used by: Modules named like: Propulsion Mode (5 of 5) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr( 'agility', 1 / module.getModifiedItemAttr('modeAgilityPostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6017(BaseEffect): """ modeVelocityPostDiv Used by: Module: Jackdaw Propulsion Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr( 'maxVelocity', 1 / module.getModifiedItemAttr('modeVelocityPostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6020(BaseEffect): """ shipBonusEnergyNeutOptimalRS3 Used by: Ship: Pilgrim """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'maxRange', src.getModifiedItemAttr('eliteBonusReconShip3'), skill='Recon Ships', **kwargs) class Effect6021(BaseEffect): """ shipBonusEnergyNosOptimalRS3 Used by: Ship: Pilgrim """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange', src.getModifiedItemAttr('eliteBonusReconShip3'), skill='Recon Ships', **kwargs) class Effect6025(BaseEffect): """ eliteReconBonusMHTOptimalRange1 Used by: Ship: Lachesis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships', **kwargs) class Effect6027(BaseEffect): """ eliteReconBonusMPTdamage1 Used by: Ship: Huginn """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships', **kwargs) class Effect6032(BaseEffect): """ remoteCapacitorTransmitterPowerNeedBonusEffect Used by: Ships from group: Logistics (3 of 7) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter', 'power', ship.getModifiedItemAttr('powerTransferPowerNeedBonus'), **kwargs) class Effect6036(BaseEffect): """ shipHeatDamageMinmatarTacticalDestroyer3 Used by: Ship: Svipul """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', ship.getModifiedItemAttr('shipBonusTacticalDestroyerMinmatar3'), skill='Minmatar Tactical Destroyer', **kwargs) class Effect6037(BaseEffect): """ shipSPTDamageMinmatarTacticalDestroyer1 Used by: Ship: Svipul """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusTacticalDestroyerMinmatar1'), skill='Minmatar Tactical Destroyer', **kwargs) class Effect6038(BaseEffect): """ shipSPTOptimalMinmatarTacticalDestroyer2 Used by: Ship: Svipul """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusTacticalDestroyerMinmatar2'), skill='Minmatar Tactical Destroyer', **kwargs) class Effect6039(BaseEffect): """ shipModeSPTTrackingPostDiv Used by: Module: Svipul Sharpshooter Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'trackingSpeed', 1 / module.getModifiedItemAttr('modeTrackingPostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6040(BaseEffect): """ modeMWDSigRadiusPostDiv Used by: Module: Svipul Defense Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'signatureRadiusBonus', 1 / module.getModifiedItemAttr('modeMWDSigPenaltyPostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6041(BaseEffect): """ modeShieldResonancePostDiv Used by: Modules named like: Defense Mode (3 of 5) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for srcResType, tgtResType in ( ('Em', 'Em'), ('Explosive', 'Explosive'), ('Kinetic', 'Kinetic'), ('Thermic', 'Thermal') ): fit.ship.multiplyItemAttr( 'shield{0}DamageResonance'.format(tgtResType), 1 / module.getModifiedItemAttr('mode{0}ResistancePostDiv'.format(srcResType)), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6045(BaseEffect): """ shipBonusSentryDamageMultiplierGC3 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGC3'), skill='Gallente Cruiser', **kwargs) class Effect6046(BaseEffect): """ shipBonusSentryHPGC3 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'hp', ship.getModifiedItemAttr('shipBonusGC3'), skill='Gallente Cruiser', **kwargs) class Effect6047(BaseEffect): """ shipBonusSentryArmorHPGC3 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'armorHP', ship.getModifiedItemAttr('shipBonusGC3'), skill='Gallente Cruiser', **kwargs) class Effect6048(BaseEffect): """ shipBonusSentryShieldHPGC3 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusGC3'), skill='Gallente Cruiser', **kwargs) class Effect6051(BaseEffect): """ shipBonusLightDroneDamageMultiplierGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect6052(BaseEffect): """ shipBonusMediumDroneDamageMultiplierGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect6053(BaseEffect): """ shipBonusHeavyDroneDamageMultiplierGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect6054(BaseEffect): """ shipBonusHeavyDroneHPGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'hp', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect6055(BaseEffect): """ shipBonusHeavyDroneArmorHPGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'armorHP', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect6056(BaseEffect): """ shipBonusHeavyDroneShieldHPGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect6057(BaseEffect): """ shipBonusMediumDroneShieldHPGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect6058(BaseEffect): """ shipBonusMediumDroneArmorHPGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'), 'armorHP', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect6059(BaseEffect): """ shipBonusMediumDroneHPGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'), 'hp', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect6060(BaseEffect): """ shipBonusLightDroneHPGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'), 'hp', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect6061(BaseEffect): """ shipBonusLightDroneArmorHPGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'), 'armorHP', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect6062(BaseEffect): """ shipBonusLightDroneShieldHPGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect6063(BaseEffect): """ entosisLink Used by: Modules from group: Entosis Link (6 of 6) """ type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.forceItemAttr('disallowAssistance', module.getModifiedItemAttr('disallowAssistance')) for scanType in ('Gravimetric', 'Magnetometric', 'Radar', 'Ladar'): fit.ship.boostItemAttr( 'scan{}Strength'.format(scanType), module.getModifiedItemAttr('scan{}StrengthPercent'.format(scanType)), stackingPenalties=True, **kwargs) class Effect6076(BaseEffect): """ shipModeMissileVelocityPostDiv Used by: Module: Jackdaw Sharpshooter Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', 1 / module.getModifiedItemAttr('modeMaxRangePostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6077(BaseEffect): """ shipHeatDamageCaldariTacticalDestroyer3 Used by: Ship: Jackdaw Ship: Skua """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', ship.getModifiedItemAttr('shipBonusTacticalDestroyerCaldari3'), skill='Caldari Tactical Destroyer', **kwargs) class Effect6083(BaseEffect): """ shipSmallMissileDmgPirateFaction Used by: Ship: Jackdaw Ship: Metamorphosis Ship: Skua Ship: Sunesis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for damageType in ('em', 'explosive', 'kinetic', 'thermal'): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Rockets') or mod.charge.requiresSkill('Light Missiles'), '{0}Damage'.format(damageType), ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect6085(BaseEffect): """ shipMissileRoFCaldariTacticalDestroyer1 Used by: Ship: Jackdaw Ship: Skua """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'speed', ship.getModifiedItemAttr('shipBonusTacticalDestroyerCaldari1'), skill='Caldari Tactical Destroyer', **kwargs) class Effect6088(BaseEffect): """ shipBonusHeavyAssaultMissileAllDamageMC2 Used by: Ship: Rapier Ship: Scythe Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for damageType in ('em', 'explosive', 'kinetic', 'thermal'): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), '{0}Damage'.format(damageType), ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect6093(BaseEffect): """ shipBonusHeavyMissileAllDamageMC2 Used by: Ship: Rapier Ship: Scythe Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for damageType in ('em', 'explosive', 'kinetic', 'thermal'): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), '{0}Damage'.format(damageType), ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect6096(BaseEffect): """ shipBonusLightMissileAllDamageMC2 Used by: Ship: Rapier Ship: Scythe Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for damageType in ('em', 'explosive', 'kinetic', 'thermal'): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), '{0}Damage'.format(damageType), ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect6098(BaseEffect): """ shipMissileReloadTimeCaldariTacticalDestroyer2 Used by: Ship: Jackdaw Ship: Skua """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'reloadTime', ship.getModifiedItemAttr('shipBonusTacticalDestroyerCaldari2'), skill='Caldari Tactical Destroyer', **kwargs) class Effect6104(BaseEffect): """ entosisDurationMultiply Used by: Ships from group: Carrier (4 of 4) Ships from group: Dreadnought (13 of 13) Ships from group: Force Auxiliary (6 of 6) Ships from group: Lancer Dreadnought (4 of 4) Ships from group: Supercarrier (6 of 6) Ships from group: Titan (8 of 8) Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Infomorph Psychology'), 'duration', ship.getModifiedItemAttr('entosisDurationMultiplier') or 1, **kwargs) class Effect6110(BaseEffect): """ missileVelocityBonusOnline Used by: Modules from group: Missile Guidance Enhancer (3 of 3) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', module.getModifiedItemAttr('missileVelocityBonus'), stackingPenalties=True, **kwargs) class Effect6111(BaseEffect): """ missileExplosionDelayBonusOnline Used by: Modules from group: Missile Guidance Enhancer (3 of 3) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosionDelay', module.getModifiedItemAttr('explosionDelayBonus'), stackingPenalties=True, **kwargs) class Effect6112(BaseEffect): """ missileAOECloudSizeBonusOnline Used by: Modules from group: Missile Guidance Enhancer (3 of 3) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeCloudSize', module.getModifiedItemAttr('aoeCloudSizeBonus'), stackingPenalties=True, **kwargs) class Effect6113(BaseEffect): """ missileAOEVelocityBonusOnline Used by: Modules from group: Missile Guidance Enhancer (3 of 3) Module: ML-EKP 'Polybolos' Ballistic Control System """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeVelocity', module.getModifiedItemAttr('aoeVelocityBonus'), stackingPenalties=True, **kwargs) class Effect6128(BaseEffect): """ scriptMissileGuidanceComputerAOECloudSizeBonusBonus Used by: Charges from group: Tracking Script (2 of 2) Charges named like: Missile Script (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('aoeCloudSizeBonus', module.getModifiedChargeAttr('aoeCloudSizeBonusBonus'), **kwargs) class Effect6129(BaseEffect): """ scriptMissileGuidanceComputerAOEVelocityBonusBonus Used by: Charges from group: Tracking Script (2 of 2) Charges named like: Missile Script (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('aoeVelocityBonus', module.getModifiedChargeAttr('aoeVelocityBonusBonus'), **kwargs) class Effect6130(BaseEffect): """ scriptMissileGuidanceComputerMissileVelocityBonusBonus Used by: Charges named like: Missile Script (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('missileVelocityBonus', module.getModifiedChargeAttr('missileVelocityBonusBonus'), **kwargs) class Effect6131(BaseEffect): """ scriptMissileGuidanceComputerExplosionDelayBonusBonus Used by: Charges named like: Missile Script (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('explosionDelayBonus', module.getModifiedChargeAttr('explosionDelayBonusBonus'), **kwargs) class Effect6135(BaseEffect): """ missileGuidanceComputerBonus4 Used by: Modules from group: Missile Guidance Computer (3 of 3) """ type = 'active' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): for srcAttr, tgtAttr in ( ('aoeCloudSizeBonus', 'aoeCloudSize'), ('aoeVelocityBonus', 'aoeVelocity'), ('missileVelocityBonus', 'maxVelocity'), ('explosionDelayBonus', 'explosionDelay'), ): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), tgtAttr, container.getModifiedItemAttr(srcAttr), stackingPenalties=True, **kwargs) class Effect6144(BaseEffect): """ overloadSelfMissileGuidanceBonus5 Used by: Modules from group: Missile Guidance Computer (3 of 3) """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for tgtAttr in ( 'aoeCloudSizeBonus', 'explosionDelayBonus', 'missileVelocityBonus', 'maxVelocityModifier', 'aoeVelocityBonus' ): module.boostItemAttr(tgtAttr, module.getModifiedItemAttr('overloadTrackingModuleStrengthBonus'), **kwargs) class Effect6148(BaseEffect): """ shipHeatDamageGallenteTacticalDestroyer3 Used by: Ship: Hecate """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', ship.getModifiedItemAttr('shipBonusTacticalDestroyerGallente3'), skill='Gallente Tactical Destroyer', **kwargs) class Effect6149(BaseEffect): """ shipSHTRoFGallenteTacticalDestroyer1 Used by: Ship: Hecate """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'speed', ship.getModifiedItemAttr('shipBonusTacticalDestroyerGallente1'), skill='Gallente Tactical Destroyer', **kwargs) class Effect6150(BaseEffect): """ shipSHTTrackingGallenteTacticalDestroyer2 Used by: Ship: Hecate """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusTacticalDestroyerGallente2'), skill='Gallente Tactical Destroyer', **kwargs) class Effect6151(BaseEffect): """ modeHullResonancePostDiv Used by: Module: Hecate Defense Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for srcResType, tgtResType in ( ('Em', 'em'), ('Explosive', 'explosive'), ('Kinetic', 'kinetic'), ('Thermic', 'thermal') ): fit.ship.multiplyItemAttr( '{0}DamageResonance'.format(tgtResType), 1 / module.getModifiedItemAttr('mode{0}ResistancePostDiv'.format(srcResType)), **kwargs) class Effect6152(BaseEffect): """ shipModeSHTOptimalRangePostDiv Used by: Module: Hecate Sharpshooter Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', 1 / module.getModifiedItemAttr('modeMaxRangePostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6153(BaseEffect): """ modeMWDCapPostDiv Used by: Module: Hecate Propulsion Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'capacitorNeed', 1 / module.getModifiedItemAttr('modeMWDCapPostDiv'), **kwargs) class Effect6154(BaseEffect): """ modeMWDBoostPostDiv Used by: Module: Hecate Propulsion Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'speedFactor', 1 / module.getModifiedItemAttr('modeMWDVelocityPostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6155(BaseEffect): """ modeArmorRepDurationPostDiv Used by: Module: Hecate Defense Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Repair Systems'), 'duration', 1 / module.getModifiedItemAttr('modeArmorRepDurationPostDiv'), **kwargs) class Effect6163(BaseEffect): """ passiveSpeedLimit Used by: Modules from group: Entosis Link (6 of 6) """ runtime = 'late' type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.extraAttributes['speedLimit'] = src.getModifiedItemAttr('speedLimit') class Effect6164(BaseEffect): """ systemMaxVelocityPercentage Used by: Celestials named like: Drifter Incursion (6 of 6) Celestial: Drifter Crisis """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', beacon.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) class Effect6166(BaseEffect): """ shipBonusWDFGnullPenalties Used by: Ship: Fiend """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Propulsion Jamming'), 'speedFactorBonus', ship.getModifiedItemAttr('shipBonusAT'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Propulsion Jamming'), 'speedBoostFactorBonus', ship.getModifiedItemAttr('shipBonusAT'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Propulsion Jamming'), 'massBonusPercentage', ship.getModifiedItemAttr('shipBonusAT'), **kwargs) class Effect6170(BaseEffect): """ entosisCPUPenalty Used by: Ships from group: Interceptor (10 of 10) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Infomorph Psychology'), 'entosisCPUAdd', ship.getModifiedItemAttr('entosisCPUPenalty'), **kwargs) class Effect6171(BaseEffect): """ entosisCPUAddition Used by: Modules from group: Entosis Link (6 of 6) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.increaseItemAttr('cpu', module.getModifiedItemAttr('entosisCPUAdd'), **kwargs) class Effect6172(BaseEffect): """ battlecruiserMETRange Used by: Ships named like: Harbinger (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'maxRange', ship.getModifiedItemAttr('roleBonusCBC'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'falloff', ship.getModifiedItemAttr('roleBonusCBC'), **kwargs) class Effect6173(BaseEffect): """ battlecruiserMHTRange Used by: Ships named like: Brutix (2 of 2) Ships named like: Ferox (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('roleBonusCBC'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'falloff', ship.getModifiedItemAttr('roleBonusCBC'), **kwargs) class Effect6174(BaseEffect): """ battlecruiserMPTRange Used by: Ships named like: Hurricane (2 of 2) Ship: Cenotaph Ship: Khizriel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'maxRange', ship.getModifiedItemAttr('roleBonusCBC'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'falloff', ship.getModifiedItemAttr('roleBonusCBC'), **kwargs) class Effect6175(BaseEffect): """ battlecruiserMissileRange Used by: Ships named like: Cyclone (2 of 2) Ships named like: Drake (2 of 2) Ship: Cenotaph """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', skill.getModifiedItemAttr('roleBonusCBC'), **kwargs) class Effect6176(BaseEffect): """ battlecruiserDroneSpeed Used by: Ships named like: Myrmidon (2 of 2) Ships named like: Prophecy (2 of 2) Ship: Alligator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'maxVelocity', ship.getModifiedItemAttr('roleBonusCBC'), **kwargs) class Effect6177(BaseEffect): """ shipHybridDmg1CBC2 Used by: Ships named like: Ferox (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs) class Effect6178(BaseEffect): """ shipBonusProjectileTrackingMBC2 Used by: Ship: Hurricane Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusMBC2'), skill='Minmatar Battlecruiser', **kwargs) class Effect6184(BaseEffect): """ shipModuleRemoteCapacitorTransmitter Used by: Modules from group: Remote Capacitor Transmitter (37 of 37) """ runTime = 'late' type = 'projected', 'active' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowAssistance'): return if src.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0): return amount = src.getModifiedItemAttr('powerTransferAmount') duration = src.getModifiedItemAttr('duration') if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict amount *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) fit.addDrain(src, duration, -amount, 0) class Effect6185(BaseEffect): """ shipModuleRemoteHullRepairer Used by: Modules from group: Remote Hull Repairer (8 of 8) """ runTime = 'late' type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowAssistance'): return bonus = module.getModifiedItemAttr('structureDamageAmount') bonus *= calculateRangeFactor( srcOptimalRange=module.getModifiedItemAttr('maxRange'), srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) duration = module.getModifiedItemAttr('duration') / 1000.0 fit._hullRr.append((bonus, duration)) class Effect6186(BaseEffect): """ shipModuleRemoteShieldBooster Used by: Modules from group: Remote Shield Booster (42 of 42) """ type = 'projected', 'active' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowAssistance'): return bonus = container.getModifiedItemAttr('shieldBonus') bonus *= calculateRangeFactor( srcOptimalRange=container.getModifiedItemAttr('maxRange'), srcFalloffRange=container.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) duration = container.getModifiedItemAttr('duration') / 1000.0 fit._shieldRr.append((bonus, duration)) class Effect6187(BaseEffect): """ energyNeutralizerFalloff Used by: Modules from group: Energy Neutralizer (57 of 57) """ type = 'active', 'projected' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): if 'projected' not in context: return if not ((hasattr(src, 'state') and src.state >= FittingModuleState.ACTIVE) or hasattr(src, 'amountActive')): return amount = src.getModifiedItemAttr('energyNeutralizerAmount') amount *= calculateRangeFactor( srcOptimalRange=src.getModifiedItemAttr('maxRange'), srcFalloffRange=src.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict amount *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) time = src.getModifiedItemAttr('duration') fit.addDrain(src, time, amount, 0) class Effect6188(BaseEffect): """ shipModuleRemoteArmorRepairer Used by: Modules from group: Remote Armor Repairer (43 of 43) """ runTime = 'late' type = 'projected', 'active' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowAssistance'): return bonus = container.getModifiedItemAttr('armorDamageAmount') bonus *= calculateRangeFactor( srcOptimalRange=container.getModifiedItemAttr('maxRange'), srcFalloffRange=container.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) duration = container.getModifiedItemAttr('duration') / 1000.0 fit._armorRr.append((bonus, duration)) fit._armorRrPreSpool.append((bonus, duration)) fit._armorRrFullSpool.append((bonus, duration)) class Effect6195(BaseEffect): """ expeditionFrigateBonusShieldResistance Used by: Ship: Endurance """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for dmgType in ('Em', 'Thermal', 'Kinetic', 'Explosive'): fit.ship.boostItemAttr('shield{}DamageResonance'.format(dmgType), src.getModifiedItemAttr('expeditionFrigateBonusShieldResistance'), skill='Expedition Frigates', **kwargs) class Effect6197(BaseEffect): """ energyNosferatuFalloff Used by: Modules from group: Energy Nosferatu (58 of 58) """ runTime = 'late' type = 'active', 'projected' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): amount = src.getModifiedItemAttr('powerTransferAmount') time = src.getModifiedItemAttr('duration') if 'projected' in context: if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict amount *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) amount *= calculateRangeFactor( srcOptimalRange=src.getModifiedItemAttr('maxRange'), srcFalloffRange=src.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) fit.addDrain(src, time, amount, 0) elif 'module' in context: src.itemModifiedAttributes.force('capacitorNeed', -amount, **kwargs) class Effect6201(BaseEffect): """ doomsdaySlash Used by: Modules named like: Reaper (4 of 4) """ type = 'active' @staticmethod def handler(fit, mod, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) class Effect6208(BaseEffect): """ microJumpPortalDrive Used by: Module: Micro Jump Field Generator """ type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('signatureRadius', module.getModifiedItemAttr('signatureRadiusBonusPercent'), stackingPenalties=True, **kwargs) class Effect6214(BaseEffect): """ roleBonusCDLinksPGReduction Used by: Ships from group: Command Destroyer (6 of 6) Ship: Porpoise """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'power', src.getModifiedItemAttr('roleBonusCD'), **kwargs) class Effect6216(BaseEffect): """ structureEnergyNeutralizerFalloff Used by: Structure Modules from group: Structure Energy Neutralizer (5 of 5) """ type = 'active', 'projected' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): amount = 0 if 'projected' not in context: return if not ((hasattr(src, 'state') and src.state >= FittingModuleState.ACTIVE) or hasattr(src, 'amountActive')): return amount = src.getModifiedItemAttr('energyNeutralizerAmount') amount *= calculateRangeFactor( srcOptimalRange=src.getModifiedItemAttr('maxRange'), srcFalloffRange=src.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict amount *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) time = src.getModifiedItemAttr('duration') fit.addDrain(src, time, amount, 0) class Effect6222(BaseEffect): """ structureWarpScrambleBlockMWDWithNPCEffect Used by: Structure Modules from group: Structure Warp Scrambler (2 of 2) """ runTime = 'early' type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return if module.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0): return fit.ship.increaseItemAttr('warpScrambleStatus', module.getModifiedItemAttr('warpScrambleStrength'), **kwargs) fit.modules.filteredItemIncrease( lambda mod: mod.item.requiresSkill('High Speed Maneuvering') or mod.item.requiresSkill('Micro Jump Drive Operation'), 'activationBlocked', module.getModifiedItemAttr('activationBlockedStrenght'), **kwargs) class Effect6230(BaseEffect): """ shipBonusEnergyNeutOptimalRS1 Used by: Ship: Curse """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'maxRange', src.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships', **kwargs) class Effect6232(BaseEffect): """ shipBonusEnergyNeutFalloffRS2 Used by: Ship: Pilgrim """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'falloffEffectiveness', src.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships', **kwargs) class Effect6233(BaseEffect): """ shipBonusEnergyNeutFalloffRS3 Used by: Ship: Curse """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'falloffEffectiveness', src.getModifiedItemAttr('eliteBonusReconShip3'), skill='Recon Ships', **kwargs) class Effect6234(BaseEffect): """ shipBonusEnergyNosOptimalRS1 Used by: Ship: Curse """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange', src.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships', **kwargs) class Effect6237(BaseEffect): """ shipBonusEnergyNosFalloffRS2 Used by: Ship: Pilgrim """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness', src.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships', **kwargs) class Effect6238(BaseEffect): """ shipBonusEnergyNosFalloffRS3 Used by: Ship: Curse """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness', src.getModifiedItemAttr('eliteBonusReconShip3'), skill='Recon Ships', **kwargs) class Effect6241(BaseEffect): """ shipBonusEnergyNeutFalloffAD1 Used by: Ship: Dragoon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer', **kwargs) class Effect6242(BaseEffect): """ shipBonusEnergyNeutOptimalAD2 Used by: Ship: Dragoon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'maxRange', src.getModifiedItemAttr('shipBonusAD2'), skill='Amarr Destroyer', **kwargs) class Effect6245(BaseEffect): """ shipBonusEnergyNosOptimalAD2 Used by: Ship: Dragoon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange', src.getModifiedItemAttr('shipBonusAD2'), skill='Amarr Destroyer', **kwargs) class Effect6246(BaseEffect): """ shipBonusEnergyNosFalloffAD1 Used by: Ship: Dragoon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer', **kwargs) class Effect6253(BaseEffect): """ shipBonusEnergyNeutOptimalAB Used by: Ship: Armageddon Ship: Armageddon Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'maxRange', src.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect6256(BaseEffect): """ shipBonusEnergyNeutFalloffAB2 Used by: Ship: Armageddon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusAB2'), skill='Amarr Battleship', **kwargs) class Effect6257(BaseEffect): """ shipBonusEnergyNosOptimalAB Used by: Ship: Armageddon Ship: Armageddon Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange', src.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect6260(BaseEffect): """ shipBonusEnergyNosFalloffAB2 Used by: Ship: Armageddon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusAB2'), skill='Amarr Battleship', **kwargs) class Effect6267(BaseEffect): """ shipBonusEnergyNeutOptimalEAF1 Used by: Ship: Sentinel """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'maxRange', src.getModifiedItemAttr('eliteBonusElectronicAttackShip1'), skill='Electronic Attack Ships', **kwargs) class Effect6272(BaseEffect): """ shipBonusEnergyNeutFalloffEAF3 Used by: Ship: Sentinel """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'falloffEffectiveness', src.getModifiedItemAttr('eliteBonusElectronicAttackShip3'), skill='Electronic Attack Ships', **kwargs) class Effect6273(BaseEffect): """ shipBonusEnergyNosOptimalEAF1 Used by: Ship: Sentinel """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange', src.getModifiedItemAttr('eliteBonusElectronicAttackShip1'), skill='Electronic Attack Ships', **kwargs) class Effect6278(BaseEffect): """ shipBonusEnergyNosFalloffEAF3 Used by: Ship: Sentinel """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness', src.getModifiedItemAttr('eliteBonusElectronicAttackShip3'), skill='Electronic Attack Ships', **kwargs) class Effect6281(BaseEffect): """ shipBonusEnergyNeutOptimalAF2 Used by: Ship: Cruor Ship: Malice """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'maxRange', src.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs) class Effect6285(BaseEffect): """ shipBonusEnergyNeutFalloffAF3 Used by: Ship: Cruor Ship: Malice """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'falloffEffectiveness', src.getModifiedItemAttr('shipBonus3AF'), skill='Amarr Frigate', **kwargs) class Effect6287(BaseEffect): """ shipBonusEnergyNosOptimalAF2 Used by: Ship: Cruor Ship: Malice """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange', src.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs) class Effect6291(BaseEffect): """ shipBonusEnergyNosFalloffAF3 Used by: Ship: Cruor Ship: Malice """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness', src.getModifiedItemAttr('shipBonus3AF'), skill='Amarr Frigate', **kwargs) class Effect6294(BaseEffect): """ shipBonusEnergyNeutOptimalAC1 Used by: Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'maxRange', src.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs) class Effect6299(BaseEffect): """ shipBonusEnergyNeutFalloffAC3 Used by: Ship: Ashimmu Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusAC3'), skill='Amarr Cruiser', **kwargs) class Effect6300(BaseEffect): """ shipBonusEnergyNosOptimalAC1 Used by: Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange', src.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs) class Effect6301(BaseEffect): """ shipBonusNosOptimalFalloffAC2 Used by: Ship: Rabisu """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange', src.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect6305(BaseEffect): """ shipBonusEnergyNosFalloffAC3 Used by: Ship: Ashimmu Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusAC3'), skill='Amarr Cruiser', **kwargs) class Effect6307(BaseEffect): """ shipBonusThermMissileDmgMD1 Used by: Ship: Bifrost """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', src.getModifiedItemAttr('shipBonusMD1'), skill='Minmatar Destroyer', **kwargs) class Effect6308(BaseEffect): """ shipBonusEMMissileDmgMD1 Used by: Ship: Bifrost """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'emDamage', src.getModifiedItemAttr('shipBonusMD1'), skill='Minmatar Destroyer', **kwargs) class Effect6309(BaseEffect): """ shipBonusKineticMissileDmgMD1 Used by: Ship: Bifrost """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', src.getModifiedItemAttr('shipBonusMD1'), skill='Minmatar Destroyer', **kwargs) class Effect6310(BaseEffect): """ shipBonusExplosiveMissileDmgMD1 Used by: Ship: Bifrost """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusMD1'), skill='Minmatar Destroyer', **kwargs) class Effect6315(BaseEffect): """ eliteBonusCommandDestroyerSkirmish1 Used by: Ships from group: Command Destroyer (3 of 6) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), attrName, src.getModifiedItemAttr('eliteBonusCommandDestroyer1'), skill='Command Destroyers', **kwargs) class Effect6316(BaseEffect): """ eliteBonusCommandDestroyerShield1 Used by: Ships from group: Command Destroyer (3 of 6) Ship: Skua """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), attrName, src.getModifiedItemAttr('eliteBonusCommandDestroyer1'), skill='Command Destroyers', **kwargs) class Effect6317(BaseEffect): """ eliteBonusCommandDestroyerMJFGspool2 Used by: Ships from group: Command Destroyer (6 of 6) Ship: Skua """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Micro Jump Drive Operation'), 'duration', src.getModifiedItemAttr('eliteBonusCommandDestroyer2'), skill='Command Destroyers', **kwargs) class Effect6318(BaseEffect): """ shipBonusEMShieldResistanceMD2 Used by: Ship: Bifrost """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('shipBonusMD2'), skill='Minmatar Destroyer', **kwargs) class Effect6319(BaseEffect): """ shipBonusKineticShieldResistanceMD2 Used by: Ship: Bifrost """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('shipBonusMD2'), skill='Minmatar Destroyer', **kwargs) class Effect6320(BaseEffect): """ shipBonusThermalShieldResistanceMD2 Used by: Ship: Bifrost """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('shipBonusMD2'), skill='Minmatar Destroyer', **kwargs) class Effect6321(BaseEffect): """ shipBonusExplosiveShieldResistanceMD2 Used by: Ship: Bifrost """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusMD2'), skill='Minmatar Destroyer', **kwargs) class Effect6322(BaseEffect): """ scriptscanGravimetricStrengthBonusBonus Used by: Charges from group: Structure ECM script (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): src.boostItemAttr('scanGravimetricStrengthBonus', src.getModifiedChargeAttr('scanGravimetricStrengthBonusBonus'), **kwargs) class Effect6323(BaseEffect): """ scriptscanLadarStrengthBonusBonus Used by: Charges from group: Structure ECM script (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): src.boostItemAttr('scanLadarStrengthBonus', src.getModifiedChargeAttr('scanLadarStrengthBonusBonus'), **kwargs) class Effect6324(BaseEffect): """ scriptscanMagnetometricStrengthBonusBonus Used by: Charges from group: Structure ECM script (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): src.boostItemAttr('scanMagnetometricStrengthBonus', src.getModifiedChargeAttr('scanMagnetometricStrengthBonusBonus'), **kwargs) class Effect6325(BaseEffect): """ scriptscanRadarStrengthBonusBonus Used by: Charges from group: Structure ECM script (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): src.boostItemAttr('scanRadarStrengthBonus', src.getModifiedChargeAttr('scanRadarStrengthBonusBonus'), **kwargs) class Effect6326(BaseEffect): """ shipBonusThermalMissileDamageCD1 Used by: Ship: Stork """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', src.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer', **kwargs) class Effect6327(BaseEffect): """ shipBonusEMMissileDamageCD1 Used by: Ship: Stork """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'emDamage', src.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer', **kwargs) class Effect6328(BaseEffect): """ shipBonusKineticMissileDamageCD1 Used by: Ship: Stork """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', src.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer', **kwargs) class Effect6329(BaseEffect): """ shipBonusExplosiveMissileDamageCD1 Used by: Ship: Stork """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer', **kwargs) class Effect6330(BaseEffect): """ shipBonusShieldEMResistanceCD2 Used by: Ship: Stork """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer', **kwargs) class Effect6331(BaseEffect): """ shipBonusShieldThermalResistanceCD2 Used by: Ship: Stork """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer', **kwargs) class Effect6332(BaseEffect): """ shipBonusShieldKineticResistanceCD2 Used by: Ship: Stork """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer', **kwargs) class Effect6333(BaseEffect): """ shipBonusShieldExplosiveResistanceCD2 Used by: Ship: Stork """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer', **kwargs) class Effect6334(BaseEffect): """ eliteBonusCommandDestroyerInfo1 Used by: Ships from group: Command Destroyer (3 of 6) Ship: Skua """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), attrName, src.getModifiedItemAttr('eliteBonusCommandDestroyer1'), skill='Command Destroyers', **kwargs) class Effect6335(BaseEffect): """ shipBonusKineticArmorResistanceAD2 Used by: Ship: Pontifex """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorKineticDamageResonance', src.getModifiedItemAttr('shipBonusAD2'), skill='Amarr Destroyer', **kwargs) class Effect6336(BaseEffect): """ shipBonusThermalArmorResistanceAD2 Used by: Ship: Pontifex """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorThermalDamageResonance', src.getModifiedItemAttr('shipBonusAD2'), skill='Amarr Destroyer', **kwargs) class Effect6337(BaseEffect): """ shipBonusEMArmorResistanceAD2 Used by: Ship: Pontifex """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorEmDamageResonance', src.getModifiedItemAttr('shipBonusAD2'), skill='Amarr Destroyer', **kwargs) class Effect6338(BaseEffect): """ shipBonusExplosiveArmorResistanceAD2 Used by: Ship: Pontifex """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusAD2'), skill='Amarr Destroyer', **kwargs) class Effect6339(BaseEffect): """ eliteBonusCommandDestroyerArmored1 Used by: Ship: Magus Ship: Pontifex """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), attrName, src.getModifiedItemAttr('eliteBonusCommandDestroyer1'), skill='Command Destroyers', **kwargs) class Effect6340(BaseEffect): """ shipBonusKineticArmorResistanceGD2 Used by: Ship: Magus """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorKineticDamageResonance', src.getModifiedItemAttr('shipBonusGD2'), skill='Gallente Destroyer', **kwargs) class Effect6341(BaseEffect): """ shipBonusEMArmorResistanceGD2 Used by: Ship: Magus """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorEmDamageResonance', src.getModifiedItemAttr('shipBonusGD2'), skill='Gallente Destroyer', **kwargs) class Effect6342(BaseEffect): """ shipBonusThermalArmorResistanceGD2 Used by: Ship: Magus """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorThermalDamageResonance', src.getModifiedItemAttr('shipBonusGD2'), skill='Gallente Destroyer', **kwargs) class Effect6343(BaseEffect): """ shipBonusExplosiveArmorResistanceGD2 Used by: Ship: Magus """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusGD2'), skill='Gallente Destroyer', **kwargs) class Effect6350(BaseEffect): """ shipSmallMissileKinDmgCF3 Used by: Ship: Caldari Navy Hookbill """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Light Missiles') or mod.charge.requiresSkill('Rockets'), 'kineticDamage', src.getModifiedItemAttr('shipBonus3CF'), skill='Caldari Frigate', **kwargs) class Effect6351(BaseEffect): """ shipMissileKinDamageCC3 Used by: Ship: Osprey Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', src.getModifiedItemAttr('shipBonusCC3'), skill='Caldari Cruiser', **kwargs) class Effect6352(BaseEffect): """ roleBonusWDRange Used by: Ship: Crucifier Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'falloffEffectiveness', src.getModifiedItemAttr('roleBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'maxRange', src.getModifiedItemAttr('roleBonus'), **kwargs) class Effect6353(BaseEffect): """ roleBonusWDCapCPU Used by: Ship: Crucifier Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'cpu', src.getModifiedItemAttr('roleBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'capacitorNeed', src.getModifiedItemAttr('roleBonus'), **kwargs) class Effect6354(BaseEffect): """ shipBonusEwWeaponDisruptionStrengthAF2 Used by: Variations of ship: Crucifier (3 of 3) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ( 'trackingSpeedBonus', 'explosionDelayBonus', 'maxRangeBonus', 'falloffBonus', 'missileVelocityBonus', 'aoeVelocityBonus', 'aoeCloudSizeBonus' ): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), attrName, src.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs) class Effect6357(BaseEffect): """ shipBonusJustScramblerRangeGF2 Used by: Ship: Maulus Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Navigation'), 'maxRange', src.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect6358(BaseEffect): """ roleBonusJustScramblerStrength Used by: Ship: Maulus Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Navigation'), 'warpScrambleStrength', ship.getModifiedItemAttr('roleBonus'), **kwargs) class Effect6359(BaseEffect): """ shipBonusAoeVelocityRocketsMF Used by: Ship: Vigil Fleet Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'aoeVelocity', src.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect6360(BaseEffect): """ shipRocketEMThermKinDmgMF2 Used by: Ship: Vigil Fleet Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'emDamage', src.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'thermalDamage', src.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'kineticDamage', src.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs) class Effect6361(BaseEffect): """ shipRocketExpDmgMF3 Used by: Ship: Vigil Fleet Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'explosiveDamage', src.getModifiedItemAttr('shipBonus3MF'), skill='Minmatar Frigate', **kwargs) class Effect6362(BaseEffect): """ roleBonusStasisRange Used by: Ship: Vigil Fleet Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', src.getModifiedItemAttr('roleBonus'), **kwargs) class Effect6368(BaseEffect): """ shieldTransporterFalloffBonus Used by: Variations of ship: Bantam (2 of 2) Variations of ship: Burst (2 of 2) Ship: Osprey Ship: Scythe """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Shield Booster', 'falloffEffectiveness', src.getModifiedItemAttr('falloffBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Ancillary Remote Shield Booster', 'falloffEffectiveness', src.getModifiedItemAttr('falloffBonus'), **kwargs) class Effect6369(BaseEffect): """ shipShieldTransferFalloffMC2 Used by: Ship: Scimitar """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect6370(BaseEffect): """ shipShieldTransferFalloffCC1 Used by: Ship: Basilisk Ship: Etana """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs) class Effect6371(BaseEffect): """ shipRemoteArmorFalloffGC1 Used by: Ship: Oneiros """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs) class Effect6372(BaseEffect): """ shipRemoteArmorFalloffAC2 Used by: Ship: Guardian """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect6373(BaseEffect): """ armorRepairProjectorFalloffBonus Used by: Variations of ship: Navitas (2 of 2) Ship: Augoror Ship: Deacon Ship: Exequror Ship: Inquisitor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Armor Repairer', 'falloffEffectiveness', src.getModifiedItemAttr('falloffBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Ancillary Remote Armor Repairer', 'falloffEffectiveness', src.getModifiedItemAttr('falloffBonus'), **kwargs) class Effect6374(BaseEffect): """ droneHullRepairBonusEffect Used by: Ships from group: Logistics (6 of 7) Ship: Exequror Ship: Scythe """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.group.name == 'Logistic Drone', 'structureDamageAmount', src.getModifiedItemAttr('droneArmorDamageAmountBonus'), **kwargs) class Effect6377(BaseEffect): """ eliteBonusLogiFrigArmorRepSpeedCap1 Used by: Ship: Deacon Ship: Thalia """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', src.getModifiedItemAttr('eliteBonusLogiFrig1'), skill='Logistics Frigates', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'duration', src.getModifiedItemAttr('eliteBonusLogiFrig1'), skill='Logistics Frigates', **kwargs) class Effect6378(BaseEffect): """ eliteBonusLogiFrigShieldRepSpeedCap1 Used by: Ship: Kirin Ship: Scalpel """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'duration', src.getModifiedItemAttr('eliteBonusLogiFrig1'), skill='Logistics Frigates', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed', src.getModifiedItemAttr('eliteBonusLogiFrig1'), skill='Logistics Frigates', **kwargs) class Effect6379(BaseEffect): """ eliteBonusLogiFrigArmorHP2 Used by: Ship: Deacon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorHP', src.getModifiedItemAttr('eliteBonusLogiFrig2'), skill='Logistics Frigates', **kwargs) class Effect6380(BaseEffect): """ eliteBonusLogiFrigShieldHP2 Used by: Ship: Kirin """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldCapacity', src.getModifiedItemAttr('eliteBonusLogiFrig2'), skill='Logistics Frigates', **kwargs) class Effect6381(BaseEffect): """ eliteBonusLogiFrigSignature2 Used by: Ship: Scalpel Ship: Thalia """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('signatureRadius', src.getModifiedItemAttr('eliteBonusLogiFrig2'), skill='Logistics Frigates', **kwargs) class Effect6384(BaseEffect): """ overloadSelfMissileGuidanceModuleBonus Used by: Variations of module: Guidance Disruptor I (6 of 6) """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for tgtAttr in ( 'aoeCloudSizeBonus', 'explosionDelayBonus', 'missileVelocityBonus', 'aoeVelocityBonus' ): module.boostItemAttr(tgtAttr, module.getModifiedItemAttr('overloadTrackingModuleStrengthBonus'), **kwargs) class Effect6385(BaseEffect): """ ignoreCloakVelocityPenalty Used by: Ships from group: Expedition Frigate (2 of 2) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemForce(lambda mod: mod.item.group.name == 'Cloaking Device', 'maxVelocityModifier', src.getModifiedItemAttr('ignoreCloakVelocityPenalty'), **kwargs) class Effect6386(BaseEffect): """ ewSkillGuidanceDisruptionBonus Used by: Modules named like: Tracking Diagnostic Subroutines (8 of 8) Skill: Weapon Destabilization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): level = src.level if 'skill' in context else 1 for attr in ( 'explosionDelayBonus', 'aoeVelocityBonus', 'aoeCloudSizeBonus', 'missileVelocityBonus' ): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), attr, src.getModifiedItemAttr('scanSkillEwStrengthBonus') * level, **kwargs) class Effect6395(BaseEffect): """ shipBonusEwWeaponDisruptionStrengthAC1 Used by: Variations of ship: Arbitrator (3 of 3) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ( 'missileVelocityBonus', 'aoeVelocityBonus', 'maxRangeBonus', 'explosionDelayBonus', 'aoeCloudSizeBonus', 'trackingSpeedBonus', 'falloffBonus' ): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), attrName, src.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs) class Effect6396(BaseEffect): """ skillStructureMissileDamageBonus Used by: Skill: Structure Missile Systems """ type = 'passive', 'structure' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): groups = ('Structure Anti-Capital Missile', 'Structure Anti-Subcapital Missile', 'Guided Bomb') for damageType in ('em', 'thermal', 'explosive', 'kinetic'): fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name in groups, '%sDamage' % damageType, src.getModifiedItemAttr('damageMultiplierBonus'), skill='Structure Missile Systems', **kwargs) class Effect6400(BaseEffect): """ skillStructureElectronicSystemsCapNeedBonus Used by: Skill: Structure Electronic Systems """ type = 'passive', 'structure' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): groups = ('Structure Warp Scrambler', 'Structure ECM Battery', 'Structure Stasis Webifier') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'capacitorNeed', src.getModifiedItemAttr('capNeedBonus'), skill='Structure Electronic Systems', **kwargs) class Effect6401(BaseEffect): """ skillStructureEngineeringSystemsCapNeedBonus Used by: Skill: Structure Engineering Systems """ type = 'passive', 'structure' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): groups = ('Structure Energy Neutralizer', 'Structure Area Denial Module') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'capacitorNeed', src.getModifiedItemAttr('capNeedBonus'), skill='Structure Engineering Systems', **kwargs) class Effect6402(BaseEffect): """ structureRigAoeVelocityBonusSingleTargetMissiles Used by: Structure Modules named like: Standup Set Missile (6 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): groups = ('Structure Anti-Subcapital Missile', 'Structure Anti-Capital Missile') fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name in groups, 'aoeVelocity', src.getModifiedItemAttr('structureRigMissileExploVeloBonus'), stackingPenalties=True, **kwargs) class Effect6403(BaseEffect): """ structureRigVelocityBonusSingleTargetMissiles Used by: Structure Modules named like: Standup Set Missile (6 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): groups = ('Structure Anti-Subcapital Missile', 'Structure Anti-Capital Missile') fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name in groups, 'maxVelocity', src.getModifiedItemAttr('structureRigMissileVelocityBonus'), stackingPenalties=True, **kwargs) class Effect6404(BaseEffect): """ structureRigNeutralizerMaxRangeFalloffEffectiveness Used by: Structure Modules from group: Structure Combat Rig XL - Energy Neutralizer and EW (2 of 2) Structure Modules named like: Standup Set Energy Neutralizer (4 of 6) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Energy Neutralizer', 'maxRange', src.getModifiedItemAttr('structureRigEwarOptimalBonus'), stackingPenalties=True, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Energy Neutralizer', 'falloffEffectiveness', src.getModifiedItemAttr('structureRigEwarFalloffBonus'), stackingPenalties=True, **kwargs) class Effect6405(BaseEffect): """ structureRigNeutralizerCapacitorNeed Used by: Structure Modules from group: Structure Combat Rig XL - Energy Neutralizer and EW (2 of 2) Structure Modules named like: Standup Set Energy Neutralizer (4 of 6) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Energy Neutralizer', 'capacitorNeed', src.getModifiedItemAttr('structureRigEwarCapUseBonus'), stackingPenalties=True, **kwargs) class Effect6406(BaseEffect): """ structureRigEWMaxRangeFalloff Used by: Structure Modules from group: Structure Combat Rig M - EW projection (2 of 2) Structure Modules named like: Standup Set EW (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): groups = ('Structure ECM Battery', 'Structure Disruption Battery') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'falloff', src.getModifiedItemAttr('structureRigEwarFalloffBonus'), stackingPenalties=True, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'maxRange', src.getModifiedItemAttr('structureRigEwarOptimalBonus'), stackingPenalties=True, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'falloffEffectiveness', src.getModifiedItemAttr('structureRigEwarFalloffBonus'), stackingPenalties=True, **kwargs) class Effect6407(BaseEffect): """ structureRigEWCapacitorNeed Used by: Structure Modules from group: Structure Combat Rig M - EW Cap Reduction (2 of 2) Structure Modules named like: Standup Set EW (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): groups = ('Structure ECM Battery', 'Structure Disruption Battery') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'capacitorNeed', src.getModifiedItemAttr('structureRigEwarCapUseBonus'), **kwargs) class Effect6408(BaseEffect): """ structureRigMaxTargets Used by: Structure Modules from group: Structure Combat Rig XL - Doomsday and Targeting (2 of 2) Structure Modules named like: Standup Set Target (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('maxLockedTargets', src.getModifiedItemAttr('structureRigMaxTargetBonus'), **kwargs) class Effect6409(BaseEffect): """ structureRigSensorResolution Used by: Structure Modules from group: Structure Combat Rig L - Max Targets and Sensor Boosting (2 of 2) Structure Modules from group: Structure Combat Rig M - Boosted Sensors (2 of 2) Structure Modules from group: Structure Combat Rig XL - Doomsday and Targeting (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('scanResolution', src.getModifiedItemAttr('structureRigScanResBonus'), stackingPenalties=True, **kwargs) class Effect6410(BaseEffect): """ structureRigExplosionRadiusBonusAoEMissiles Used by: Structure Modules from group: Structure Combat Rig L - AoE Launcher Application and Projection (2 of 2) Structure Modules from group: Structure Combat Rig XL - Missile and AoE Missile (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Guided Bomb', 'aoeCloudSize', src.getModifiedItemAttr('structureRigMissileExplosionRadiusBonus'), stackingPenalties=True, **kwargs) class Effect6411(BaseEffect): """ structureRigVelocityBonusAoeMissiles Used by: Structure Modules from group: Structure Combat Rig L - AoE Launcher Application and Projection (2 of 2) Structure Modules from group: Structure Combat Rig XL - Missile and AoE Missile (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Guided Bomb', 'maxVelocity', src.getModifiedItemAttr('structureRigMissileVelocityBonus'), stackingPenalties=True, **kwargs) class Effect6412(BaseEffect): """ structureRigPDBmaxRange Used by: Structure Modules from group: Structure Combat Rig L - Point Defense Battery Application and Projection (2 of 2) Structure Modules from group: Structure Combat Rig XL - Doomsday and Targeting (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Area Denial Module', 'empFieldRange', src.getModifiedItemAttr('structureRigPDRangeBonus'), stackingPenalties=True, **kwargs) class Effect6413(BaseEffect): """ structureRigPDBCapacitorNeed Used by: Structure Modules from group: Structure Combat Rig L - Point Defense Battery Application and Projection (2 of 2) Structure Modules from group: Structure Combat Rig XL - Doomsday and Targeting (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Area Denial Module', 'capacitorNeed', src.getModifiedItemAttr('structureRigPDCapUseBonus'), **kwargs) class Effect6417(BaseEffect): """ structureRigDoomsdayDamageLoss Used by: Structure Modules from group: Structure Combat Rig XL - Doomsday and Targeting (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.group.name == 'Structure Doomsday Weapon', 'lightningWeaponDamageLossTarget', src.getModifiedItemAttr('structureRigDoomsdayDamageLossTargetBonus'), **kwargs) class Effect6422(BaseEffect): """ remoteSensorDampFalloff Used by: Modules from group: Sensor Dampener (6 of 6) Starbases from group: Sensor Dampening Battery (3 of 3) """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return rangeFactor = calculateRangeFactor( srcOptimalRange=module.getModifiedItemAttr('maxRange'), srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRangeBonus') * rangeFactor, stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('scanResolution', module.getModifiedItemAttr('scanResolutionBonus') * rangeFactor, stackingPenalties=True, **kwargs) class Effect6423(BaseEffect): """ shipModuleGuidanceDisruptor Used by: Variations of module: Guidance Disruptor I (6 of 6) """ type = 'active', 'projected' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return rangeFactor = calculateRangeFactor( srcOptimalRange=module.getModifiedItemAttr('maxRange'), srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) for srcAttr, tgtAttr in ( ('aoeCloudSizeBonus', 'aoeCloudSize'), ('aoeVelocityBonus', 'aoeVelocity'), ('missileVelocityBonus', 'maxVelocity'), ('explosionDelayBonus', 'explosionDelay') ): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), tgtAttr, module.getModifiedItemAttr(srcAttr) * rangeFactor, stackingPenalties=True, **kwargs) class Effect6424(BaseEffect): """ shipModuleTrackingDisruptor Used by: Variations of module: Tracking Disruptor I (6 of 6) """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return rangeFactor = calculateRangeFactor( srcOptimalRange=module.getModifiedItemAttr('maxRange'), srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) for srcAttr, tgtAttr in ( ('trackingSpeedBonus', 'trackingSpeed'), ('maxRangeBonus', 'maxRange'), ('falloffBonus', 'falloff') ): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), tgtAttr, module.getModifiedItemAttr(srcAttr) * rangeFactor, stackingPenalties=True, **kwargs) class Effect6425(BaseEffect): """ remoteTargetPaintFalloff Used by: Modules from group: Target Painter (9 of 9) """ type = 'projected', 'active' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return appliedBoost = container.getModifiedItemAttr('signatureRadiusBonus') * calculateRangeFactor( srcOptimalRange=container.getModifiedItemAttr('maxRange'), srcFalloffRange=container.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) fit.ship.boostItemAttr('signatureRadius', appliedBoost, stackingPenalties=True, **kwargs) class Effect6426(BaseEffect): """ remoteWebifierFalloff Used by: Modules from group: Stasis Grappler (8 of 8) Modules from group: Stasis Web (19 of 19) Starbases from group: Stasis Webification Battery (3 of 3) """ type = 'active', 'projected' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return appliedBoost = module.getModifiedItemAttr('speedFactor') * calculateRangeFactor( srcOptimalRange=module.getModifiedItemAttr('maxRange'), srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) fit.ship.boostItemAttr('maxVelocity', appliedBoost, stackingPenalties=True, **kwargs) class Effect6427(BaseEffect): """ remoteSensorBoostFalloff Used by: Modules from group: Remote Sensor Booster (8 of 8) """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowAssistance'): return rangeFactor = calculateRangeFactor( srcOptimalRange=module.getModifiedItemAttr('maxRange'), srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) for srcAttr, tgtAttr in ( ('maxTargetRangeBonus', 'maxTargetRange'), ('scanResolutionBonus', 'scanResolution'), ('scanGravimetricStrengthPercent', 'scanGravimetricStrength'), ('scanMagnetometricStrengthPercent', 'scanMagnetometricStrength'), ('scanRadarStrengthPercent', 'scanRadarStrength'), ('scanLadarStrengthPercent', 'scanLadarStrength') ): fit.ship.boostItemAttr(tgtAttr, module.getModifiedItemAttr(srcAttr) * rangeFactor, stackingPenalties=True, **kwargs) class Effect6428(BaseEffect): """ shipModuleRemoteTrackingComputer Used by: Modules from group: Remote Tracking Computer (8 of 8) """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowAssistance'): return rangeFactor = calculateRangeFactor( srcOptimalRange=module.getModifiedItemAttr('maxRange'), srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) for srcAttr, tgtAttr in ( ('trackingSpeedBonus', 'trackingSpeed'), ('maxRangeBonus', 'maxRange'), ('falloffBonus', 'falloff') ): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), tgtAttr, module.getModifiedItemAttr(srcAttr) * rangeFactor, stackingPenalties=True, **kwargs) class Effect6431(BaseEffect): """ fighterAbilityMissiles Used by: Items from category: Fighter (56 of 94) """ dealsDamage = True displayName = 'Missile Attack' hasCharges = True prefix = 'fighterAbilityMissiles' type = 'active' class Effect6434(BaseEffect): """ fighterAbilityEnergyNeutralizer Used by: Fighters named like: Cenobite (5 of 5) """ displayName = 'Energy Neutralizer' grouped = True prefix = 'fighterAbilityEnergyNeutralizer' type = 'active', 'projected' @classmethod def handler(cls, fit, src, context, projectionRange, **kwargs): if 'projected' not in context: return amount = src.getModifiedItemAttr('{}Amount'.format(cls.prefix)) * src.amount amount *= calculateRangeFactor( srcOptimalRange=src.getModifiedItemAttr('{}OptimalRange'.format(cls.prefix)), srcFalloffRange=src.getModifiedItemAttr('{}FalloffRange'.format(cls.prefix)), distance=projectionRange) if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict amount *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) time = src.getModifiedItemAttr('{}Duration'.format(cls.prefix)) fit.addDrain(src, time, amount, 0) class Effect6435(BaseEffect): """ fighterAbilityStasisWebifier Used by: Fighters named like: Dromi (5 of 5) """ displayName = 'Stasis Webifier' grouped = True prefix = 'fighterAbilityStasisWebifier' type = 'active', 'projected' @classmethod def handler(cls, fit, src, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return speedBoost = src.getModifiedItemAttr('{}SpeedPenalty'.format(cls.prefix)) * src.amount speedBoost *= calculateRangeFactor( srcOptimalRange=src.getModifiedItemAttr('{}OptimalRange'.format(cls.prefix)), srcFalloffRange=src.getModifiedItemAttr('{}FalloffRange'.format(cls.prefix)), distance=projectionRange) fit.ship.boostItemAttr('maxVelocity', speedBoost, stackingPenalties=True, **kwargs) class Effect6436(BaseEffect): """ fighterAbilityWarpDisruption Used by: Fighters named like: Siren (5 of 5) """ displayName = 'Warp Disruption' grouped = True prefix = 'fighterAbilityWarpDisruption' type = 'active', 'projected' @classmethod def handler(cls, fit, src, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return if src.getModifiedItemAttr('{}Range'.format(cls.prefix), 0) < (projectionRange or 0): return fit.ship.increaseItemAttr( 'warpScrambleStatus', src.getModifiedItemAttr('{}PointStrength'.format(cls.prefix)) * src.amount, **kwargs) class Effect6437(BaseEffect): """ fighterAbilityECM Used by: Fighters named like: Scarab (5 of 5) """ displayName = 'ECM' grouped = True prefix = 'fighterAbilityECM' type = 'projected', 'active' @classmethod def handler(cls, fit, src, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return strength = src.getModifiedItemAttr('{}Strength{}'.format(cls.prefix, fit.scanType)) * src.amount strength *= calculateRangeFactor( srcOptimalRange=src.getModifiedItemAttr('{}RangeOptimal'.format(cls.prefix)), srcFalloffRange=src.getModifiedItemAttr('{}RangeFalloff'.format(cls.prefix)), distance=projectionRange) if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict strength *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) fit.addProjectedEcm(strength) class Effect6439(BaseEffect): """ fighterAbilityEvasiveManeuvers Used by: Fighters from group: Light Fighter (12 of 24) Fighters from group: Structure Light Fighter (8 of 16) """ displayName = 'Evasive Maneuvers' grouped = True prefix = 'fighterAbilityEvasiveManeuvers' runTime = 'late' type = 'active' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): container.boostItemAttr('maxVelocity', container.getModifiedItemAttr('fighterAbilityEvasiveManeuversSpeedBonus'), **kwargs) container.boostItemAttr('signatureRadius', container.getModifiedItemAttr('fighterAbilityEvasiveManeuversSignatureRadiusBonus'), stackingPenalties=True, **kwargs) # These may not have stacking penalties, but there's nothing else that affects the attributes yet to check. container.multiplyItemAttr('shieldEmDamageResonance', container.getModifiedItemAttr('fighterAbilityEvasiveManeuversEmResonance'), stackingPenalties=True, **kwargs) container.multiplyItemAttr('shieldThermalDamageResonance', container.getModifiedItemAttr('fighterAbilityEvasiveManeuversThermResonance'), stackingPenalties=True, **kwargs) container.multiplyItemAttr('shieldKineticDamageResonance', container.getModifiedItemAttr('fighterAbilityEvasiveManeuversKinResonance'), stackingPenalties=True, **kwargs) container.multiplyItemAttr('shieldExplosiveDamageResonance', container.getModifiedItemAttr('fighterAbilityEvasiveManeuversExpResonance'), stackingPenalties=True, **kwargs) class Effect6440(BaseEffect): """ fighterAbilityAfterburner Used by: Fighters named like: Shadow (2 of 2) Fighters named like: Siren (5 of 5) """ displayName = 'Afterburner' grouped = True runTime = 'late' type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('maxVelocity', module.getModifiedItemAttr('fighterAbilityAfterburnerSpeedBonus'), stackingPenalties=True, **kwargs) class Effect6441(BaseEffect): """ fighterAbilityMicroWarpDrive Used by: Items from category: Fighter (51 of 94) """ displayName = 'Microwarpdrive' grouped = True runTime = 'late' type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('maxVelocity', module.getModifiedItemAttr('fighterAbilityMicroWarpDriveSpeedBonus'), stackingPenalties=True, **kwargs) module.boostItemAttr('signatureRadius', module.getModifiedItemAttr('fighterAbilityMicroWarpDriveSignatureRadiusBonus'), stackingPenalties=True, **kwargs) class Effect6443(BaseEffect): """ pointDefense Used by: Structure Modules from group: Structure Area Denial Module (2 of 2) """ type = 'active' class Effect6447(BaseEffect): """ lightningWeapon Used by: Structure Module: Standup Arcing Vorton Projector I """ type = 'active' class Effect6448(BaseEffect): """ structureMissileGuidanceEnhancer Used by: Variations of structure module: Standup Missile Guidance Enhancer I (2 of 2) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): missileGroups = ('Structure Anti-Capital Missile', 'Structure Anti-Subcapital Missile') for srcAttr, tgtAttr in ( ('aoeCloudSizeBonus', 'aoeCloudSize'), ('aoeVelocityBonus', 'aoeVelocity'), ('missileVelocityBonus', 'maxVelocity'), ('explosionDelayBonus', 'explosionDelay'), ): fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name in missileGroups, tgtAttr, container.getModifiedItemAttr(srcAttr), stackingPenalties=True, **kwargs) class Effect6449(BaseEffect): """ structureBallisticControlSystem Used by: Variations of structure module: Standup Ballistic Control System I (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): missileGroups = ('Structure Anti-Capital Missile', 'Structure Anti-Subcapital Missile') for dmgType in ('em', 'kinetic', 'explosive', 'thermal'): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.group.name in missileGroups, '%sDamage' % dmgType, module.getModifiedItemAttr('missileDamageMultiplierBonus'), stackingPenalties=True, **kwargs) launcherGroups = ('Structure XL Missile Launcher', 'Structure Multirole Missile Launcher') fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name in launcherGroups, 'speed', module.getModifiedItemAttr('speedMultiplier'), stackingPenalties=True, **kwargs) class Effect6465(BaseEffect): """ fighterAbilityAttackM Used by: Items from category: Fighter (54 of 94) """ dealsDamage = True displayName = 'Turret Attack' prefix = 'fighterAbilityAttackMissile' type = 'active' class Effect6470(BaseEffect): """ remoteECMFalloff Used by: Modules from group: ECM (43 of 43) Starbases from group: Electronic Warfare Battery (12 of 12) """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return strength = module.getModifiedItemAttr('scan{0}StrengthBonus'.format(fit.scanType)) strength *= calculateRangeFactor( srcOptimalRange=module.getModifiedItemAttr('maxRange'), srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict strength *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) fit.addProjectedEcm(strength) class Effect6472(BaseEffect): """ doomsdayBeamDOT Used by: Module: 'Geiravor' Explosive Lance Module: 'Holy Destiny' Electromagnetic Lance Module: 'Iron Pike' Kinetic Lance Module: 'Phalarica' Thermal Lance """ dealsDamage = True type = 'active' @staticmethod def handler(fit, mod, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) class Effect6473(BaseEffect): """ doomsdayConeDOT Used by: Module: Bosonic Field Generator """ dealsDamage = True type = 'active' @staticmethod def handler(fit, mod, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) class Effect6474(BaseEffect): """ doomsdayHOG Used by: Module: Gravitational Transportation Field Oscillator """ type = 'active' @staticmethod def handler(fit, mod, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) class Effect6475(BaseEffect): """ structureRigDoomsdayTargetAmountBonus Used by: Structure Modules from group: Structure Combat Rig XL - Doomsday and Targeting (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.group.name == 'Structure Doomsday Weapon', 'lightningWeaponTargetAmount', src.getModifiedItemAttr('structureRigDoomsdayTargetAmountBonus'), **kwargs) class Effect6476(BaseEffect): """ doomsdayAOEWeb Used by: Module: Stasis Webification Burst Projector Structure Module: Standup Stasis Webification Burst Projector """ type = 'active', 'projected' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return fit.ship.boostItemAttr('maxVelocity', module.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) class Effect6477(BaseEffect): """ doomsdayAOENeut Used by: Module: Energy Neutralization Burst Projector Structure Module: Standup Energy Neutralization Burst Projector """ type = 'active', 'projected' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): if 'projected' not in context: return if not ((hasattr(src, 'state') and src.state >= FittingModuleState.ACTIVE) or hasattr(src, 'amountActive')): return amount = src.getModifiedItemAttr('energyNeutralizerAmount') if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict amount *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) time = src.getModifiedItemAttr('duration') fit.addDrain(src, time, amount, 0) class Effect6478(BaseEffect): """ doomsdayAOEPaint Used by: Module: Target Illumination Burst Projector Structure Module: Standup Target Illumination Burst Projector """ type = 'projected', 'active' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return fit.ship.boostItemAttr('signatureRadius', container.getModifiedItemAttr('signatureRadiusBonus'), stackingPenalties=True, **kwargs) class Effect6479(BaseEffect): """ doomsdayAOETrack Used by: Module: Weapon Disruption Burst Projector Structure Module: Standup Weapon Disruption Burst Projector """ type = 'active', 'projected' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return for srcAttr, tgtAttr in ( ('aoeCloudSizeBonus', 'aoeCloudSize'), ('aoeVelocityBonus', 'aoeVelocity'), ('missileVelocityBonus', 'maxVelocity'), ('explosionDelayBonus', 'explosionDelay') ): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), tgtAttr, module.getModifiedItemAttr(srcAttr), stackingPenalties=True, **kwargs) for srcAttr, tgtAttr in ( ('trackingSpeedBonus', 'trackingSpeed'), ('maxRangeBonus', 'maxRange'), ('falloffBonus', 'falloff') ): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), tgtAttr, module.getModifiedItemAttr(srcAttr), stackingPenalties=True, **kwargs) class Effect6481(BaseEffect): """ doomsdayAOEDamp Used by: Module: Sensor Dampening Burst Projector Structure Module: Standup Sensor Dampening Burst Projector """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRangeBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('scanResolution', module.getModifiedItemAttr('scanResolutionBonus'), stackingPenalties=True, **kwargs) class Effect6482(BaseEffect): """ doomsdayAOEBubble Used by: Module: Warp Disruption Burst Projector Structure Module: Standup Warp Disruption Burst Projector """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): return class Effect6484(BaseEffect): """ emergencyHullEnergizer Used by: Variations of module: Capital Emergency Hull Energizer I (5 of 5) """ runtime = 'late' type = 'active' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for dmgType in ('em', 'thermal', 'kinetic', 'explosive'): fit.ship.multiplyItemAttr('{}DamageResonance'.format(dmgType), src.getModifiedItemAttr('hull{}DamageResonance'.format(dmgType.title())), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect6485(BaseEffect): """ fighterAbilityLaunchBomb Used by: Fighters from group: Heavy Fighter (8 of 17) Fighters from group: Structure Heavy Fighter (8 of 17) """ dealsDamage = True displayName = 'Bomb' hasCharges = True prefix = 'fighterAbilityLaunchBomb' type = 'active' class Effect6487(BaseEffect): """ modifyEnergyWarfareResistance Used by: Modules from group: Capacitor Battery (30 of 30) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('energyWarfareResistance', module.getModifiedItemAttr('energyWarfareResistanceBonus'), stackingPenalties=True, **kwargs) class Effect6488(BaseEffect): """ scriptSensorBoosterSensorStrengthBonusBonus Used by: Charges from group: Sensor Booster Script (3 of 3) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for scanType in ('Gravimetric', 'Magnetometric', 'Radar', 'Ladar'): module.boostItemAttr('scan{}StrengthPercent'.format(scanType), module.getModifiedChargeAttr('sensorStrengthBonusBonus'), **kwargs) class Effect6501(BaseEffect): """ shipBonusDreadnoughtA1DamageBonus Used by: Ships named like: Revelation (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Energy Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusDreadnoughtA1'), skill='Amarr Dreadnought', **kwargs) class Effect6502(BaseEffect): """ shipBonusDreadnoughtA2ArmorResists Used by: Ships named like: Revelation (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for dmgType in ('em', 'thermal', 'kinetic', 'explosive'): fit.ship.boostItemAttr( 'armor{}DamageResonance'.format(dmgType.capitalize()), src.getModifiedItemAttr('shipBonusDreadnoughtA2'), skill='Amarr Dreadnought', **kwargs) class Effect6503(BaseEffect): """ shipBonusDreadnoughtA3CapNeed Used by: Ships named like: Revelation (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Energy Turret'), 'capacitorNeed', src.getModifiedItemAttr('shipBonusDreadnoughtA3'), skill='Amarr Dreadnought', **kwargs) class Effect6504(BaseEffect): """ shipBonusDreadnoughtC1DamageBonus Used by: Ships named like: Phoenix (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('emDamage', 'thermalDamage', 'kineticDamage', 'explosiveDamage'): fit.modules.filteredChargeBoost(lambda mod: (mod.charge.requiresSkill('XL Torpedoes') or mod.charge.requiresSkill('XL Cruise Missiles') or mod.charge.requiresSkill('Torpedoes')), attrName, src.getModifiedItemAttr('shipBonusDreadnoughtC1'), skill='Caldari Dreadnought', **kwargs) class Effect6505(BaseEffect): """ shipBonusDreadnoughtC2ShieldResists Used by: Variations of ship: Phoenix (3 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('shipBonusDreadnoughtC2'), skill='Caldari Dreadnought', **kwargs) fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('shipBonusDreadnoughtC2'), skill='Caldari Dreadnought', **kwargs) fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('shipBonusDreadnoughtC2'), skill='Caldari Dreadnought', **kwargs) fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusDreadnoughtC2'), skill='Caldari Dreadnought', **kwargs) class Effect6506(BaseEffect): """ shipBonusDreadnoughtG1DamageBonus Used by: Ship: Moros """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs) class Effect6507(BaseEffect): """ shipBonusDreadnoughtG2ROFBonus Used by: Variations of ship: Moros (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'speed', src.getModifiedItemAttr('shipBonusDreadnoughtG2'), skill='Gallente Dreadnought', **kwargs) class Effect6508(BaseEffect): """ shipBonusDreadnoughtG3RepairTime Used by: Variations of ship: Moros (3 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Repair Systems'), 'duration', src.getModifiedItemAttr('shipBonusDreadnoughtG3'), skill='Gallente Dreadnought', **kwargs) class Effect6509(BaseEffect): """ shipBonusDreadnoughtM1DamageBonus Used by: Ships named like: Naglfar (2 of 2) Ship: Sarathiel """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusDreadnoughtM1'), skill='Minmatar Dreadnought', **kwargs) class Effect6510(BaseEffect): """ shipBonusDreadnoughtM2ROFBonus Used by: Ships named like: Naglfar (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'speed', src.getModifiedItemAttr('shipBonusDreadnoughtM2'), skill='Minmatar Dreadnought', **kwargs) class Effect6511(BaseEffect): """ shipBonusDreadnoughtM3RepairTime Used by: Ship: Naglfar """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Operation'), 'duration', src.getModifiedItemAttr('shipBonusDreadnoughtM2'), skill='Minmatar Dreadnought', **kwargs) class Effect6513(BaseEffect): """ doomsdayAOEECM Used by: Module: ECM Jammer Burst Projector Structure Module: Standup ECM Jammer Burst Projector """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return strength = module.getModifiedItemAttr('scan{0}StrengthBonus'.format(fit.scanType)) if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict strength *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) fit.addProjectedEcm(strength) class Effect6526(BaseEffect): """ shipBonusForceAuxiliaryA1RemoteRepairAndCapAmount Used by: Ship: Apostle """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Capacitor Emission Systems'), 'powerTransferAmount', src.getModifiedItemAttr('shipBonusForceAuxiliaryA1'), skill='Amarr Carrier', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Remote Armor Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusForceAuxiliaryA1'), skill='Amarr Carrier', **kwargs) class Effect6527(BaseEffect): """ shipBonusForceAuxiliaryA2ArmorResists Used by: Ship: Apostle """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorKineticDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryA2'), skill='Amarr Carrier', **kwargs) fit.ship.boostItemAttr('armorExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryA2'), skill='Amarr Carrier', **kwargs) fit.ship.boostItemAttr('armorEmDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryA2'), skill='Amarr Carrier', **kwargs) fit.ship.boostItemAttr('armorThermalDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryA2'), skill='Amarr Carrier', **kwargs) class Effect6533(BaseEffect): """ shipBonusForceAuxiliaryA4WarfareLinksBonus Used by: Ship: Apostle """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryA4'), skill='Amarr Carrier', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryA4'), skill='Amarr Carrier', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryA4'), skill='Amarr Carrier', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusForceAuxiliaryA4'), skill='Amarr Carrier', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryA4'), skill='Amarr Carrier', **kwargs) class Effect6534(BaseEffect): """ shipBonusForceAuxiliaryM4WarfareLinksBonus Used by: Ship: Lif """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryM4'), skill='Minmatar Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryM4'), skill='Minmatar Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryM4'), skill='Minmatar Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusForceAuxiliaryM4'), skill='Minmatar Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryM4'), skill='Minmatar Carrier', **kwargs) class Effect6535(BaseEffect): """ shipBonusForceAuxiliaryG4WarfareLinksBonus Used by: Ship: Ninazu """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryG4'), skill='Gallente Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryG4'), skill='Gallente Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusForceAuxiliaryG4'), skill='Gallente Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryG4'), skill='Gallente Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryG4'), skill='Gallente Carrier', **kwargs) class Effect6536(BaseEffect): """ shipBonusForceAuxiliaryC4WarfareLinksBonus Used by: Ship: Minokawa """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryC4'), skill='Caldari Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryC4'), skill='Caldari Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryC4'), skill='Caldari Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusForceAuxiliaryC4'), skill='Caldari Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryC4'), skill='Caldari Carrier', **kwargs) class Effect6537(BaseEffect): """ shipBonusRole1CommandBurstCPUBonus Used by: Ships from group: Force Auxiliary (6 of 6) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'cpu', src.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect6545(BaseEffect): """ shipBonusForceAuxiliaryC1RemoteBoostAndCapAmount Used by: Ship: Minokawa """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): if src.getModifiedItemAttr('shipBonusForceAuxiliaryC1') is None: return # See GH Issue 1321 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Capacitor Emission Systems'), 'powerTransferAmount', src.getModifiedItemAttr('shipBonusForceAuxiliaryC1'), skill='Caldari Carrier', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Emission Systems'), 'shieldBonus', src.getModifiedItemAttr('shipBonusForceAuxiliaryC1'), skill='Caldari Carrier', **kwargs) class Effect6546(BaseEffect): """ shipBonusForceAuxiliaryC2ShieldResists Used by: Variations of ship: Minokawa (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryC2'), skill='Caldari Carrier', **kwargs) fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryC2'), skill='Caldari Carrier', **kwargs) fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryC2'), skill='Caldari Carrier', **kwargs) fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryC2'), skill='Caldari Carrier', **kwargs) class Effect6548(BaseEffect): """ shipBonusForceAuxiliaryG1RemoteCycleTime Used by: Ship: Ninazu """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Remote Armor Repair Systems') or mod.item.requiresSkill('Capital Shield Emission Systems'), 'duration', src.getModifiedItemAttr('shipBonusForceAuxiliaryG1'), skill='Gallente Carrier', **kwargs) class Effect6549(BaseEffect): """ shipBonusForceAuxiliaryG2LocalRepairAmount Used by: Ship: Ninazu """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusForceAuxiliaryG2'), skill='Gallente Carrier', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusForceAuxiliaryG2'), skill='Gallente Carrier', **kwargs) class Effect6551(BaseEffect): """ shipBonusForceAuxiliaryM1RemoteDuration Used by: Ship: Lif """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Shield Emission Systems') or mod.item.requiresSkill('Capital Remote Armor Repair Systems'), 'duration', src.getModifiedItemAttr('shipBonusForceAuxiliaryM1'), skill='Minmatar Carrier', **kwargs) class Effect6552(BaseEffect): """ shipBonusForceAuxiliaryM2LocalBoostAmount Used by: Ship: Lif """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('shipBonusForceAuxiliaryM2'), skill='Minmatar Carrier', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('shipBonusForceAuxiliaryM2'), skill='Minmatar Carrier', **kwargs) class Effect6555(BaseEffect): """ moduleBonusDroneNavigationComputer Used by: Modules from group: Drone Navigation Computer (8 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'maxVelocity', src.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'maxVelocity', src.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) class Effect6556(BaseEffect): """ moduleBonusDroneDamageAmplifier Used by: Modules from group: Drone Damage Modules (12 of 12) Modules named like: C3 'Hivaa Saitsuo' Ballistic Control System (2 of 2) Module: Abyssal Ballistic Control System """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('droneDamageBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('droneDamageBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('droneDamageBonus'), stackingPenalties=True, **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('droneDamageBonus'), stackingPenalties=True, **kwargs) class Effect6557(BaseEffect): """ moduleBonusOmnidirectionalTrackingLink Used by: Modules from group: Drone Tracking Modules (10 of 10) """ type = 'active' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretRangeFalloff', src.getModifiedItemAttr('falloffBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesExplosionVelocity', src.getModifiedItemAttr('aoeVelocityBonus'), stackingPenalties=True, **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'trackingSpeed', src.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileExplosionRadius', src.getModifiedItemAttr('aoeCloudSizeBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretTrackingSpeed', src.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesExplosionRadius', src.getModifiedItemAttr('aoeCloudSizeBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesRange', src.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileRangeOptimal', src.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True, **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'falloff', src.getModifiedItemAttr('falloffBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileExplosionVelocity', src.getModifiedItemAttr('aoeVelocityBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileRangeFalloff', src.getModifiedItemAttr('falloffBonus'), stackingPenalties=True, **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'maxRange', src.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretRangeOptimal', src.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True, **kwargs) class Effect6558(BaseEffect): """ moduleBonusOmnidirectionalTrackingLinkOverload Used by: Modules from group: Drone Tracking Modules (10 of 10) """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): overloadBonus = module.getModifiedItemAttr('overloadTrackingModuleStrengthBonus') module.boostItemAttr('maxRangeBonus', overloadBonus, **kwargs) module.boostItemAttr('falloffBonus', overloadBonus, **kwargs) module.boostItemAttr('trackingSpeedBonus', overloadBonus, **kwargs) module.boostItemAttr('aoeCloudSizeBonus', overloadBonus, **kwargs) module.boostItemAttr('aoeVelocityBonus', overloadBonus, **kwargs) class Effect6559(BaseEffect): """ moduleBonusOmnidirectionalTrackingEnhancer Used by: Modules from group: Drone Tracking Enhancer (10 of 10) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileExplosionRadius', src.getModifiedItemAttr('aoeCloudSizeBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileRangeOptimal', src.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretRangeFalloff', src.getModifiedItemAttr('falloffBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesExplosionRadius', src.getModifiedItemAttr('aoeCloudSizeBonus'), stackingPenalties=True, **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'falloff', src.getModifiedItemAttr('falloffBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileRangeFalloff', src.getModifiedItemAttr('falloffBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretTrackingSpeed', src.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=True, **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'maxRange', src.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True, **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'trackingSpeed', src.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretRangeOptimal', src.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesExplosionVelocity', src.getModifiedItemAttr('aoeVelocityBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileExplosionVelocity', src.getModifiedItemAttr('aoeVelocityBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesRange', src.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True, **kwargs) class Effect6560(BaseEffect): """ skillBonusFighters Used by: Skill: Fighters """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) class Effect6561(BaseEffect): """ skillBonusLightFighters Used by: Skill: Light Fighters """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Light Fighters'), 'maxVelocity', src.getModifiedItemAttr('maxVelocityBonus') * lvl, **kwargs) class Effect6562(BaseEffect): """ skillBonusSupportFightersShield Used by: Skill: Support Fighters """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'shieldCapacity', src.getModifiedItemAttr('shieldBonus') * lvl, **kwargs) class Effect6563(BaseEffect): """ skillBonusHeavyFighters Used by: Skill: Heavy Fighters """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Heavy Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Heavy Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Heavy Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) class Effect6565(BaseEffect): """ citadelRigBonus Used by: Structures from group: Citadel (9 of 9) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attr in [ 'structureRigDoomsdayDamageLossTargetBonus', 'structureRigScanResBonus', 'structureRigPDRangeBonus', 'structureRigPDCapUseBonus', 'structureRigMissileExploVeloBonus', 'structureRigMissileVelocityBonus', 'structureRigEwarOptimalBonus', 'structureRigEwarFalloffBonus', 'structureRigEwarCapUseBonus', 'structureRigMissileExplosionRadiusBonus' ]: fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Jury Rigging'), attr, src.getModifiedItemAttr('structureRoleBonus'), **kwargs) class Effect6566(BaseEffect): """ moduleBonusFighterSupportUnit Used by: Modules from group: Fighter Support Unit (10 of 10) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Fighters'), 'shieldCapacity', src.getModifiedItemAttr('fighterBonusShieldCapacityPercent'), **kwargs) fit.fighters.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Fighters'), 'maxVelocity', src.getModifiedItemAttr('fighterBonusVelocityPercent'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) fit.fighters.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDuration', src.getModifiedItemAttr('fighterBonusROFPercent'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) fit.fighters.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDuration', src.getModifiedItemAttr('fighterBonusROFPercent'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) fit.fighters.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDuration', src.getModifiedItemAttr('fighterBonusROFPercent'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) fit.fighters.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Fighters'), 'shieldRechargeRate', src.getModifiedItemAttr('fighterBonusShieldRechargePercent'), **kwargs) class Effect6567(BaseEffect): """ moduleBonusNetworkedSensorArray Used by: Module: Networked Sensor Array """ type = 'active' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('scanResolution', src.getModifiedItemAttr('scanResolutionBonus'), stackingPenalties=True, **kwargs) for scanType in ('Magnetometric', 'Ladar', 'Gravimetric', 'Radar'): attr = 'scan{}Strength'.format(scanType) bonus = src.getModifiedItemAttr('scan{}StrengthPercent'.format(scanType)) fit.ship.boostItemAttr(attr, bonus, stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), attr, bonus, stackingPenalties=True, **kwargs) # EW cap need increase groups = [ 'Burst Jammer', 'Weapon Disruptor', 'ECM', 'Stasis Grappler', 'Sensor Dampener', 'Target Painter'] fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups or mod.item.requiresSkill('Propulsion Jamming'), 'capacitorNeed', src.getModifiedItemAttr('ewCapacitorNeedBonus'), **kwargs) fit.modules.filteredItemIncrease( lambda mod: mod.item.requiresSkill('Capital Micro Jump Drive Operation'), 'activationBlocked', src.getModifiedItemAttr('networkedSensorArrayDisallowCapitalMicroJump'), **kwargs) class Effect6570(BaseEffect): """ skillBonusFighterHangarManagement Used by: Skill: Fighter Hangar Management """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.ship.boostItemAttr('fighterCapacity', src.getModifiedItemAttr('skillBonusFighterHangarSize') * lvl, **kwargs) class Effect6571(BaseEffect): """ skillBonusCapitalAutocannonSpecialization Used by: Skill: Capital Autocannon Specialization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Autocannon Specialization'), 'damageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) class Effect6572(BaseEffect): """ skillBonusCapitalArtillerySpecialization Used by: Skill: Capital Artillery Specialization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Artillery Specialization'), 'damageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) class Effect6573(BaseEffect): """ skillBonusCapitalBlasterSpecialization Used by: Skill: Capital Blaster Specialization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Blaster Specialization'), 'damageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) class Effect6574(BaseEffect): """ skillBonusCapitalRailgunSpecialization Used by: Skill: Capital Railgun Specialization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Railgun Specialization'), 'damageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) class Effect6575(BaseEffect): """ skillBonusCapitalPulseLaserSpecialization Used by: Skill: Capital Pulse Laser Specialization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Pulse Laser Specialization'), 'damageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) class Effect6576(BaseEffect): """ skillBonusCapitalBeamLaserSpecialization Used by: Skill: Capital Beam Laser Specialization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Beam Laser Specialization'), 'damageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) class Effect6577(BaseEffect): """ skillBonusXLCruiseMissileSpecialization Used by: Skill: XL Cruise Missile Specialization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('XL Cruise Missile Specialization'), 'speed', src.getModifiedItemAttr('rofBonus') * lvl, **kwargs) class Effect6578(BaseEffect): """ skillBonusXLTorpedoSpecialization Used by: Skill: XL Torpedo Specialization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('XL Torpedo Specialization'), 'speed', src.getModifiedItemAttr('rofBonus') * lvl, **kwargs) class Effect6580(BaseEffect): """ shipBonusRole2LogisticDroneRepAmountBonus Used by: Ships from group: Force Auxiliary (5 of 6) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'), 'structureDamageAmount', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'), 'shieldBonus', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) class Effect6581(BaseEffect): """ moduleBonusTriageModule Used by: Variations of module: Triage Module I (2 of 2) """ runTime = 'early' type = 'active' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): # Remote effect bonuses (duration / amount / range / falloff) for skill, amtAttr, stack in ( ('Capital Remote Armor Repair Systems', 'armorDamageAmount', True), ('Capital Shield Emission Systems', 'shieldBonus', True), ('Capital Capacitor Emission Systems', 'powerTransferAmount', False), ('Capital Remote Hull Repair Systems', 'structureDamageAmount', False)): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), 'duration', src.getModifiedItemAttr('siegeRemoteLogisticsDurationBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), amtAttr, src.getModifiedItemAttr('siegeRemoteLogisticsAmountBonus'), stackingPenalties=stack, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), 'maxRange', src.getModifiedItemAttr('siegeRemoteLogisticsRangeBonus'), stackingPenalties=True, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), 'falloffEffectiveness', src.getModifiedItemAttr('siegeRemoteLogisticsRangeBonus'), stackingPenalties=True, **kwargs) # Local armor/shield rep effects (duration / amount) for skill, amtAttr in ( ('Capital Shield Operation', 'shieldBonus'), ('Capital Repair Systems', 'armorDamageAmount')): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), 'duration', src.getModifiedItemAttr('siegeLocalLogisticsDurationBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), amtAttr, src.getModifiedItemAttr('siegeLocalLogisticsAmountBonus'), stackingPenalties=True, **kwargs) # Speed bonus fit.ship.boostItemAttr('maxVelocity', src.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) # Scan resolution multiplier fit.ship.multiplyItemAttr('scanResolution', src.getModifiedItemAttr('scanResolutionMultiplier'), stackingPenalties=True, **kwargs) # Mass multiplier fit.ship.multiplyItemAttr('mass', src.getModifiedItemAttr('siegeMassMultiplier'), stackingPenalties=True, **kwargs) # Max locked targets fit.ship.increaseItemAttr('maxLockedTargets', src.getModifiedItemAttr('maxLockedTargetsBonus'), **kwargs) # EW cap need increase groups = [ 'Burst Jammer', 'Weapon Disruptor', 'ECM', 'Stasis Grappler', 'Sensor Dampener', 'Target Painter'] fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups or mod.item.requiresSkill('Propulsion Jamming'), 'capacitorNeed', src.getModifiedItemAttr('ewCapacitorNeedBonus'), **kwargs) # todo: test for April 2016 release # Block EWAR & projected effects fit.ship.forceItemAttr('disallowOffensiveModifiers', src.getModifiedItemAttr('disallowOffensiveModifiers'), **kwargs) fit.ship.forceItemAttr('disallowAssistance', src.getModifiedItemAttr('disallowAssistance'), **kwargs) # new in April 2016 release fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('droneDamageBonus'), stackingPenalties=True, **kwargs) fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) fit.ship.boostItemAttr('sensorDampenerResistance', src.getModifiedItemAttr('sensorDampenerResistanceBonus'), **kwargs) fit.ship.boostItemAttr('remoteAssistanceImpedance', src.getModifiedItemAttr('remoteAssistanceImpedanceBonus'), **kwargs) fit.ship.boostItemAttr('remoteRepairImpedance', src.getModifiedItemAttr('remoteRepairImpedanceBonus'), **kwargs) fit.ship.forceItemAttr('disallowTethering', src.getModifiedItemAttr('disallowTethering'), **kwargs) fit.ship.forceItemAttr('disallowDocking', src.getModifiedItemAttr('disallowDocking'), **kwargs) class Effect6582(BaseEffect): """ moduleBonusSiegeModule Used by: Modules named like: Siege Module (4 of 4) """ runTime = 'early' type = 'active' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): # Turrets fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Energy Turret') or mod.item.requiresSkill('Capital Hybrid Turret') or mod.item.requiresSkill('Capital Projectile Turret') or mod.item.requiresSkill('Capital Precursor Weapon'), 'damageMultiplier', src.getModifiedItemAttr('siegeTurretDamageBonus'), **kwargs) # Missiles for type in ('kinetic', 'thermal', 'explosive', 'em'): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes') or mod.charge.requiresSkill('XL Cruise Missiles') or mod.charge.requiresSkill('Torpedoes'), '%sDamage' % type, src.getModifiedItemAttr('siegeMissileDamageBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('XL Torpedoes') or mod.item.requiresSkill('XL Cruise Missiles'), 'speed', src.getModifiedItemAttr('siegeLauncherROFBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rapid Torpedo', 'speed', src.getModifiedItemAttr('siegeHAWMissileROFBonus'), stackingPenalties=True, penaltyGroup='postPercent', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'maxVelocity', src.getModifiedItemAttr('siegeTorpedoVelocityBonus'), stackingPenalties=True, **kwargs) # Tank fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Operation') or mod.item.requiresSkill('Capital Repair Systems'), 'duration', src.getModifiedItemAttr('siegeLocalLogisticsDurationBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('siegeLocalLogisticsAmountBonus'), stackingPenalties=True, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('siegeLocalLogisticsAmountBonus'), stackingPenalties=True, **kwargs) # Mobility & safety penalties fit.ship.boostItemAttr('maxVelocity', src.getModifiedItemAttr('speedFactor'), **kwargs) fit.ship.multiplyItemAttr('mass', src.getModifiedItemAttr('siegeMassMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) fit.ship.forceItemAttr('disallowDocking', src.getModifiedItemAttr('disallowDocking'), **kwargs) fit.ship.forceItemAttr('disallowTethering', src.getModifiedItemAttr('disallowTethering'), **kwargs) # Ewar and assistance resistances fit.ship.boostItemAttr('remoteRepairImpedance', src.getModifiedItemAttr('remoteRepairImpedanceBonus'), **kwargs) fit.ship.boostItemAttr('sensorDampenerResistance', src.getModifiedItemAttr('sensorDampenerResistanceBonus'), **kwargs) fit.ship.boostItemAttr('remoteAssistanceImpedance', src.getModifiedItemAttr('remoteAssistanceImpedanceBonus'), **kwargs) fit.ship.boostItemAttr('weaponDisruptionResistance', src.getModifiedItemAttr('weaponDisruptionResistanceBonus'), **kwargs) class Effect6591(BaseEffect): """ shipBonusSupercarrierA3WarpStrength Used by: Ship: Aeon Ship: Revenant """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusSupercarrierA3'), skill='Amarr Carrier', **kwargs) class Effect6592(BaseEffect): """ shipBonusSupercarrierC3WarpStrength Used by: Ship: Revenant Ship: Wyvern """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusSupercarrierC3'), skill='Caldari Carrier', **kwargs) class Effect6593(BaseEffect): """ shipBonusSupercarrierG3WarpStrength Used by: Variations of ship: Nyx (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusSupercarrierG3'), skill='Gallente Carrier', **kwargs) class Effect6594(BaseEffect): """ shipBonusSupercarrierM3WarpStrength Used by: Ship: Hel Ship: Vendetta """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusSupercarrierM3'), skill='Minmatar Carrier', **kwargs) class Effect6595(BaseEffect): """ shipBonusCarrierA4WarfareLinksBonus Used by: Ship: Archon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusCarrierA4'), skill='Amarr Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusCarrierA4'), skill='Amarr Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusCarrierA4'), skill='Amarr Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusCarrierA4'), skill='Amarr Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusCarrierA4'), skill='Amarr Carrier', **kwargs) class Effect6596(BaseEffect): """ shipBonusCarrierC4WarfareLinksBonus Used by: Ship: Chimera """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusCarrierC4'), skill='Caldari Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusCarrierC4'), skill='Caldari Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusCarrierC4'), skill='Caldari Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusCarrierC4'), skill='Caldari Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusCarrierC4'), skill='Caldari Carrier', **kwargs) class Effect6597(BaseEffect): """ shipBonusCarrierG4WarfareLinksBonus Used by: Ship: Thanatos """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusCarrierG4'), skill='Gallente Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusCarrierG4'), skill='Gallente Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusCarrierG4'), skill='Gallente Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusCarrierG4'), skill='Gallente Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusCarrierG4'), skill='Gallente Carrier', **kwargs) class Effect6598(BaseEffect): """ shipBonusCarrierM4WarfareLinksBonus Used by: Ship: Nidhoggur """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusCarrierM4'), skill='Minmatar Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusCarrierM4'), skill='Minmatar Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusCarrierM4'), skill='Minmatar Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusCarrierM4'), skill='Minmatar Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusCarrierM4'), skill='Minmatar Carrier', **kwargs) class Effect6599(BaseEffect): """ shipBonusCarrierA1ArmorResists Used by: Ship: Archon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorKineticDamageResonance', src.getModifiedItemAttr('shipBonusCarrierA1'), skill='Amarr Carrier', **kwargs) fit.ship.boostItemAttr('armorEmDamageResonance', src.getModifiedItemAttr('shipBonusCarrierA1'), skill='Amarr Carrier', **kwargs) fit.ship.boostItemAttr('armorExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusCarrierA1'), skill='Amarr Carrier', **kwargs) fit.ship.boostItemAttr('armorThermalDamageResonance', src.getModifiedItemAttr('shipBonusCarrierA1'), skill='Amarr Carrier', **kwargs) class Effect6600(BaseEffect): """ shipBonusCarrierC1ShieldResists Used by: Ship: Chimera """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('shipBonusCarrierC1'), skill='Caldari Carrier', **kwargs) fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('shipBonusCarrierC1'), skill='Caldari Carrier', **kwargs) fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('shipBonusCarrierC1'), skill='Caldari Carrier', **kwargs) fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusCarrierC1'), skill='Caldari Carrier', **kwargs) class Effect6601(BaseEffect): """ shipBonusCarrierG1FighterDamage Used by: Ship: Thanatos """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('shipBonusCarrierG1'), skill='Gallente Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('shipBonusCarrierG1'), skill='Gallente Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('shipBonusCarrierG1'), skill='Gallente Carrier', **kwargs) class Effect6602(BaseEffect): """ shipBonusCarrierM1FighterDamage Used by: Ship: Nidhoggur """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('shipBonusCarrierM1'), skill='Minmatar Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('shipBonusCarrierM1'), skill='Minmatar Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('shipBonusCarrierM1'), skill='Minmatar Carrier', **kwargs) class Effect6603(BaseEffect): """ shipBonusSupercarrierA1FighterDamage Used by: Ship: Aeon Ship: Revenant """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierA1'), skill='Amarr Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierA1'), skill='Amarr Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierA1'), skill='Amarr Carrier', **kwargs) class Effect6604(BaseEffect): """ shipBonusSupercarrierC1FighterDamage Used by: Ship: Revenant Ship: Wyvern """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierC1'), skill='Caldari Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierC1'), skill='Caldari Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierC1'), skill='Caldari Carrier', **kwargs) class Effect6605(BaseEffect): """ shipBonusSupercarrierG1FighterDamage Used by: Variations of ship: Nyx (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierG1'), skill='Gallente Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierG1'), skill='Gallente Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierG1'), skill='Gallente Carrier', **kwargs) class Effect6606(BaseEffect): """ shipBonusSupercarrierM1FighterDamage Used by: Ship: Hel """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierM1'), skill='Minmatar Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierM1'), skill='Minmatar Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierM1'), skill='Minmatar Carrier', **kwargs) class Effect6607(BaseEffect): """ shipBonusSupercarrierA5WarfareLinksBonus Used by: Ship: Aeon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusSupercarrierA5'), skill='Amarr Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusSupercarrierA5'), skill='Amarr Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusSupercarrierA5'), skill='Amarr Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusSupercarrierA5'), skill='Amarr Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusSupercarrierA5'), skill='Amarr Carrier', **kwargs) class Effect6608(BaseEffect): """ shipBonusSupercarrierC5WarfareLinksBonus Used by: Ship: Wyvern """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusSupercarrierC5'), skill='Caldari Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusSupercarrierC5'), skill='Caldari Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusSupercarrierC5'), skill='Caldari Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusSupercarrierC5'), skill='Caldari Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusSupercarrierC5'), skill='Caldari Carrier', **kwargs) class Effect6609(BaseEffect): """ shipBonusSupercarrierG5WarfareLinksBonus Used by: Ship: Nyx """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusSupercarrierG5'), skill='Gallente Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusSupercarrierG5'), skill='Gallente Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusSupercarrierG5'), skill='Gallente Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusSupercarrierG5'), skill='Gallente Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusSupercarrierG5'), skill='Gallente Carrier', **kwargs) class Effect6610(BaseEffect): """ shipBonusSupercarrierM5WarfareLinksBonus Used by: Ship: Hel """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusSupercarrierM5'), skill='Minmatar Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusSupercarrierM5'), skill='Minmatar Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusSupercarrierM5'), skill='Minmatar Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusSupercarrierM5'), skill='Minmatar Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusSupercarrierM5'), skill='Minmatar Carrier', **kwargs) class Effect6611(BaseEffect): """ shipBonusSupercarrierC2AfterburnerBonus Used by: Ship: Revenant """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'speedFactor', src.getModifiedItemAttr('shipBonusSupercarrierC2'), skill='Caldari Carrier', **kwargs) class Effect6612(BaseEffect): """ shipBonusSupercarrierA2FighterApplicationBonus Used by: Ship: Revenant """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesExplosionVelocity', src.getModifiedItemAttr('shipBonusSupercarrierA2'), skill='Amarr Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileExplosionVelocity', src.getModifiedItemAttr('shipBonusSupercarrierA2'), skill='Amarr Carrier', **kwargs) class Effect6613(BaseEffect): """ shipBonusSupercarrierRole1NumWarfareLinks Used by: Ships from group: Supercarrier (6 of 6) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupOnline', src.getModifiedItemAttr('shipBonusRole1'), **kwargs) fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupActive', src.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect6614(BaseEffect): """ shipBonusSupercarrierRole2ArmorShieldModuleBonus Used by: Ships from group: Supercarrier (6 of 6) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'armorHPBonusAdd', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Upgrades'), 'capacityBonus', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) class Effect6615(BaseEffect): """ shipBonusSupercarrierA4BurstProjectorBonus Used by: Ship: Aeon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation'), 'durationWeaponDisruptionBurstProjector', src.getModifiedItemAttr('shipBonusSupercarrierA4'), skill='Amarr Carrier', **kwargs) class Effect6616(BaseEffect): """ shipBonusSupercarrierC4BurstProjectorBonus Used by: Ship: Wyvern """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation'), 'durationECMJammerBurstProjector', src.getModifiedItemAttr('shipBonusSupercarrierC4'), skill='Caldari Carrier', **kwargs) class Effect6617(BaseEffect): """ shipBonusSupercarrierG4BurstProjectorBonus Used by: Ship: Nyx """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation'), 'durationSensorDampeningBurstProjector', src.getModifiedItemAttr('shipBonusSupercarrierG4'), skill='Gallente Carrier', **kwargs) class Effect6618(BaseEffect): """ shipBonusSupercarrierM4BurstProjectorBonus Used by: Ship: Hel """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation'), 'durationTargetIlluminationBurstProjector', src.getModifiedItemAttr('shipBonusSupercarrierM4'), skill='Minmatar Carrier', **kwargs) class Effect6619(BaseEffect): """ shipBonusCarrierRole1NumWarfareLinks Used by: Ships from group: Carrier (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupOnline', src.getModifiedItemAttr('shipBonusRole1'), **kwargs) fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupActive', src.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect6620(BaseEffect): """ shipBonusDreadnoughtC3ReloadBonus Used by: Ships named like: Phoenix (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'reloadTime', src.getModifiedItemAttr('shipBonusDreadnoughtC3'), skill='Caldari Dreadnought', **kwargs) class Effect6621(BaseEffect): """ shipBonusSupercarrierA2ArmorResists Used by: Ship: Aeon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierA2'), skill='Amarr Carrier', **kwargs) fit.ship.boostItemAttr('armorEmDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierA2'), skill='Amarr Carrier', **kwargs) fit.ship.boostItemAttr('armorThermalDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierA2'), skill='Amarr Carrier', **kwargs) fit.ship.boostItemAttr('armorKineticDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierA2'), skill='Amarr Carrier', **kwargs) class Effect6622(BaseEffect): """ shipBonusSupercarrierC2ShieldResists Used by: Ship: Wyvern """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierC2'), skill='Caldari Carrier', **kwargs) fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierC2'), skill='Caldari Carrier', **kwargs) fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierC2'), skill='Caldari Carrier', **kwargs) fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierC2'), skill='Caldari Carrier', **kwargs) class Effect6623(BaseEffect): """ shipBonusSupercarrierG2FighterHitpoints Used by: Variations of ship: Nyx (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'shieldCapacity', src.getModifiedItemAttr('shipBonusSupercarrierG2'), skill='Gallente Carrier', **kwargs) class Effect6624(BaseEffect): """ shipBonusSupercarrierM2FighterVelocity Used by: Ship: Hel Ship: Vendetta """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'maxVelocity', src.getModifiedItemAttr('shipBonusSupercarrierM2'), skill='Minmatar Carrier', **kwargs) class Effect6625(BaseEffect): """ shipBonusCarrierA2SupportFighterBonusRange Used by: Ship: Archon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterSquadronOrbitRange', src.getModifiedItemAttr('shipBonusCarrierA2'), skill='Amarr Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterAbilityEnergyNeutralizerOptimalRange', src.getModifiedItemAttr('shipBonusCarrierA2'), skill='Amarr Carrier', **kwargs) class Effect6626(BaseEffect): """ shipBonusCarrierC2SupportFighterBonusRange Used by: Ship: Chimera """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterSquadronOrbitRange', src.getModifiedItemAttr('shipBonusCarrierC2'), skill='Caldari Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterAbilityECMRangeOptimal', src.getModifiedItemAttr('shipBonusCarrierC2'), skill='Caldari Carrier', **kwargs) class Effect6627(BaseEffect): """ shipBonusCarrierG2SupportFighterBonusRange Used by: Ship: Thanatos """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterSquadronOrbitRange', src.getModifiedItemAttr('shipBonusCarrierG2'), skill='Gallente Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterAbilityWarpDisruptionRange', src.getModifiedItemAttr('shipBonusCarrierG2'), skill='Gallente Carrier', **kwargs) class Effect6628(BaseEffect): """ shipBonusCarrierM2SupportFighterBonusRange Used by: Ship: Nidhoggur """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterSquadronOrbitRange', src.getModifiedItemAttr('shipBonusCarrierM2'), skill='Minmatar Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterAbilityStasisWebifierOptimalRange', src.getModifiedItemAttr('shipBonusCarrierM2'), skill='Minmatar Carrier', **kwargs) class Effect6629(BaseEffect): """ scriptResistanceBonusBonus Used by: Charges named like: Resistance Script (8 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): src.boostItemAttr('emDamageResistanceBonus', src.getModifiedChargeAttr('emDamageResistanceBonusBonus'), **kwargs) src.boostItemAttr('explosiveDamageResistanceBonus', src.getModifiedChargeAttr('explosiveDamageResistanceBonusBonus'), **kwargs) src.boostItemAttr('kineticDamageResistanceBonus', src.getModifiedChargeAttr('kineticDamageResistanceBonusBonus'), **kwargs) src.boostItemAttr('thermalDamageResistanceBonus', src.getModifiedChargeAttr('thermalDamageResistanceBonusBonus'), **kwargs) class Effect6634(BaseEffect): """ shipBonusTitanA1DamageBonus Used by: Ship: Avatar """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Energy Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusTitanA1'), skill='Amarr Titan', **kwargs) class Effect6635(BaseEffect): """ shipBonusTitanC1KinDamageBonus Used by: Ship: Leviathan """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'kineticDamage', src.getModifiedItemAttr('shipBonusTitanC1'), skill='Caldari Titan', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'kineticDamage', src.getModifiedItemAttr('shipBonusTitanC1'), skill='Caldari Titan', **kwargs) class Effect6636(BaseEffect): """ shipBonusTitanG1DamageBonus Used by: Ship: Erebus """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusTitanG1'), skill='Gallente Titan', **kwargs) class Effect6637(BaseEffect): """ shipBonusTitanM1DamageBonus Used by: Ship: Azariel Ship: Ragnarok """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusTitanM1'), skill='Minmatar Titan', **kwargs) class Effect6638(BaseEffect): """ shipBonusTitanC2ROFBonus Used by: Variations of ship: Leviathan (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher XL Cruise', 'speed', src.getModifiedItemAttr('shipBonusTitanC2'), skill='Caldari Titan', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher XL Torpedo', 'speed', src.getModifiedItemAttr('shipBonusTitanC2'), skill='Caldari Titan', **kwargs) class Effect6639(BaseEffect): """ shipBonusSupercarrierA4FighterApplicationBonus Used by: Ship: Revenant """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesExplosionRadius', src.getModifiedItemAttr('shipBonusSupercarrierA4'), skill='Amarr Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileExplosionRadius', src.getModifiedItemAttr('shipBonusSupercarrierA4'), skill='Amarr Carrier', **kwargs) class Effect6640(BaseEffect): """ shipBonusRole1NumWarfareLinks Used by: Ships from group: Titan (8 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupOnline', src.getModifiedItemAttr('shipBonusRole1'), **kwargs) fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupActive', src.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect6641(BaseEffect): """ shipBonusRole2ArmorPlates&ShieldExtendersBonus Used by: Ships from group: Titan (8 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'armorHPBonusAdd', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Upgrades'), 'capacityBonus', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) class Effect6642(BaseEffect): """ skillBonusDoomsdayRapidFiring Used by: Skill: Doomsday Rapid Firing """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Doomsday Operation'), 'duration', src.getModifiedItemAttr('rofBonus') * lvl, **kwargs) class Effect6647(BaseEffect): """ shipBonusTitanA3WarpStrength Used by: Variations of ship: Avatar (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusTitanA3'), skill='Amarr Titan', **kwargs) class Effect6648(BaseEffect): """ shipBonusTitanC3WarpStrength Used by: Variations of ship: Leviathan (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusTitanC3'), skill='Caldari Titan', **kwargs) class Effect6649(BaseEffect): """ shipBonusTitanG3WarpStrength Used by: Ships from group: Titan (4 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusTitanG3'), skill='Gallente Titan', **kwargs) class Effect6650(BaseEffect): """ shipBonusTitanM3WarpStrength Used by: Ships from group: Titan (4 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusTitanM3'), skill='Minmatar Titan', **kwargs) class Effect6651(BaseEffect): """ shipModuleAncillaryRemoteArmorRepairer Used by: Modules from group: Ancillary Remote Armor Repairer (4 of 4) """ runTime = 'late' type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowAssistance'): return if module.charge and module.charge.name == 'Nanite Repair Paste': multiplier = 3 else: multiplier = 1 amount = module.getModifiedItemAttr('armorDamageAmount') * multiplier amount *= calculateRangeFactor( srcOptimalRange=module.getModifiedItemAttr('maxRange'), srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) speed = module.getModifiedItemAttr('duration') / 1000.0 fit._armorRr.append((amount, speed)) fit._armorRrPreSpool.append((amount, speed)) fit._armorRrFullSpool.append((amount, speed)) class Effect6652(BaseEffect): """ shipModuleAncillaryRemoteShieldBooster Used by: Modules from group: Ancillary Remote Shield Booster (4 of 4) """ runTime = 'late' type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowAssistance'): return amount = module.getModifiedItemAttr('shieldBonus') amount *= calculateRangeFactor( srcOptimalRange=module.getModifiedItemAttr('maxRange'), srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) speed = module.getModifiedItemAttr('duration') / 1000.0 fit._shieldRr.append((amount, speed)) class Effect6653(BaseEffect): """ shipBonusTitanA2CapNeed Used by: Ship: Avatar """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Energy Turret'), 'capacitorNeed', src.getModifiedItemAttr('shipBonusTitanA2'), skill='Amarr Titan', **kwargs) class Effect6654(BaseEffect): """ shipBonusTitanG2ROFBonus Used by: Variations of ship: Erebus (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'speed', src.getModifiedItemAttr('shipBonusTitanG2'), skill='Gallente Titan', **kwargs) class Effect6655(BaseEffect): """ shipBonusTitanM2ROFBonus Used by: Ship: Azariel Ship: Ragnarok """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'speed', src.getModifiedItemAttr('shipBonusTitanM2'), skill='Minmatar Titan', **kwargs) class Effect6657(BaseEffect): """ shipBonusTitanC5AllDamageBonus Used by: Ship: Leviathan """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusTitanC5'), skill='Caldari Titan', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'thermalDamage', src.getModifiedItemAttr('shipBonusTitanC5'), skill='Caldari Titan', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'emDamage', src.getModifiedItemAttr('shipBonusTitanC5'), skill='Caldari Titan', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'thermalDamage', src.getModifiedItemAttr('shipBonusTitanC5'), skill='Caldari Titan', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'emDamage', src.getModifiedItemAttr('shipBonusTitanC5'), skill='Caldari Titan', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusTitanC5'), skill='Caldari Titan', **kwargs) class Effect6658(BaseEffect): """ moduleBonusBastionModule Used by: Module: Bastion Module I """ runTime = 'early' type = 'active' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): # Resistances for layer, attrPrefix in (('shield', 'shield'), ('armor', 'armor'), ('hull', '')): for damageType in ('Kinetic', 'Thermal', 'Explosive', 'Em'): bonus = '%s%sDamageResonance' % (attrPrefix, damageType) bonus = '%s%s' % (bonus[0].lower(), bonus[1:]) booster = '%s%sDamageResonance' % (layer, damageType) penalize = False if layer == 'hull' else True fit.ship.multiplyItemAttr(bonus, src.getModifiedItemAttr(booster), stackingPenalties=penalize, penaltyGroup='preMul', **kwargs) # Turrets fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret') or mod.item.requiresSkill('Large Hybrid Turret') or mod.item.requiresSkill('Large Projectile Turret') or mod.item.requiresSkill('Large Precursor Weapon'), 'maxRange', src.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret') or mod.item.requiresSkill('Large Hybrid Turret') or mod.item.requiresSkill('Large Projectile Turret'), 'falloff', src.getModifiedItemAttr('falloffBonus'), stackingPenalties=True, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret') or mod.item.requiresSkill('Large Hybrid Turret') or mod.item.requiresSkill('Large Projectile Turret') or mod.item.requiresSkill('Large Precursor Weapon'), 'speed', src.getModifiedItemAttr('bastionTurretROFBonus'), stackingPenalties=True, penaltyGroup='postPerc', **kwargs) # Missiles fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes') or mod.charge.requiresSkill('Cruise Missiles') or mod.charge.requiresSkill('Heavy Missiles'), 'maxVelocity', src.getModifiedItemAttr('missileVelocityBonus'), stackingPenalties=True, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Cruise Missiles') or mod.item.requiresSkill('Torpedoes') or mod.item.requiresSkill('Torpedo Specialization') or mod.item.requiresSkill('Cruise Missile Specialization'), 'speed', src.getModifiedItemAttr('bastionMissileROFBonus'), stackingPenalties=True, penaltyGroup='postPerc', **kwargs) # Tanking fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('armorDamageAmountBonus'), stackingPenalties=True, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('shieldBoostMultiplier'), stackingPenalties=True, **kwargs) for attrName in ('duration', 'capacitorNeed'): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Operation') or mod.item.requiresSkill('Repair Systems'), attrName, src.getModifiedItemAttr('bastionModeArmorRepairAndShieldBoosterCapDurationBonus'), **kwargs) # Speed penalty fit.ship.boostItemAttr('maxVelocity', src.getModifiedItemAttr('speedFactor'), **kwargs) # new with April 2016 release for scanType in ('Magnetometric', 'Ladar', 'Gravimetric', 'Radar'): fit.ship.boostItemAttr('scan{}Strength'.format(scanType), src.getModifiedItemAttr('scan{}StrengthPercent'.format(scanType)), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('remoteRepairImpedance', src.getModifiedItemAttr('remoteRepairImpedanceBonus'), **kwargs) fit.ship.boostItemAttr('remoteAssistanceImpedance', src.getModifiedItemAttr('remoteAssistanceImpedanceBonus'), **kwargs) fit.ship.boostItemAttr('sensorDampenerResistance', src.getModifiedItemAttr('sensorDampenerResistanceBonus'), **kwargs) # This one was removed from expressions, but somehow MJD is still blocked, so leaving it here fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Micro Jump Drive Operation'), 'activationBlocked', src.getModifiedItemAttr('activationBlockedStrenght'), **kwargs) fit.ship.boostItemAttr('targetPainterResistance', src.getModifiedItemAttr('targetPainterResistanceBonus'), **kwargs) fit.ship.boostItemAttr('weaponDisruptionResistance', src.getModifiedItemAttr('weaponDisruptionResistanceBonus'), **kwargs) fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) fit.ship.forceItemAttr('disallowDocking', src.getModifiedItemAttr('disallowDocking'), **kwargs) fit.ship.forceItemAttr('disallowTethering', src.getModifiedItemAttr('disallowTethering'), **kwargs) class Effect6660(BaseEffect): """ higgsWarpBubbleImmuneRemoval Used by: Modules from group: Burst Jammer (11 of 11) Modules from group: Rig Anchor (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.forceItemAttr('warpBubbleImmune', ship.getModifiedItemAttr('warpBubbleImmuneModifier'), **kwargs) class Effect6661(BaseEffect): """ shipBonusCarrierM3FighterVelocity Used by: Ship: Nidhoggur """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'maxVelocity', src.getModifiedItemAttr('shipBonusCarrierM3'), skill='Minmatar Carrier', **kwargs) class Effect6662(BaseEffect): """ shipBonusCarrierG3FighterHitpoints Used by: Ship: Thanatos """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'shieldCapacity', src.getModifiedItemAttr('shipBonusCarrierG3'), skill='Gallente Carrier', **kwargs) class Effect6663(BaseEffect): """ skillBonusDroneInterfacing Used by: Skill: Drone Interfacing """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level if 'skill' in context else 1 fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Mining Drone Operation'), 'miningDroneAmountPercent', src.getModifiedItemAttr('miningAmountBonus') * lvl, **kwargs) class Effect6664(BaseEffect): """ skillBonusDroneSharpshooting Used by: Implants named like: Black Market 'Valdimar' Drone Sharpshooting DS (3 of 3) Skill: Drone Sharpshooting """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level if 'skill' in context else 1 fit.drones.filteredItemBoost( lambda mod: mod.item.requiresSkill('Drones'), 'maxRange', src.getModifiedItemAttr('rangeSkillBonus') * lvl, **kwargs) fit.fighters.filteredItemBoost( lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesRange', src.getModifiedItemAttr('rangeSkillBonus') * lvl, **kwargs) fit.fighters.filteredItemBoost( lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretRangeOptimal', src.getModifiedItemAttr('rangeSkillBonus') * lvl, **kwargs) fit.fighters.filteredItemBoost( lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileRangeOptimal', src.getModifiedItemAttr('rangeSkillBonus') * lvl, **kwargs) class Effect6665(BaseEffect): """ skillBonusDroneDurability Used by: Implants named like: Black Market 'Valdimar' Drone Durability DD (3 of 3) Implants named like: Halcyon B Booster (5 of 5) Skill: Drone Durability """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level if 'skill' in context else 1 fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'hp', src.getModifiedItemAttr('hullHpBonus') * lvl, **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'armorHP', src.getModifiedItemAttr('armorHpBonus') * lvl, **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'shieldCapacity', src.getModifiedItemAttr('shieldCapacityBonus') * lvl, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'shieldCapacity', src.getModifiedItemAttr('shieldCapacityBonus') * lvl, **kwargs) class Effect6667(BaseEffect): """ skillBonusDroneNavigation Used by: Implants named like: Black Market 'Valdimar' Drone Navigation DN (3 of 3) Skill: Drone Navigation """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level if 'skill' in context else 1 fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'maxVelocity', src.getModifiedItemAttr('maxVelocityBonus') * lvl, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'maxVelocity', src.getModifiedItemAttr('maxVelocityBonus') * lvl, **kwargs) class Effect6669(BaseEffect): """ moduleBonusCapitalDroneDurabilityEnhancer Used by: Variations of module: Capital Drone Durability Enhancer I (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'armorHP', src.getModifiedItemAttr('hullHpBonus'), **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'hp', src.getModifiedItemAttr('hullHpBonus'), **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'shieldCapacity', src.getModifiedItemAttr('hullHpBonus'), **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'shieldCapacity', src.getModifiedItemAttr('hullHpBonus'), **kwargs) fit.ship.boostItemAttr('cpuOutput', src.getModifiedItemAttr('drawback'), **kwargs) class Effect6670(BaseEffect): """ moduleBonusCapitalDroneScopeChip Used by: Variations of module: Capital Drone Scope Chip I (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'maxRange', src.getModifiedItemAttr('rangeSkillBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesRange', src.getModifiedItemAttr('rangeSkillBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretRangeOptimal', src.getModifiedItemAttr('rangeSkillBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileRangeOptimal', src.getModifiedItemAttr('rangeSkillBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('cpuOutput', src.getModifiedItemAttr('drawback'), **kwargs) class Effect6671(BaseEffect): """ moduleBonusCapitalDroneSpeedAugmentor Used by: Variations of module: Capital Drone Speed Augmentor I (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'maxVelocity', src.getModifiedItemAttr('droneMaxVelocityBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'maxVelocity', src.getModifiedItemAttr('droneMaxVelocityBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('cpuOutput', src.getModifiedItemAttr('drawback'), **kwargs) class Effect6672(BaseEffect): """ structureCombatRigSecurityModification Used by: Items from market group: Structure Modifications > Structure Combat Rigs (32 of 34) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): secMap = { FitSystemSecurity.HISEC: 'hiSecModifier', FitSystemSecurity.LOWSEC: 'lowSecModifier', FitSystemSecurity.NULLSEC: 'nullSecModifier', FitSystemSecurity.WSPACE: 'nullSecModifier'} fitSec = fit.getSystemSecurity() attrName = secMap[fitSec] secModifier = module.getModifiedItemAttr(attrName) module.multiplyItemAttr('structureRigDoomsdayDamageLossTargetBonus', secModifier, **kwargs) module.multiplyItemAttr('structureRigScanResBonus', secModifier, **kwargs) module.multiplyItemAttr('structureRigPDRangeBonus', secModifier, **kwargs) module.multiplyItemAttr('structureRigPDCapUseBonus', secModifier, **kwargs) module.multiplyItemAttr('structureRigMissileExploVeloBonus', secModifier, **kwargs) module.multiplyItemAttr('structureRigMissileVelocityBonus', secModifier, **kwargs) module.multiplyItemAttr('structureRigEwarOptimalBonus', secModifier, **kwargs) module.multiplyItemAttr('structureRigEwarFalloffBonus', secModifier, **kwargs) module.multiplyItemAttr('structureRigEwarCapUseBonus', secModifier, **kwargs) module.multiplyItemAttr('structureRigMissileExplosionRadiusBonus', secModifier, **kwargs) module.multiplyItemAttr('structureRigMaxTargetRangeBonus', secModifier, **kwargs) class Effect6679(BaseEffect): """ skillStructureDoomsdayDurationBonus Used by: Skill: Structure Doomsday Operation """ type = 'passive', 'structure' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Doomsday Weapon', 'duration', src.getModifiedItemAttr('durationBonus'), skill='Structure Doomsday Operation', **kwargs) class Effect6681(BaseEffect): """ shipBonusRole3NumWarfareLinks Used by: Ships from group: Force Auxiliary (6 of 6) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupOnline', src.getModifiedItemAttr('shipBonusRole3'), **kwargs) fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupActive', src.getModifiedItemAttr('shipBonusRole3'), **kwargs) class Effect6682(BaseEffect): """ structureModuleEffectStasisWebifier Used by: Structure Modules from group: Structure Stasis Webifier (2 of 2) """ type = 'active', 'projected' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return speedBoost = module.getModifiedItemAttr('speedFactor') speedBoost *= calculateRangeFactor( srcOptimalRange=module.getModifiedItemAttr('maxRange'), srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) fit.ship.boostItemAttr('maxVelocity', speedBoost, stackingPenalties=True, **kwargs) class Effect6683(BaseEffect): """ structureModuleEffectTargetPainter Used by: Variations of structure module: Standup Target Painter I (2 of 2) """ type = 'projected', 'active' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return appliedBoost = container.getModifiedItemAttr('signatureRadiusBonus') appliedBoost *= calculateRangeFactor( srcOptimalRange=container.getModifiedItemAttr('maxRange'), srcFalloffRange=container.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) fit.ship.boostItemAttr('signatureRadius', appliedBoost, stackingPenalties=True, **kwargs) class Effect6684(BaseEffect): """ structureModuleEffectRemoteSensorDampener Used by: Variations of structure module: Standup Remote Sensor Dampener I (2 of 2) """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return rangeFactor = calculateRangeFactor( srcOptimalRange=module.getModifiedItemAttr('maxRange'), srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRangeBonus') * rangeFactor, stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('scanResolution', module.getModifiedItemAttr('scanResolutionBonus') * rangeFactor, stackingPenalties=True, **kwargs) class Effect6685(BaseEffect): """ structureModuleEffectECM Used by: Structure Modules from group: Structure ECM Battery (3 of 3) """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return strength = module.getModifiedItemAttr('scan{0}StrengthBonus'.format(fit.scanType)) strength *= calculateRangeFactor( srcOptimalRange=module.getModifiedItemAttr('maxRange'), srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict strength *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) fit.addProjectedEcm(strength) class Effect6686(BaseEffect): """ structureModuleEffectWeaponDisruption Used by: Variations of structure module: Standup Weapon Disruptor I (2 of 2) """ type = 'active', 'projected' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return rangeFactor = calculateRangeFactor( srcOptimalRange=module.getModifiedItemAttr('maxRange'), srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) for srcAttr, tgtAttr in ( ('aoeCloudSizeBonus', 'aoeCloudSize'), ('aoeVelocityBonus', 'aoeVelocity'), ('missileVelocityBonus', 'maxVelocity'), ('explosionDelayBonus', 'explosionDelay') ): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), tgtAttr, module.getModifiedItemAttr(srcAttr) * rangeFactor, stackingPenalties=True, **kwargs) for srcAttr, tgtAttr in ( ('trackingSpeedBonus', 'trackingSpeed'), ('maxRangeBonus', 'maxRange'), ('falloffBonus', 'falloff') ): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), tgtAttr, module.getModifiedItemAttr(srcAttr) * rangeFactor, stackingPenalties=True, **kwargs) class Effect6687(BaseEffect): """ npcEntityRemoteArmorRepairer Used by: Drones named like: Armor Maintenance Bot (6 of 6) """ type = 'projected', 'active' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowAssistance'): return if container.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0): return bonus = container.getModifiedItemAttr('armorDamageAmount') duration = container.getModifiedItemAttr('duration') / 1000.0 fit._armorRr.append((bonus, duration)) fit._armorRrPreSpool.append((bonus, duration)) fit._armorRrFullSpool.append((bonus, duration)) class Effect6688(BaseEffect): """ npcEntityRemoteShieldBooster Used by: Drones named like: Shield Maintenance Bot (6 of 6) """ type = 'projected', 'active' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowAssistance'): return if container.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0): return bonus = container.getModifiedItemAttr('shieldBonus') duration = container.getModifiedItemAttr('duration') / 1000.0 fit._shieldRr.append((bonus, duration)) class Effect6689(BaseEffect): """ npcEntityRemoteHullRepairer Used by: Drones named like: Hull Maintenance Bot (6 of 6) """ runTime = 'late' type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowAssistance'): return if module.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0): return bonus = module.getModifiedItemAttr('structureDamageAmount') duration = module.getModifiedItemAttr('duration') / 1000.0 fit._hullRr.append((bonus, duration)) class Effect6690(BaseEffect): """ remoteWebifierEntity Used by: Drones from group: Stasis Webifying Drone (3 of 3) """ type = 'active', 'projected' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return if module.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0): return fit.ship.boostItemAttr('maxVelocity', module.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) class Effect6691(BaseEffect): """ entityEnergyNeutralizerFalloff Used by: Drones from group: Energy Neutralizer Drone (3 of 3) """ type = 'active', 'projected' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): if 'projected' not in context: return if not ((hasattr(src, 'state') and src.state >= FittingModuleState.ACTIVE) or hasattr(src, 'amountActive')): return if src.getModifiedItemAttr('energyNeutralizerRangeOptimal', 0) < (projectionRange or 0): return amount = src.getModifiedItemAttr('energyNeutralizerAmount') if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict amount *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) time = src.getModifiedItemAttr('energyNeutralizerDuration') fit.addDrain(src, time, amount, 0) class Effect6692(BaseEffect): """ remoteTargetPaintEntity Used by: Drones named like: TP (3 of 3) """ type = 'projected', 'active' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return if container.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0): return fit.ship.boostItemAttr('signatureRadius', container.getModifiedItemAttr('signatureRadiusBonus'), stackingPenalties=True, **kwargs) class Effect6693(BaseEffect): """ remoteSensorDampEntity Used by: Drones named like: SD (3 of 3) """ type = 'projected', 'active' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return if container.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0): return fit.ship.boostItemAttr('maxTargetRange', container.getModifiedItemAttr('maxTargetRangeBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('scanResolution', container.getModifiedItemAttr('scanResolutionBonus'), stackingPenalties=True, **kwargs) class Effect6694(BaseEffect): """ npcEntityWeaponDisruptor Used by: Drones named like: TD (3 of 3) """ type = 'projected', 'active' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return if container.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0): return for srcAttr, tgtAttr in ( ('trackingSpeedBonus', 'trackingSpeed'), ('maxRangeBonus', 'maxRange'), ('falloffBonus', 'falloff') ): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), tgtAttr, container.getModifiedItemAttr(srcAttr), stackingPenalties=True, **kwargs) class Effect6695(BaseEffect): """ entityECMFalloff Used by: Drones named like: EC (3 of 3) """ type = 'projected', 'active' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return if container.getModifiedItemAttr('ECMRangeOptimal', 0) < (projectionRange or 0): return strength = container.getModifiedItemAttr('scan{0}StrengthBonus'.format(fit.scanType)) if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict strength *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) fit.addProjectedEcm(strength) class Effect6697(BaseEffect): """ rigDrawbackReductionArmor Used by: Skill: Armor Rigging """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Armor', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Resource Processing', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs) class Effect6698(BaseEffect): """ rigDrawbackReductionAstronautics Used by: Skill: Astronautics Rigging """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Navigation', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Anchor', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs) class Effect6699(BaseEffect): """ rigDrawbackReductionDrones Used by: Skill: Drones Rigging """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Drones', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs) class Effect6700(BaseEffect): """ rigDrawbackReductionElectronic Used by: Skill: Electronic Superiority Rigging """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Electronic Systems', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Scanning', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Targeting', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs) class Effect6701(BaseEffect): """ rigDrawbackReductionProjectile Used by: Skill: Projectile Weapon Rigging """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Projectile Weapon', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs) class Effect6702(BaseEffect): """ rigDrawbackReductionEnergyWeapon Used by: Skill: Energy Weapon Rigging """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Energy Weapon', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs) class Effect6703(BaseEffect): """ rigDrawbackReductionHybrid Used by: Skill: Hybrid Weapon Rigging """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Hybrid Weapon', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs) class Effect6704(BaseEffect): """ rigDrawbackReductionLauncher Used by: Skill: Launcher Rigging """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Launcher', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs) class Effect6705(BaseEffect): """ rigDrawbackReductionShield Used by: Skill: Shield Rigging """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Shield', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs) class Effect6706(BaseEffect): """ setBonusAsklepian Used by: Implants named like: grade Asklepian (18 of 18) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Cybernetics'), 'armorRepairBonus', src.getModifiedItemAttr('implantSetSerpentis2'), **kwargs) class Effect6708(BaseEffect): """ armorRepairAmountBonusSubcap Used by: Implants named like: grade Asklepian (15 of 18) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('armorRepairBonus'), **kwargs) class Effect6709(BaseEffect): """ shipBonusRole1CapitalHybridDamageBonus Used by: Ship: Vehement """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect6710(BaseEffect): """ shipBonusDreadnoughtM1WebStrengthBonus Used by: Ship: Vehement """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'speedFactor', src.getModifiedItemAttr('shipBonusDreadnoughtM1'), skill='Minmatar Dreadnought', **kwargs) class Effect6711(BaseEffect): """ shipBonusRole3CapitalHybridDamageBonus Used by: Ship: Vanquisher """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusRole3'), **kwargs) class Effect6712(BaseEffect): """ shipBonusTitanM1WebStrengthBonus Used by: Ship: Vanquisher """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'speedFactor', src.getModifiedItemAttr('shipBonusTitanM1'), skill='Minmatar Titan', **kwargs) class Effect6713(BaseEffect): """ shipBonusSupercarrierM1BurstProjectorWebBonus Used by: Ship: Vendetta """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation'), 'speedFactor', src.getModifiedItemAttr('shipBonusSupercarrierM1'), skill='Minmatar Carrier', **kwargs) class Effect6714(BaseEffect): """ ECMBurstJammer Used by: Modules from group: Burst Jammer (11 of 11) """ type = 'projected', 'active' runTime = 'late' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return if module.getModifiedItemAttr('ecmBurstRange', 0) < (projectionRange or 0): return strength = module.getModifiedItemAttr('scan{0}StrengthBonus'.format(fit.scanType)) if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict strength *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) fit.addProjectedEcm(strength) class Effect6720(BaseEffect): """ shipBonusDroneRepairMC1 Used by: Ship: Rabisu """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'shieldBonus', src.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'structureDamageAmount', src.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs) class Effect6721(BaseEffect): """ eliteBonusLogisticRemoteArmorRepairOptimalFalloff1 Used by: Ship: Rabisu """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'falloffEffectiveness', src.getModifiedItemAttr('eliteBonusLogistics1'), skill='Logistics Cruisers', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'maxRange', src.getModifiedItemAttr('eliteBonusLogistics1'), skill='Logistics Cruisers', **kwargs) class Effect6722(BaseEffect): """ roleBonusRemoteArmorRepairOptimalFalloff Used by: Ship: Rabisu """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'falloffEffectiveness', src.getModifiedItemAttr('roleBonusRepairRange'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'maxRange', src.getModifiedItemAttr('roleBonusRepairRange'), **kwargs) class Effect6723(BaseEffect): """ shipBonusCloakCpuMC2 Used by: Ship: Rabisu """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Cloaking'), 'cpu', src.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect6724(BaseEffect): """ eliteBonusLogisticRemoteArmorRepairDuration3 Used by: Ship: Rabisu """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'duration', src.getModifiedItemAttr('eliteBonusLogistics3'), skill='Logistics Cruisers', **kwargs) class Effect6725(BaseEffect): """ shipBonusSETFalloffAF2 Used by: Ship: Caedes """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'falloff', src.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs) class Effect6726(BaseEffect): """ shipBonusCloakCpuMF1 Used by: Ship: Caedes """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Cloaking'), 'cpu', src.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect6727(BaseEffect): """ eliteBonusCoverOpsNOSNeutFalloff1 Used by: Ship: Caedes """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Energy Nosferatu', 'Energy Neutralizer'), 'falloffEffectiveness', src.getModifiedItemAttr('eliteBonusCovertOps1'), stackingPenalties=True, skill='Covert Ops', **kwargs) class Effect6730(BaseEffect): """ moduleBonusMicrowarpdrive Used by: Modules from group: Propulsion Module (73 of 147) """ runTime = 'late' type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('mass', module.getModifiedItemAttr('massAddition'), **kwargs) speedBoost = module.getModifiedItemAttr('speedFactor') mass = fit.ship.getModifiedItemAttr('mass') thrust = module.getModifiedItemAttr('speedBoostFactor') # It is actually a postMul, see black hole speed interactions fit.ship.boostItemAttr('maxVelocity', speedBoost * thrust / mass, stackingPenalties=True, penaltyGroup='postMul', **kwargs) fit.ship.boostItemAttr('signatureRadius', module.getModifiedItemAttr('signatureRadiusBonus'), stackingPenalties=True, **kwargs) class Effect6731(BaseEffect): """ moduleBonusAfterburner Used by: Modules from group: Propulsion Module (74 of 147) """ runTime = 'late' type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('mass', module.getModifiedItemAttr('massAddition'), **kwargs) speedBoost = module.getModifiedItemAttr('speedFactor') mass = fit.ship.getModifiedItemAttr('mass') thrust = module.getModifiedItemAttr('speedBoostFactor') # It is actually a postMul, see black hole speed interactions fit.ship.boostItemAttr('maxVelocity', speedBoost * thrust / mass, stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect6732(BaseEffect): """ moduleBonusWarfareLinkArmor Used by: Variations of module: Armor Command Burst I (3 of 3) """ type = 'active', 'gang' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for x in range(1, 5): if module.getModifiedChargeAttr('warfareBuff{}ID'.format(x)): value = module.getModifiedItemAttr('warfareBuff{}Value'.format(x)) id = module.getModifiedChargeAttr('warfareBuff{}ID'.format(x)) if id: fit.addCommandBonus(id, value, module, kwargs['effect']) class Effect6733(BaseEffect): """ moduleBonusWarfareLinkShield Used by: Variations of module: Shield Command Burst I (3 of 3) """ type = 'active', 'gang' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for x in range(1, 5): if module.getModifiedChargeAttr('warfareBuff{}ID'.format(x)): value = module.getModifiedItemAttr('warfareBuff{}Value'.format(x)) id = module.getModifiedChargeAttr('warfareBuff{}ID'.format(x)) if id: fit.addCommandBonus(id, value, module, kwargs['effect']) class Effect6734(BaseEffect): """ moduleBonusWarfareLinkSkirmish Used by: Variations of module: Skirmish Command Burst I (2 of 2) """ type = 'active', 'gang' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for x in range(1, 5): if module.getModifiedChargeAttr('warfareBuff{}ID'.format(x)): value = module.getModifiedItemAttr('warfareBuff{}Value'.format(x)) id = module.getModifiedChargeAttr('warfareBuff{}ID'.format(x)) if id: fit.addCommandBonus(id, value, module, kwargs['effect']) class Effect6735(BaseEffect): """ moduleBonusWarfareLinkInfo Used by: Variations of module: Expedition Command Burst I (3 of 3) Variations of module: Information Command Burst I (2 of 2) """ type = 'active', 'gang' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for x in range(1, 5): if module.getModifiedChargeAttr('warfareBuff{}ID'.format(x)): value = module.getModifiedItemAttr('warfareBuff{}Value'.format(x)) id = module.getModifiedChargeAttr('warfareBuff{}ID'.format(x)) if id: fit.addCommandBonus(id, value, module, kwargs['effect']) class Effect6736(BaseEffect): """ moduleBonusWarfareLinkMining Used by: Variations of module: Mining Foreman Burst I (2 of 2) """ type = 'active', 'gang' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for x in range(1, 5): if module.getModifiedChargeAttr('warfareBuff{}ID'.format(x)): value = module.getModifiedItemAttr('warfareBuff{}Value'.format(x)) id = module.getModifiedChargeAttr('warfareBuff{}ID'.format(x)) if id: fit.addCommandBonus(id, value, module, kwargs['effect']) class Effect6737(BaseEffect): """ chargeBonusWarfareCharge Used by: Items from market group: Ammunition & Charges > Command Burst Charges (19 of 19) """ type = 'offline' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for x in range(1, 4): value = module.getModifiedChargeAttr('warfareBuff{}Multiplier'.format(x)) module.multiplyItemAttr('warfareBuff{}Value'.format(x), value, **kwargs) class Effect6753(BaseEffect): """ moduleTitanEffectGenerator Used by: Modules from group: Titan Phenomena Generator (4 of 4) """ type = 'active', 'gang' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for x in range(1, 5): if module.getModifiedItemAttr('warfareBuff{}ID'.format(x)): value = module.getModifiedItemAttr('warfareBuff{}Value'.format(x)) id = module.getModifiedItemAttr('warfareBuff{}ID'.format(x)) if id: fit.addCommandBonus(id, value, module, kwargs['effect']) class Effect6762(BaseEffect): """ miningDroneSpecBonus Used by: Skill: Mining Drone Specialization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Drone Specialization'), 'miningAmount', src.getModifiedItemAttr('miningAmountBonus') * lvl, **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Drone Specialization'), 'maxVelocity', src.getModifiedItemAttr('maxVelocityBonus') * lvl, **kwargs) class Effect6763(BaseEffect): """ iceHarvestingDroneOperationDurationBonus Used by: Modules named like: Drone Mining Augmentor (8 of 8) Skill: Ice Harvesting Drone Operation """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level if 'skill' in context else 1 fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Ice Harvesting Drone Operation'), 'duration', src.getModifiedItemAttr('rofBonus') * lvl, **kwargs) class Effect6764(BaseEffect): """ iceHarvestingDroneSpecBonus Used by: Skill: Ice Harvesting Drone Specialization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Ice Harvesting Drone Specialization'), 'duration', src.getModifiedItemAttr('rofBonus') * lvl, **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Ice Harvesting Drone Specialization'), 'maxVelocity', src.getModifiedItemAttr('maxVelocityBonus') * lvl, **kwargs) class Effect6765(BaseEffect): """ spatialPhenomenaGenerationDurationBonus Used by: Skill: Spatial Phenomena Generation """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Spatial Phenomena Generation'), 'buffDuration', src.getModifiedItemAttr('durationBonus') * lvl, **kwargs) class Effect6766(BaseEffect): """ commandProcessorEffect Used by: Modules named like: Command Processor I (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupActive', src.getModifiedItemAttr('maxGangModules'), **kwargs) fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupOnline', src.getModifiedItemAttr('maxGangModules'), **kwargs) class Effect6769(BaseEffect): """ commandBurstAoEBonus Used by: Skill: Fleet Command Skill: Leadership Skill: Wing Command """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'maxRange', src.getModifiedItemAttr('areaOfEffectBonus') * src.level, **kwargs) class Effect6770(BaseEffect): """ armoredCommandDurationBonus Used by: Skill: Armored Command """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'buffDuration', src.getModifiedItemAttr('durationBonus') * lvl, **kwargs) class Effect6771(BaseEffect): """ shieldCommandDurationBonus Used by: Skill: Shield Command """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'buffDuration', src.getModifiedItemAttr('durationBonus') * lvl, **kwargs) class Effect6772(BaseEffect): """ informationCommandDurationBonus Used by: Skill: Information Command """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'buffDuration', src.getModifiedItemAttr('durationBonus') * lvl, **kwargs) class Effect6773(BaseEffect): """ skirmishCommandDurationBonus Used by: Skill: Skirmish Command """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'buffDuration', src.getModifiedItemAttr('durationBonus') * lvl, **kwargs) class Effect6774(BaseEffect): """ miningForemanDurationBonus Used by: Skill: Mining Foreman """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'buffDuration', src.getModifiedItemAttr('durationBonus') * lvl, **kwargs) class Effect6776(BaseEffect): """ armoredCommandStrengthBonus Used by: Skill: Armored Command Specialist """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff1Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff2Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff4Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff3Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) class Effect6777(BaseEffect): """ shieldCommandStrengthBonus Used by: Skill: Shield Command Specialist """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff3Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff1Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff2Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff4Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) class Effect6778(BaseEffect): """ informationCommandStrengthBonus Used by: Skill: Information Command Specialist """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff2Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff1Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff3Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff4Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) class Effect6779(BaseEffect): """ skirmishCommandStrengthBonus Used by: Skill: Skirmish Command Specialist """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff3Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff4Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff1Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff2Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) class Effect6780(BaseEffect): """ miningForemanStrengthBonus Used by: Skill: Mining Director """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff4Value', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff3Value', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff2Value', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff1Value', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) class Effect6782(BaseEffect): """ commandBurstReloadTimeBonus Used by: Skill: Command Burst Specialist """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'reloadTime', src.getModifiedItemAttr('reloadTimeBonus') * lvl, **kwargs) class Effect6783(BaseEffect): """ commandBurstAoERoleBonus Used by: Ships from group: Carrier (4 of 4) Ships from group: Combat Battlecruiser (21 of 21) Ships from group: Command Ship (8 of 8) Ships from group: Force Auxiliary (6 of 6) Ships from group: Supercarrier (6 of 6) Ships from group: Titan (8 of 8) Subsystems named like: Offensive Support Processor (4 of 4) Ship: Odysseus Ship: Orca Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'maxRange', src.getModifiedItemAttr('roleBonusCommandBurstAoERange'), **kwargs) class Effect6786(BaseEffect): """ shieldCommandBurstBonusICS3 Used by: Ship: Orca """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusICS3'), skill='Industrial Command Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusICS3'), skill='Industrial Command Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusICS3'), skill='Industrial Command Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusICS3'), skill='Industrial Command Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusICS3'), skill='Industrial Command Ships', **kwargs) class Effect6789(BaseEffect): """ industrialBonusDroneDamage Used by: Ships from group: Blockade Runner (5 of 5) Ships from group: Deep Space Transport (5 of 5) Ships from group: Hauler (18 of 18) Ships from group: Industrial Command Ship (2 of 2) Ship: Hulk Ship: Mackinaw """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('industrialBonusDroneDamage'), **kwargs) class Effect6793(BaseEffect): """ miningForemanBurstBonusORECapital2 Used by: Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusORECapital2'), skill='Capital Industrial Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusORECapital2'), skill='Capital Industrial Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusORECapital2'), skill='Capital Industrial Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusORECapital2'), skill='Capital Industrial Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'buffDuration', src.getModifiedItemAttr('shipBonusORECapital2'), skill='Capital Industrial Ships', **kwargs) class Effect6794(BaseEffect): """ shieldCommandBurstBonusORECapital3 Used by: Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusORECapital3'), skill='Capital Industrial Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusORECapital3'), skill='Capital Industrial Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusORECapital3'), skill='Capital Industrial Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusORECapital3'), skill='Capital Industrial Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusORECapital3'), skill='Capital Industrial Ships', **kwargs) class Effect6796(BaseEffect): """ shipModeSHTDamagePostDiv Used by: Module: Hecate Sharpshooter Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', 1 / module.getModifiedItemAttr('modeDamageBonusPostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6797(BaseEffect): """ shipModeSPTDamagePostDiv Used by: Module: Svipul Sharpshooter Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', 1 / module.getModifiedItemAttr('modeDamageBonusPostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6798(BaseEffect): """ shipModeSETDamagePostDiv Used by: Module: Confessor Sharpshooter Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier', 1 / module.getModifiedItemAttr('modeDamageBonusPostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6799(BaseEffect): """ shipModeSmallMissileDamagePostDiv Used by: Module: Jackdaw Sharpshooter Mode Module: Skua Sharpshooter Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): types = ('thermal', 'em', 'explosive', 'kinetic') for type in types: fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Rockets') or mod.charge.requiresSkill('Light Missiles'), '{}Damage'.format(type), 1 / module.getModifiedItemAttr('modeDamageBonusPostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6800(BaseEffect): """ modeDampTDResistsPostDiv Used by: Modules named like: Sharpshooter Mode (5 of 5) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('weaponDisruptionResistance', 1 / module.getModifiedItemAttr('modeEwarResistancePostDiv'), **kwargs) fit.ship.multiplyItemAttr('sensorDampenerResistance', 1 / module.getModifiedItemAttr('modeEwarResistancePostDiv'), **kwargs) class Effect6801(BaseEffect): """ modeMWDandABBoostPostDiv Used by: Modules named like: Propulsion Mode (3 of 5) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('High Speed Maneuvering') or mod.item.requiresSkill('Afterburner'), 'speedFactor', 1 / module.getModifiedItemAttr('modeVelocityPostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6807(BaseEffect): """ invulnerabilityCoreDurationBonus Used by: Skill: Invulnerability Core Operation """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Invulnerability Core Operation'), 'buffDuration', src.getModifiedItemAttr('durationBonus') * lvl, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Invulnerability Core Operation'), 'duration', src.getModifiedItemAttr('durationBonus') * lvl, **kwargs) class Effect6844(BaseEffect): """ skillMultiplierDefenderMissileVelocity Used by: Skill: Defender Missiles """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Defender Missiles'), 'maxVelocity', skill.getModifiedItemAttr('missileVelocityBonus') * skill.level, **kwargs) class Effect6845(BaseEffect): """ shipBonusCommandDestroyerRole1DefenderBonus Used by: Ships from group: Command Destroyer (5 of 6) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Defender Missiles'), 'moduleReactivationDelay', ship.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect6851(BaseEffect): """ shipBonusRole3CapitalEnergyDamageBonus Used by: Ship: Chemosh Ship: Molok """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Energy Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusRole3'), **kwargs) class Effect6852(BaseEffect): """ shipBonusTitanM1WebRangeBonus Used by: Ship: Molok """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', src.getModifiedItemAttr('shipBonusTitanM1'), skill='Minmatar Titan', **kwargs) class Effect6853(BaseEffect): """ shipBonusTitanA1EnergyWarfareAmountBonus Used by: Ship: Molok """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', src.getModifiedItemAttr('shipBonusTitanA1'), skill='Amarr Titan', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', src.getModifiedItemAttr('shipBonusTitanA1'), skill='Amarr Titan', **kwargs) class Effect6855(BaseEffect): """ shipBonusDreadnoughtA1EnergyWarfareAmountBonus Used by: Ship: Chemosh """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', src.getModifiedItemAttr('shipBonusDreadnoughtA1'), skill='Amarr Dreadnought', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', src.getModifiedItemAttr('shipBonusDreadnoughtA1'), skill='Amarr Dreadnought', **kwargs) class Effect6856(BaseEffect): """ shipBonusDreadnoughtM1WebRangeBonus Used by: Ship: Chemosh """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', src.getModifiedItemAttr('shipBonusDreadnoughtM1'), skill='Minmatar Dreadnought', **kwargs) class Effect6857(BaseEffect): """ shipBonusForceAuxiliaryA1NosferatuRangeBonus Used by: Ship: Dagon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange', src.getModifiedItemAttr('shipBonusForceAuxiliaryA1'), skill='Amarr Carrier', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusForceAuxiliaryA1'), skill='Amarr Carrier', **kwargs) class Effect6858(BaseEffect): """ shipBonusForceAuxiliaryA1NosferatuDrainAmount Used by: Ship: Dagon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', src.getModifiedItemAttr('shipBonusForceAuxiliaryA1'), skill='Amarr Carrier', **kwargs) class Effect6859(BaseEffect): """ shipBonusRole4NosferatuCPUBonus Used by: Ship: Dagon Ship: Rabisu """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'cpu', src.getModifiedItemAttr('shipBonusRole4'), **kwargs) class Effect6860(BaseEffect): """ shipBonusRole5RemoteArmorRepairPowergridBonus Used by: Ships from group: Logistics (3 of 7) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'power', src.getModifiedItemAttr('shipBonusRole5'), **kwargs) class Effect6861(BaseEffect): """ shipBonusRole5CapitalRemoteArmorRepairPowergridBonus Used by: Ship: Dagon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Remote Armor Repair Systems'), 'power', src.getModifiedItemAttr('shipBonusRole5'), **kwargs) class Effect6862(BaseEffect): """ shipBonusForceAuxiliaryM1RemoteArmorRepairDuration Used by: Ship: Dagon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Remote Armor Repair Systems'), 'duration', src.getModifiedItemAttr('shipBonusForceAuxiliaryM1'), skill='Minmatar Carrier', **kwargs) class Effect6865(BaseEffect): """ eliteBonusCoverOpsWarpVelocity1 Used by: Ship: Pacifier Ship: Sidewinder """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('eliteBonusCovertOps1'), skill='Covert Ops', **kwargs) class Effect6866(BaseEffect): """ shipBonusSmallMissileFlightTimeCF1 Used by: Ship: Pacifier Ship: Sidewinder """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'explosionDelay', src.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'explosionDelay', src.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) class Effect6867(BaseEffect): """ shipBonusSPTRoFMF Used by: Ship: Pacifier """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'speed', src.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect6871(BaseEffect): """ concordSecStatusTankBonus Used by: Ship: Enforcer Ship: Marshal Ship: Pacifier """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): # Get pilot sec status bonus directly here, instead of going through the intermediary effects # via https://forums.eveonline.com/default.aspx?g=posts&t=515826 try: sec_status = ship.owner.getPilotSecurity(low_limit=0, high_limit=5) except (KeyboardInterrupt, SystemExit): raise except: return bonus = sec_status * 10 fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', bonus, **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', bonus, **kwargs) class Effect6872(BaseEffect): """ eliteReconStasisWebBonus1 Used by: Ship: Enforcer """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', src.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships', **kwargs) class Effect6873(BaseEffect): """ eliteBonusReconWarpVelocity3 Used by: Ship: Cobra Ship: Enforcer """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('eliteBonusReconShip3'), skill='Recon Ships', **kwargs) class Effect6874(BaseEffect): """ shipBonusMedMissileFlightTimeCC2 Used by: Ship: Cobra Ship: Enforcer """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'explosionDelay', src.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'explosionDelay', src.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect6877(BaseEffect): """ eliteBonusBlackOpsWarpVelocity1 Used by: Ship: Marshal Ship: Python """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('eliteBonusBlackOps1'), stackingPenalties=True, skill='Black Ops', **kwargs) class Effect6878(BaseEffect): """ eliteBonusBlackOpsScramblerRange4 Used by: Ship: Marshal Ship: Python """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', src.getModifiedItemAttr('eliteBonusBlackOps4'), skill='Black Ops', **kwargs) class Effect6879(BaseEffect): """ eliteBonusBlackOpsWebRange3 Used by: Ship: Marshal Ship: Python """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', src.getModifiedItemAttr('eliteBonusBlackOps3'), skill='Black Ops', **kwargs) class Effect6880(BaseEffect): """ shipBonusLauncherRoF2CB Used by: Ship: Marshal Ship: Python """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Cruise', 'speed', src.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Torpedo', 'speed', src.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rapid Heavy', 'speed', src.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship', **kwargs) class Effect6881(BaseEffect): """ shipBonusLargeMissileFlightTimeCB1 Used by: Ship: Marshal Ship: Python """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'explosionDelay', src.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'explosionDelay', src.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs) class Effect6883(BaseEffect): """ shipBonusForceAuxiliaryM2LocalRepairAmount Used by: Ship: Dagon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusForceAuxiliaryM2'), skill='Minmatar Carrier', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusForceAuxiliaryM2'), skill='Minmatar Carrier', **kwargs) class Effect6894(BaseEffect): """ subsystemEnergyNeutFittingReduction Used by: Subsystem: Legion Core - Energy Parasitic Complex """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Energy Nosferatu', 'Energy Neutralizer'), 'cpu', src.getModifiedItemAttr('subsystemEnergyNeutFittingReduction'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Energy Nosferatu', 'Energy Neutralizer'), 'power', src.getModifiedItemAttr('subsystemEnergyNeutFittingReduction'), **kwargs) class Effect6895(BaseEffect): """ subsystemMETFittingReduction Used by: Subsystem: Legion Offensive - Liquid Crystal Magnifiers """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'cpu', src.getModifiedItemAttr('subsystemMETFittingReduction'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'power', src.getModifiedItemAttr('subsystemMETFittingReduction'), **kwargs) class Effect6896(BaseEffect): """ subsystemMHTFittingReduction Used by: Subsystem: Proteus Offensive - Drone Synthesis Projector Subsystem: Proteus Offensive - Hybrid Encoding Platform Subsystem: Tengu Offensive - Magnetic Infusion Basin """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'cpu', src.getModifiedItemAttr('subsystemMHTFittingReduction'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'power', src.getModifiedItemAttr('subsystemMHTFittingReduction'), **kwargs) class Effect6897(BaseEffect): """ subsystemMPTFittingReduction Used by: Subsystem: Loki Offensive - Projectile Scoping Array """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'power', src.getModifiedItemAttr('subsystemMPTFittingReduction'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'cpu', src.getModifiedItemAttr('subsystemMPTFittingReduction'), **kwargs) class Effect6898(BaseEffect): """ subsystemMRARFittingReduction Used by: Subsystems named like: Offensive Support Processor (3 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'mediumRemoteRepFittingMultiplier', src.getModifiedItemAttr('subsystemMRARFittingReduction'), **kwargs) class Effect6899(BaseEffect): """ subsystemMRSBFittingReduction Used by: Subsystem: Loki Offensive - Support Processor Subsystem: Tengu Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'mediumRemoteRepFittingMultiplier', src.getModifiedItemAttr('subsystemMRSBFittingReduction'), **kwargs) class Effect6900(BaseEffect): """ subsystemMMissileFittingReduction Used by: Subsystem: Legion Offensive - Assault Optimization Subsystem: Loki Offensive - Launcher Efficiency Configuration Subsystem: Tengu Offensive - Accelerated Ejection Bay """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): groups = ('Missile Launcher Heavy', 'Missile Launcher Rapid Light', 'Missile Launcher Heavy Assault') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'cpu', src.getModifiedItemAttr('subsystemMMissileFittingReduction'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'power', src.getModifiedItemAttr('subsystemMMissileFittingReduction'), **kwargs) class Effect6908(BaseEffect): """ shipBonusStrategicCruiserCaldariNaniteRepairTime2 Used by: Ship: Tengu """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'moduleRepairRate', ship.getModifiedItemAttr('shipBonusStrategicCruiserCaldari2'), skill='Caldari Strategic Cruiser', **kwargs) class Effect6909(BaseEffect): """ shipBonusStrategicCruiserAmarrNaniteRepairTime2 Used by: Ship: Legion """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'moduleRepairRate', ship.getModifiedItemAttr('shipBonusStrategicCruiserAmarr2'), skill='Amarr Strategic Cruiser', **kwargs) class Effect6910(BaseEffect): """ shipBonusStrategicCruiserGallenteNaniteRepairTime2 Used by: Ship: Proteus """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'moduleRepairRate', ship.getModifiedItemAttr('shipBonusStrategicCruiserGallente2'), skill='Gallente Strategic Cruiser', **kwargs) class Effect6911(BaseEffect): """ shipBonusStrategicCruiserMinmatarNaniteRepairTime2 Used by: Ship: Loki """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'moduleRepairRate', ship.getModifiedItemAttr('shipBonusStrategicCruiserMinmatar2'), skill='Minmatar Strategic Cruiser', **kwargs) class Effect6920(BaseEffect): """ structureHPBonusAddPassive Used by: Subsystems named like: Defensive Covert Reconfiguration (4 of 4) Subsystem: Loki Defensive - Adaptive Defense Node """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('hp', module.getModifiedItemAttr('structureHPBonusAdd') or 0, **kwargs) class Effect6921(BaseEffect): """ subSystemBonusAmarrDefensive2ScanProbeStrength Used by: Subsystem: Legion Defensive - Covert Reconfiguration """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength', src.getModifiedItemAttr('subsystemBonusAmarrDefensive2'), skill='Amarr Defensive Systems', **kwargs) class Effect6923(BaseEffect): """ subsystemBonusMinmatarOffensive1HMLHAMVelo Used by: Subsystem: Loki Offensive - Launcher Efficiency Configuration """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles') or mod.charge.requiresSkill('Heavy Assault Missiles'), 'maxVelocity', container.getModifiedItemAttr('subsystemBonusMinmatarOffensive'), skill='Minmatar Offensive Systems', **kwargs) class Effect6924(BaseEffect): """ subsystemBonusMinmatarOffensive3MissileExpVelo Used by: Subsystem: Loki Offensive - Launcher Efficiency Configuration """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeVelocity', container.getModifiedItemAttr('subsystemBonusMinmatarOffensive3'), skill='Minmatar Offensive Systems', **kwargs) class Effect6925(BaseEffect): """ subsystemBonusGallenteOffensive2DroneVeloTracking Used by: Subsystem: Proteus Offensive - Drone Synthesis Projector """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'maxVelocity', src.getModifiedItemAttr('subsystemBonusGallenteOffensive2'), skill='Gallente Offensive Systems', **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'trackingSpeed', src.getModifiedItemAttr('subsystemBonusGallenteOffensive2'), skill='Gallente Offensive Systems', **kwargs) class Effect6926(BaseEffect): """ subsystemBonusAmarrPropulsionWarpCapacitor Used by: Subsystem: Legion Propulsion - Interdiction Nullifier """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpCapacitorNeed', src.getModifiedItemAttr('subsystemBonusAmarrPropulsion'), skill='Amarr Propulsion Systems', **kwargs) class Effect6927(BaseEffect): """ subsystemBonusMinmatarPropulsionWarpCapacitor Used by: Subsystem: Loki Propulsion - Interdiction Nullifier """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpCapacitorNeed', src.getModifiedItemAttr('subsystemBonusMinmatarPropulsion'), skill='Minmatar Propulsion Systems', **kwargs) class Effect6928(BaseEffect): """ subsystemBonusCaldariPropulsion2PropModHeatBenefit Used by: Subsystem: Tengu Propulsion - Fuel Catalyst """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner') or mod.item.requiresSkill('High Speed Maneuvering'), 'overloadSpeedFactorBonus', src.getModifiedItemAttr('subsystemBonusCaldariPropulsion2'), skill='Caldari Propulsion Systems', **kwargs) class Effect6929(BaseEffect): """ subsystemBonusGallentePropulsion2PropModHeatBenefit Used by: Subsystem: Proteus Propulsion - Localized Injectors """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner') or mod.item.requiresSkill('High Speed Maneuvering'), 'overloadSpeedFactorBonus', src.getModifiedItemAttr('subsystemBonusGallentePropulsion2'), skill='Gallente Propulsion Systems', **kwargs) class Effect6930(BaseEffect): """ subsystemBonusAmarrCore2EnergyResistance Used by: Subsystem: Legion Core - Augmented Antimatter Reactor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('energyWarfareResistance', src.getModifiedItemAttr('subsystemBonusAmarrCore2'), skill='Amarr Core Systems', **kwargs) class Effect6931(BaseEffect): """ subsystemBonusMinmatarCore2EnergyResistance Used by: Subsystem: Loki Core - Augmented Nuclear Reactor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('energyWarfareResistance', src.getModifiedItemAttr('subsystemBonusMinmatarCore2'), skill='Minmatar Core Systems', **kwargs) class Effect6932(BaseEffect): """ subsystemBonusGallenteCore2EnergyResistance Used by: Subsystem: Proteus Core - Augmented Fusion Reactor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('energyWarfareResistance', src.getModifiedItemAttr('subsystemBonusGallenteCore2'), skill='Gallente Core Systems', **kwargs) class Effect6933(BaseEffect): """ subsystemBonusCaldariCore2EnergyResistance Used by: Subsystem: Tengu Core - Augmented Graviton Reactor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('energyWarfareResistance', src.getModifiedItemAttr('subsystemBonusCaldariCore2'), skill='Caldari Core Systems', **kwargs) class Effect6934(BaseEffect): """ shipMaxLockedTargetsBonusAddPassive Used by: Subsystems named like: Core Dissolution Sequencer (2 of 2) Subsystems named like: Core Electronic Efficiency Gate (2 of 2) Subsystems named like: Offensive Support Processor (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('maxLockedTargets', src.getModifiedItemAttr('maxLockedTargetsBonus'), **kwargs) class Effect6935(BaseEffect): """ subsystemBonusAmarrCore3EnergyWarHeatBonus Used by: Subsystem: Legion Core - Energy Parasitic Complex """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Energy Nosferatu', 'Energy Neutralizer'), 'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusAmarrCore3'), skill='Amarr Core Systems', **kwargs) class Effect6936(BaseEffect): """ subsystemBonusMinmatarCore3StasisWebHeatBonus Used by: Subsystem: Loki Core - Immobility Drivers """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'overloadRangeBonus', src.getModifiedItemAttr('subsystemBonusMinmatarCore3'), skill='Minmatar Core Systems', **kwargs) class Effect6937(BaseEffect): """ subsystemBonusGallenteCore3WarpScramHeatBonus Used by: Subsystem: Proteus Core - Friction Extension Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'overloadRangeBonus', src.getModifiedItemAttr('subsystemBonusGallenteCore3'), skill='Gallente Core Systems', **kwargs) class Effect6938(BaseEffect): """ subsystemBonusCaldariCore3ECMHeatBonus Used by: Subsystem: Tengu Core - Obfuscation Manifold """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'overloadECMStrengthBonus', src.getModifiedItemAttr('subsystemBonusCaldariCore3'), skill='Caldari Core Systems', **kwargs) class Effect6939(BaseEffect): """ subsystemBonusAmarrDefensive2HardenerHeat Used by: Subsystem: Legion Defensive - Augmented Plating """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusAmarrDefensive2'), skill='Amarr Defensive Systems', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'overloadHardeningBonus', src.getModifiedItemAttr('subsystemBonusAmarrDefensive2'), skill='Amarr Defensive Systems', **kwargs) class Effect6940(BaseEffect): """ subsystemBonusGallenteDefensive2HardenerHeat Used by: Subsystem: Proteus Defensive - Augmented Plating """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'overloadHardeningBonus', src.getModifiedItemAttr('subsystemBonusGallenteDefensive2'), skill='Gallente Defensive Systems', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusGallenteDefensive2'), skill='Gallente Defensive Systems', **kwargs) class Effect6941(BaseEffect): """ subsystemBonusCaldariDefensive2HardenerHeat Used by: Subsystem: Tengu Defensive - Supplemental Screening """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Tactical Shield Manipulation'), 'overloadHardeningBonus', src.getModifiedItemAttr('subsystemBonusCaldariDefensive2'), skill='Caldari Defensive Systems', **kwargs) class Effect6942(BaseEffect): """ subsystemBonusMinmatarDefensive2HardenerHeat Used by: Subsystem: Loki Defensive - Augmented Durability """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive2'), skill='Minmatar Defensive Systems', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'overloadHardeningBonus', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive2'), skill='Minmatar Defensive Systems', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Tactical Shield Manipulation'), 'overloadHardeningBonus', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive2'), skill='Minmatar Defensive Systems', **kwargs) class Effect6943(BaseEffect): """ subsystemBonusAmarrDefensive3ArmorRepHeat Used by: Subsystem: Legion Defensive - Covert Reconfiguration Subsystem: Legion Defensive - Nanobot Injector """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusAmarrDefensive3'), skill='Amarr Defensive Systems', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'overloadArmorDamageAmount', src.getModifiedItemAttr('subsystemBonusAmarrDefensive3'), skill='Amarr Defensive Systems', **kwargs) class Effect6944(BaseEffect): """ subsystemBonusGallenteDefensive3ArmorRepHeat Used by: Subsystem: Proteus Defensive - Covert Reconfiguration Subsystem: Proteus Defensive - Nanobot Injector """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusGallenteDefensive3'), skill='Gallente Defensive Systems', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'overloadArmorDamageAmount', src.getModifiedItemAttr('subsystemBonusGallenteDefensive3'), skill='Gallente Defensive Systems', **kwargs) class Effect6945(BaseEffect): """ subsystemBonusCaldariDefensive3ShieldBoostHeat Used by: Subsystem: Tengu Defensive - Amplification Node Subsystem: Tengu Defensive - Covert Reconfiguration """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'overloadShieldBonus', src.getModifiedItemAttr('subsystemBonusCaldariDefensive3'), skill='Caldari Defensive Systems', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusCaldariDefensive3'), skill='Caldari Defensive Systems', **kwargs) class Effect6946(BaseEffect): """ subsystemBonusMinmatarDefensive3LocalRepHeat Used by: Subsystem: Loki Defensive - Adaptive Defense Node Subsystem: Loki Defensive - Covert Reconfiguration """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'overloadArmorDamageAmount', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive3'), skill='Minmatar Defensive Systems', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'overloadShieldBonus', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive3'), skill='Minmatar Defensive Systems', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems') or mod.item.requiresSkill('Shield Operation'), 'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive3'), skill='Minmatar Defensive Systems', **kwargs) class Effect6947(BaseEffect): """ subSystemBonusCaldariDefensive2ScanProbeStrength Used by: Subsystem: Tengu Defensive - Covert Reconfiguration """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength', src.getModifiedItemAttr('subsystemBonusCaldariDefensive2'), skill='Caldari Defensive Systems', **kwargs) class Effect6949(BaseEffect): """ subSystemBonusGallenteDefensive2ScanProbeStrength Used by: Subsystem: Proteus Defensive - Covert Reconfiguration """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength', src.getModifiedItemAttr('subsystemBonusGallenteDefensive2'), skill='Gallente Defensive Systems', **kwargs) class Effect6951(BaseEffect): """ subSystemBonusMinmatarDefensive2ScanProbeStrength Used by: Subsystem: Loki Defensive - Covert Reconfiguration """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive2'), skill='Minmatar Defensive Systems', **kwargs) class Effect6953(BaseEffect): """ mediumRemoteRepFittingAdjustment Used by: Variations of module: Medium Remote Armor Repairer I (14 of 14) Variations of module: Medium Remote Shield Booster I (13 of 13) Module: Medium Ancillary Remote Armor Repairer Module: Medium Ancillary Remote Shield Booster """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.multiplyItemAttr('power', module.getModifiedItemAttr('mediumRemoteRepFittingMultiplier'), **kwargs) module.multiplyItemAttr('cpu', module.getModifiedItemAttr('mediumRemoteRepFittingMultiplier'), **kwargs) class Effect6954(BaseEffect): """ subsystemBonusCommandBurstFittingReduction Used by: Subsystems named like: Offensive Support Processor (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'power', src.getModifiedItemAttr('subsystemCommandBurstFittingReduction'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'cpu', src.getModifiedItemAttr('subsystemCommandBurstFittingReduction'), **kwargs) class Effect6955(BaseEffect): """ subsystemRemoteShieldBoostFalloffBonus Used by: Subsystem: Loki Offensive - Support Processor Subsystem: Tengu Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Remote Shield Booster', 'Ancillary Remote Shield Booster'), 'falloffEffectiveness', src.getModifiedItemAttr('remoteShieldBoosterFalloffBonus'), **kwargs) class Effect6956(BaseEffect): """ subsystemRemoteArmorRepairerOptimalBonus Used by: Subsystems named like: Offensive Support Processor (3 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Remote Armor Repairer', 'Ancillary Remote Armor Repairer'), 'maxRange', src.getModifiedItemAttr('remoteArmorRepairerOptimalBonus'), **kwargs) class Effect6957(BaseEffect): """ subsystemRemoteArmorRepairerFalloffBonus Used by: Subsystems named like: Offensive Support Processor (3 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Remote Armor Repairer', 'Ancillary Remote Armor Repairer'), 'falloffEffectiveness', src.getModifiedItemAttr('remoteArmorRepairerFalloffBonus'), **kwargs) class Effect6958(BaseEffect): """ subsystemBonusAmarrOffensive3RemoteArmorRepairHeat Used by: Subsystem: Legion Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attr in ('overloadSelfDurationBonus', 'overloadArmorDamageAmount'): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), attr, src.getModifiedItemAttr('subsystemBonusAmarrOffensive3'), skill='Amarr Offensive Systems', **kwargs) class Effect6959(BaseEffect): """ subsystemBonusGallenteOffensive3RemoteArmorRepairHeat Used by: Subsystem: Proteus Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attr in ('overloadSelfDurationBonus', 'overloadArmorDamageAmount'): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), attr, src.getModifiedItemAttr('subsystemBonusGallenteOffensive3'), skill='Gallente Offensive Systems', **kwargs) class Effect6960(BaseEffect): """ subsystemBonusCaldariOffensive3RemoteShieldBoosterHeat Used by: Subsystem: Tengu Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attr in ('overloadSelfDurationBonus', 'overloadShieldBonus'): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Emission Systems'), attr, src.getModifiedItemAttr('subsystemBonusCaldariOffensive3'), skill='Caldari Offensive Systems', **kwargs) class Effect6961(BaseEffect): """ subsystemBonusMinmatarOffensive3RemoteRepHeat Used by: Subsystem: Loki Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Emission Systems') or mod.item.requiresSkill('Remote Armor Repair Systems'), 'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusMinmatarOffensive3'), skill='Minmatar Offensive Systems', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'overloadShieldBonus', src.getModifiedItemAttr('subsystemBonusMinmatarOffensive3'), skill='Minmatar Offensive Systems', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'overloadArmorDamageAmount', src.getModifiedItemAttr('subsystemBonusMinmatarOffensive3'), skill='Minmatar Offensive Systems', **kwargs) class Effect6962(BaseEffect): """ subsystemBonusAmarrPropulsion2WarpSpeed Used by: Subsystem: Legion Propulsion - Interdiction Nullifier """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('subsystemBonusAmarrPropulsion2'), skill='Amarr Propulsion Systems', **kwargs) class Effect6963(BaseEffect): """ subsystemBonusMinmatarPropulsion2WarpSpeed Used by: Subsystem: Loki Propulsion - Interdiction Nullifier """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('subsystemBonusMinmatarPropulsion2'), skill='Minmatar Propulsion Systems', **kwargs) class Effect6964(BaseEffect): """ subsystemBonusGallentePropulsionWarpSpeed Used by: Subsystem: Proteus Propulsion - Hyperspatial Optimization """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('baseWarpSpeed', module.getModifiedItemAttr('subsystemBonusGallentePropulsion'), skill='Gallente Propulsion Systems', **kwargs) class Effect6965(BaseEffect): """ surveyProbeExplosionDelayOnline Used by: Module: Survey Probe Launcher II """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Survey'), 'explosionDelay', container.getModifiedItemAttr('surveyProbeDurationBonus'), **kwargs) class Effect6981(BaseEffect): """ shipBonusTitanG1KinThermDamageBonus Used by: Ship: Komodo """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Torpedoes'), 'thermalDamage', src.getModifiedItemAttr('shipBonusTitanG1'), skill='Gallente Titan', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Torpedoes'), 'kineticDamage', src.getModifiedItemAttr('shipBonusTitanG1'), skill='Gallente Titan', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Cruise Missiles'), 'thermalDamage', src.getModifiedItemAttr('shipBonusTitanG1'), skill='Gallente Titan', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Cruise Missiles'), 'kineticDamage', src.getModifiedItemAttr('shipBonusTitanG1'), skill='Gallente Titan', **kwargs) class Effect6982(BaseEffect): """ shipBonusTitanG2EMExplosiveDamageBonus Used by: Ship: Komodo """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Torpedoes'), 'emDamage', src.getModifiedItemAttr('shipBonusTitanG2'), skill='Gallente Titan', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Torpedoes'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusTitanG2'), skill='Gallente Titan', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Cruise Missiles'), 'emDamage', src.getModifiedItemAttr('shipBonusTitanG2'), skill='Gallente Titan', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Cruise Missiles'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusTitanG2'), skill='Gallente Titan', **kwargs) class Effect6983(BaseEffect): """ shipBonusTitanC1ShieldResists Used by: Ship: Komodo """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('shipBonusTitanC1'), skill='Caldari Titan', **kwargs) fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('shipBonusTitanC1'), skill='Caldari Titan', **kwargs) fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusTitanC1'), skill='Caldari Titan', **kwargs) fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('shipBonusTitanC1'), skill='Caldari Titan', **kwargs) class Effect6984(BaseEffect): """ shipBonusRole4FighterDamageAndHitpoints Used by: Ship: Caiman Ship: Komodo """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'shieldCapacity', src.getModifiedItemAttr('shipBonusRole4'), **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('shipBonusRole4'), **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('shipBonusRole4'), **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('shipBonusRole4'), **kwargs) class Effect6985(BaseEffect): """ shipBonusDreadnoughtG1KinThermDamageBonus Used by: Ship: Caiman """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Torpedoes'), 'kineticDamage', src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Torpedoes'), 'thermalDamage', src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Torpedoes'), 'kineticDamage', src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Torpedoes'), 'thermalDamage', src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Cruise Missiles'), 'thermalDamage', src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Cruise Missiles'), 'kineticDamage', src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs) class Effect6986(BaseEffect): """ shipBonusForceAuxiliaryG1RemoteShieldBoostAmount Used by: Ship: Loggerhead """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Emission Systems'), 'shieldBonus', src.getModifiedItemAttr('shipBonusForceAuxiliaryG1'), skill='Gallente Carrier', **kwargs) class Effect6987(BaseEffect): """ shipBonusRole2LogisticDroneRepAmountAndHitpointBonus Used by: Ship: Loggerhead """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'), 'structureDamageAmount', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'), 'shieldBonus', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'), 'armorHP', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'), 'shieldCapacity', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'), 'hp', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) class Effect6992(BaseEffect): """ roleBonusMHTDamage1 Used by: Ship: Victor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect6993(BaseEffect): """ roleBonus2BoosterPenaltyReduction Used by: Ship: Victor Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterMissileAOECloudPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterCapacitorCapacityPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterAOEVelocityPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterArmorRepairAmountPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterMissileVelocityPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterTurretTrackingPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterShieldCapacityPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterTurretOptimalRangePenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterShieldBoostAmountPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterTurretFalloffPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterArmorHPPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterMaxVelocityPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) class Effect6994(BaseEffect): """ eliteReconBonusMHTDamage1 Used by: Ship: Victor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', src.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships', **kwargs) class Effect6995(BaseEffect): """ targetDisintegratorAttack Used by: Modules from group: Precursor Weapon (19 of 19) """ dealsDamage = True type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): # Set reload time to 1 second module.reloadTime = 1000 class Effect6996(BaseEffect): """ eliteReconBonusArmorRepAmount3 Used by: Ship: Victor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('eliteBonusReconShip3'), skill='Recon Ships', **kwargs) class Effect6997(BaseEffect): """ eliteCovertOpsBonusArmorRepAmount4 Used by: Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('eliteBonusCovertOps4'), skill='Covert Ops', **kwargs) class Effect6999(BaseEffect): """ covertOpsStealthBomberSiegeMissileLauncherCPUNeedBonus Used by: Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Missile Launcher Torpedo', 'cpu', ship.getModifiedItemAttr('stealthBomberLauncherCPU'), **kwargs) class Effect7000(BaseEffect): """ shipBonusSHTFalloffGF1 Used by: Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'falloff', src.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs) class Effect7001(BaseEffect): """ roleBonusTorpRoF1 Used by: Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Torpedo', 'speed', src.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect7002(BaseEffect): """ roleBonusBombLauncherPWGCPU3 Used by: Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Bomb Deployment'), 'power', src.getModifiedItemAttr('shipBonusRole3'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Bomb Deployment'), 'cpu', src.getModifiedItemAttr('shipBonusRole3'), **kwargs) class Effect7003(BaseEffect): """ eliteBonusCovertOpsSHTDamage3 Used by: Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', src.getModifiedItemAttr('eliteBonusCovertOps3'), skill='Covert Ops', **kwargs) class Effect7008(BaseEffect): """ structureFullPowerStateHitpointModifier Used by: Items from category: Structure (18 of 18) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('shieldCapacity', src.getModifiedItemAttr('structureFullPowerStateHitpointMultiplier') or 0, **kwargs) fit.ship.multiplyItemAttr('armorHP', src.getModifiedItemAttr('structureFullPowerStateHitpointMultiplier') or 0, **kwargs) class Effect7009(BaseEffect): """ serviceModuleFullPowerHitpointPostAssign Used by: Structure Modules from group: Structure Citadel Service Module (2 of 2) Structure Modules from group: Structure Engineering Service Module (6 of 6) Structure Modules from group: Structure FLEX Service Module (4 of 4) Structure Modules from group: Structure Resource Processing Service Module (4 of 4) Structure Module: Standup Moon Drill I """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.forceItemAttr('structureFullPowerStateHitpointMultiplier', src.getModifiedItemAttr('serviceModuleFullPowerStateHitpointMultiplier'), **kwargs) class Effect7012(BaseEffect): """ moduleBonusAssaultDamageControl Used by: Variations of module: Assault Damage Control I (6 of 6) Module: Abyssal Assault Damage Control """ runTime = 'early' type = 'active' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for layer, attrPrefix in (('shield', 'shield'), ('armor', 'armor'), ('hull', '')): for damageType in ('Kinetic', 'Thermal', 'Explosive', 'Em'): booster = '%s%sDamageResonance' % (layer, damageType) src.forceItemAttr(booster, src.getModifiedItemAttr('resistanceMultiplier'), **kwargs) class Effect7013(BaseEffect): """ eliteBonusGunshipKineticMissileDamage1 Used by: Ship: Jaguar """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', src.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect7014(BaseEffect): """ eliteBonusGunshipThermalMissileDamage1 Used by: Ship: Jaguar """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', src.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect7015(BaseEffect): """ eliteBonusGunshipEMMissileDamage1 Used by: Ship: Jaguar """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'emDamage', src.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect7016(BaseEffect): """ eliteBonusGunshipExplosiveMissileDamage1 Used by: Ship: Jaguar """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosiveDamage', src.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect7017(BaseEffect): """ eliteBonusGunshipExplosionVelocity2 Used by: Ship: Geri Ship: Jaguar """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeVelocity', src.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates', **kwargs) class Effect7018(BaseEffect): """ shipSETROFAF Used by: Ship: Retribution """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'speed', src.getModifiedItemAttr('shipBonusAF'), stackingPenalties=False, skill='Amarr Frigate', **kwargs) class Effect7020(BaseEffect): """ remoteWebifierMaxRangeBonus Used by: Implants named like: Inquest 'Eros' Stasis Webifier MR (3 of 3) Implants named like: Inquest 'Hedone' Entanglement Optimizer WS (3 of 3) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', src.getModifiedItemAttr('stasisWebRangeBonus'), stackingPenalties=False, **kwargs) class Effect7021(BaseEffect): """ structureRigMaxTargetRange Used by: Structure Modules from group: Structure Combat Rig L - Max Targets and Sensor Boosting (2 of 2) Structure Modules from group: Structure Combat Rig M - Boosted Sensors (2 of 2) Structure Modules from group: Structure Combat Rig XL - Doomsday and Targeting (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('structureRigMaxTargetRangeBonus'), **kwargs) class Effect7026(BaseEffect): """ scriptStandupWarpScram Used by: Charge: Standup Focused Warp Scrambling Script """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): src.boostItemAttr('maxRange', src.getModifiedChargeAttr('warpScrambleRangeBonus'), **kwargs) src.forceItemAttr('activationBlockedStrenght', src.getModifiedChargeAttr('activationBlockedStrenght'), **kwargs) class Effect7027(BaseEffect): """ structureCapacitorCapacityBonus Used by: Structure Modules from group: Structure Capacitor Battery (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('capacitorCapacity', ship.getModifiedItemAttr('capacitorBonus'), **kwargs) class Effect7028(BaseEffect): """ structureModifyPowerRechargeRate Used by: Structure Modules from group: Structure Capacitor Power Relay (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('rechargeRate', module.getModifiedItemAttr('capacitorRechargeRateMultiplier'), **kwargs) class Effect7029(BaseEffect): """ structureArmorHPBonus Used by: Structure Modules from group: Structure Armor Reinforcer (2 of 2) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('hiddenArmorHPMultiplier', src.getModifiedItemAttr('armorHpBonus'), stackingPenalties=True, **kwargs) class Effect7030(BaseEffect): """ structureAoERoFRoleBonus Used by: Items from category: Structure (11 of 18) Structures from group: Citadel (8 of 9) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Guided Bomb Launcher', 'speed', ship.getModifiedItemAttr('structureAoERoFRoleBonus'), **kwargs) for attr in ['duration', 'durationTargetIlluminationBurstProjector', 'durationWeaponDisruptionBurstProjector', 'durationECMJammerBurstProjector', 'durationSensorDampeningBurstProjector', 'capacitorNeed']: fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Burst Projector', attr, ship.getModifiedItemAttr('structureAoERoFRoleBonus'), **kwargs) class Effect7031(BaseEffect): """ shipBonusHeavyMissileKineticDamageCBC2 Used by: Ship: Drake Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage', src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs) class Effect7032(BaseEffect): """ shipBonusHeavyMissileThermalDamageCBC2 Used by: Ship: Drake Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'thermalDamage', src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs) class Effect7033(BaseEffect): """ shipBonusHeavyMissileEMDamageCBC2 Used by: Ship: Drake Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'emDamage', src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs) class Effect7034(BaseEffect): """ shipBonusHeavyMissileExplosiveDamageCBC2 Used by: Ship: Drake Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs) class Effect7035(BaseEffect): """ shipBonusHeavyAssaultMissileExplosiveDamageCBC2 Used by: Ship: Drake Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs) class Effect7036(BaseEffect): """ shipBonusHeavyAssaultMissileEMDamageCBC2 Used by: Ship: Drake Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'emDamage', src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs) class Effect7037(BaseEffect): """ shipBonusHeavyAssaultMissileThermalDamageCBC2 Used by: Ship: Drake Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'thermalDamage', src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs) class Effect7038(BaseEffect): """ shipBonusHeavyAssaultMissileKineticDamageCBC2 Used by: Ship: Drake Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'kineticDamage', src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs) class Effect7039(BaseEffect): """ structureHiddenMissileDamageMultiplier Used by: Items from category: Structure (14 of 18) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): groups = ('Structure Anti-Subcapital Missile', 'Structure Anti-Capital Missile') for dmgType in ('em', 'kinetic', 'explosive', 'thermal'): fit.modules.filteredChargeMultiply(lambda mod: mod.item.group.name in groups, '%sDamage' % dmgType, src.getModifiedItemAttr('hiddenMissileDamageMultiplier'), **kwargs) class Effect7040(BaseEffect): """ structureHiddenArmorHPMultiplier Used by: Items from category: Structure (18 of 18) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('armorHP', src.getModifiedItemAttr('hiddenArmorHPMultiplier') or 0, **kwargs) class Effect7042(BaseEffect): """ shipArmorHitPointsAC1 Used by: Ship: Monitor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorHP', src.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs) class Effect7043(BaseEffect): """ shipShieldHitpointsCC1 Used by: Ship: Monitor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldCapacity', src.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs) class Effect7044(BaseEffect): """ shipAgilityBonusGC1 Used by: Ship: Monitor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', src.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs) class Effect7045(BaseEffect): """ shipSignatureRadiusMC1 Used by: Ship: Monitor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('signatureRadius', src.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs) class Effect7046(BaseEffect): """ eliteBonusFlagCruiserAllResistances1 Used by: Ship: Monitor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('explosiveDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs) fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs) fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs) fit.ship.boostItemAttr('armorThermalDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs) fit.ship.boostItemAttr('thermalDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs) fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs) fit.ship.boostItemAttr('armorExplosiveDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs) fit.ship.boostItemAttr('armorEmDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs) fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs) fit.ship.boostItemAttr('kineticDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs) fit.ship.boostItemAttr('armorKineticDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs) fit.ship.boostItemAttr('emDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs) class Effect7047(BaseEffect): """ roleBonusFlagCruiserModuleFittingReduction Used by: Ship: Monitor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Propulsion Module', 'Micro Jump Drive'), 'power', src.getModifiedItemAttr('flagCruiserFittingBonusPropMods'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Propulsion Module', 'Micro Jump Drive'), 'cpu', src.getModifiedItemAttr('flagCruiserFittingBonusPropMods'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Target Painter', 'Scan Probe Launcher'), 'cpu', src.getModifiedItemAttr('flagCruiserFittingBonusPainterProbes'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Target Painter', 'Scan Probe Launcher'), 'power', src.getModifiedItemAttr('flagCruiserFittingBonusPainterProbes'), **kwargs) class Effect7050(BaseEffect): """ aoe_beacon_bioluminescence_cloud Used by: Celestials named like: Bioluminescence Cloud (3 of 3) """ runTime = 'early' type = ('projected', 'passive', 'gang') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): for x in range(1, 3): if beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)): value = beacon.getModifiedItemAttr('warfareBuff{}Value'.format(x)) id = beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)) if id: fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early') class Effect7051(BaseEffect): """ aoe_beacon_caustic_cloud Used by: Celestials named like: Caustic Cloud (3 of 3) """ runTime = 'early' type = ('projected', 'passive', 'gang') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): for x in range(1, 3): if beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)): value = beacon.getModifiedItemAttr('warfareBuff{}Value'.format(x)) id = beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)) if id: fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early') class Effect7052(BaseEffect): """ roleBonusFlagCruiserTargetPainterModifications Used by: Ship: Monitor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'signatureRadiusBonus', src.getModifiedItemAttr('targetPainterStrengthModifierFlagCruisers'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'maxRange', src.getModifiedItemAttr('targetPainterRangeModifierFlagCruisers'), **kwargs) class Effect7055(BaseEffect): """ shipLargeWeaponsDamageBonus Used by: Ship: Praxis """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusRole7'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusRole7'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusRole7'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'thermalDamage', src.getModifiedItemAttr('shipBonusRole7'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'emDamage', src.getModifiedItemAttr('shipBonusRole7'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage', src.getModifiedItemAttr('shipBonusRole7'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusRole7'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'emDamage', src.getModifiedItemAttr('shipBonusRole7'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'kineticDamage', src.getModifiedItemAttr('shipBonusRole7'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusRole7'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'thermalDamage', src.getModifiedItemAttr('shipBonusRole7'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'thermalDamage', src.getModifiedItemAttr('shipBonusRole7'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusRole7'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'kineticDamage', src.getModifiedItemAttr('shipBonusRole7'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'emDamage', src.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect7058(BaseEffect): """ aoe_beacon_filament_cloud Used by: Celestials named like: Filament Cloud (3 of 3) """ runTime = 'early' type = ('projected', 'passive', 'gang') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): for x in range(1, 3): if beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)): value = beacon.getModifiedItemAttr('warfareBuff{}Value'.format(x)) id = beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)) if id: fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early') class Effect7059(BaseEffect): """ weather_caustic_toxin Used by: Celestial: caustic_toxin_weather_1 Celestial: caustic_toxin_weather_2 Celestial: caustic_toxin_weather_3 """ runTime = 'early' type = ('projected', 'passive', 'gang') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): for x in range(1, 3): if beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)): value = beacon.getModifiedItemAttr('warfareBuff{}Value'.format(x)) id = beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)) if id: fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early') class Effect7060(BaseEffect): """ weather_darkness Used by: Celestial: darkness_weather_1 Celestial: darkness_weather_2 Celestial: darkness_weather_3 Celestial: pvp_weather_1 """ runTime = 'early' type = ('projected', 'passive', 'gang') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): for x in range(1, 5): if beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)): value = beacon.getModifiedItemAttr('warfareBuff{}Value'.format(x)) id = beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)) if id: fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early') class Effect7061(BaseEffect): """ weather_electric_storm Used by: Celestial: electric_storm_weather_1 Celestial: electric_storm_weather_2 Celestial: electric_storm_weather_3 """ runTime = 'early' type = ('projected', 'passive', 'gang') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): for x in range(1, 3): if beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)): value = beacon.getModifiedItemAttr('warfareBuff{}Value'.format(x)) id = beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)) if id: fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early') class Effect7062(BaseEffect): """ weather_infernal Used by: Celestial: infernal_weather_1 Celestial: infernal_weather_2 Celestial: infernal_weather_3 """ runTime = 'early' type = ('projected', 'passive', 'gang') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): for x in range(1, 3): if beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)): value = beacon.getModifiedItemAttr('warfareBuff{}Value'.format(x)) id = beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)) if id: fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early') class Effect7063(BaseEffect): """ weather_xenon_gas Used by: Celestial: xenon_gas_weather_1 Celestial: xenon_gas_weather_2 Celestial: xenon_gas_weather_3 """ runTime = 'early' type = ('projected', 'passive', 'gang') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): for x in range(1, 3): if beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)): value = beacon.getModifiedItemAttr('warfareBuff{}Value'.format(x)) id = beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)) if id: fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early') class Effect7064(BaseEffect): """ weather_basic Used by: Celestial: basic_weather """ runTime = 'early' type = ('projected', 'passive') class Effect7071(BaseEffect): """ smallPrecursorTurretDmgBonusRequiredSkill Used by: Skill: Small Precursor Weapon """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect7072(BaseEffect): """ mediumPrecursorTurretDmgBonusRequiredSkill Used by: Skill: Medium Precursor Weapon """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect7073(BaseEffect): """ largePrecursorTurretDmgBonusRequiredSkill Used by: Skill: Large Precursor Weapon """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Precursor Weapon'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect7074(BaseEffect): """ smallDisintegratorSkillDmgBonus Used by: Skill: Small Disintegrator Specialization """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Disintegrator Specialization'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect7075(BaseEffect): """ mediumDisintegratorSkillDmgBonus Used by: Skill: Medium Disintegrator Specialization """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Disintegrator Specialization'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect7076(BaseEffect): """ largeDisintegratorSkillDmgBonus Used by: Skill: Large Disintegrator Specialization """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Disintegrator Specialization'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect7077(BaseEffect): """ disintegratorWeaponDamageMultiply Used by: Modules from group: Entropic Radiation Sink (6 of 6) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Precursor Weapon', 'damageMultiplier', module.getModifiedItemAttr('damageMultiplier'), stackingPenalties=True, **kwargs) class Effect7078(BaseEffect): """ disintegratorWeaponSpeedMultiply Used by: Modules from group: Entropic Radiation Sink (6 of 6) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Precursor Weapon', 'speed', module.getModifiedItemAttr('speedMultiplier'), stackingPenalties=True, **kwargs) class Effect7079(BaseEffect): """ shipPCBSSPeedBonusPCBS1 Used by: Ship: Leshak """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Precursor Weapon'), 'speed', ship.getModifiedItemAttr('shipBonusPBS1'), skill='Precursor Battleship', **kwargs) class Effect7080(BaseEffect): """ shipPCBSDmgBonusPCBS2 Used by: Ship: Leshak """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Precursor Weapon'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusPBS2'), skill='Precursor Battleship', **kwargs) class Effect7085(BaseEffect): """ shipbonusPCTDamagePC1 Used by: Variations of ship: Vedmak (2 of 2) Ship: Tiamat """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusPC1'), skill='Precursor Cruiser', **kwargs) class Effect7086(BaseEffect): """ shipbonusPCTTrackingPC2 Used by: Ship: Ikitursa Ship: Tiamat """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusPC2'), skill='Precursor Cruiser', **kwargs) class Effect7087(BaseEffect): """ shipbonusPCTOptimalPF2 Used by: Ship: Hydra """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'), 'maxRange', ship.getModifiedItemAttr('shipBonusPF2'), skill='Precursor Frigate', **kwargs) class Effect7088(BaseEffect): """ shipbonusPCTDamagePF1 Used by: Variations of ship: Damavik (2 of 2) Ship: Hydra """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusPF1'), skill='Precursor Frigate', **kwargs) class Effect7091(BaseEffect): """ shipBonusNosNeutCapNeedRoleBonus2 Used by: Variations of ship: Rodiva (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capacitor Emission Systems'), 'capacitorNeed', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) class Effect7092(BaseEffect): """ shipBonusRemoteRepCapNeedRoleBonus2 Used by: Variations of ship: Damavik (2 of 2) Variations of ship: Kikimora (2 of 2) Variations of ship: Leshak (2 of 2) Variations of ship: Vedmak (2 of 2) Ship: Drekavac Ship: Hydra Ship: Tiamat Ship: Zirnitra """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems') or mod.item.requiresSkill('Capital Remote Armor Repair Systems'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusRole2'), **kwargs) class Effect7093(BaseEffect): """ shipBonusSmartbombCapNeedRoleBonus2 Used by: Variations of ship: Damavik (2 of 2) Variations of ship: Kikimora (2 of 2) Variations of ship: Leshak (2 of 2) Variations of ship: Rodiva (2 of 2) Variations of ship: Vedmak (2 of 2) Ship: Drekavac Ship: Hydra Ship: Tiamat Ship: Zirnitra """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Energy Pulse Weapons'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusRole2'), **kwargs) class Effect7094(BaseEffect): """ shipBonusRemoteRepMaxRangeRoleBonus1 Used by: Variations of ship: Damavik (2 of 2) Variations of ship: Kikimora (2 of 2) Variations of ship: Leshak (2 of 2) Variations of ship: Vedmak (2 of 2) Ship: Drekavac Ship: Hydra Ship: Tiamat Ship: Zirnitra """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems') or mod.item.requiresSkill('Capital Remote Armor Repair Systems'), 'maxRange', ship.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect7097(BaseEffect): """ surgicalStrikeDamageMultiplierBonusPostPercentDamageMultiplierLocationShipGroupPrecursorTurret Used by: Skill: Surgical Strike """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Precursor Weapon', 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect7098(BaseEffect): """ structureConversionRigBasicBonuses Used by: Structure Modules from group: Outpost Conversion Rigs (104 of 104) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attr in ('hp', 'armorHP', 'shieldCapacity', 'capacitorCapacity'): fit.ship.boostItemAttr(attr, src.getModifiedItemAttr('conversionRigHPCapBonus'), **kwargs) fit.ship.boostItemAttr('maxTargetRange', src.getModifiedItemAttr('structureRigMaxTargetRangeBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('scanResolution', src.getModifiedItemAttr('structureRigScanResBonus'), stackingPenalties=True, **kwargs) fit.ship.increaseItemAttr('maxLockedTargets', src.getModifiedItemAttr('structureRigMaxTargetBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Area Denial Module', 'capacitorNeed', src.getModifiedItemAttr('structureRigPDCapUseBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Area Denial Module', 'empFieldRange', src.getModifiedItemAttr('structureRigPDRangeBonus'), **kwargs) for attr in ('structureRigMaxTargetBonus', 'structureRigMaxTargetRangeBonus', 'structureRigScanResBonus'): fit.modules.filteredItemForce( lambda mod: mod.item.group.name == 'Structure Combat Rig L - Max Targets and Sensor Boosting', attr, src.getModifiedItemAttr('constantZero'), **kwargs) for attr in ('structureRigPDCapUseBonus', 'structureRigPDRangeBonus'): fit.modules.filteredItemForce( lambda mod: mod.item.group.name == 'Structure Combat Rig L - Point Defense Battery Application and Projection', attr, src.getModifiedItemAttr('constantZero'), **kwargs) class Effect7111(BaseEffect): """ systemSmallPrecursorTurretDamage Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'), 'damageMultiplier', module.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, **kwargs) class Effect7112(BaseEffect): """ shipBonusNeutCapNeedRoleBonus2 Used by: Variations of ship: Damavik (2 of 2) Variations of ship: Kikimora (2 of 2) Variations of ship: Leshak (2 of 2) Variations of ship: Vedmak (2 of 2) Ship: Drekavac Ship: Hydra Ship: Tiamat Ship: Zirnitra """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'capacitorNeed', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) class Effect7116(BaseEffect): """ eliteBonusReconScanProbeStrength2 Used by: Ship: Tiamat """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength', src.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships', **kwargs) class Effect7117(BaseEffect): """ roleBonusWarpSpeed Used by: Ships from group: Blockade Runner (5 of 5) Ships from group: Covert Ops (9 of 9) Ships from group: Hauler (5 of 18) Ships from group: Interceptor (10 of 10) Ships from group: Interdictor (4 of 4) Ship: Azariel Ship: Cynabal Ship: Dramiel Ship: Khizriel Ship: Leopard Ship: Machariel Ship: Mekubal Ship: Sarathiel Ship: Victorieux Luxury Yacht """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('shipRoleBonusWarpSpeed'), **kwargs) class Effect7118(BaseEffect): """ eliteBonusCovertOps3PCTdamagePerCycle Used by: Ship: Hydra """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'), 'damageMultiplierBonusPerCycle', src.getModifiedItemAttr('eliteBonusCovertOps3'), skill='Covert Ops', **kwargs) class Effect7119(BaseEffect): """ eliteBonusReconShip3PCTdamagePerCycle Used by: Ship: Tiamat """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'), 'damageMultiplierBonusPerCycle', src.getModifiedItemAttr('eliteBonusReconShip3'), skill='Recon Ships', **kwargs) class Effect7142(BaseEffect): """ massEntanglerEffect5 Used by: Module: Zero-Point Mass Entangler """ type = 'active' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('warpScrambleStrength'), **kwargs) fit.ship.boostItemAttr('mass', src.getModifiedItemAttr('massBonusPercentage'), stackingPenalties=True, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'speedFactor', src.getModifiedItemAttr('speedFactorBonus'), stackingPenalties=True, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'speedBoostFactor', src.getModifiedItemAttr('speedBoostFactorBonus'), **kwargs) fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'activationBlocked', src.getModifiedItemAttr('activationBlockedStrenght'), **kwargs) fit.ship.boostItemAttr('maxVelocity', src.getModifiedItemAttr('maxVelocityBonus'), stackingPenalties=True, **kwargs) class Effect7154(BaseEffect): """ shipBonusPD1DisintegratorDamage Used by: Variations of ship: Kikimora (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusPD1'), skill='Precursor Destroyer', **kwargs) class Effect7155(BaseEffect): """ shipBonusPBC1DisintegratorDamage Used by: Ship: Drekavac """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusPBC1'), skill='Precursor Battlecruiser', **kwargs) class Effect7156(BaseEffect): """ smallDisintegratorMaxRangeBonus Used by: Ship: Kikimora """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'), 'maxRange', ship.getModifiedItemAttr('maxRangeBonus'), **kwargs) class Effect7157(BaseEffect): """ shipBonusPD2DisintegratorMaxRange Used by: Variations of ship: Kikimora (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'), 'maxRange', ship.getModifiedItemAttr('shipBonusPD2'), skill='Precursor Destroyer', **kwargs) class Effect7158(BaseEffect): """ shipArmorKineticResistancePBC2 Used by: Ship: Drekavac """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorKineticDamageResonance', ship.getModifiedItemAttr('shipBonusPBC2'), skill='Precursor Battlecruiser', **kwargs) class Effect7159(BaseEffect): """ shipArmorThermalResistancePBC2 Used by: Ship: Drekavac """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorThermalDamageResonance', ship.getModifiedItemAttr('shipBonusPBC2'), skill='Precursor Battlecruiser', **kwargs) class Effect7160(BaseEffect): """ shipArmorEMResistancePBC2 Used by: Ship: Drekavac """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorEmDamageResonance', ship.getModifiedItemAttr('shipBonusPBC2'), skill='Precursor Battlecruiser', **kwargs) class Effect7161(BaseEffect): """ shipArmorExplosiveResistancePBC2 Used by: Ship: Drekavac """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusPBC2'), skill='Precursor Battlecruiser', **kwargs) class Effect7162(BaseEffect): """ shipRoleDisintegratorMaxRangeCBC Used by: Ship: Drekavac """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'), 'maxRange', ship.getModifiedItemAttr('roleBonusCBC'), **kwargs) class Effect7166(BaseEffect): """ ShipModuleRemoteArmorMutadaptiveRepairer Used by: Modules from group: Mutadaptive Remote Armor Repairer (5 of 5) """ runTime = 'late' type = 'projected', 'active' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowAssistance'): return repAmountBase = container.getModifiedItemAttr('armorDamageAmount') repAmountBase *= calculateRangeFactor( srcOptimalRange=container.getModifiedItemAttr('maxRange'), srcFalloffRange=container.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) cycleTime = container.getModifiedItemAttr('duration') / 1000.0 repSpoolMax = container.getModifiedItemAttr('repairMultiplierBonusMax') repSpoolPerCycle = container.getModifiedItemAttr('repairMultiplierBonusPerCycle') defaultSpoolValue = eos.config.settings['globalDefaultSpoolupPercentage'] spoolType, spoolAmount = resolveSpoolOptions(SpoolOptions(SpoolType.SPOOL_SCALE, defaultSpoolValue, False), container) amount = repAmountBase * (1 + calculateSpoolup(repSpoolMax, repSpoolPerCycle, cycleTime, spoolType, spoolAmount)[0]) amountPreSpool = repAmountBase * (1 + calculateSpoolup(repSpoolMax, repSpoolPerCycle, cycleTime, SpoolType.SPOOL_SCALE, 0)[0]) amountFullSpool = repAmountBase * (1 + calculateSpoolup(repSpoolMax, repSpoolPerCycle, cycleTime, SpoolType.SPOOL_SCALE, 1)[0]) fit._armorRr.append((amount, cycleTime)) fit._armorRrPreSpool.append((amountPreSpool, cycleTime)) fit._armorRrFullSpool.append((amountFullSpool, cycleTime)) class Effect7167(BaseEffect): """ shipBonusRemoteCapacitorTransferRangeRole1 Used by: Variations of ship: Rodiva (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter', 'maxRange', src.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect7168(BaseEffect): """ shipBonusMutadaptiveRemoteRepairRangeRole3 Used by: Ship: Rodiva """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Mutadaptive Remote Armor Repairer', 'maxRange', src.getModifiedItemAttr('shipBonusRole3'), **kwargs) class Effect7169(BaseEffect): """ shipBonusMutadaptiveRepAmountPC1 Used by: Ship: Rodiva """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Mutadaptive Remote Armor Repairer', 'armorDamageAmount', src.getModifiedItemAttr('shipBonusPC1'), skill='Precursor Cruiser', **kwargs) class Effect7170(BaseEffect): """ shipBonusMutadaptiveRepCapNeedPC2 Used by: Ship: Rodiva """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Mutadaptive Remote Armor Repairer', 'capacitorNeed', src.getModifiedItemAttr('shipBonusPC2'), skill='Precursor Cruiser', **kwargs) class Effect7171(BaseEffect): """ shipBonusMutadaptiveRemoteRepRangePC1 Used by: Ship: Zarmazd """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Mutadaptive Remote Armor Repairer', 'maxRange', src.getModifiedItemAttr('shipBonusPC1'), skill='Precursor Cruiser', **kwargs) class Effect7172(BaseEffect): """ shipBonusMutadaptiveRemoteRepCapNeedeliteBonusLogisitics1 Used by: Ship: Zarmazd """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Mutadaptive Remote Armor Repairer', 'capacitorNeed', src.getModifiedItemAttr('eliteBonusLogistics1'), skill='Logistics Cruisers', **kwargs) class Effect7173(BaseEffect): """ shipBonusMutadaptiveRemoteRepAmounteliteBonusLogisitics2 Used by: Ship: Zarmazd """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Mutadaptive Remote Armor Repairer', 'armorDamageAmount', src.getModifiedItemAttr('eliteBonusLogistics2'), skill='Logistics Cruisers', **kwargs) class Effect7176(BaseEffect): """ skillBonusDroneInterfacingNotFighters Used by: Implants named like: Halcyon G Booster (5 of 5) Implant: CreoDron 'Bumblebee' Drone Tuner T10-5D Implant: CreoDron 'Yellowjacket' Drone Tuner D5-10T """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect7177(BaseEffect): """ skillBonusDroneDurabilityNotFighters Used by: Implants named like: Drone Tuner (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'hp', src.getModifiedItemAttr('hullHpBonus')) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'armorHP', src.getModifiedItemAttr('armorHpBonus')) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'shieldCapacity', src.getModifiedItemAttr('shieldCapacityBonus'), **kwargs) class Effect7183(BaseEffect): """ implantWarpScrambleRangeBonus Used by: Implants named like: Inquest 'Hedone' Entanglement Optimizer WS (3 of 3) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', src.getModifiedItemAttr('warpScrambleRangeBonus'), **kwargs) class Effect7184(BaseEffect): """ shipBonusMediumDroneHProle8 Used by: Ship: Alligator Ship: Gila """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'), 'hp', ship.getModifiedItemAttr('shipBonusRole8'), **kwargs) class Effect7185(BaseEffect): """ shipBonusMediumDroneShieldHProle8 Used by: Ship: Alligator Ship: Gila """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusRole8'), **kwargs) class Effect7186(BaseEffect): """ shipBonusMediumDroneArmorHProle8 Used by: Ship: Alligator Ship: Gila """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'), 'armorHP', ship.getModifiedItemAttr('shipBonusRole8'), **kwargs) class Effect7193(BaseEffect): """ systemMiningCycleTimeBonus Used by: Celestials from group: Destructible Effect Beacon (4 of 6) Celestials named like: Triglavian Invasion System Effects (3 of 3) Celestials named like: War HQ (4 of 4) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining'), 'duration', beacon.getModifiedItemAttr('miningDurationMultiplier'), **kwargs) class Effect7202(BaseEffect): """ systemDroneSpeedBonusPercent Used by: Celestials named like: Triglavian Invasion System Effects (3 of 3) Celestial: Drifter Crisis """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'maxVelocity', beacon.getModifiedItemAttr('droneMaxVelocityBonus'), stackingPenalties=True, **kwargs) class Effect7203(BaseEffect): """ systemDroneDamageBonusPercent Used by: Celestials named like: Triglavian Invasion System Effects (3 of 3) Celestial: Drifter Crisis """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', beacon.getModifiedItemAttr('droneDamageBonus'), stackingPenalties=True, **kwargs) class Effect7204(BaseEffect): """ shipArmorEMResistancePF2 Used by: Variations of ship: Damavik (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorEmDamageResonance', ship.getModifiedItemAttr('shipBonusPF2'), skill='Precursor Frigate', **kwargs) class Effect7205(BaseEffect): """ shipArmorKinResistancePF2 Used by: Variations of ship: Damavik (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorKineticDamageResonance', ship.getModifiedItemAttr('shipBonusPF2'), skill='Precursor Frigate', **kwargs) class Effect7206(BaseEffect): """ shipArmorThermResistancePF2 Used by: Variations of ship: Damavik (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorThermalDamageResonance', ship.getModifiedItemAttr('shipBonusPF2'), skill='Precursor Frigate', **kwargs) class Effect7207(BaseEffect): """ shipArmorExpResistancePF2 Used by: Variations of ship: Damavik (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusPF2'), skill='Precursor Frigate', **kwargs) class Effect7209(BaseEffect): """ shipPCTOptimalBonusEliteGunship2 Used by: Ship: Nergal """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'), 'maxRange', ship.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates', **kwargs) class Effect7210(BaseEffect): """ shipBonusCommandDestroyerRole2DefenderBonus Used by: Ship: Draugur """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Defender Missiles'), 'moduleReactivationDelay', ship.getModifiedItemAttr('shipBonusRole2'), **kwargs) class Effect7211(BaseEffect): """ shipDmgMultiMaxEliteHeavyGunship1 Used by: Ship: Ikitursa """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'), 'damageMultiplierBonusMax', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers', **kwargs) class Effect7216(BaseEffect): """ shipDmgMultiMaxEliteGunship1 Used by: Ship: Nergal """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'), 'damageMultiplierBonusMax', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect7223(BaseEffect): """ systemAgilityBonusPercentItem Used by: Celestials named like: Triglavian Invasion System Effects (3 of 3) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', beacon.getModifiedItemAttr('agilityBonus'), stackingPenalties=True, **kwargs) class Effect7227(BaseEffect): """ systemHullHPBonusPercentItem Used by: Celestials named like: Triglavian Invasion System Effects (3 of 3) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.boostItemAttr('hp', beacon.getModifiedItemAttr('hullHpBonus'), **kwargs) class Effect7228(BaseEffect): """ shipMediumPrecursorWeaponOptimalEliteHeavyGunship2 Used by: Ship: Ikitursa """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'), 'maxRange', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers', **kwargs) class Effect7230(BaseEffect): """ shipBonusDroneTrackingGC2 Used by: Ship: Vexor Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect7231(BaseEffect): """ shipBonusArmorRepAmountGC3 Used by: Ship: Vexor Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusGC3'), skill='Gallente Cruiser', **kwargs) class Effect7232(BaseEffect): """ modifyDamageMultiplierBonusMax Used by: Implants named like: grade Mimesis (15 of 18) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Precursor Weapon', 'damageMultiplierBonusMax', implant.getModifiedItemAttr('damageMultiplierBonusMaxModifier'), **kwargs) class Effect7233(BaseEffect): """ modifyDamageMultiplierBonusPerCycle Used by: Implants named like: grade Mimesis (15 of 18) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Precursor Weapon', 'damageMultiplierBonusPerCycle', implant.getModifiedItemAttr('damageMultiplierBonusPerCycleModifier'), **kwargs) class Effect7234(BaseEffect): """ implantSetMimesis Used by: Implants named like: grade Mimesis (18 of 18) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply( lambda imp: imp.item.group.name == 'Cyberimplant', 'damageMultiplierBonusMaxModifier', implant.getModifiedItemAttr('setBonusMimesis'), **kwargs) fit.appliedImplants.filteredItemMultiply( lambda imp: imp.item.group.name == 'Cyberimplant', 'damageMultiplierBonusPerCycleModifier', implant.getModifiedItemAttr('setBonusMimesis'), **kwargs) class Effect7237(BaseEffect): """ systemWarpSpeedBonus Used by: Celestial: Drifter Crisis Celestial: Final Liminality Celestial: Turnur Aftermath """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpSpeedMultiplier', beacon.getModifiedItemAttr('warpSpeedBonus'), stackingPenalties=True, **kwargs) class Effect7238(BaseEffect): """ shipBonusDreadnoughtPC1DamageMultMax Used by: Ship: Zirnitra """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Precursor Weapon'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusDreadnoughtPC1'), skill='Precursor Dreadnought', **kwargs) class Effect7239(BaseEffect): """ shipBonusDreadnoughtPC2ArmorResists Used by: Ship: Zirnitra """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for type in ('Em', 'Explosive', 'Kinetic', 'Thermal'): fit.ship.boostItemAttr('armor{0}DamageResonance'.format(type), src.getModifiedItemAttr('shipBonusDreadnoughtPC2'), skill='Precursor Dreadnought', **kwargs) class Effect7240(BaseEffect): """ shipBonusDreadnoughtPC3WeaponSpeed Used by: Ship: Zirnitra """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Precursor Weapon'), 'speed', src.getModifiedItemAttr('shipBonusDreadnoughtPC3'), skill='Precursor Dreadnought', **kwargs) class Effect7242(BaseEffect): """ capitalPrecursorTurretDmgBonusRequiredSkill Used by: Skill: Capital Precursor Weapon """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Precursor Weapon'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect7247(BaseEffect): """ shipBonusHAMHMLAoeVelocityMC Used by: Ship: Bellicose """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: (mod.charge.requiresSkill('Heavy Missiles') or mod.charge.requiresSkill('Heavy Assault Missiles')), 'aoeVelocity', ship.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs) class Effect7248(BaseEffect): """ shipPBonusROFMF Used by: Ship: Rifter """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'speed', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect8011(BaseEffect): """ shieldHpBonusPostPercentHpLocationShip Used by: Implants named like: grade Nirvana (15 of 18) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldCapacity', container.getModifiedItemAttr('shieldHpBonus'), **kwargs) class Effect8013(BaseEffect): """ setBonusNirvana Used by: Implants named like: grade Nirvana (18 of 18) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'), 'shieldHpBonus', implant.getModifiedItemAttr('ImplantSetNirvana') or 1, **kwargs) class Effect8017(BaseEffect): """ saviorSetBonus Used by: Implants named like: grade Savior (18 of 18) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply( lambda implant: implant.item.requiresSkill('Cybernetics'), 'remoteRepDurationCapBonus', implant.getModifiedItemAttr('implantSetSavior'), **kwargs) class Effect8018(BaseEffect): """ subcapRemoteArmorShieldRepDurationCapBonus Used by: Implants named like: grade Savior (15 of 18) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): for attr in ('duration', 'capacitorNeed'): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Emission Systems') or mod.item.requiresSkill('Remote Armor Repair Systems'), attr, implant.getModifiedItemAttr('remoteRepDurationCapBonus'), **kwargs) class Effect8020(BaseEffect): """ systemWarpSpeedAddition Used by: Celestial: System-Wide Warp Speed Bonus """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('warpSpeedAdd'), **kwargs) class Effect8021(BaseEffect): """ hydraSetBonus Used by: Implants named like: grade Hydra (18 of 18) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): for attr in ('hydraDroneTrackingBonus', 'hydraDroneRangeBonus', 'hydraMissileFlightTimeBonus', 'hydraMissileExplosionVelocityBonus'): fit.appliedImplants.filteredItemMultiply( lambda implant: implant.item.requiresSkill('Cybernetics'), attr, implant.getModifiedItemAttr('implantSetHydra'), **kwargs) class Effect8023(BaseEffect): """ hydraDroneTrackingEffect Used by: Implants named like: grade Hydra (15 of 18) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'trackingSpeed', implant.getModifiedItemAttr('hydraDroneTrackingBonus'), **kwargs) class Effect8024(BaseEffect): """ hydraDroneRangeEffect Used by: Implants named like: grade Hydra (15 of 18) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): for attr in ('maxRange', 'falloff'): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), attr, implant.getModifiedItemAttr('hydraDroneRangeBonus'), **kwargs) class Effect8025(BaseEffect): """ hydraMissileFlightTimeEffect Used by: Implants named like: grade Hydra (15 of 18) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosionDelay', implant.getModifiedItemAttr('hydraMissileFlightTimeBonus'), **kwargs) class Effect8026(BaseEffect): """ hydraMissileExplosionVelocityEffect Used by: Implants named like: grade Hydra (15 of 18) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeVelocity', implant.getModifiedItemAttr('hydraMissileExplosionVelocityBonus'), **kwargs) class Effect8029(BaseEffect): """ roleBonus7CapBoosterGroupRestriction Used by: Ships from group: Force Auxiliary (6 of 6) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for attr in ('maxGroupOnline', 'maxGroupFitted'): fit.modules.filteredItemForce( lambda mod: mod.item.group.name == 'Capacitor Booster', attr, ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect8031(BaseEffect): """ systemMaxTargets Used by: Celestial: Final Liminality Celestial: Triglavian Minor Victory """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('maxLockedTargets', beacon.getModifiedItemAttr('maxLockedTargetsMultiplier'), **kwargs) class Effect8032(BaseEffect): """ systemWarpScrambleStrengthBonus Used by: Celestial: Federal Stellar Observatory """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease( lambda mod: mod.item.group.name == 'Warp Scrambler', 'warpScrambleStrength', beacon.getModifiedItemAttr('warpScrambleStrengthBonus'), **kwargs) class Effect8033(BaseEffect): """ systemEcmRangeMultiplier Used by: Celestial: State Stellar Observatory """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.group.name == 'ECM', 'maxRange', beacon.getModifiedItemAttr('ecmRangeBonus'), stackingPenalties=True, **kwargs) class Effect8034(BaseEffect): """ smallUpwellWeaponDmgBonusRequiredSkill Used by: Skill: Small Vorton Projector """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Vorton Projector'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect8035(BaseEffect): """ mediumUpwellWeaponDmgBonusRequiredSkill Used by: Skill: Medium Vorton Projector """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Vorton Projector'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect8036(BaseEffect): """ largeUpwellWeaponDmgBonusRequiredSkill Used by: Skill: Large Vorton Projector """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Vorton Projector'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect8037(BaseEffect): """ ChainLightning Used by: Modules from group: Vorton Projector (15 of 15) """ type = 'active' class Effect8039(BaseEffect): """ upwellSkillaoeVelocityaoeCloudSizeBonus Used by: Implants named like: Halcyon G Booster (5 of 5) Skill: Vorton Arc Guidance """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Vorton Projector Operation'), 'aoeVelocity', container.getModifiedItemAttr('aoeVelocityBonus') * level, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Vorton Projector Operation'), 'aoeCloudSize', container.getModifiedItemAttr('aoeCloudSizeBonus') * level, **kwargs) class Effect8041(BaseEffect): """ upwellSkillDamageMuliplierBonus Used by: Skill: Vorton Power Amplification """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Vorton Projector', 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect8042(BaseEffect): """ upwellSkillSpeedBonus Used by: Skill: Vorton Projector Operation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Vorton Projector Operation'), 'speed', skill.getModifiedItemAttr('turretSpeeBonus') * skill.level, **kwargs) class Effect8044(BaseEffect): """ smallVortonProjectorSkillDmgBonus Used by: Skill: Small Vorton Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Vorton Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect8045(BaseEffect): """ mediumVortonProjectorSkillDmgBonus Used by: Skill: Medium Vorton Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Vorton Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect8046(BaseEffect): """ largeVortonProjectorSkillDmgBonus Used by: Skill: Large Vorton Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Vorton Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect8047(BaseEffect): """ shipBonusUF1shieldResistance Used by: Ship: Skybreaker """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for type in ('kinetic', 'thermal', 'explosive', 'em'): fit.ship.boostItemAttr('shield%sDamageResonance' % type.capitalize(), ship.getModifiedItemAttr('shipBonusUF1'), skill='EDENCOM Frigate', **kwargs) class Effect8048(BaseEffect): """ shipBonusUF2damage Used by: Ship: Skybreaker """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Vorton Projector'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusUF2'), skill='EDENCOM Frigate', **kwargs) class Effect8052(BaseEffect): """ shipBonusUC2ShieldResistance Used by: Ship: Stormbringer """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for type in ('kinetic', 'thermal', 'explosive', 'em'): fit.ship.boostItemAttr('shield%sDamageResonance' % type.capitalize(), ship.getModifiedItemAttr('shipBonusUC2'), skill='EDENCOM Cruiser', **kwargs) class Effect8053(BaseEffect): """ shipBonusUC1maxRange Used by: Ship: Stormbringer """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Medium Vorton Projector'), 'maxRange', ship.getModifiedItemAttr('shipBonusUC1'), skill='EDENCOM Cruiser', **kwargs) class Effect8054(BaseEffect): """ shipBonusUB1upwellDamage Used by: Ship: Thunderchild """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Large Vorton Projector'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusUB1'), skill='EDENCOM Battleship', **kwargs) class Effect8056(BaseEffect): """ shipBonusUB2upwellROF Used by: Ship: Thunderchild """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Large Vorton Projector'), 'speed', ship.getModifiedItemAttr('shipBonusUB2'), skill='EDENCOM Battleship', **kwargs) class Effect8057(BaseEffect): """ vortonWeaponDamageSpeedMultiply Used by: Modules from group: Vorton Projector Upgrade (6 of 6) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Vorton Projector', 'damageMultiplier', module.getModifiedItemAttr('damageMultiplier'), stackingPenalties=True, **kwargs) fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Vorton Projector', 'speed', module.getModifiedItemAttr('speedMultiplier'), stackingPenalties=True, **kwargs) class Effect8062(BaseEffect): """ ammoAOEvelocityMultiplier Used by: Charges from group: Advanced Condenser Pack (6 of 6) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.multiplyItemAttr('aoeVelocity', module.getModifiedChargeAttr('aoeVelocityBonus') or 0, **kwargs) class Effect8065(BaseEffect): """ vortonProjectorSkillRangeBonus Used by: Skill: Vorton Arc Extension """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Vorton Projector Operation'), 'maxRange', skill.getModifiedItemAttr('rangeSkillBonus') * skill.level, **kwargs) class Effect8064(BaseEffect): """ vortonProjectorOptimalRangeBonus Used by: Implants named like: Halcyon B Booster (5 of 5) """ type = 'passive' @staticmethod def handler(fit, booster, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Vorton Projector Operation'), 'maxRange', booster.getModifiedItemAttr('rangeSkillBonus'), **kwargs) class Effect8066(BaseEffect): """ vortonProjectorDamageBonus Used by: Implants named like: Agency 'Pyrolancea' DB Dose (4 of 4) Implants named like: Halcyon Y Booster (5 of 5) Implant: AIR Pyrolancea Booster II """ type = 'passive' @staticmethod def handler(fit, booster, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Vorton Projector Operation'), 'damageMultiplier', booster.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect8068(BaseEffect): """ shipShieldResistanceBonusMBC1 Used by: Ship: Claymore """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): damageTypes = ('Em', 'Explosive', 'Kinetic', 'Thermal') for damageType in damageTypes: fit.ship.boostItemAttr(f'shield{damageType}DamageResonance', ship.getModifiedItemAttr('shipBonusMBC1'), skill='Minmatar Battlecruiser', **kwargs) class Effect8070(BaseEffect): """ eliteBonusCommandShipsHeavyHAMvelocityCS2 Used by: Ship: Claymore """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles') or mod.charge.requiresSkill('Heavy Assault Missiles'), 'maxVelocity', ship.getModifiedItemAttr('eliteBonusCommandShips2'), skill='Command Ships', **kwargs) class Effect8071(BaseEffect): """ eliteBonusCommandShipDroneRangeCS1 Used by: Ship: Eos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'maxRange', ship.getModifiedItemAttr('eliteBonusCommandShips1'), skill='Command Ships', **kwargs) class Effect8072(BaseEffect): """ shipArmorResistanceBonusGBC2 Used by: Ship: Eos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): damageTypes = ('Em', 'Explosive', 'Kinetic', 'Thermal') for damageType in damageTypes: fit.ship.boostItemAttr(f'armor{damageType}DamageResonance', ship.getModifiedItemAttr('shipBonusGBC2'), skill='Gallente Battlecruiser', **kwargs) class Effect8073(BaseEffect): """ eliteBonusCommandShipShieldHPCS1 Used by: Ship: Vulture """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldCapacity', ship.getModifiedItemAttr('eliteBonusCommandShips1'), skill='Command Ships', **kwargs) class Effect8074(BaseEffect): """ shipBonusPC2maxRange Used by: Ship: Vedmak """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'), 'maxRange', ship.getModifiedItemAttr('shipBonusPC2'), skill='Precursor Cruiser', **kwargs) class Effect8076(BaseEffect): """ systemHullThermalResistance Used by: Celestials named like: Volatile Ice Storm (2 of 2) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.boostItemAttr('thermalDamageResonance', beacon.getModifiedItemAttr('thermalDamageResistanceBonus'), stackingPenalties=True, **kwargs) class Effect8082(BaseEffect): """ systemScanResolutionBonus Used by: Celestial: Turnur Aftermath """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.boostItemAttr('scanResolution', beacon.getModifiedItemAttr('scanResolutionBonus'), stackingPenalties=True, **kwargs) class Effect8091(BaseEffect): """ shipBonusForceAuxiliaryG2CapBoosterStrength Used by: Ship: Ninazu """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.group.name == 'Capacitor Booster Charge', 'capacitorBonus', ship.getModifiedItemAttr('shipBonusForceAuxiliaryG2'), skill='Gallente Carrier', **kwargs) class Effect8092(BaseEffect): """ shipBonusForceAuxiliaryM2CapBoosterStrength Used by: Ship: Lif """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.group.name == 'Capacitor Booster Charge', 'capacitorBonus', ship.getModifiedItemAttr('shipBonusForceAuxiliaryM2'), skill='Minmatar Carrier', **kwargs) class Effect8094(BaseEffect): """ shipBonusHybridROFGD1 Used by: Ship: Eris """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'speed', ship.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer', **kwargs) class Effect8095(BaseEffect): """ eliteBonusInterdictors1massAddition Used by: Ship: Eris """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Plate', 'massAddition', ship.getModifiedItemAttr('eliteBonusInterdictors1'), skill='Interdictors', **kwargs) class Effect8096(BaseEffect): """ shipBonusKinMissileDamageCD2 Used by: Ship: Flycatcher """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer', **kwargs) class Effect8097(BaseEffect): """ eliteBonusInterdictors1ShieldCapacity Used by: Ship: Flycatcher """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldCapacity', ship.getModifiedItemAttr('eliteBonusInterdictors1'), skill='Interdictors', **kwargs) class Effect8098(BaseEffect): """ shipBonusArmorHPAD2 Used by: Ship: Heretic """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorHP', ship.getModifiedItemAttr('shipBonusAD2'), skill='Amarr Destroyer', **kwargs) class Effect8100(BaseEffect): """ shipBonusECMJamDroneDurationCF Used by: Ship: Griffin Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'ecmJamDuration', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) class Effect8101(BaseEffect): """ roleBonusDroneDamage Used by: Ship: Griffin Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for dmgType in ('em', 'kinetic', 'explosive', 'thermal'): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), f'{dmgType}Damage', ship.getModifiedItemAttr('roleBonus'), **kwargs) class Effect8102(BaseEffect): """ shipBonusRole1DroneHitpointsDroneControlRange Used by: Ship: Griffin Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.extraAttributes.boost( 'droneControlRange', ship.getModifiedItemAttr('shipBonusRole1'), **kwargs) for attr in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), attr, ship.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect8099(BaseEffect): """ systemHeatDamageBonus Used by: Celestials named like: Metaliminal Yoiul Festival YC 122 Storm (4 of 4) Celestials named like: Volatile Ice Storm (2 of 2) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, source, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: 'heatDamage' in mod.itemModifiedAttributes, 'heatDamage', source.getModifiedItemAttr('thermodynamicsHeatDamage'), **kwargs) class Effect8103(BaseEffect): """ setBonusRapture Used by: Implants named like: grade Rapture (18 of 18) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Cybernetics'), 'capRechargeBonus', src.getModifiedItemAttr('ImplantSetRapture'), **kwargs) class Effect8104(BaseEffect): """ salvageDroneSpecBonus Used by: Skill: Salvage Drone Specialization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.drones.filteredItemIncrease( lambda mod: mod.item.requiresSkill('Salvage Drone Specialization'), 'accessDifficultyBonus', src.getModifiedItemAttr('specAccessDifficultyBonus') * lvl, **kwargs) fit.drones.filteredItemBoost( lambda mod: mod.item.requiresSkill('Salvage Drone Specialization'), 'maxVelocity', src.getModifiedItemAttr('maxVelocityBonus') * lvl, **kwargs) class Effect8106(BaseEffect): """ shipPTdamageBonusMB2 Used by: Ship: Maelstrom Ship: Vargur """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusMB2'), skill='Minmatar Battleship', **kwargs) class Effect8107(BaseEffect): """ shipBonusLETcapNeedAB2 Used by: Ship: Paladin """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusAB2'), skill='Amarr Battleship', **kwargs) class Effect8108(BaseEffect): """ signatureRadiusBonusOnline Used by: Modules from group: Signature Suppressor (5 of 5) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('signatureRadius', src.getModifiedItemAttr('signatureSuppressorSignatureRadiusBonusPassive'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect8109(BaseEffect): """ targetSpectrumBreakerBonus Used by: Modules from group: Signature Suppressor (5 of 5) """ type = 'active' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('signatureRadius', src.getModifiedItemAttr('signatureSuppressorSignatureRadiusBonusActive'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect8111(BaseEffect): """ systemElectricalStorm Used by: Celestial: Strong Metaliminal Electrical Storm Celestial: Weak Metaliminal Electrical Storm """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('disallowCloaking', beacon.getModifiedItemAttr('disallowCloaking'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength', beacon.getModifiedItemAttr('scanProbeStrengthBonus'), stackingPenalties=True, **kwargs) fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Archaeology'), 'virusCoherence', beacon.getModifiedItemAttr('virusCoherenceBonus'), **kwargs) fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Hacking'), 'virusCoherence', beacon.getModifiedItemAttr('virusCoherenceBonus'), **kwargs) fit.ship.boostItemAttr('shieldEmDamageResonance', beacon.getModifiedItemAttr('shieldEmDamageResistanceBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('armorEmDamageResonance', beacon.getModifiedItemAttr('armorEmDamageResistanceBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('emDamageResonance', beacon.getModifiedItemAttr('emDamageResistanceBonus'), stackingPenalties=True, **kwargs) fit.ship.multiplyItemAttr('rechargeRate', beacon.getModifiedItemAttr('rechargeRateMultiplier'), **kwargs) class Effect8112(BaseEffect): """ systemExoticStorm Used by: Celestial: Strong Metaliminal Exotic Matter Storm Celestial: Weak Metaliminal Exotic Matter Storm """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems') or mod.item.requiresSkill('Capital Repair Systems'), 'duration', beacon.getModifiedItemAttr('armorRepairDurationBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation') or mod.item.requiresSkill('Capital Shield Operation'), 'duration', beacon.getModifiedItemAttr('shieldBoosterDurationBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining'), 'duration', beacon.getModifiedItemAttr('miningDurationMultiplier'), **kwargs) fit.ship.boostItemAttr('warpSpeedMultiplier', beacon.getModifiedItemAttr('warpSpeedBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('scanResolution', beacon.getModifiedItemAttr('scanResolutionBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('shieldKineticDamageResonance', beacon.getModifiedItemAttr('shieldKineticDamageResistanceBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('armorKineticDamageResonance', beacon.getModifiedItemAttr('armorKineticDamageResistanceBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('kineticDamageResonance', beacon.getModifiedItemAttr('kineticDamageResistanceBonus'), stackingPenalties=True, **kwargs) class Effect8113(BaseEffect): """ systemGammaStorm Used by: Celestial: Strong Metaliminal Gamma Ray Storm Celestial: Weak Metaliminal Gamma Ray Storm """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Shield Emission Systems') or mod.item.requiresSkill('Capital Shield Emission Systems'), 'shieldBonus', beacon.getModifiedItemAttr('shieldBonusMultiplierRemote'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems') or mod.item.requiresSkill('Capital Remote Armor Repair Systems'), 'armorDamageAmount', beacon.getModifiedItemAttr('armorDamageAmountMultiplierRemote'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) fit.ship.multiplyItemAttr('shieldCapacity', beacon.getModifiedItemAttr('shieldCapacityMultiplier'), **kwargs) fit.ship.multiplyItemAttr('capacitorCapacity', beacon.getModifiedItemAttr('capacitorCapacityMultiplierSystem'), **kwargs) fit.ship.multiplyItemAttr('signatureRadius', beacon.getModifiedItemAttr('signatureRadiusMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) fit.ship.boostItemAttr('shieldExplosiveDamageResonance', beacon.getModifiedItemAttr('shieldExplosiveDamageResistanceBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('armorExplosiveDamageResonance', beacon.getModifiedItemAttr('armorExplosiveDamageResistanceBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('explosiveDamageResonance', beacon.getModifiedItemAttr('explosiveDamageResistanceBonus'), stackingPenalties=True, **kwargs) class Effect8114(BaseEffect): """ systemPlasmaStorm Used by: Celestial: Strong Metaliminal Plasma Firestorm Celestial: Weak Metaliminal Plasma Firestorm """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Gunnery'), 'damageMultiplier', beacon.getModifiedItemAttr('damageMultiplierMultiplier'), stackingPenalties=True, **kwargs) for attr in ('emDamage', 'explosiveDamage', 'kineticDamage', 'thermalDamage'): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), attr, beacon.getModifiedItemAttr('damageMultiplierMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) fit.drones.filteredItemMultiply(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', beacon.getModifiedItemAttr('damageMultiplierMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) fit.fighters.filteredItemMultiply(lambda drone: drone.item.requiresSkill('Fighters'), 'damageMultiplier', beacon.getModifiedItemAttr('damageMultiplierMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Gunnery'), 'trackingSpeed', beacon.getModifiedItemAttr('trackingSpeedMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) fit.drones.filteredItemMultiply(lambda drone: True, 'trackingSpeed', beacon.getModifiedItemAttr('trackingSpeedMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) for attr in ('fighterAbilityAttackMissileExplosionRadius', 'fighterAbilityMissilesExplosionRadius'): fit.fighters.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Fighters'), attr, beacon.getModifiedItemAttr('aoeCloudSizeMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) fit.ship.multiplyItemAttr('armorHP', beacon.getModifiedItemAttr('armorHPMultiplier'), **kwargs) fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeCloudSize', beacon.getModifiedItemAttr('aoeCloudSizeMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) fit.ship.boostItemAttr('shieldThermalDamageResonance', beacon.getModifiedItemAttr('shieldThermalDamageResistanceBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('armorThermalDamageResonance', beacon.getModifiedItemAttr('armorThermalDamageResistanceBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('thermalDamageResonance', beacon.getModifiedItemAttr('thermalDamageResistanceBonus'), stackingPenalties=True, **kwargs) class Effect8117(BaseEffect): """ interdictionNullifierBonus Used by: Modules from group: Interdiction Nullifier (4 of 4) """ type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.preAssignItemAttr('warpBubbleImmune', module.getModifiedItemAttr('warpBubbleImmuneBonus'), **kwargs) class Effect8119(BaseEffect): """ industrialCompactCoreEffect2 Used by: Modules named like: Industrial Core (4 of 6) """ runTime = 'early' type = 'active' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', src.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) fit.ship.multiplyItemAttr('mass', src.getModifiedItemAttr('siegeMassMultiplier'), **kwargs) # Local Shield Repper Bonuses fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'duration', src.getModifiedItemAttr('industrialCoreLocalLogisticsDurationBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('industrialCoreLocalLogisticsAmountBonus'), stackingPenalties=True, **kwargs) # Mining Burst Bonuses fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff1Value', src.getModifiedItemAttr('industrialCoreBonusMiningBurstStrength'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff2Value', src.getModifiedItemAttr('industrialCoreBonusMiningBurstStrength'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff3Value', src.getModifiedItemAttr('industrialCoreBonusMiningBurstStrength'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff4Value', src.getModifiedItemAttr('industrialCoreBonusMiningBurstStrength'), **kwargs) # Command Burst Range Bonus fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'maxRange', src.getModifiedItemAttr('industrialCoreBonusCommandBurstRange'), stackingPenalties=True, **kwargs) # Drone Bonuses fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Ice Harvesting Drone Operation'), 'duration', src.getModifiedItemAttr('industrialCoreBonusDroneIceHarvesting'), **kwargs) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Mining Drone Operation'), 'miningAmount', src.getModifiedItemAttr('industrialCoreBonusDroneMining'), **kwargs) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'maxVelocity', src.getModifiedItemAttr('industrialCoreBonusDroneVelocity'), stackingPenalties=True, **kwargs) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('industrialCoreBonusDroneDamageHP'), stackingPenalties=True, **kwargs) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'shieldCapacity', src.getModifiedItemAttr('industrialCoreBonusDroneDamageHP'), **kwargs) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'armorHP', src.getModifiedItemAttr('industrialCoreBonusDroneDamageHP'), **kwargs) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'hp', src.getModifiedItemAttr('industrialCoreBonusDroneDamageHP'), **kwargs) # Remote impedance (no reps, etc) fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) fit.ship.boostItemAttr('remoteRepairImpedance', src.getModifiedItemAttr('remoteRepairImpedanceBonus'), **kwargs) fit.ship.increaseItemAttr('disallowTethering', src.getModifiedItemAttr('disallowTethering'), **kwargs) fit.ship.boostItemAttr('sensorDampenerResistance', src.getModifiedItemAttr('sensorDampenerResistanceBonus'), **kwargs) fit.ship.boostItemAttr('remoteAssistanceImpedance', src.getModifiedItemAttr('remoteAssistanceImpedanceBonus'), **kwargs) fit.ship.increaseItemAttr('disallowDocking', src.getModifiedItemAttr('disallowDocking'), **kwargs) fit.ship.increaseItemAttr('gateScrambleStatus', src.getModifiedItemAttr('gateScrambleStrength'), **kwargs) fit.ship.forceItemAttr('ECMResistance', src.getModifiedItemAttr('ECMResistance'), **kwargs) class Effect8120(BaseEffect): """ interceptorNullificationRoleBonus Used by: Ships from group: Interceptor (6 of 10) Subsystems named like: Propulsion Interdiction Nullifier (4 of 4) Ship: Victorieux Luxury Yacht """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Interdiction Nullifier', 'maxTargetRangeBonus', ship.getModifiedItemAttr('shipBonusRole1'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Interdiction Nullifier', 'moduleReactivationDelay', ship.getModifiedItemAttr('shipBonusRole1'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Interdiction Nullifier', 'durationHighisGood', ship.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Interdiction Nullifier', 'scanResolutionMultiplier', ship.getModifiedItemAttr('shipBonusRole3'), **kwargs) class Effect8121(BaseEffect): """ warpCoreStabilizerActive Used by: Modules from group: Warp Core Stabilizer (8 of 8) """ type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('warpScrambleStatus', module.getModifiedItemAttr('warpScrambleStrength'), **kwargs) class Effect8123(BaseEffect): """ droneBandWidthPenaltyOnline Used by: Modules from group: Interdiction Nullifier (4 of 4) Modules from group: Warp Core Stabilizer (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('droneBandwidth', module.getModifiedItemAttr('droneBandwidthPercentage'), **kwargs) class Effect8128(BaseEffect): """ miningLaserRangeBonusLRSM Used by: Implants named like: AIR Mining Range Booster (2 of 2) Implants named like: Chemal Tech Mining Booster (3 of 3) """ type = 'passive' @staticmethod def handler(fit, source, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining'), 'maxRange', source.getModifiedItemAttr('maxRangeBonus'), **kwargs) class Effect8129(BaseEffect): """ shipBonusCloakVelocityBonusGF Used by: Ship: Helios """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): if fit.extraAttributes['cloaked']: fit.ship.boostItemAttr( 'maxVelocity', container.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs) class Effect8130(BaseEffect): """ shipBonusWarpCapacityNeedGF2 Used by: Ship: Helios """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpCapacitorNeed', container.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect8131(BaseEffect): """ shipBonusWarpCapacitorNeedAF Used by: Ship: Anathema """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpCapacitorNeed', container.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect8132(BaseEffect): """ shipBonusScanProbeDeviationA2F Used by: Ship: Anathema """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseMaxScanDeviation', container.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs) class Effect8133(BaseEffect): """ shipBonusCloakVelocityMF Used by: Ship: Cheetah """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): if fit.extraAttributes['cloaked']: fit.ship.boostItemAttr('maxVelocity', container.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect8134(BaseEffect): """ shipBonusWarpCapacitorNeedCF2 Used by: Ship: Buzzard """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpCapacitorNeed', container.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect8135(BaseEffect): """ shipBonusScanProbeDeviationCF Used by: Ship: Buzzard """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseMaxScanDeviation', container.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) class Effect8136(BaseEffect): """ shipBonusWarpCapacitorNeedMF2 Used by: Ship: Cheetah """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpCapacitorNeed', container.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs) class Effect8151(BaseEffect): """ shipBonusCloakedVelocityRole1 Used by: Ships from group: Black Ops (6 of 6) """ type = 'passive' runTime = 'early' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Cloaking'), 'maxVelocityModifier', ship.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect8152(BaseEffect): """ eliteBonusEnergyDrainAmountBlackOps2 Used by: Ship: Redeemer """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', ship.getModifiedItemAttr('eliteBonusBlackOps2'), skill='Black Ops', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', ship.getModifiedItemAttr('eliteBonusBlackOps2'), skill='Black Ops', **kwargs) class Effect8154(BaseEffect): """ eliteBonusDroneTrackingOptimalBlackOps2 Used by: Ship: Sin """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'maxRange', ship.getModifiedItemAttr('eliteBonusBlackOps2'), skill='Black Ops', **kwargs) fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusBlackOps2'), skill='Black Ops', **kwargs) class Effect8155(BaseEffect): """ eliteBonusLPTtrackingBlackOps1 Used by: Ship: Panther """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusBlackOps1'), skill='Black Ops', **kwargs) class Effect8156(BaseEffect): """ eliteBonusLPTfalloffBlackOps2 Used by: Ship: Panther """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'falloff', ship.getModifiedItemAttr('eliteBonusBlackOps2'), skill='Black Ops', **kwargs) class Effect8157(BaseEffect): """ eliteBonusShieldResistancesBlackOps2 Used by: Ship: Widow """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): damageTypes = ('Em', 'Explosive', 'Kinetic', 'Thermal') for damageType in damageTypes: fit.ship.boostItemAttr( 'shield{0}DamageResonance'.format(damageType), ship.getModifiedItemAttr('eliteBonusBlackOps2'), skill='Black Ops', **kwargs) class Effect8158(BaseEffect): """ stabilizeCloakDurationBonus Used by: Implant: Strong Veilguard Booster """ type = 'passive' @staticmethod def handler(fit, booster, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Cloaking'), 'stabilizeCloakDuration', booster.getModifiedItemAttr('stabilizeCloakDurationBonus'), **kwargs) class Effect8199(BaseEffect): """ gallenteIndustrialBonusIceHoldCapacity Used by: Ship: Kryos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'specialIceHoldCapacity', ship.getModifiedItemAttr('gallenteIndustrialBonusIceHoldCapacity'), skill='Gallente Hauler', **kwargs) class Effect8206(BaseEffect): """ specializationAsteroidDurationMultiplierEffect Used by: Charges from group: Mercoxit Mining Crystal (6 of 6) Charges from group: Mining Crystal (66 of 66) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.multiplyItemAttr('duration', module.getModifiedChargeAttr('specializationAsteroidDurationMultiplier'), **kwargs) class Effect8210(BaseEffect): """ expeditionFrigateBonusIceHarvestingDuration Used by: Ship: Endurance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'duration', ship.getModifiedItemAttr('expeditionFrigateBonusIceHarvestingDuration'), skill='Expedition Frigates', **kwargs) class Effect8223(BaseEffect): """ shipRoleBonusOreMiningYield Used by: Ships from group: Expedition Frigate (2 of 2) Ship: Retriever """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining'), 'miningAmount', ship.getModifiedItemAttr('shipRoleBonusOreMiningYield'), **kwargs) class Effect8224(BaseEffect): """ shipRoleBonusIceHarvestingDuration Used by: Variations of ship: Covetor (2 of 2) Variations of ship: Retriever (2 of 2) Ship: Endurance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'duration', ship.getModifiedItemAttr('shipRoleBonusIceHarvestingDuration'), **kwargs) class Effect8225(BaseEffect): """ shipRoleBonusDroneDamage Used by: Variations of ship: Procurer (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', ship.getModifiedItemAttr('shipRoleBonusDroneDamage'), **kwargs) class Effect8226(BaseEffect): """ shipRoleBonusDroneHitPoints Used by: Variations of ship: Procurer (2 of 2) Ship: Metamorphosis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for layer in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), layer, ship.getModifiedItemAttr('shipRoleBonusDroneHitPoints'), **kwargs) class Effect8227(BaseEffect): """ miningBargeBonusOreMiningYield Used by: Ships from group: Exhumer (3 of 3) Ships from group: Mining Barge (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining'), 'miningAmount', ship.getModifiedItemAttr('miningBargeBonusOreMiningYield'), skill='Mining Barge', **kwargs) class Effect8228(BaseEffect): """ miningBargeBonusIceHarvestingDuration Used by: Ships from group: Exhumer (3 of 3) Ships from group: Mining Barge (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'duration', ship.getModifiedItemAttr('miningBargeBonusIceHarvestingDuration'), skill='Mining Barge', **kwargs) class Effect8229(BaseEffect): """ miningBargeBonusGasHarvestingDuration Used by: Ships from group: Mining Barge (3 of 3) Ship: Hulk Ship: Mackinaw """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Gas Cloud Harvesting'), 'duration', ship.getModifiedItemAttr('miningBargeBonusGasHarvestingDuration'), skill='Mining Barge', **kwargs) class Effect8230(BaseEffect): """ miningBargeBonusOreMiningRange Used by: Variations of ship: Covetor (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining'), 'maxRange', ship.getModifiedItemAttr('miningBargeBonusOreMiningRange'), skill='Mining Barge', **kwargs) class Effect8231(BaseEffect): """ miningBargeBonusIceHarvestingRange Used by: Variations of ship: Covetor (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'maxRange', ship.getModifiedItemAttr('miningBargeBonusIceHarvestingRange'), skill='Mining Barge', **kwargs) class Effect8243(BaseEffect): """ exhumersBonusOreMiningDuration Used by: Ship: Hulk """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining'), 'duration', ship.getModifiedItemAttr('exhumersBonusOreMiningDuration'), skill='Exhumers', **kwargs) class Effect8244(BaseEffect): """ exhumersBonusIceHarvestingDuration Used by: Ship: Hulk """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'duration', ship.getModifiedItemAttr('exhumersBonusIceHarvestingDuration'), skill='Exhumers', **kwargs) class Effect8249(BaseEffect): """ exhumersBonusOreMiningYield Used by: Ships from group: Exhumer (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining'), 'miningAmount', ship.getModifiedItemAttr('exhumersBonusOreMiningYield'), skill='Exhumers', **kwargs) class Effect8251(BaseEffect): """ exhumersBonusGeneralMiningHoldCapacity Used by: Ship: Mackinaw """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'generalMiningHoldCapacity', ship.getModifiedItemAttr('exhumersBonusGeneralMiningHoldCapacity'), skill='Exhumers', **kwargs) class Effect8253(BaseEffect): """ exhumersBonusShieldResistance Used by: Ships from group: Exhumer (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): damageTypes = ('Em', 'Explosive', 'Kinetic', 'Thermal') for damageType in damageTypes: fit.ship.boostItemAttr( 'shield{}DamageResonance'.format(damageType), ship.getModifiedItemAttr('exhumersBonusShieldResistance'), skill='Exhumers', **kwargs) class Effect8261(BaseEffect): """ industrialCommandBonusDroneDamage Used by: Ships from group: Industrial Command Ship (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', ship.getModifiedItemAttr('industrialCommandBonusDroneDamage'), skill='Industrial Command Ships', **kwargs) class Effect8263(BaseEffect): """ industrialCommandBonusFuelConsuptionCompactIndustrialCore Used by: Ship: Orca """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Industrial Reconfiguration'), 'consumptionQuantity', ship.getModifiedItemAttr('industrialCommandBonusFuelConsuptionCompactIndustrialCore'), skill='Industrial Command Ships', **kwargs) class Effect8264(BaseEffect): """ industrialCommandBonusMiningForemanBurstRange Used by: Ships from group: Industrial Command Ship (2 of 2) Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining Foreman'), 'maxRange', ship.getModifiedItemAttr('industrialCommandBonusMiningForemanBurstRange'), skill='Industrial Command Ships', **kwargs) class Effect8267(BaseEffect): """ weaponDisruptorResistanceBonusPassive Used by: Implants named like: Harvest Anti Disruptor Booster (4 of 4) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'weaponDisruptionResistance', container.getModifiedItemAttr('weaponDisruptionResistanceBonus'), **kwargs) class Effect8268(BaseEffect): """ nosferatuDurationBonusPassive Used by: Implants named like: Harvest Nosferatu Booster (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Energy Nosferatu', 'duration', module.getModifiedItemAttr('durationBonus'), **kwargs) class Effect8269(BaseEffect): """ stasisWebifierMaxRangeAddPassive Used by: Implants named like: Harvest Webifier Booster (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease( lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', module.getModifiedItemAttr('stasisWebRangeAdd'), **kwargs) class Effect8270(BaseEffect): """ capacitorWarfareResistanceBonusPassive Used by: Implants named like: Halcyon Y Booster (5 of 5) Implants named like: Tetrimon Anti Drain Booster (4 of 4) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'energyWarfareResistance', container.getModifiedItemAttr('energyWarfareResistanceBonus'), **kwargs) class Effect8275(BaseEffect): """ minmatarIndustrialBonusGasHoldCapacity Used by: Ship: Hoarder """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'specialGasHoldCapacity', ship.getModifiedItemAttr('minmatarIndustrialBonusGasHoldCapacity'), skill='Minmatar Hauler', **kwargs) class Effect8278(BaseEffect): """ industrialCommandBonusGeneralMiningHoldCapacity Used by: Ships from group: Industrial Command Ship (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'generalMiningHoldCapacity', ship.getModifiedItemAttr('industrialCommandBonusGeneralMiningHoldCapacity'), skill='Industrial Command Ships', **kwargs) class Effect8279(BaseEffect): """ industrialCommandBonusShipHoldCapacity Used by: Ships from group: Industrial Command Ship (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'capacity', ship.getModifiedItemAttr('industrialCommandBonusShipCargoCapacity'), skill='Industrial Command Ships', **kwargs) class Effect8291(BaseEffect): """ afterburnerSpeedBoostBonusPassive Used by: Implants named like: Wightstorm Cetana Booster (4 of 4) """ type = 'passive' @staticmethod def handler(fit, booster, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Afterburner'), 'speedFactor', booster.getModifiedItemAttr('speedFBonus'), **kwargs) class Effect8294(BaseEffect): """ industrialCommandBonusDroneOreMiningYield Used by: Ships from group: Industrial Command Ship (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Mining Drone Operation'), 'miningAmount', ship.getModifiedItemAttr('industrialCommandBonusDroneOreMiningYield'), skill='Industrial Command Ships', **kwargs) class Effect8295(BaseEffect): """ industrialCommandBonusDroneIceHarvestingCycleTime Used by: Ships from group: Industrial Command Ship (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Ice Harvesting Drone Operation'), 'duration', ship.getModifiedItemAttr('industrialCommandBonusDroneIceHarvestingCycleTime'), skill='Industrial Command Ships', **kwargs) class Effect8296(BaseEffect): """ capitalIndustrialShipBonusDroneOreMiningYield Used by: Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Mining Drone Operation'), 'miningAmount', ship.getModifiedItemAttr('capitalIndustrialShipBonusDroneOreMiningYield'), skill='Capital Industrial Ships', **kwargs) class Effect8297(BaseEffect): """ capitalIndustrialShipBonusDroneIceCycleTime Used by: Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Ice Harvesting Drone Operation'), 'duration', ship.getModifiedItemAttr('capitalIndustrialShipBonusDroneIceCycleTime'), skill='Capital Industrial Ships', **kwargs) class Effect8300(BaseEffect): """ shipRoleBonusGasHarvestingDuration Used by: Variations of ship: Covetor (2 of 2) Variations of ship: Retriever (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Gas Cloud Harvesting'), 'duration', ship.getModifiedItemAttr('shipRoleBonusGasHarvesterDuration'), **kwargs) class Effect8301(BaseEffect): """ exhumersBonusGasHarvestingDuration Used by: Ships from group: Exhumer (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Gas Cloud Harvesting'), 'duration', ship.getModifiedItemAttr('exhumersBonusGasHarvestingDuration'), skill='Exhumers', **kwargs) class Effect8303(BaseEffect): """ shipRoleBonusStripMinerActivationCost Used by: Variations of ship: Covetor (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining'), 'capacitorNeed', ship.getModifiedItemAttr('shipRoleBonusStripMinerActivationCost'), **kwargs) class Effect8304(BaseEffect): """ shipRoleBonusIceHarvestingActivationCost Used by: Variations of ship: Covetor (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'capacitorNeed', ship.getModifiedItemAttr('shipRoleBonusIceHarvesterActivationCost'), **kwargs) class Effect8305(BaseEffect): """ shipRoleBonusOreMiningDuration Used by: Variations of ship: Covetor (2 of 2) Ship: Mackinaw """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining'), 'duration', ship.getModifiedItemAttr('shipRoleBonusOreMiningDuration'), **kwargs) class Effect8306(BaseEffect): """ industrialReconfigurationBonusConsumptionQuantity Used by: Skill: Industrial Reconfiguration """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): amount = -skill.getModifiedItemAttr('consumptionQuantityBonus') fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill(skill), 'consumptionQuantity', amount * skill.level, **kwargs) class Effect8309(BaseEffect): """ capitalIndustrialShipBonusDroneHitPoints Used by: Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for layer in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), layer, ship.getModifiedItemAttr('capitalIndustrialShipBonusDroneHitPoints'), skill='Capital Industrial Ships', **kwargs) class Effect8311(BaseEffect): """ industrialCommandBonusDroneHitPoints Used by: Ships from group: Industrial Command Ship (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for layer in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), layer, ship.getModifiedItemAttr('industrialCommandBonusDroneHitPoints'), skill='Industrial Command Ships', **kwargs) class Effect8313(BaseEffect): """ miningFrigateBonusGasCloudHarvestingDuration Used by: Variations of ship: Venture (3 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Gas Cloud Harvesting'), 'duration', ship.getModifiedItemAttr('miningFrigateBonusGasCloudHarvestingDuration'), skill='Mining Frigate', **kwargs) class Effect8315(BaseEffect): """ shipRoleBonusGasHarvestingYield Used by: Variations of ship: Venture (3 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Gas Cloud Harvesting'), 'miningAmount', ship.getModifiedItemAttr('shipRoleBonusGasHarvestingYield'), **kwargs) class Effect8317(BaseEffect): """ miningFrigateBonusIceHarvestingDuration Used by: Ship: Endurance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'duration', ship.getModifiedItemAttr('miningFrigateBonusIceHarvestingDuration'), skill='Mining Frigate', **kwargs) class Effect8323(BaseEffect): """ gallenteIndustrialBonusMiningHoldCapacity Used by: Ship: Miasmos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'generalMiningHoldCapacity', ship.getModifiedItemAttr('gallenteIndustrialBonusMiningHoldCapacity'), skill='Gallente Hauler', **kwargs) class Effect8360(BaseEffect): """ shipBonusMissileReloadTimeGC2 Used by: Ship: Laelaps """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'reloadTime', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect8362(BaseEffect): """ shipBonusWarpDisruptionFieldGeneratorSignatureRadius Used by: Ship: Laelaps """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Warp Disrupt Field Generator', 'signatureRadiusBonus', ship.getModifiedItemAttr('eliteBonusHeavyInterdictors3'), **kwargs) class Effect8364(BaseEffect): """ industrialItemCompression Used by: Modules from group: Compressors (12 of 12) """ type = 'active' class Effect8372(BaseEffect): """ fleetCompressionLogisticsRangeBonus Used by: Skill: Fleet Compression Logistics """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shipboard Compression Technology') or mod.item.requiresSkill('Capital Shipboard Compression Technology'), 'maxRange', skill.getModifiedItemAttr('fleetCompressionLogisticsRangeBonus') * skill.level, **kwargs) class Effect8377(BaseEffect): """ BattleshipRoleBonusArmorPlate&ShieldExtenderHP Used by: Ships from group: Battleship (34 of 35) Ships from group: Black Ops (6 of 6) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Shield Extender', 'capacityBonus', ship.getModifiedItemAttr('battleshipExtenderHPBonus'), **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Armor Plate', 'armorHPBonusAdd', ship.getModifiedItemAttr('battleshipPlateHPBonus'), **kwargs) fit.modules.filteredItemIncrease( lambda mod: mod.item.group.name == 'Reinforced Bulkhead', 'structureHPMultiplier', ship.getModifiedItemAttr('battleshipBulkheadHPModifierBonus'), **kwargs) class Effect8467(BaseEffect): """ modifyJumpConduitPassengerRequired Used by: Module: Covert Jump Portal Generator I Module: Industrial Jump Portal Generator I """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.forceItemAttr( 'jumpConduitPassengerRequiredAttributeID', module.getModifiedChargeAttr('jumpConduitPassengerRequiredAttributeID'), **kwargs) class Effect8468(BaseEffect): """ subsystemBonusBlackOpsJumpPassenger Used by: Subsystems named like: Defensive Covert Reconfiguration (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.forceItemAttr( 'isBlackOpsJumpPortalPassenger', module.getModifiedChargeAttr('isBlackOpsJumpPortalPassenger'), **kwargs) module.forceItemAttr( 'isBlackOpsJumpConduitPassenger', module.getModifiedChargeAttr('isBlackOpsJumpConduitPassenger'), **kwargs) class Effect8470(BaseEffect): """ capitalIndustrialCommandBonusDroneDamage Used by: Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', container.getModifiedItemAttr('capitalIndustrialCommandBonusDroneDamage'), skill='Capital Industrial Ships', **kwargs) class Effect8474(BaseEffect): """ subsystemBonusMassAddition Used by: Subsystem: Proteus Defensive - Augmented Plating """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Armor Plate', 'massAddition', ship.getModifiedItemAttr('subsystemBonusMassAddition'), **kwargs) class Effect8477(BaseEffect): """ droneTrackingBonusPassive Used by: Implants named like: Halcyon R Booster (5 of 5) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'trackingSpeed', container.getModifiedItemAttr('droneTrackingBonus'), **kwargs) class Effect8478(BaseEffect): """ miningAndIceHarvestingCycleTimeBonusPassive Used by: Implants named like: Halcyon B Booster (5 of 5) Implants named like: Halcyon G Booster (5 of 5) """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Ice Harvesting') or mod.item.requiresSkill('Mining'), 'duration', skill.getModifiedItemAttr('iceHarvestCycleBonus'), **kwargs) class Effect8479(BaseEffect): """ droneOptimalFalloffBonusPassive Used by: Implants named like: Halcyon Y Booster (5 of 5) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'maxRange', container.getModifiedItemAttr('rangeSkillBonus'), **kwargs) fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'falloff', container.getModifiedItemAttr('falloffBonus'), **kwargs) class Effect11055(BaseEffect): """ shipBonusBattlecruiserHeavyMissileAoeVelocityMBC1 Used by: Ship: Cyclone Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'aoeVelocity', ship.getModifiedItemAttr('shipBonusMBC1'), skill='Minmatar Battlecruiser', **kwargs) class Effect11056(BaseEffect): """ shipBonusBattlecruiserHeavyAssaultMissileAoeVelocityMBC1 Used by: Ship: Cyclone Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'aoeVelocity', ship.getModifiedItemAttr('shipBonusMBC1'), skill='Minmatar Battlecruiser', **kwargs) class Effect11057(BaseEffect): """ shipBonusShieldBoostCapacitorCBC3 Used by: Ship: Ferox Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Operation'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusCBC3'), skill='Caldari Battlecruiser', **kwargs) class Effect11059(BaseEffect): """ shipBonusMediumHybridTrackingCBC1 Used by: Ship: Ferox Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'trackingSpeed', src.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser', **kwargs) class Effect11060(BaseEffect): """ shipBonusDroneWebStrengthAndHitpointsGBC3 Used by: Ship: Myrmidon Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'speedFactor', ship.getModifiedItemAttr('shipBonusGBC3'), skill='Gallente Battlecruiser', **kwargs) for attr in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Propulsion Jamming'), attr, ship.getModifiedItemAttr('shipBonusGBC3'), skill='Gallente Battlecruiser', **kwargs) class Effect11061(BaseEffect): """ roleBonusMHTRangeCBC2 Used by: Ship: Myrmidon Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for attr in ('maxRange', 'falloff'): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), attr, ship.getModifiedItemAttr('roleBonusCBC2'), **kwargs) class Effect11063(BaseEffect): """ shipBonusMediumEnergyWeaponDamageABC3 Used by: Ship: Prophecy Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusABC3'), skill='Amarr Battlecruiser', **kwargs) class Effect11064(BaseEffect): """ shipBonusMediumEnergyWeaponRangeABC1 Used by: Ship: Prophecy Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusABC1'), skill='Amarr Battlecruiser', **kwargs) class Effect11065(BaseEffect): """ shipBonusArmorHitpointsABC1 Used by: Ship: Prophecy Navy Issue """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'armorHP', implant.getModifiedItemAttr('shipBonusABC1'), skill='Amarr Battlecruiser', **kwargs) class Effect11067(BaseEffect): """ battlecruiserMETRange2 Used by: Ship: Prophecy Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attr in ('maxRange', 'falloff'): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Medium Energy Turret'), attr, src.getModifiedItemAttr('roleBonusCBC2'), **kwargs) class Effect11068(BaseEffect): """ shipMissileRoFMF Used by: Ship: Probe Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'speed', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect11069(BaseEffect): """ shipRoleBonusScanProbeLauncherCPU Used by: Ship: Heron Navy Issue Ship: Imicus Navy Issue Ship: Magnate Navy Issue Ship: Probe Fleet Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Astrometrics'), 'cpu', src.getModifiedItemAttr('shipRoleBonusScanProbeLauncherCPU'), **kwargs) class Effect11070(BaseEffect): """ shipBonusMissileDamageCF Used by: Ship: Heron Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for dmgType in ('em', 'kinetic', 'explosive', 'thermal'): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), f'{dmgType}Damage', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) class Effect11072(BaseEffect): """ shipBonusSmallHybridDamageGF2 Used by: Ship: Imicus Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect11358(BaseEffect): """ shipBonusBattlecruiserSignatureRadiusMBC3 Used by: Ship: Cyclone Fleet Issue """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'signatureRadius', implant.getModifiedItemAttr('shipBonusMBC3'), skill='Minmatar Battlecruiser', **kwargs) class Effect11359(BaseEffect): """ shipBonusShieldBoostFittingCBC4 Used by: Ship: Ferox Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for attr in ('cpu', 'power'): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Operation'), attr, ship.getModifiedItemAttr('shipBonusCBC4'), skill='Caldari Battlecruiser', **kwargs) class Effect11373(BaseEffect): """ shipBonusDreadnoughtM1ArmorBoostAmount&ShieldBoostAmount Used by: Ship: Naglfar Fleet Issue Ship: Valravn """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('shipBonusDreadnoughtM1'), skill='Minmatar Dreadnought', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusDreadnoughtM1'), skill='Minmatar Dreadnought', **kwargs) class Effect11374(BaseEffect): """ shipBonusDreadnoughtA4EnergyWarfareRangeAmountBonus Used by: Ship: Revelation Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for attr in ('powerTransferAmount', 'maxRange'): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Energy Nosferatu', attr, ship.getModifiedItemAttr('shipBonusDreadnoughtA4'), skill='Amarr Dreadnought', **kwargs) class Effect11376(BaseEffect): """ shipBonusDreadnoughtG1OptimalRangeBonus Used by: Ship: Moros Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'maxRange', src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs) class Effect11380(BaseEffect): """ shipBonusDreadnoughtG1ArmorBoostAmount Used by: Ship: Moros Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs) class Effect11381(BaseEffect): """ shipBonusWarpScramblerRangeBonusG5 Used by: Ship: Moros Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', ship.getModifiedItemAttr('shipBonusDreadnoughtG5'), skill='Gallente Dreadnought', **kwargs) class Effect11382(BaseEffect): """ shipBonusDreadnoughtC1EwTargetPainter Used by: Ship: Phoenix Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Target Painter', 'signatureRadiusBonus', src.getModifiedItemAttr('shipBonusDreadnoughtC1'), skill='Caldari Dreadnought', **kwargs) class Effect11387(BaseEffect): """ shipHybridDamageBonusGalNavyDestroyer Used by: Ship: Catalyst Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusNavyDestroyerGallente1'), skill='Gallente Destroyer', **kwargs) class Effect11388(BaseEffect): """ shipBonusArmorRepairGalNavyDestroyer Used by: Ship: Catalyst Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusNavyDestroyerGallente2'), skill='Gallente Destroyer', **kwargs) class Effect11390(BaseEffect): """ armorUpgradesMassPenaltyReductionBonusGalNavyDestroyer Used by: Ship: Catalyst Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Armor Plate', 'massAddition', ship.getModifiedItemAttr('shipBonusNavyDestroyerGallente3'), skill='Gallente Destroyer', **kwargs) class Effect11391(BaseEffect): """ shipHybridDamageBonusCalNavyDestroyer Used by: Ship: Cormorant Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusNavyDestroyerCaldari1'), skill='Caldari Destroyer', **kwargs) class Effect11392(BaseEffect): """ shipHybridRangeBonusCalNavyDestroyer Used by: Ship: Cormorant Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusNavyDestroyerCaldari2'), skill='Caldari Destroyer', **kwargs) class Effect11393(BaseEffect): """ shipHybridRangeBonusGalNavyDestroyer Used by: Ship: Catalyst Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusNavyDestroyerGallente4'), **kwargs) class Effect11394(BaseEffect): """ shipHybridFallOffGalNavyDestroyer Used by: Ship: Catalyst Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusNavyDestroyerGallente5'), **kwargs) class Effect11395(BaseEffect): """ shipBonusShieldBoosterCalNavyDestroyer Used by: Ship: Cormorant Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('shipBonusNavyDestroyerCaldari3'), skill='Caldari Destroyer', **kwargs) class Effect11396(BaseEffect): """ shipHybridRangeBonus2CalNavyDestroyer Used by: Ship: Cormorant Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusNavyDestroyerCaldari4'), **kwargs) class Effect11397(BaseEffect): """ shipHybridFallOffCalNavyDestroyer Used by: Ship: Cormorant Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusNavyDestroyerCaldari5'), **kwargs) class Effect11398(BaseEffect): """ shipProjectileDamageMinNavyDestroyer Used by: Ship: Thrasher Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusNavyDestroyerMinmatar1'), skill='Minmatar Destroyer', **kwargs) class Effect11399(BaseEffect): """ shipProjectileRofMinNavyDestroyer Used by: Ship: Thrasher Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'speed', ship.getModifiedItemAttr('shipBonusNavyDestroyerMinmatar2'), skill='Minmatar Destroyer', **kwargs) class Effect11400(BaseEffect): """ shipBonusMWDSignatureRadiusMinNavyDestroyer Used by: Ship: Thrasher Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'signatureRadiusBonus', ship.getModifiedItemAttr('shipBonusNavyDestroyerMinmatar3'), skill='Minmatar Destroyer', **kwargs) class Effect11401(BaseEffect): """ shipProjectileRangeBonusMinNavyDestroyer Used by: Ship: Thrasher Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusNavyDestroyerMinmatar4'), **kwargs) class Effect11402(BaseEffect): """ shipProjectileFallOffMinNavyDestroyer Used by: Ship: Thrasher Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusNavyDestroyerMinmatar5'), **kwargs) class Effect11404(BaseEffect): """ shipArmorHpAmaNavyDestroyer Used by: Ship: Coercer Navy Issue """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'armorHP', implant.getModifiedItemAttr('shipBonusNavyDestroyerAmarr1'), skill='Amarr Destroyer', **kwargs) class Effect11405(BaseEffect): """ shipBonusSmallEnergyTurretDamageAmaNavyDestroyer Used by: Ship: Coercer Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusNavyDestroyerAmarr2'), skill='Amarr Destroyer', **kwargs) class Effect11406(BaseEffect): """ shipLaserCap1AmaNavyIssue Used by: Ship: Coercer Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusNavyDestroyerAmarr3'), skill='Amarr Destroyer', **kwargs) class Effect11407(BaseEffect): """ shipNeutCap1AmaNavyDestroyer Used by: Ship: Coercer Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Energy Neutralizer', 'capacitorNeed', ship.getModifiedItemAttr('shipBonusNavyDestroyerAmarr4'), skill='Amarr Destroyer', **kwargs) class Effect11408(BaseEffect): """ shipEnergyNeutralizerTransferAmountBonusAmaNavyDestroyer Used by: Ship: Coercer Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', ship.getModifiedItemAttr('shipBonusNavyDestroyerAmarr5'), skill='Amarr Destroyer', **kwargs) class Effect11410(BaseEffect): """ shipBonusSETFalloffAmaNavyDestroyer Used by: Ship: Coercer Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusNavyDestroyerAmarr7'), **kwargs) class Effect11411(BaseEffect): """ shipMissileDmgMC2 Used by: Ship: Bestla Ship: Muninn """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for dmgType in ('em', 'kinetic', 'explosive', 'thermal'): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), f'{dmgType}Damage', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect11412(BaseEffect): """ shipBonusShieldArmorResonanceMC Used by: Ship: Muninn """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for dmgType in ('em', 'thermal', 'kinetic', 'explosive'): fit.ship.boostItemAttr( 'armor{}DamageResonance'.format(dmgType.capitalize()), ship.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs) fit.ship.boostItemAttr( 'shield{}DamageResonance'.format(dmgType.capitalize()), ship.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs) class Effect11413(BaseEffect): """ eliteBonusHeavyGunshipMissileExplosionVelocity1 Used by: Ship: Bestla Ship: Muninn """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: ( mod.charge.requiresSkill('Heavy Assault Missiles') or mod.charge.requiresSkill('Heavy Missiles')), 'aoeVelocity', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers', **kwargs) class Effect11414(BaseEffect): """ eliteBonusShieldBoosterAmount1 Used by: Ship: Cerberus """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers', **kwargs) class Effect11415(BaseEffect): """ eliteBonusHybridTracking1 Used by: Ship: Eagle """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'trackingSpeed', src.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers', **kwargs) class Effect11416(BaseEffect): """ shipBonusHybridFalloffGC2 Used by: Ship: Exequror Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'falloff', src.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect11417(BaseEffect): """ shipBonusArmorPlateMassGC3 Used by: Ship: Exequror Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Armor Plate', 'massAddition', ship.getModifiedItemAttr('shipBonusGC3'), skill='Gallente Cruiser', **kwargs) class Effect11419(BaseEffect): """ shipBonusDroneTrackingGB2 Used by: Ship: Dominix Navy Issue """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'trackingSpeed', container.getModifiedItemAttr('shipBonusGB2'), skill='Gallente Battleship', **kwargs) class Effect11420(BaseEffect): """ shipBonusRepairAmountGB3 Used by: Ship: Dominix Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusGB3'), skill='Gallente Battleship', **kwargs) class Effect11421(BaseEffect): """ shipBonusTorpedoDamageAB Used by: Ship: Armageddon Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for dmgType in ('em', 'kinetic', 'explosive', 'thermal'): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Torpedoes'), f'{dmgType}Damage', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect11422(BaseEffect): """ shipBonusCruiseMissileDamageAB Used by: Ship: Armageddon Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for dmgType in ('em', 'kinetic', 'explosive', 'thermal'): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Cruise Missiles'), f'{dmgType}Damage', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect11423(BaseEffect): """ shipBonusHeavyMissileDamageAB Used by: Ship: Armageddon Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for dmgType in ('em', 'kinetic', 'explosive', 'thermal'): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Heavy Missiles'), f'{dmgType}Damage', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect11424(BaseEffect): """ shipBonusLargeEnergyTurretDamageAB Used by: Ship: Apocalypse Ship: Apocalypse Navy Issue Ship: Armageddon Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect11425(BaseEffect): """ shipBonusDroneHitpointsAB Used by: Ship: Armageddon Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for layer in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), layer, ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect11426(BaseEffect): """ shipBonusDroneDamageAB Used by: Ship: Armageddon Navy Issue """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', container.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect11428(BaseEffect): """ shipBonusCruiseMissileExplosionVelocityMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'aoeVelocity', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect11429(BaseEffect): """ shipBonusTorpedoMissileExplosionVelocityMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Torpedoes'), 'aoeVelocity', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect11430(BaseEffect): """ shipBonusLargeProjectileTrackingMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect11431(BaseEffect): """ shipBonusShieldHpCF2 Used by: Ship: Crow """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldCapacity', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect11432(BaseEffect): """ shipBonusArmorRepairEliteGunship2 Used by: Ship: Ishkur """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates', **kwargs) class Effect11445(BaseEffect): """ systemSensorStrengthBonus Used by: Celestial: Turnur Aftermath """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): for sensor_type in ('Gravimetric', 'Ladar', 'Magnetometric', 'Radar'): fit.ship.boostItemAttr(f'scan{sensor_type}Strength', beacon.getModifiedItemAttr('sensorStrengthBonus'), stackingPenalties=True, **kwargs) class Effect11446(BaseEffect): """ shipBonusDreadnoughtG4DamageBonus Used by: Ship: Moros Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusDreadnoughtG4'), skill='Gallente Dreadnought', **kwargs) class Effect11450(BaseEffect): """ shipBonusSETOptimalAmarNavyDestroyer6 Used by: Ship: Coercer Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusNavyDestroyerAmarr6'), **kwargs) class Effect11452(BaseEffect): """ shipBonusWarpScramblerStrengthG5 Used by: Ship: Moros Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Warp Scrambler', 'warpScrambleStrength', ship.getModifiedItemAttr('shipBonusDreadnoughtG5'), skill='Gallente Dreadnought', **kwargs) class Effect11454(BaseEffect): """ shipBonusGrapplerFalloffM4 Used by: Ship: Naglfar Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Stasis Grappler', 'falloffEffectiveness', ship.getModifiedItemAttr('shipBonusDreadnoughtM4'), skill='Minmatar Dreadnought', **kwargs) class Effect11512(BaseEffect): """ eliteBonusGunshipLightMissileAndRocketROF Used by: Ship: Geri """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name in ('Missile Launcher Light', 'Missile Launcher Rocket'), 'speed', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect11513(BaseEffect): """ shipBonusMissileDamageMF2 Used by: Ship: Geri """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for dmgType in ('em', 'kinetic', 'explosive', 'thermal'): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), f'{dmgType}Damage', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs) class Effect11514(BaseEffect): """ shipBonusArmorRepairAmountMF Used by: Ship: Geri """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect11515(BaseEffect): """ shipBonusArmorRepairAmountMC Used by: Ship: Bestla """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs) class Effect11516(BaseEffect): """ shipBonusShieldBoostAmountMC Used by: Ship: Bestla """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs) class Effect11517(BaseEffect): """ shipBonusStasisWebDroneHitpointsAT Used by: Ship: Bestla Ship: Geri """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for layer in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Propulsion Jamming'), layer, ship.getModifiedItemAttr('shipBonusAT'), **kwargs) class Effect11518(BaseEffect): """ shipBonusStasisWebDroneVelocityAT2 Used by: Ship: Bestla Ship: Geri """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Propulsion Jamming'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusAT2'), **kwargs) class Effect11519(BaseEffect): """ shipBonusStasisWebDroneWebStrengthAT3 Used by: Ship: Bestla Ship: Geri """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'speedFactor', ship.getModifiedItemAttr('shipBonusAT3'), **kwargs) class Effect11528(BaseEffect): """ covopsCloakCPURole1Bonus Used by: Ship: Metamorphosis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Cloaking'), 'cpu', ship.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect11529(BaseEffect): """ shipRole8BonusCoreProbeStrength Used by: Ship: Metamorphosis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Science'), 'baseSensorStrength', ship.getModifiedItemAttr('shipBonusRole8'), **kwargs) class Effect11530(BaseEffect): """ shipRole6BonusCoreProbeDeviation Used by: Ship: Metamorphosis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Science'), 'baseMaxScanDeviation', ship.getModifiedItemAttr('shipBonusRole6'), **kwargs) class Effect11531(BaseEffect): """ probeLauncherCPURole1Bonus Used by: Ship: Metamorphosis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Scan Probe Launcher', 'cpu', ship.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect11532(BaseEffect): """ dataMinerCPURole1Bonus Used by: Ship: Metamorphosis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Data Miners', 'cpu', ship.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect11691(BaseEffect): """ debuffLance Used by: Modules named like: Disruptive Lance (4 of 4) """ dealsDamage = True type = 'active' @staticmethod def handler(fit, mod, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) class Effect11696(BaseEffect): """ shipBonusDreadnoughtC1HybridTracking Used by: Ship: Karura """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'trackingSpeed', src.getModifiedItemAttr('shipBonusDreadnoughtC1'), skill='Caldari Dreadnought', **kwargs) class Effect11697(BaseEffect): """ shipBonusDreadnoughtC2HybridOptimalRange Used by: Ship: Karura """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'maxRange', src.getModifiedItemAttr('shipBonusDreadnoughtC2'), skill='Caldari Dreadnought', **kwargs) class Effect11698(BaseEffect): """ shipBonusDisruptionLanceDamage Used by: Ships from group: Lancer Dreadnought (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for dmgType in ('em', 'kinetic', 'explosive', 'thermal'): fit.modules.filteredItemBoost( lambda module: module.item.requiresSkill('Disruptive Lance Operation'), f'{dmgType}Damage', ship.getModifiedItemAttr('shipBonusAdvancedDreadnought1'), skill='Lancer Dreadnoughts', **kwargs) class Effect11700(BaseEffect): """ skillDisruptionLanceCapacitorUseBonus Used by: Skill: Disruptive Lance Operation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda module: module.item.requiresSkill('Disruptive Lance Operation'), 'capacitorNeed', skill.getModifiedItemAttr('disruptionLanceSkillBoostCapacitorCost') * skill.level, **kwargs) class Effect11701(BaseEffect): """ shipBonusDisruptionLanceRange Used by: Ships from group: Lancer Dreadnought (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda module: module.item.requiresSkill('Disruptive Lance Operation'), 'maxRange', ship.getModifiedItemAttr('shipBonusAdvancedDreadnought2'), skill='Lancer Dreadnoughts', **kwargs) class Effect11702(BaseEffect): """ eliteBonusMarauderArmourBonus2a Used by: Ship: Vargur """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('eliteBonusViolators2'), skill='Marauders', **kwargs) class Effect11704(BaseEffect): """ shipBonusDreadnoughtM2CapitalProjectileFalloff Used by: Ship: Valravn """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'falloff', src.getModifiedItemAttr('shipBonusDreadnoughtM2'), skill='Minmatar Dreadnought', **kwargs) class Effect11705(BaseEffect): """ shipBonusDreadnoughtA1MissileDamage Used by: Ship: Bane """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for dmgType in ('em', 'thermal', 'kinetic', 'explosive'): fit.modules.filteredChargeBoost( lambda mod: ( mod.charge.requiresSkill('XL Torpedoes') or mod.charge.requiresSkill('XL Cruise Missiles') or mod.charge.requiresSkill('Torpedoes')), f'{dmgType}Damage', src.getModifiedItemAttr('shipBonusDreadnoughtA1'), skill='Amarr Dreadnought', **kwargs) class Effect11706(BaseEffect): """ shipBonusDreadnoughtA2MissileExplosionRadius Used by: Ship: Bane """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: ( mod.charge.requiresSkill('XL Torpedoes') or mod.charge.requiresSkill('XL Cruise Missiles') or mod.charge.requiresSkill('Torpedoes')), 'aoeCloudSize', src.getModifiedItemAttr('shipBonusDreadnoughtA2'), skill='Amarr Dreadnought', **kwargs) class Effect11707(BaseEffect): """ shipBonusDreadnoughtG1HullResonance Used by: Ship: Hubris """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for dmgType in ('em', 'thermal', 'kinetic', 'explosive'): fit.ship.boostItemAttr( f'{dmgType}DamageResonance', src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs) class Effect11714(BaseEffect): """ disruptionLanceDisallowCloaking Used by: Modules named like: Disruptive Lance (4 of 4) """ runTime = 'early' type = 'offline' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease( lambda mod: mod.item.requiresSkill('Cloaking'), 'activationBlocked', module.getModifiedItemAttr('disruptionLanceDisallowCloaking'), **kwargs) class Effect11743(BaseEffect): """ shipProjectileTrackingGD Used by: Ship: Mekubal """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer', **kwargs) class Effect11745(BaseEffect): """ shipShieldEmResistanceGuristasAlligatorCBC Used by: Ship: Alligator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldEmDamageResonance', ship.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser', **kwargs) class Effect11746(BaseEffect): """ shipShieldThermalResistanceGuristasAlligatorCBC Used by: Ship: Alligator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldThermalDamageResonance', ship.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser', **kwargs) class Effect11747(BaseEffect): """ shipShieldKineticResistanceGuristasAlligatorCBC Used by: Ship: Alligator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldKineticDamageResonance', ship.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser', **kwargs) class Effect11748(BaseEffect): """ shipShieldExplosiveResistanceGuristasAlligatorCBC Used by: Ship: Alligator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser', **kwargs) class Effect11750(BaseEffect): """ shipBonusHeavyAssaultMissileKineticDamageGuristasAlligatorGBC Used by: Ship: Alligator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser', **kwargs) class Effect11751(BaseEffect): """ shipBonusHeavyAssaultMissileThermalDamageGuristasAlligatorGBC Used by: Ship: Alligator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser', **kwargs) class Effect11752(BaseEffect): """ shipBonusHeavyMissileKineticDamageGuristasAlligatorGBC Used by: Ship: Alligator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser', **kwargs) class Effect11753(BaseEffect): """ shipBonusHeavyMissileThermalDamageGuristasAlligatorGBC Used by: Ship: Alligator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser', **kwargs) class Effect11763(BaseEffect): """ shipBonusProjectileTurretFalloffBonusGBC Used by: Ship: Khizriel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser', **kwargs) class Effect11764(BaseEffect): """ shipRoleBonusProjectileRofPirateBattlecruiser Used by: Ship: Khizriel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'speed', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect11767(BaseEffect): """ shipBonusHybridTrackingATC3 Used by: Ship: Cybele """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'trackingSpeed', src.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers', **kwargs) class Effect11919(BaseEffect): """ shipBonusDestroyerMD1Falloff Used by: Ship: Mekubal """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusMD1'), skill='Minmatar Destroyer', **kwargs) class Effect11938(BaseEffect): """ shipShieldEMResistanceCD2 Used by: Ship: Mamba """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'shieldEmDamageResonance', src.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer', **kwargs) class Effect11939(BaseEffect): """ shipShieldThermalResistanceCD2 Used by: Ship: Mamba """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'shieldThermalDamageResonance', src.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer', **kwargs) class Effect11940(BaseEffect): """ shipShieldKineticResistanceCD2 Used by: Ship: Mamba """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'shieldKineticDamageResonance', src.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer', **kwargs) class Effect11941(BaseEffect): """ shipShieldExplosiveResistanceCD2 Used by: Ship: Mamba """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'shieldExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer', **kwargs) class Effect11942(BaseEffect): """ shipBonusKineticMissileDamageGD Used by: Ship: Mamba """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer', **kwargs) class Effect11943(BaseEffect): """ shipBonusThermalMissileDamageGD Used by: Ship: Mamba """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer', **kwargs) class Effect11944(BaseEffect): """ shipBonusTitanG2ProjectileFalloff Used by: Ship: Azariel """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'falloff', src.getModifiedItemAttr('shipBonusTitanG2'), skill='Gallente Dreadnought', **kwargs) class Effect11945(BaseEffect): """ shipBonusTitanG1ProjectileTracking Used by: Ship: Azariel """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'trackingSpeed', src.getModifiedItemAttr('shipBonusTitanG1'), skill='Gallente Dreadnought', **kwargs) class Effect11946(BaseEffect): """ systemSmallUpwellTurretDamage Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) """ type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Small Vorton Projector'), 'damageMultiplier', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, **kwargs) class Effect11947(BaseEffect): """ systemUpwellAoeCloudSize Used by: Celestials named like: Class Magnetar Effects (6 of 6) """ type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Vorton Projector Operation'), 'aoeCloudSize', beacon.getModifiedItemAttr('aoeCloudSizeMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect11948(BaseEffect): """ systemUpwellDamageMultiplier Used by: Celestials named like: Class Magnetar Effects (6 of 6) """ type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Vorton Projector Operation'), 'damageMultiplier', beacon.getModifiedItemAttr('damageMultiplierMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect11953(BaseEffect): """ systemUpwellAoeVelocity Used by: Celestials named like: Class Black Hole Effects (6 of 6) """ type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Vorton Projector Operation'), 'aoeVelocity', beacon.getModifiedItemAttr('aoeVelocityMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect11992(BaseEffect): """ shipBonusArmorPlateMassAT Used by: Ship: Cybele Ship: Shapash """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Armor Plate', 'massAddition', ship.getModifiedItemAttr('shipBonusATF3'), **kwargs) class Effect11993(BaseEffect): """ shipBonusRepairSystemsBonusATC3 Used by: Ship: Cybele """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusGC3'), skill='Gallente Cruiser', **kwargs) class Effect11994(BaseEffect): """ shipBonusHybridFalloffATC3 Used by: Ship: Cybele """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'falloff', src.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers', **kwargs) class Effect11995(BaseEffect): """ shipBonusHeatAfterburnerATGF Used by: Ship: Shapash """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Afterburner'), 'overloadSpeedFactorBonus', src.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect11996(BaseEffect): """ shipBonusMWDHeatATGF Used by: Ship: Shapash """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'overloadSpeedFactorBonus', src.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect11997(BaseEffect): """ shipBonusArmorRepATGF Used by: Ship: Shapash """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect11998(BaseEffect): """ shipBonusSmallHybridMaxRangeATF3 Used by: Ship: Shapash """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', src.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates', **kwargs) class Effect11999(BaseEffect): """ shipBonusSmallHybridTrackingSpeedATF3 Used by: Ship: Shapash """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'trackingSpeed', src.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates', **kwargs) class Effect12003(BaseEffect): """ vortonTurretSpeeBonusPostPercentSpeedLocationShipModulesRequiringVortonProjectorOperation Used by: Implants named like: Halcyon R Booster (5 of 5) """ type = 'passive' @staticmethod def handler(fit, booster, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Vorton Projector Operation'), 'speed', booster.getModifiedItemAttr('turretSpeeBonus'), **kwargs) class Effect12038(BaseEffect): """ shipBonusSPTFalloffMF3 Used by: Ship: Republic Fleet Firetail """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonus3MF'), skill='Minmatar Frigate', **kwargs) class Effect12050(BaseEffect): """ shipBonusColonyResourcesHoldCapacityUH1 Used by: Variations of ship: Squall (3 of 3) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'specialColonyResourcesHoldCapacity', src.getModifiedItemAttr('shipBonusUH1'), skill='Upwell Hauler', **kwargs) class Effect12051(BaseEffect): """ shipMissileEMDamageUH2 Used by: Variations of ship: Squall (3 of 3) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'emDamage', container.getModifiedItemAttr('shipBonusUH2'), skill='Upwell Hauler', **kwargs) class Effect12052(BaseEffect): """ shipMissileThermalDamageUH2 Used by: Variations of ship: Squall (3 of 3) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', container.getModifiedItemAttr('shipBonusUH2'), skill='Upwell Hauler', **kwargs) class Effect12053(BaseEffect): """ shipMissileExplosiveDamageUH2 Used by: Variations of ship: Squall (3 of 3) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosiveDamage', container.getModifiedItemAttr('shipBonusUH2'), skill='Upwell Hauler', **kwargs) class Effect12054(BaseEffect): """ shipMissileKineticDamageUH2 Used by: Variations of ship: Squall (3 of 3) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', container.getModifiedItemAttr('shipBonusUH2'), skill='Upwell Hauler', **kwargs) class Effect12057(BaseEffect): """ shipBonusColonyResourcesHoldCapacityUFreighter1 Used by: Ship: Avalanche """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'specialColonyResourcesHoldCapacity', src.getModifiedItemAttr('shipBonusUFreighter1'), skill='Upwell Freighter', **kwargs) class Effect12058(BaseEffect): """ shipMissileEMDamageUFreighter2 Used by: Ship: Avalanche """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'emDamage', container.getModifiedItemAttr('shipBonusUFreighter2'), skill='Upwell Freighter', **kwargs) class Effect12060(BaseEffect): """ shipMissileThermalDamageUFreighter2 Used by: Ship: Avalanche """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', container.getModifiedItemAttr('shipBonusUFreighter2'), skill='Upwell Freighter', **kwargs) class Effect12061(BaseEffect): """ shipMissileExplosiveDamageUFreighter2 Used by: Ship: Avalanche """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosiveDamage', container.getModifiedItemAttr('shipBonusUFreighter2'), skill='Upwell Freighter', **kwargs) class Effect12062(BaseEffect): """ shipMissileKineticDamageUFreighter2 Used by: Ship: Avalanche """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', container.getModifiedItemAttr('shipBonusUFreighter2'), skill='Upwell Freighter', **kwargs) class Effect12063(BaseEffect): """ shipRoleBonusUpwellFreighterCloakCPUPenalty Used by: Ship: Avalanche """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease( lambda mod: mod.item.group.name == 'Cloaking Device', 'cpu', ship.getModifiedItemAttr('upwellFreightercloakCPUPenalty'), **kwargs) class Effect12069(BaseEffect): """ shipBonusAutoTargetingMissilesUFreighter3 Used by: Ship: Avalanche """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): damageTypes = ('em', 'explosive', 'kinetic', 'thermal') for dmgType in damageTypes: fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Auto-Targeting Missiles'), f'{dmgType}Damage', container.getModifiedItemAttr('shipBonusUFreighter3'), skill='Upwell Freighter', **kwargs) class Effect12071(BaseEffect): """ shipRoleBonusUpwellFreighterCapitalFlexHardenerFittingCapBonus Used by: Ship: Avalanche """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.group.name == 'Flex Shield Hardener', 'power', ship.getModifiedItemAttr('upwellFreighterCapitalFlexHardenerFittingCapBonus'), **kwargs) fit.modules.filteredItemMultiply( lambda mod: mod.item.group.name == 'Flex Shield Hardener', 'capacitorNeed', ship.getModifiedItemAttr('upwellFreighterCapitalFlexHardenerFittingCapBonus'), **kwargs) class Effect12072(BaseEffect): """ eliteIndustrialUpwellNeutNosHeatBonus Used by: Ship: Torrent """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name in ('Energy Neutralizer', 'Energy Nosferatu'), 'overloadSelfDurationBonus', ship.getModifiedItemAttr('roleBonusOverheatDST'), **kwargs) class Effect12098(BaseEffect): """ jumpPortalPassengerBonusPercentSkill Used by: Ships from group: Carrier (4 of 4) Ships from group: Supercarrier (6 of 6) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'conduitJumpPassengerCount', src.getModifiedItemAttr('conduitPassengerBonusPercent'), skill='Capital Jump Portal Generation', **kwargs) class Effect12102(BaseEffect): """ capitalMJDSkillCapReductionBonus Used by: Skill: Capital Micro Jump Drive Operation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Micro Jump Drive Operation'), 'capacitorNeed', skill.getModifiedItemAttr('capitalMJDCapReductionBonus') * skill.level, **kwargs) class Effect12126(BaseEffect): """ microJumpPortalDriveCapital Used by: Module: Capital Micro Jump Field Generator """ type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('signatureRadius', module.getModifiedItemAttr('signatureRadiusBonusPercent'), stackingPenalties=True, **kwargs) class Effect12127(BaseEffect): """ shipRoleBonusUpwellHaulersMediumMissileFittingBonus Used by: Variations of ship: Squall (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for attr in ('cpu', 'power'): fit.modules.filteredItemMultiply( lambda mod: mod.item.group.name in ( 'Missile Launcher Heavy Assault', 'Missile Launcher Heavy', 'Missile Launcher Rapid Light'), attr, ship.getModifiedItemAttr('upwellHaulersMediumMissileFittingBonus'), **kwargs) class Effect12165(BaseEffect): """ ATFrigDmgBonus Used by: Ship: Sidewinder """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): # Get pilot sec status bonus directly here, instead of going through the intermediary effects try: sec_status = ship.owner.getPilotSecurity(low_limit=-10, high_limit=0) except (KeyboardInterrupt, SystemExit): raise except: return bonus = ship.getModifiedItemAttr('ATFrigDmgBonus') * sec_status fit.modules.filteredItemBoost( lambda mod: (mod.item.requiresSkill('Small Energy Turret') or mod.item.requiresSkill('Small Hybrid Turret') or mod.item.requiresSkill('Small Projectile Turret')), 'damageMultiplier', bonus, **kwargs) for dmgType in ('em', 'kinetic', 'explosive', 'thermal'): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Rockets') or mod.charge.requiresSkill('Light Missiles'), f'{dmgType}Damage', bonus, **kwargs) class Effect12176(BaseEffect): """ shipBonusAllShieldresistATCC1 Used by: Ship: Cobra """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for dmgType in ('em', 'thermal', 'kinetic', 'explosive'): fit.ship.boostItemAttr( 'shield{}DamageResonance'.format(dmgType.capitalize()), ship.getModifiedItemAttr('shipBonusCC3'), skill='Caldari Cruiser', **kwargs) class Effect12179(BaseEffect): """ ShipBonusAllShieldResistATCF1 Used by: Ship: Sidewinder """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for dmgType in ('em', 'thermal', 'kinetic', 'explosive'): fit.ship.boostItemAttr( 'shield{}DamageResonance'.format(dmgType.capitalize()), ship.getModifiedItemAttr('shipBonus3CF'), skill='Caldari Frigate', **kwargs) class Effect12180(BaseEffect): """ roleBonusATCruiserMJDFittingReduction Used by: Ship: Cobra """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Micro Jump Drive', 'cpu', ship.getModifiedItemAttr('flagCruiserFittingBonusPropMods'), **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Micro Jump Drive', 'power', ship.getModifiedItemAttr('flagCruiserFittingBonusPropMods'), **kwargs) class Effect12181(BaseEffect): """ ATcruiserTackleBonus1 Used by: Ship: Cobra """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): # Get pilot sec status bonus directly here, instead of going through the intermediary effects try: sec_status = ship.owner.getPilotSecurity(low_limit=-10, high_limit=0) except (KeyboardInterrupt, SystemExit): raise except: return bonus = ship.getModifiedItemAttr('ATcruiserStasisWebifierBonus') * sec_status fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', bonus, **kwargs) class Effect12183(BaseEffect): """ shipBonusATpropDuration Used by: Ship: Python """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name in ('Propulsion Module', 'Microwarpdrive'), 'duration', ship.getModifiedItemAttr('shipBonusATprobDuration'), **kwargs) class Effect12184(BaseEffect): """ shipBonusATAllShieldResistCB3 Used by: Ship: Python """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for dmgType in ('em', 'thermal', 'kinetic', 'explosive'): fit.ship.boostItemAttr( 'shield{}DamageResonance'.format(dmgType.capitalize()), ship.getModifiedItemAttr('shipBonusCB3'), skill='Caldari Battleship', **kwargs) class Effect12185(BaseEffect): """ shipBonusBurstJammer ATB Used by: Ship: Python """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): # Get pilot sec status bonus directly here, instead of going through the intermediary effects try: sec_status = ship.owner.getPilotSecurity(low_limit=-10, high_limit=0) except (KeyboardInterrupt, SystemExit): raise except: return bonus = ship.getModifiedItemAttr('ATBurstJammerStrengthBonus') * sec_status for attr in ('ecmBurstRange', 'scanRadarStrengthBonus', 'scanGravimetricStrengthBonus', 'scanLadarStrengthBonus', 'scanMagnetometricStrengthBonus'): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Burst Jammer', attr, bonus, **kwargs) class Effect12188(BaseEffect): """ shipRoleBonusSPTDamage Used by: Ship: Tholos """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', container.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect12189(BaseEffect): """ shipRoleBonusMPTDamage Used by: Ship: Cenotaph """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier', container.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect12190(BaseEffect): """ shipRoleBonusRocketDamage Used by: Ship: Tholos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for damageType in ('em', 'explosive', 'kinetic', 'thermal'): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Rockets'), f'{damageType}Damage', ship.getModifiedItemAttr('shipBonusRole2'), **kwargs) class Effect12191(BaseEffect): """ shipRoleBonusHAMDamage Used by: Ship: Cenotaph """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for damageType in ('em', 'explosive', 'kinetic', 'thermal'): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), f'{damageType}Damage', ship.getModifiedItemAttr('shipBonusRole2'), **kwargs) class Effect12192(BaseEffect): """ stasisWebifierResistanceBonusMD1 Used by: Ship: Tholos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'stasisWebifierResistance', ship.getModifiedItemAttr('shipBonusMD1'), skill='Minmatar Destroyer', **kwargs) class Effect12193(BaseEffect): """ stasisWebifierResistanceBonusMBC1 Used by: Ship: Cenotaph """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'stasisWebifierResistance', ship.getModifiedItemAttr('shipBonusMBC1'), skill='Minmatar Battlecruiser', **kwargs) class Effect12194(BaseEffect): """ shipBonusShieldBoostCD1 Used by: Ship: Tholos """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer', **kwargs) class Effect12195(BaseEffect): """ shipBonusShieldBoostCBC1 Used by: Ship: Cenotaph """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser', **kwargs) class Effect12202(BaseEffect): """ ATcruiserTackleBonus2 Used by: Ship: Cobra """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): # Get pilot sec status bonus directly here, instead of going through the intermediary effects try: sec_status = ship.owner.getPilotSecurity(low_limit=-10, high_limit=0) except (KeyboardInterrupt, SystemExit): raise except: return bonus = ship.getModifiedItemAttr('ATcruiserScramblerDisruptorBonus') * sec_status fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', bonus, **kwargs) class Effect12203(BaseEffect): """ ATfrigDroneBonus Used by: Ship: Sidewinder """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for attr in ('shieldCapacity', 'armorHP', 'hp', 'damageMultiplier'): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Light Drone Operation'), attr, ship.getModifiedItemAttr('ATfrigDroneBonus'), **kwargs) class Effect12213(BaseEffect): """ shipBonusMPTFalloffMC3 Used by: Ship: Stabber Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'falloff', ship.getModifiedItemAttr('ShipBonusMC3'), skill='Minmatar Cruiser', **kwargs) class Effect12214(BaseEffect): """ AtcruiserDroneBonus Used by: Ship: Cobra """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for attr in ('shieldCapacity', 'armorHP', 'hp', 'damageMultiplier'): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Medium Drone Operation'), attr, ship.getModifiedItemAttr('ATcruiserDroneBonus'), **kwargs) class Effect12217(BaseEffect): """ skillDotMaxHPPercentagePerTickBonus Used by: Skill: Breacher Pod Launcher Operation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Breacher Pod Launcher Operation'), 'dotMaxHPPercentagePerTick', skill.getModifiedItemAttr('dotMaxHPPercentagePerTickBonus') * skill.level, **kwargs) class Effect12218(BaseEffect): """ skillDotMaxDamagePerTickBonus Used by: Skill: Breacher Pod Clone Efficacity """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Breacher Pod Launcher Operation'), 'dotMaxDamagePerTick', skill.getModifiedItemAttr('dotMaxDamagePerTickBonus') * skill.level, **kwargs) class Effect12219(BaseEffect): """ skillDotPodVelocityBonus Used by: Skill: Breacher Pod Projection """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Breacher Pod Launcher Operation'), 'maxVelocity', skill.getModifiedItemAttr('speedFactor') * skill.level, **kwargs) class Effect12220(BaseEffect): """ skillDotLauncherRoFBonus Used by: Skill: Breacher Pod Rapid Firing """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Breacher Pod Launcher Operation'), 'speed', skill.getModifiedItemAttr('rofBonus') * skill.level, **kwargs) class Effect12221(BaseEffect): """ skillDotDurationBonus Used by: Skill: Breacher Pod Clone Longevity """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Breacher Pod Launcher Operation'), 'dotDuration', skill.getModifiedItemAttr('durationBonus') * skill.level, **kwargs) class Effect12244(BaseEffect): """ shipBonusRole1CapitalProjectileDamageBonus Used by: Ship: Sarathiel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect12245(BaseEffect): """ shipBonusDreadnoughtG1FalloffBonus Used by: Ship: Sarathiel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs) class Effect12246(BaseEffect): """ shipBonusRoleAngelDreadMoveWhileSieged Used by: Ship: Sarathiel """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Siege Module', 'speedFactor', ship.getModifiedItemAttr('shipBonusSiegeSpeedMultiplier'), **kwargs) class Effect12249(BaseEffect): """ shipBonusDroneDamageHeavyMediumLightMultiplierGBC1 Used by: Ship: Eos Ship: Odysseus """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: ( drone.item.requiresSkill('Light Drone Operation') or drone.item.requiresSkill('Medium Drone Operation') or drone.item.requiresSkill('Heavy Drone Operation')), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser', **kwargs) class Effect12250(BaseEffect): """ shipBonusSentryDroneDamageAndSentryHPMultiplierGBC3 Used by: Ship: Eos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for attrName in ('damageMultiplier', 'shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), attrName, ship.getModifiedItemAttr('shipBonusGBC3'), skill='Gallente Battlecruiser', **kwargs) class Effect12251(BaseEffect): """ shipBonusDroneHPHeavyMediumLightGBC1 Used by: Ship: Eos Ship: Odysseus """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for attrName in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost( lambda drone: ( drone.item.requiresSkill('Light Drone Operation') or drone.item.requiresSkill('Medium Drone Operation') or drone.item.requiresSkill('Heavy Drone Operation')), attrName, ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser', **kwargs) class Effect12252(BaseEffect): """ eliteBonusCommandShipDroneTrackingHeavyMediumLightCS2 Used by: Ship: Eos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: ( drone.item.requiresSkill('Light Drone Operation') or drone.item.requiresSkill('Medium Drone Operation') or drone.item.requiresSkill('Heavy Drone Operation')), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusCommandShips2'), skill='Command Ships', **kwargs) class Effect12253(BaseEffect): """ eliteBonusCommandShipDroneTrackingSentryCS4 Used by: Ship: Eos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusCommandShips4'), skill='Command Ships', **kwargs) class Effect12267(BaseEffect): """ shipBloodRaiderCapitalNosNeutralizationSignatureResolutionReduction Used by: Ship: Chemosh """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Energy Nosferatu', 'energyNeutralizerSignatureResolution', ship.getModifiedItemAttr('shipBloodRaiderCapitalNosSignatureReductionMultiplyer'), **kwargs) class Effect12275(BaseEffect): """ shipBonusArmorPlateMassEliteBonusLogistics4 Used by: Ship: Oneiros """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Armor Plate', 'massAddition', ship.getModifiedItemAttr('eliteBonusLogistics4'), skill='Logistics Cruisers', **kwargs) class Effect12276(BaseEffect): """ shipBonusShieldExtenderSigEliteBonusLogistics4 Used by: Ship: Scimitar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Shield Extender', 'signatureRadiusAdd', ship.getModifiedItemAttr('eliteBonusLogistics4'), skill='Logistics Cruisers', **kwargs) class Effect12278(BaseEffect): """ shipBonusArmorPlateHitpointAmountEliteBonusLogistics4 Used by: Ships from group: Logistics (3 of 7) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Armor Plate', 'armorHPBonusAdd', ship.getModifiedItemAttr('eliteBonusLogistics4'), skill='Logistics Cruisers', **kwargs) class Effect12279(BaseEffect): """ shipBonusShieldExtenderCapacityBonusEliteBonusLogistics4 Used by: Ship: Basilisk Ship: Etana """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Shield Extender', 'capacityBonus', ship.getModifiedItemAttr('eliteBonusLogistics4'), skill='Logistics Cruisers', **kwargs) class Effect12283(BaseEffect): """ implantSetHackingVirusCoheranceEffect Used by: Implants named like: grade Wedge (12 of 12) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply( lambda imp: imp.item.requiresSkill('Cybernetics'), 'implantSetHackingVirusCoherenceModifier', implant.getModifiedItemAttr('implantSetHackingVirusCoherenceOmegaSetBonus'), **kwargs) class Effect12284(BaseEffect): """ implantSetHackingVirusCoheranceModifierEffect Used by: Implants named like: grade Wedge (12 of 12) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Data Miners', 'virusCoherence', implant.getModifiedItemAttr('implantSetHackingVirusCoherenceModifier'), **kwargs) class Effect12286(BaseEffect): """ shipLPWRangeBonusPCBS1 Used by: Ship: Babaroga """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Large Precursor Weapon'), 'maxRange', ship.getModifiedItemAttr('shipBonusPBS1'), skill='Precursor Battleship', **kwargs) class Effect12287(BaseEffect): """ shipLPWTrackingBonusPCBS1 Used by: Ship: Babaroga """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Large Precursor Weapon'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusPBS2'), skill='Precursor Battleship', **kwargs) class Effect12288(BaseEffect): """ eliteBonusViolatorsLPWDmgMultiMax1 Used by: Ship: Babaroga """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Large Precursor Weapon'), 'damageMultiplierBonusMax', ship.getModifiedItemAttr('eliteBonusViolators1'), skill='Marauders', **kwargs) class Effect12296(BaseEffect): """ shipLaserCapABC3 Used by: Ship: Harbinger Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusABC3'), skill='Amarr Battlecruiser', **kwargs) class Effect12329(BaseEffect): """ shipMiningYieldBonusOreDestroyer1 Used by: Variations of ship: Pioneer (3 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining'), 'miningAmount', src.getModifiedItemAttr('shipBonusOreDestroyer1'), skill='Mining Destroyer', **kwargs) class Effect12330(BaseEffect): """ shipMiningRangeBonusOreDestroyer2 Used by: Ships named like: Pioneer (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining'), 'maxRange', src.getModifiedItemAttr('shipBonusOreDestroyer2'), skill='Mining Destroyer', **kwargs) class Effect12331(BaseEffect): """ shipGasCloudDurationBonusOreDestroyer3 Used by: Ships named like: Pioneer (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Gas Cloud Harvesting'), 'duration', src.getModifiedItemAttr('shipBonusOreDestroyer3'), skill='Mining Destroyer', **kwargs) class Effect12529(BaseEffect): """ shipBonusArmorResistsUniformSOEABC1 Used by: Ship: Odysseus """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): damageTypes = ('Em', 'Explosive', 'Kinetic', 'Thermal') for damageType in damageTypes: fit.ship.boostItemAttr( f'armor{damageType}DamageResonance', ship.getModifiedItemAttr('shipBonusABC1'), skill='Amarr Battlecruiser', **kwargs) class Effect12530(BaseEffect): """ expeditionCommandDurationBonus Used by: Skill: Expedition Command """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Expedition Command'), 'buffDuration', src.getModifiedItemAttr('durationBonus') * lvl, **kwargs) class Effect12531(BaseEffect): """ expeditionCommandStrengthBonus Used by: Skill: Expedition Command Specialist """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level for i in (1, 2, 3, 4): fit.modules.filteredChargeBoost( lambda mod: mod.item.requiresSkill('Expedition Command'), f'warfareBuff{i}Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) class Effect12537(BaseEffect): """ shipBonusAnalyzerRangeECS1 Used by: Ship: Odysseus """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Data Miners', 'maxRange', implant.getModifiedItemAttr('shipBonusSoEECS1'), skill='Expedition Command Ships', **kwargs) class Effect12538(BaseEffect): """ shipBonusGasCloudScoopDurationECS2 Used by: Ship: Odysseus """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Gas Cloud Harvesting'), 'duration', src.getModifiedItemAttr('shipBonusSoEECS2'), skill='Expedition Command Ships', **kwargs) class Effect12539(BaseEffect): """ shipBonusExplorationCommandStrengthDurationECS3 Used by: Ship: Odysseus """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Expedition Command'), attrName, src.getModifiedItemAttr('shipBonusSoEECS3'), skill='Expedition Command Ships', **kwargs) class Effect12540(BaseEffect): """ shipBonusArmorCommandStrengthDurationECS4 Used by: Ship: Odysseus """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command'), attrName, src.getModifiedItemAttr('shipBonusSoEECS4'), skill='Expedition Command Ships', **kwargs) class Effect12541(BaseEffect): """ shipBonusGasCloudScoopCPUreductionSOEECSrole Used by: Ship: Odysseus """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Gas Cloud Harvesting'), 'cpu', src.getModifiedItemAttr('shipBonusGasCloudScoopCPUreductionSOEECSrole'), **kwargs) class Effect12542(BaseEffect): """ expeditionCommandMindlink Used by: Implants named like: Expedition Command Mindlink (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Expedition Command'), attrName, src.getModifiedItemAttr('mindlinkBonus'), **kwargs) class Effect12543(BaseEffect): """ shipBonusRole6ExpeditionBurstDurationSOEECS Used by: Ship: Odysseus """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Expedition Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusRole6'), **kwargs) class Effect12554(BaseEffect): """ shipDroneHPandDamageOreDestroyer2 Used by: Ship: Outrider """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for attr in ('shieldCapacity', 'armorHP', 'hp', 'damageMultiplier'): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), attr, ship.getModifiedItemAttr('shipBonusOreDestroyer2'), skill='Mining Destroyer', **kwargs) class Effect12555(BaseEffect): """ shipBonusShieldAllResistancesOreDestroyer3 Used by: Ship: Outrider """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for type in ('kinetic', 'thermal', 'explosive', 'em'): fit.ship.boostItemAttr( f'shield{type.capitalize()}DamageResonance', ship.getModifiedItemAttr('shipBonusOreDestroyer3'), skill='Mining Destroyer', **kwargs) class Effect12556(BaseEffect): """ eliteBonusCommandDestroyerMining1 Used by: Ship: Outrider """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining Foreman'), attrName, src.getModifiedItemAttr('eliteBonusCommandDestroyer1'), skill='Command Destroyers', **kwargs) class Effect12557(BaseEffect): """ shipBonusGasCloudDurationRoleBonusOreMiningDestroyer Used by: Ships named like: Pioneer (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Gas Cloud Harvesting'), 'duration', src.getModifiedItemAttr('shipBonusGasCloudDurationRoleBonusOreMiningDestroyer'), **kwargs) class Effect12559(BaseEffect): """ shipShieldBoosterBonusOreExecutiveDestroyer4 Used by: Ship: Pioneer Consortium Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('shipBonusOreDestroyer4'), skill='Mining Destroyer', **kwargs) class Effect12560(BaseEffect): """ oreExecutiveRoleBonusSalvageDroneAdditionalAccessDifficultyRoleBonus Used by: Ships named like: Consortium Issue (2 of 2) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.drones.filteredItemIncrease( lambda drone: drone.item.requiresSkill('Salvage Drone Operation'), 'accessDifficultyBonus', container.getModifiedItemAttr('oreExecutiveRoleBonusSalvageDroneAdditionalAccessDifficulty'), **kwargs) class Effect12563(BaseEffect): """ shipShieldBoosterBonusOreExecutiveFrigate Used by: Ship: Venture Consortium Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('OreMiningFrigateExecutiveShieldBoosterShipBonus'), skill='Mining Frigate', **kwargs) class Effect12565(BaseEffect): """ shipBonusDroneTrackingSpeedGBC1 Used by: Ship: Myrmidon Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser', **kwargs) class Effect12566(BaseEffect): """ shipBonusDroneMWDboostrole6 Used by: Ship: Mamba """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusRole6'), **kwargs) class Effect12567(BaseEffect): """ shipBonusSmallProjectileFalloffRole6 Used by: Ship: Mekubal """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusRole6'), **kwargs) class Effect12568(BaseEffect): """ eliteBonusJustWarpScramblerRangeBonusBlops1 Used by: Ship: Sin """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Navigation'), 'maxRange', src.getModifiedItemAttr('eliteBonusBlackOps1'), skill='Black Ops', **kwargs) class Effect12569(BaseEffect): """ eliteBonusJustWarpScramblerStrengthBonusBlops3 Used by: Ship: Sin """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease( lambda mod: mod.item.requiresSkill('Navigation'), 'warpScrambleStrength', ship.getModifiedItemAttr('eliteBonusBlackOps3'), skill='Black Ops', **kwargs) class Effect12573(BaseEffect): """ shipBonusLargeEnergyTurretCapReductionAB3 Used by: Ship: Apocalypse Ship: Apocalypse Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusAB3'), skill='Amarr Battleship', **kwargs) class Effect12575(BaseEffect): """ modeRemoteArmorRepairCapacitorCostPostDiv Used by: Module: Confessor Defense Mode """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', 1 / ship.getModifiedItemAttr('modeRemoteRepairCapacitorCostPostDiv'), **kwargs) class Effect12576(BaseEffect): """ modeRemoteShieldRepairCapacitorCostPostDiv Used by: Module: Svipul Defense Mode """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed', 1 / ship.getModifiedItemAttr('modeRemoteRepairCapacitorCostPostDiv'), **kwargs) class Effect12577(BaseEffect): """ modeRemoteRepairAmountArmorPostDiv Used by: Module: Confessor Defense Mode """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'armorDamageAmount', 1 / ship.getModifiedItemAttr('modeRemoteRepairBonusPostDiv'), **kwargs) class Effect12578(BaseEffect): """ modeRemoteRepairAmountShieldPostDiv Used by: Module: Svipul Defense Mode """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'shieldBonus', 1 / ship.getModifiedItemAttr('modeRemoteRepairBonusPostDiv'), **kwargs) class Effect12579(BaseEffect): """ shipBonusArmorPlateMassGB3 Used by: Ship: Megathron Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Armor Plate', 'massAddition', ship.getModifiedItemAttr('shipBonusGB3'), skill='Gallente Battleship', **kwargs) class Effect12591(BaseEffect): """ miningSensorArrayScannerUpgrade Used by: Modules from group: Mining Survey Chipset (4 of 4) """ type = 'passive' @staticmethod def handler(fit, mod, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('miningScannerUpgrade', mod.getModifiedItemAttr('miningScannerUpgrade'), **kwargs) class Effect12592(BaseEffect): """ shipBonusCarrierA5SupportFighterBonusEffect Used by: Ship: Archon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost( lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterAbilityEnergyNeutralizerAmount', src.getModifiedItemAttr('shipBonusCarrierA5'), skill='Amarr Carrier', **kwargs) class Effect12593(BaseEffect): """ shipBonusCarrierC5SupportFighterBonusEffect Used by: Ship: Chimera """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for sensorType in ('Radar', 'Magnetometric', 'Ladar', 'Gravimetric'): fit.fighters.filteredItemBoost( lambda mod: mod.item.requiresSkill('Support Fighters'), f'fighterAbilityECMStrength{sensorType}', src.getModifiedItemAttr('shipBonusCarrierC5'), skill='Caldari Carrier', **kwargs) class Effect12594(BaseEffect): """ shipBonusCarrierG5SupportFighterBonusSpeed Used by: Ship: Thanatos """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost( lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterAbilityAfterburnerSpeedBonus', src.getModifiedItemAttr('shipBonusCarrierG5'), skill='Gallente Carrier', **kwargs) class Effect12595(BaseEffect): """ shipBonusCarrierM5SupportFighterBonusEffect Used by: Ship: Nidhoggur """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost( lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterAbilityStasisWebifierSpeedPenalty', src.getModifiedItemAttr('shipBonusCarrierM5'), skill='Minmatar Carrier', **kwargs) class Effect12596(BaseEffect): """ shipMiningBonusYieldOreDestroyerRoleBonus Used by: Ships named like: Pioneer (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining'), 'miningAmount', src.getModifiedItemAttr('shipMiningBonusYieldOreDestroyerRoleBonus'), **kwargs) class Effect12597(BaseEffect): """ moduleBonusIntegratedSensorArray Used by: Module: Integrated Sensor Array """ type = 'active' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('scanResolution', src.getModifiedItemAttr('scanResolutionBonus'), stackingPenalties=True, **kwargs) fit.ship.multiplyItemAttr('maxTargetRange', src.getModifiedItemAttr('maxTargetRangeMultiplier'), stackingPenalties=True, **kwargs) fit.ship.forceItemAttr('maximumRangeCap', src.getModifiedItemAttr('maximumRangeCap'), **kwargs) for scanType in ('Magnetometric', 'Ladar', 'Gravimetric', 'Radar'): attr = 'scan{}Strength'.format(scanType) bonus = src.getModifiedItemAttr('scan{}StrengthPercent'.format(scanType)) fit.ship.boostItemAttr(attr, bonus, stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), attr, bonus, stackingPenalties=True, **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Shield Operation') or mod.item.requiresSkill('Capital Repair Systems'), 'duration', src.getModifiedItemAttr('siegeLocalLogisticsDurationBonus'), **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Shield Operation') or mod.item.requiresSkill('Capital Repair Systems'), 'capacitorNeed', src.getModifiedItemAttr('siegeLocalLogisticsCapacitorNeedBonus'), **kwargs) class Effect12739(BaseEffect): """ shipBonusEnergyNeutOptimalAC2 Used by: Ship: Ashimmu """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Energy Neutralizer', 'maxRange', src.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect12740(BaseEffect): """ shipBonusEnergyNosOptimalAC2 Used by: Ship: Ashimmu """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange', src.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect12753(BaseEffect): """ shipRoleBonusOREExecutiveIssueMiningCriticalHitChanceBonus Used by: Ships named like: Consortium Issue (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining'), 'miningCritChance', ship.getModifiedItemAttr('shipRoleBonusOREExecutiveIssueMiningCriticalHitChance'), **kwargs) class Effect12755(BaseEffect): """ miningCritChanceSkillPostPercentLRSMBonus Used by: Skill: Mining Precision """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining') or mod.item.requiresSkill('Ice Harvesting'), 'miningCritChance', src.getModifiedItemAttr('miningCritChanceBonus') * src.level, **kwargs) class Effect12757(BaseEffect): """ miningCritYieldSkillPostPercentLRSMBonus Used by: Skill: Mining Exploitation """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining') or mod.item.requiresSkill('Ice Harvesting'), 'miningCritBonusYield', src.getModifiedItemAttr('miningCritBonusYieldBonus') * src.level, **kwargs) class Effect12758(BaseEffect): """ shipRoleBonusAnhingaLargeMissilePowerFittingBonus Used by: Ship: Anhinga """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.group.name in ( 'Missile Launcher Rapid Heavy', 'Missile Launcher Cruise', 'Missile Launcher Torpedo'), 'power', ship.getModifiedItemAttr('AnhingaLargeMissilePowerFittingBonus'), **kwargs) class Effect12759(BaseEffect): """ miningCritChanceBonusOreIceOnline Used by: Modules from group: Mining Survey Chipset (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining') or mod.item.requiresSkill('Ice Harvesting'), 'miningCritChance', src.getModifiedItemAttr('miningCritChanceBonus'), **kwargs) class Effect12760(BaseEffect): """ miningCritBonusYieldBonusOreIceOnline Used by: Modules from group: Mining Survey Chipset (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining') or mod.item.requiresSkill('Ice Harvesting'), 'miningCritBonusYield', src.getModifiedItemAttr('miningCritBonusYieldBonus'), **kwargs) class Effect12761(BaseEffect): """ miningWasteChanceBonusOreIceOnline Used by: Modules from group: Mining Survey Chipset (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: (mod.item.requiresSkill('Mining') or mod.item.requiresSkill('Ice Harvesting') or mod.item.requiresSkill('Gas Cloud Harvesting')), 'miningWasteProbability', src.getModifiedItemAttr('miningWasteProbabilityBonus'), stackingPenalties=True, **kwargs) class Effect12764(BaseEffect): """ shipRoleBonusAnhingaLargeMissileCpuFittingBonus Used by: Ship: Anhinga """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.group.name in ( 'Missile Launcher Rapid Heavy', 'Missile Launcher Cruise', 'Missile Launcher Torpedo'), 'cpu', ship.getModifiedItemAttr('AnhingaLargeMissileCpuFittingBonus'), **kwargs) class Effect12766(BaseEffect): """ shipBonusTorpedoAndCruiseMissileExplosionRadiusCBC1 Used by: Ship: Anhinga """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Torpedoes') or mod.charge.requiresSkill('Cruise Missiles'), 'aoeCloudSize', ship.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser', **kwargs) class Effect12767(BaseEffect): """ tacticalBonusSkuaDefensiveShieldRechargeRate Used by: Module: Skua Defense Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('shieldRechargeRate', 1 / module.getModifiedItemAttr('modeShieldRechargePostDiv'), **kwargs) class Effect12771(BaseEffect): """ shipRoleBonusPerseveranceIceMiningCriticalHitChanceBonus Used by: Ship: Perseverance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'miningCritChance', ship.getModifiedItemAttr('shipRoleBonusPerseveranceIceMiningCriticalHitChance'), **kwargs) class Effect12772(BaseEffect): """ shipIceMiningCriticalHitChanceBonusOreDestroyer1 Used by: Ship: Perseverance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'miningCritChance', ship.getModifiedItemAttr('shipBonusOreDestroyer1'), skill='Mining Destroyer', **kwargs) class Effect12773(BaseEffect): """ shipIceMiningCriticalHitYieldBonusOreDestroyer2 Used by: Ship: Perseverance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'miningCritBonusYield', ship.getModifiedItemAttr('shipBonusOreDestroyer2'), skill='Mining Destroyer', **kwargs) class Effect12774(BaseEffect): """ shipIceMiningRangeBonusOreDestroyer3 Used by: Ship: Perseverance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'maxRange', ship.getModifiedItemAttr('shipBonusOreDestroyer3'), skill='Mining Destroyer', **kwargs) class Effect12777(BaseEffect): """ roleBonusCDLinksPGCPUReductionSkua Used by: Ship: Skua """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'cpu', src.getModifiedItemAttr('roleBonusCD'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'power', src.getModifiedItemAttr('roleBonusCD'), **kwargs) class Effect12790(BaseEffect): """ shipBonusTorpedoAndCruiseMissileExplosionVelocityCBC2 Used by: Ship: Anhinga """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Torpedoes') or mod.charge.requiresSkill('Cruise Missiles'), 'aoeVelocity', ship.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs)