# =============================================================================== # 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.const import FittingModuleState from eos.utils.spoolSupport import SpoolType, SpoolOptions, calculateSpoolup, resolveSpoolOptions class EffectDef: @staticmethod def handler(fit, module, context, *args, **kwargs): pass class Effect4(EffectDef): """ shieldBoosting Used by: Modules from group: Shield Booster (97 of 97) """ runTime = 'late' type = 'active' @staticmethod def handler(fit, module, context): amount = module.getModifiedItemAttr('shieldBonus') speed = module.getModifiedItemAttr('duration') / 1000.0 fit.extraAttributes.increase('shieldRepair', amount / speed) class Effect10(EffectDef): """ targetAttack Used by: Drones from group: Combat Drone (75 of 75) Modules from group: Energy Weapon (212 of 214) """ type = 'active' @staticmethod def handler(fit, module, context): # Set reload time to 1 second module.reloadTime = 1000 class Effect17(EffectDef): """ mining Used by: Drones from group: Mining Drone (10 of 10) """ grouped = True type = 'passive' @staticmethod def handler(fit, container, context): miningDroneAmountPercent = container.getModifiedItemAttr('miningDroneAmountPercent') if (miningDroneAmountPercent is None) or (miningDroneAmountPercent == 0): pass else: container.multiplyItemAttr('miningAmount', miningDroneAmountPercent / 100) class Effect21(EffectDef): """ shieldCapacityBonusOnline Used by: Modules from group: Shield Extender (36 of 36) Modules from group: Shield Resistance Amplifier (88 of 88) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.increaseItemAttr('shieldCapacity', module.getModifiedItemAttr('capacityBonus')) class Effect25(EffectDef): """ capacitorCapacityBonus Used by: Modules from group: Capacitor Battery (30 of 30) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.increaseItemAttr('capacitorCapacity', ship.getModifiedItemAttr('capacitorBonus')) class Effect26(EffectDef): """ structureRepair Used by: Modules from group: Hull Repair Unit (25 of 25) """ runTime = 'late' type = 'active' @staticmethod def handler(fit, module, context): amount = module.getModifiedItemAttr('structureDamageAmount') speed = module.getModifiedItemAttr('duration') / 1000.0 fit.extraAttributes.increase('hullRepair', amount / speed) class Effect27(EffectDef): """ armorRepair Used by: Modules from group: Armor Repair Unit (108 of 108) """ runTime = 'late' type = 'active' @staticmethod def handler(fit, module, context): amount = module.getModifiedItemAttr('armorDamageAmount') speed = module.getModifiedItemAttr('duration') / 1000.0 rps = amount / speed fit.extraAttributes.increase('armorRepair', rps) fit.extraAttributes.increase('armorRepairPreSpool', rps) fit.extraAttributes.increase('armorRepairFullSpool', rps) class Effect34(EffectDef): """ projectileFired Used by: Modules from group: Hybrid Weapon (221 of 221) Modules from group: Projectile Weapon (165 of 165) """ type = 'active' @staticmethod def handler(fit, module, context): rt = module.getModifiedItemAttr('reloadTime') if not rt: # Set reload time to 10 seconds module.reloadTime = 10000 else: module.reloadTime = rt class Effect38(EffectDef): """ empWave Used by: Modules from group: Smart Bomb (118 of 118) """ type = 'active' class Effect39(EffectDef): """ warpDisrupt Used by: Modules named like: Warp Disruptor (28 of 28) """ type = 'projected', 'active' @staticmethod def handler(fit, module, context): if 'projected' in context: fit.ship.increaseItemAttr('warpScrambleStatus', module.getModifiedItemAttr('warpScrambleStrength')) class Effect48(EffectDef): """ powerBooster Used by: Modules from group: Capacitor Booster (59 of 59) """ type = 'active' @staticmethod def handler(fit, module, context): # 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(EffectDef): """ 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): fit.ship.multiplyItemAttr('shieldRechargeRate', module.getModifiedItemAttr('shieldRechargeRateMultiplier') or 1) class Effect51(EffectDef): """ 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): fit.ship.multiplyItemAttr('rechargeRate', module.getModifiedItemAttr('capacitorRechargeRateMultiplier')) class Effect55(EffectDef): """ targetHostiles Used by: Modules from group: Automated Targeting System (6 of 6) """ type = 'active' class Effect56(EffectDef): """ 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): # 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)) class Effect57(EffectDef): """ 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): # 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)) class Effect58(EffectDef): """ 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 (68 of 133) Modules from group: Reactor Control Unit (22 of 22) """ type = 'passive' @staticmethod def handler(fit, module, context): # 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)) class Effect59(EffectDef): """ 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): fit.ship.multiplyItemAttr('capacity', module.getModifiedItemAttr('cargoCapacityMultiplier')) class Effect60(EffectDef): """ 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): fit.ship.multiplyItemAttr('hp', module.getModifiedItemAttr('structureHPMultiplier')) class Effect61(EffectDef): """ agilityBonus Used by: Subsystems named like: Propulsion Interdiction Nullifier (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.increaseItemAttr('agility', src.getModifiedItemAttr('agilityBonusAdd')) class Effect63(EffectDef): """ armorHPMultiply Used by: Modules from group: Armor Coating (202 of 202) Modules from group: Armor Plating Energized (187 of 187) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.multiplyItemAttr('armorHP', module.getModifiedItemAttr('armorHPMultiplier')) class Effect67(EffectDef): """ miningLaser Used by: Modules from group: Frequency Mining Laser (3 of 3) Modules from group: Mining Laser (15 of 15) Modules from group: Strip Miner (5 of 5) Module: Citizen Miner """ type = 'active' @staticmethod def handler(fit, module, context): # Set reload time to 1 second module.reloadTime = 1000 class Effect89(EffectDef): """ projectileWeaponSpeedMultiply Used by: Modules from group: Gyrostabilizer (14 of 14) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Projectile Weapon', 'speed', module.getModifiedItemAttr('speedMultiplier'), stackingPenalties=True) class Effect91(EffectDef): """ energyWeaponDamageMultiply Used by: Modules from group: Heat Sink (19 of 19) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Energy Weapon', 'damageMultiplier', module.getModifiedItemAttr('damageMultiplier'), stackingPenalties=True) class Effect92(EffectDef): """ projectileWeaponDamageMultiply Used by: Modules from group: Gyrostabilizer (14 of 14) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Projectile Weapon', 'damageMultiplier', module.getModifiedItemAttr('damageMultiplier'), stackingPenalties=True) class Effect93(EffectDef): """ hybridWeaponDamageMultiply Used by: Modules from group: Magnetic Field Stabilizer (15 of 15) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'damageMultiplier', module.getModifiedItemAttr('damageMultiplier'), stackingPenalties=True) class Effect95(EffectDef): """ energyWeaponSpeedMultiply Used by: Modules from group: Heat Sink (19 of 19) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Energy Weapon', 'speed', module.getModifiedItemAttr('speedMultiplier'), stackingPenalties=True) class Effect96(EffectDef): """ hybridWeaponSpeedMultiply Used by: Modules from group: Magnetic Field Stabilizer (15 of 15) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'speed', module.getModifiedItemAttr('speedMultiplier'), stackingPenalties=True) class Effect101(EffectDef): """ useMissiles Used by: Modules from group: Missile Launcher Heavy (12 of 12) Modules from group: Missile Launcher Rocket (15 of 15) Modules named like: Launcher (154 of 154) Structure Modules named like: Standup Launcher (7 of 7) """ type = 'active', 'projected' @staticmethod def handler(fit, src, context): # Set reload time to 10 seconds src.reloadTime = 10000 if 'projected' in context: 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: strModifier = 1 - ecmStrengthBonus / fit.scanStrength fit.ecmProjectedStr *= strModifier class Effect118(EffectDef): """ electronicAttributeModifyOnline Used by: Modules from group: Automated Targeting System (6 of 6) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.increaseItemAttr('maxLockedTargets', module.getModifiedItemAttr('maxLockedTargetsBonus')) class Effect157(EffectDef): """ largeHybridTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringLargeHybridTurret Used by: Implants named like: Zainou 'Deadeye' Large Hybrid Turret LH (6 of 6) Skill: Large Hybrid Turret """ type = 'passive' @staticmethod def handler(fit, container, context): 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) class Effect159(EffectDef): """ mediumEnergyTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringMediumEnergyTurret Used by: Implants named like: Inherent Implants 'Lancer' Medium Energy Turret ME (6 of 6) Skill: Medium Energy Turret """ type = 'passive' @staticmethod def handler(fit, container, context): 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) class Effect160(EffectDef): """ mediumHybridTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringMediumHybridTurret Used by: Implants named like: Zainou 'Deadeye' Medium Hybrid Turret MH (6 of 6) Skill: Medium Hybrid Turret """ type = 'passive' @staticmethod def handler(fit, container, context): 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) class Effect161(EffectDef): """ mediumProjectileTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringMediumProjectileTurret Used by: Implants named like: Eifyr and Co. 'Gunslinger' Medium Projectile Turret MP (6 of 6) Skill: Medium Projectile Turret """ type = 'passive' @staticmethod def handler(fit, container, context): 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) class Effect162(EffectDef): """ largeEnergyTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringLargeEnergyTurret Used by: Implants named like: Inherent Implants 'Lancer' Large Energy Turret LE (6 of 6) Implant: Pashan's Turret Handling Mindlink Skill: Large Energy Turret """ type = 'passive' @staticmethod def handler(fit, container, context): 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) class Effect172(EffectDef): """ smallEnergyTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringSmallEnergyTurret Used by: Implants named like: Inherent Implants 'Lancer' Small Energy Turret SE (6 of 6) Skill: Small Energy Turret """ type = 'passive' @staticmethod def handler(fit, container, context): 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) class Effect173(EffectDef): """ smallHybridTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringSmallHybridTurret Used by: Implants named like: Zainou 'Deadeye' Small Hybrid Turret SH (6 of 6) Skill: Small Hybrid Turret """ type = 'passive' @staticmethod def handler(fit, container, context): 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) class Effect174(EffectDef): """ smallProjectileTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringSmallProjectileTurret Used by: Implants named like: Eifyr and Co. 'Gunslinger' Small Projectile Turret SP (6 of 6) Skill: Small Projectile Turret """ type = 'passive' @staticmethod def handler(fit, container, context): 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) class Effect212(EffectDef): """ 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): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Electronics Upgrades'), 'cpu', container.getModifiedItemAttr('cpuNeedBonus') * level) class Effect214(EffectDef): """ targetingMaxTargetBonusModAddMaxLockedTargetsLocationChar Used by: Skills named like: Target Management (2 of 2) """ type = 'passive', 'structure' @staticmethod def handler(fit, skill, context): amount = skill.getModifiedItemAttr('maxTargetBonus') * skill.level fit.extraAttributes.increase('maxTargetsLockedFromSkills', amount) class Effect223(EffectDef): """ navigationVelocityBonusPostPercentMaxVelocityLocationShip Used by: Implant: Low-grade Snake Alpha Implant: Mid-grade Snake Alpha """ type = 'passive' @staticmethod def handler(fit, implant, context): fit.ship.boostItemAttr('maxVelocity', implant.getModifiedItemAttr('velocityBonus')) class Effect227(EffectDef): """ accerationControlCapNeedBonusPostPercentCapacitorNeedLocationShipGroupAfterburner Used by: Modules named like: Dynamic Fuel Valve (8 of 8) """ type = 'passive' @staticmethod def handler(fit, container, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Propulsion Module', 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus')) class Effect230(EffectDef): """ afterburnerDurationBonusPostPercentDurationLocationShipModulesRequiringAfterburner Used by: Implants named like: Eifyr and Co. 'Rogue' Afterburner AB (6 of 6) Implant: Zor's Custom Navigation Link Skill: Afterburner """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'duration', container.getModifiedItemAttr('durationBonus') * level) class Effect235(EffectDef): """ 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): fit.ship.boostItemAttr('warpCapacitorNeed', implant.getModifiedItemAttr('warpCapacitorNeedBonus')) class Effect242(EffectDef): """ accerationControlSpeedFBonusPostPercentSpeedFactorLocationShipGroupAfterburner Used by: Implants named like: Eifyr and Co. 'Rogue' Acceleration Control AC (6 of 6) """ type = 'passive' @staticmethod def handler(fit, implant, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Propulsion Module', 'speedFactor', implant.getModifiedItemAttr('speedFBonus')) class Effect244(EffectDef): """ 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): 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) class Effect271(EffectDef): """ hullUpgradesArmorHpBonusPostPercentHpLocationShip Used by: Implants named like: grade Slave (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): level = container.level if 'skill' in context else 1 fit.ship.boostItemAttr('armorHP', (container.getModifiedItemAttr('armorHpBonus') or 0) * level) class Effect272(EffectDef): """ repairSystemsDurationBonusPostPercentDurationLocationShipModulesRequiringRepairSystems Used by: Implants named like: Inherent Implants 'Noble' Repair Systems RS (6 of 6) Modules named like: Nanobot Accelerator (8 of 8) Implant: Numon Family Heirloom Skill: Repair Systems """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'duration', container.getModifiedItemAttr('durationSkillBonus') * level) class Effect273(EffectDef): """ 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): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Upgrades'), 'power', container.getModifiedItemAttr('powerNeedBonus') * level) class Effect277(EffectDef): """ tacticalshieldManipulationSkillBoostUniformityBonus Used by: Skill: Tactical Shield Manipulation """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.ship.increaseItemAttr('shieldUniformity', skill.getModifiedItemAttr('uniformityBonus') * skill.level) class Effect279(EffectDef): """ 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): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level) class Effect287(EffectDef): """ 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): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level) class Effect290(EffectDef): """ sharpshooterRangeSkillBonusPostPercentMaxRangeLocationShipModulesRequiringGunnery Used by: Implants named like: Frentix Booster (4 of 4) Implants named like: Zainou 'Deadeye' Sharpshooter ST (6 of 6) Skill: Sharpshooter """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'maxRange', container.getModifiedItemAttr('rangeSkillBonus') * level) class Effect298(EffectDef): """ surgicalStrikeFalloffBonusPostPercentFalloffLocationShipModulesRequiringGunnery Used by: 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): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'falloff', container.getModifiedItemAttr('falloffBonus') * level) class Effect315(EffectDef): """ dronesSkillBoostMaxActiveDroneBonus Used by: Skill: Drones """ type = 'passive' @staticmethod def handler(fit, skill, context): amount = skill.getModifiedItemAttr('maxActiveDroneBonus') * skill.level fit.extraAttributes.increase('maxActiveDrones', amount) class Effect391(EffectDef): """ astrogeologyMiningAmountBonusPostPercentMiningAmountLocationShipModulesRequiringMining Used by: Implants named like: Inherent Implants 'Highwall' Mining MX (3 of 3) Implant: Michi's Excavation Augmentor Skill: Astrogeology Skill: Mining """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining'), 'miningAmount', container.getModifiedItemAttr('miningAmountBonus') * level) class Effect392(EffectDef): """ mechanicHullHpBonusPostPercentHpShip Used by: Implants named like: Inherent Implants 'Noble' Mechanic MC (6 of 6) Modules named like: Transverse Bulkhead (8 of 8) Skill: Mechanics """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 fit.ship.boostItemAttr('hp', container.getModifiedItemAttr('hullHpBonus') * level) class Effect394(EffectDef): """ navigationVelocityBonusPostPercentMaxVelocityShip Used by: Modules from group: Rig Anchor (4 of 4) Implants named like: Agency 'Overclocker' SB Dose (4 of 4) Implants named like: grade Snake (16 of 18) Modules named like: Auxiliary Thrusters (8 of 8) Implant: Quafe Zero Skill: Navigation """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 amount = container.getModifiedItemAttr('velocityBonus') or 0 fit.ship.boostItemAttr('maxVelocity', amount * level, stackingPenalties='skill' not in context and 'implant' not in context and 'booster' not in context) class Effect395(EffectDef): """ 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: grade Nomad (10 of 12) Modules named like: Low Friction Nozzle Joints (8 of 8) Implant: Genolution Core Augmentation CA-4 Skill: Evasive Maneuvering Skill: Spaceship Command """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 fit.ship.boostItemAttr('agility', container.getModifiedItemAttr('agilityBonus') * level, stackingPenalties='skill' not in context and 'implant' not in context) class Effect396(EffectDef): """ 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): 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) class Effect397(EffectDef): """ 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: Genolution Core Augmentation CA-2 Skill: CPU Management """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 fit.ship.boostItemAttr('cpuOutput', container.getModifiedItemAttr('cpuOutputBonus2') * level) class Effect408(EffectDef): """ largeProjectileTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringLargeProjectileTurret Used by: Implants named like: Eifyr and Co. 'Gunslinger' Large Projectile Turret LP (6 of 6) Skill: Large Projectile Turret """ type = 'passive' @staticmethod def handler(fit, container, context): 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) class Effect414(EffectDef): """ gunneryTurretSpeeBonusPostPercentSpeedLocationShipModulesRequiringGunnery Used by: 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): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'speed', container.getModifiedItemAttr('turretSpeeBonus') * level) class Effect446(EffectDef): """ shieldManagementShieldCapacityBonusPostPercentCapacityLocationShipGroupShield Used by: 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): level = container.level if 'skill' in context else 1 fit.ship.boostItemAttr('shieldCapacity', container.getModifiedItemAttr('shieldCapacityBonus') * level) class Effect485(EffectDef): """ energysystemsoperationCapRechargeBonusPostPercentRechargeRateLocationShipGroupCapacitor Used by: Implants named like: Inherent Implants 'Squire' Capacitor Systems Operation EO (6 of 6) Modules named like: Capacitor Control Circuit (8 of 8) Implant: Genolution Core Augmentation CA-2 Skill: Capacitor Systems Operation """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 fit.ship.boostItemAttr('rechargeRate', container.getModifiedItemAttr('capRechargeBonus') * level) class Effect486(EffectDef): """ 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): level = container.level if 'skill' in context else 1 fit.ship.boostItemAttr('shieldRechargeRate', container.getModifiedItemAttr('rechargeratebonus') * level) class Effect490(EffectDef): """ 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: Genolution Core Augmentation CA-1 Skill: Power Grid Management """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 fit.ship.boostItemAttr('powerOutput', container.getModifiedItemAttr('powerEngineeringOutputBonus') * level) class Effect494(EffectDef): """ warpDriveOperationWarpCapacitorNeedBonusPostPercentWarpCapacitorNeedLocationShipGroupPropulsion Used by: Modules named like: Warp Core Optimizer (8 of 8) Skill: Warp Drive Operation """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 fit.ship.boostItemAttr('warpCapacitorNeed', container.getModifiedItemAttr('warpCapacitorNeedBonus') * level, stackingPenalties='skill' not in context) class Effect504(EffectDef): """ scoutDroneOperationDroneRangeBonusModAddDroneControlDistanceChar Used by: 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): level = container.level if 'skill' in context else 1 amount = container.getModifiedItemAttr('droneRangeBonus') * level fit.extraAttributes.increase('droneControlRange', amount) class Effect506(EffectDef): """ fuelConservationCapNeedBonusPostPercentCapacitorNeedLocationShipModulesRequiringAfterburner Used by: Skill: Afterburner Skill: Fuel Conservation """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'capacitorNeed', skill.getModifiedItemAttr('capNeedBonus') * skill.level) class Effect507(EffectDef): """ longRangeTargetingMaxTargetRangeBonusPostPercentMaxTargetRangeLocationShipGroupElectronic Used by: Implants named like: Zainou 'Gypsy' Long Range Targeting LT (6 of 6) Skill: Long Range Targeting """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 fit.ship.boostItemAttr('maxTargetRange', container.getModifiedItemAttr('maxTargetRangeBonus') * level) class Effect508(EffectDef): """ shipPDmgBonusMF Used by: Ship: Cheetah Ship: Freki Ship: Republic Fleet Firetail Ship: Rifter Ship: Slasher Ship: Stiletto Ship: Wolf """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate') class Effect511(EffectDef): """ 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): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate') class Effect512(EffectDef): """ shipSHTDmgBonusGF Used by: Variations of ship: Incursus (3 of 3) Ship: Atron Ship: Federation Navy Comet Ship: Helios Ship: Pacifier Ship: Taranis """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate') class Effect514(EffectDef): """ shipSETDmgBonusAF Used by: Ship: Executioner Ship: Gold Magnate Ship: Silver Magnate Ship: Tormentor """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate') class Effect516(EffectDef): """ shipTCapNeedBonusAC Used by: Ship: Devoter Ship: Omen Ship: Zealot """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser') class Effect521(EffectDef): """ shipHRangeBonusCC Used by: Ship: Eagle """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser') class Effect527(EffectDef): """ shipVelocityBonusMI Used by: Variations of ship: Mammoth (2 of 2) Ship: Hoarder Ship: Prowler """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('shipBonusMI'), skill='Minmatar Industrial') class Effect529(EffectDef): """ shipCargoBonusAI Used by: Variations of ship: Sigil (2 of 2) Ship: Bestower """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('capacity', ship.getModifiedItemAttr('shipBonusAI'), skill='Amarr Industrial') class Effect536(EffectDef): """ 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): fit.ship.multiplyItemAttr('cpuOutput', module.getModifiedItemAttr('cpuMultiplier')) class Effect542(EffectDef): """ shipCapNeedBonusAB Used by: Variations of ship: Armageddon (3 of 5) Ship: Apocalypse Imperial Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship') class Effect549(EffectDef): """ shipPTDmgBonusMB Used by: Variations of ship: Tempest (3 of 4) Ship: Machariel Ship: Panther """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship') class Effect550(EffectDef): """ shipHTDmgBonusGB Used by: Ship: Dominix Navy Issue Ship: Hyperion Ship: Kronos Ship: Marshal Ship: Megathron Federate Issue Ship: Sin """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGB'), skill='Gallente Battleship') class Effect553(EffectDef): """ shipHTTrackingBonusGB Used by: Ship: Vindicator """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGB'), skill='Gallente Battleship') class Effect562(EffectDef): """ shipHTDmgBonusfixedGC Used by: Ship: Adrestia Ship: Arazu Ship: Deimos Ship: Enforcer Ship: Exequror Navy Issue Ship: Guardian-Vexor Ship: Thorax Ship: Vexor """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser') class Effect581(EffectDef): """ 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): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'cpu', container.getModifiedItemAttr('cpuNeedBonus') * level) class Effect582(EffectDef): """ rapidFiringRofBonusPostPercentSpeedLocationShipModulesRequiringGunnery Used by: Skill: Rapid Firing """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'speed', skill.getModifiedItemAttr('rofBonus') * skill.level) class Effect584(EffectDef): """ surgicalStrikeDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringGunnery Used by: Implants named like: Agency 'Pyrolancea' DB Dose (4 of 4) Implants named like: Eifyr and Co. 'Gunslinger' Surgical Strike SS (6 of 6) Implant: Standard Cerebral Accelerator """ type = 'passive' @staticmethod def handler(fit, implant, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'damageMultiplier', implant.getModifiedItemAttr('damageMultiplierBonus')) class Effect587(EffectDef): """ surgicalStrikeDamageMultiplierBonusPostPercentDamageMultiplierLocationShipGroupEnergyWeapon Used by: Skill: Surgical Strike """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Weapon', 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect588(EffectDef): """ surgicalStrikeDamageMultiplierBonusPostPercentDamageMultiplierLocationShipGroupProjectileWeapon Used by: Skill: Surgical Strike """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Projectile Weapon', 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect589(EffectDef): """ surgicalStrikeDamageMultiplierBonusPostPercentDamageMultiplierLocationShipGroupHybridWeapon Used by: Skill: Surgical Strike """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect590(EffectDef): """ 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): 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) class Effect596(EffectDef): """ ammoInfluenceRange Used by: Items from category: Charge (587 of 949) """ type = 'passive' @staticmethod def handler(fit, module, context): module.multiplyItemAttr('maxRange', module.getModifiedChargeAttr('weaponRangeMultiplier')) class Effect598(EffectDef): """ ammoSpeedMultiplier Used by: Charges from group: Festival Charges (26 of 26) Charges from group: Interdiction Probe (2 of 2) Items from market group: Special Edition Assets > Special Edition Festival Assets (30 of 33) """ type = 'passive' @staticmethod def handler(fit, module, context): module.multiplyItemAttr('speed', module.getModifiedChargeAttr('speedMultiplier') or 1) class Effect599(EffectDef): """ 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): module.multiplyItemAttr('falloff', module.getModifiedChargeAttr('fallofMultiplier') or 1) class Effect600(EffectDef): """ ammoTrackingMultiplier Used by: Items from category: Charge (182 of 949) Charges from group: Projectile Ammo (128 of 128) """ type = 'passive' @staticmethod def handler(fit, module, context): module.multiplyItemAttr('trackingSpeed', module.getModifiedChargeAttr('trackingSpeedMultiplier')) class Effect602(EffectDef): """ shipPTurretSpeedBonusMC Used by: Variations of ship: Rupture (3 of 3) Variations of ship: Stabber (3 of 3) Ship: Enforcer Ship: Huginn Ship: Scythe Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'speed', ship.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser') class Effect604(EffectDef): """ shipPTspeedBonusMB2 Used by: Variations of ship: Tempest (4 of 4) Ship: Maelstrom Ship: Marshal Ship: Panther Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'speed', ship.getModifiedItemAttr('shipBonusMB2'), skill='Minmatar Battleship') class Effect607(EffectDef): """ cloaking Used by: Modules from group: Cloaking Device (10 of 14) """ runTime = 'early' type = 'active' @staticmethod def handler(fit, module, context): # 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')) class Effect623(EffectDef): """ miningDroneOperationMiningAmountBonusPostPercentMiningDroneAmountPercentChar Used by: Modules named like: Drone Mining Augmentor (8 of 8) Skill: Mining Drone Operation """ type = 'passive' @staticmethod def handler(fit, container, context): 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) class Effect627(EffectDef): """ powerIncrease Used by: Modules from group: Auxiliary Power Core (5 of 5) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.increaseItemAttr('powerOutput', module.getModifiedItemAttr('powerIncrease')) class Effect657(EffectDef): """ 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): fit.ship.boostItemAttr('agility', module.getModifiedItemAttr('agilityMultiplier'), stackingPenalties=True) class Effect660(EffectDef): """ missileEMDmgBonus Used by: Skills named like: Missiles (5 of 7) Skill: Rockets Skill: Torpedoes """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill(skill), 'emDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect661(EffectDef): """ missileExplosiveDmgBonus Used by: Skills named like: Missiles (5 of 7) Skill: Rockets Skill: Torpedoes """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill(skill), 'explosiveDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect662(EffectDef): """ missileThermalDmgBonus Used by: Skills named like: Missiles (5 of 7) Skill: Rockets Skill: Torpedoes """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill(skill), 'thermalDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect668(EffectDef): """ missileKineticDmgBonus2 Used by: Skills named like: Missiles (5 of 7) Skill: Rockets Skill: Torpedoes """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill(skill), 'kineticDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect670(EffectDef): """ antiWarpScramblingPassive Used by: Modules from group: Warp Core Stabilizer (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.increaseItemAttr('warpScrambleStatus', module.getModifiedItemAttr('warpScrambleStrength')) class Effect675(EffectDef): """ weaponUpgradesCpuNeedBonusPostPercentCpuLocationShipModulesRequiringEnergyPulseWeapons Used by: Skill: Weapon Upgrades """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Energy Pulse Weapons'), 'cpu', skill.getModifiedItemAttr('cpuNeedBonus') * skill.level) class Effect677(EffectDef): """ 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): 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) class Effect699(EffectDef): """ signatureAnalysisScanResolutionBonusPostPercentScanResolutionShip Used by: Implants named like: Zainou 'Gypsy' Signature Analysis SA (6 of 6) Modules named like: Targeting System Subcontroller (8 of 8) Implant: Quafe Zero Skill: Signature Analysis """ type = 'passive' @staticmethod def handler(fit, container, context): 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) class Effect706(EffectDef): """ covertOpsWarpResistance Used by: Ships from group: Covert Ops (5 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.increaseItemAttr('warpFactor', src.getModifiedItemAttr('eliteBonusCovertOps1'), skill='Covert Ops') class Effect726(EffectDef): """ 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): # 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 Industrial') class Effect727(EffectDef): """ shipBonusCargoCI Used by: Variations of ship: Badger (2 of 2) Ship: Tayra """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('capacity', ship.getModifiedItemAttr('shipBonusCI'), skill='Caldari Industrial') class Effect728(EffectDef): """ shipBonusCargoMI Used by: Variations of ship: Wreathe (2 of 2) Ship: Mammoth """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('capacity', ship.getModifiedItemAttr('shipBonusMI'), skill='Minmatar Industrial') class Effect729(EffectDef): """ 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): # 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 Industrial') class Effect730(EffectDef): """ shipBonusVelocityCI Used by: Variations of ship: Tayra (2 of 2) Ship: Crane """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('shipBonusCI'), skill='Caldari Industrial') class Effect732(EffectDef): """ shipVelocityBonusAI Used by: Variations of ship: Bestower (2 of 2) Ship: Prorator """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('shipBonusAI'), skill='Amarr Industrial') class Effect736(EffectDef): """ shipBonusCapCapAB Used by: Ship: Apocalypse Imperial Issue Ship: Paladin """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('capacitorCapacity', ship.getModifiedItemAttr('shipBonusAB2'), skill='Amarr Battleship') class Effect744(EffectDef): """ surveyScanspeedBonusPostPercentDurationLocationShipModulesRequiringElectronics Used by: Modules named like: Signal Focusing Kit (8 of 8) Skill: Survey """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('CPU Management'), 'duration', container.getModifiedItemAttr('scanspeedBonus') * level) class Effect754(EffectDef): """ shipHybridDamageBonusCF Used by: Ship: Raptor """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate') class Effect757(EffectDef): """ shipETDamageAF Used by: Ship: Crucifier Navy Issue Ship: Crusader Ship: Imperial Navy Slicer Ship: Pacifier """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate') class Effect760(EffectDef): """ shipBonusSmallMissileRoFCF2 Used by: Ship: Buzzard Ship: Hawk Ship: Pacifier """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'speed', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate') class Effect763(EffectDef): """ missileDMGBonus Used by: Modules from group: Ballistic Control system (22 of 22) """ type = 'passive' @staticmethod def handler(fit, container, context): for dmgType in ('em', 'kinetic', 'explosive', 'thermal'): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), '%sDamage' % dmgType, container.getModifiedItemAttr('missileDamageMultiplierBonus'), stackingPenalties=True) class Effect784(EffectDef): """ missileBombardmentMaxFlightTimeBonusPostPercentExplosionDelayOwnerCharModulesRequiringMissileLauncherOperation Used by: 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): 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) class Effect804(EffectDef): """ ammoInfluenceCapNeed Used by: Items from category: Charge (493 of 949) """ type = 'passive' @staticmethod def handler(fit, module, context): # 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) class Effect836(EffectDef): """ skillFreightBonus Used by: Modules named like: Cargohold Optimization (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.boostItemAttr('capacity', module.getModifiedItemAttr('cargoCapacityBonus')) class Effect848(EffectDef): """ cloakingTargetingDelayBonusPostPercentCloakingTargetingDelayBonusForShipModulesRequiringCloaking Used by: Skill: Cloaking """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Cloaking'), 'cloakingTargetingDelay', skill.getModifiedItemAttr('cloakingTargetingDelayBonus') * skill.level) class Effect854(EffectDef): """ cloakingScanResolutionMultiplier Used by: Modules from group: Cloaking Device (12 of 14) """ type = 'offline' @staticmethod def handler(fit, module, context): fit.ship.multiplyItemAttr('scanResolution', module.getModifiedItemAttr('scanResolutionMultiplier'), stackingPenalties=True, penaltyGroup='cloakingScanResolutionMultiplier') class Effect856(EffectDef): """ warpSkillSpeed Used by: Implants named like: Eifyr and Co. 'Rogue' Warp Drive Speed WS (6 of 6) Implants named like: grade Ascendancy (10 of 12) Modules named like: Hyperspatial Velocity Optimizer (8 of 8) """ type = 'passive' @staticmethod def handler(fit, container, context): penalized = False if 'skill' in context or 'implant' in context else True fit.ship.boostItemAttr('baseWarpSpeed', container.getModifiedItemAttr('WarpSBonus'), stackingPenalties=penalized) class Effect874(EffectDef): """ shipProjectileOptimalBonuseMF2 Used by: Ship: Cheetah """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate') class Effect882(EffectDef): """ shipHybridRangeBonusCF2 Used by: Ship: Harpy Ship: Raptor """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate') class Effect887(EffectDef): """ shipETspeedBonusAB2 Used by: Variations of ship: Armageddon (3 of 5) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'speed', ship.getModifiedItemAttr('shipBonusAB2'), skill='Amarr Battleship') class Effect889(EffectDef): """ missileLauncherSpeedMultiplier Used by: Modules from group: Ballistic Control system (22 of 22) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'speed', module.getModifiedItemAttr('speedMultiplier'), stackingPenalties=True) class Effect891(EffectDef): """ shipCruiseMissileVelocityBonusCB3 Used by: Variations of ship: Raven (3 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusCB3'), skill='Caldari Battleship') class Effect892(EffectDef): """ shipTorpedosVelocityBonusCB3 Used by: Variations of ship: Raven (3 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusCB3'), skill='Caldari Battleship') class Effect896(EffectDef): """ 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): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cloaking Device', 'cpu', container.getModifiedItemAttr('cloakingCpuNeedBonus')) class Effect898(EffectDef): """ shipMissileKineticDamageCF Used by: Ship: Buzzard Ship: Condor Ship: Hawk """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate') class Effect899(EffectDef): """ shipMissileKineticDamageCC Used by: Ship: Cerberus Ship: Onyx Ship: Orthrus """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser') class Effect900(EffectDef): """ shipDroneScoutThermalDamageGF2 Used by: Ship: Helios """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Light Drone Operation'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate') class Effect907(EffectDef): """ shipLaserRofAC2 Used by: Ship: Omen Ship: Zealot """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'speed', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser') class Effect909(EffectDef): """ shipArmorHpAC2 Used by: Ship: Augoror Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('armorHP', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser') class Effect912(EffectDef): """ shipMissileLauncherRofCC2 Used by: Ship: Onyx """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'speed', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser') class Effect918(EffectDef): """ shipDronesMaxGC2 Used by: Ship: Guardian-Vexor """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.extraAttributes.increase('maxActiveDrones', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser') class Effect919(EffectDef): """ shipHybridTrackingGC2 Used by: Ship: Enforcer Ship: Thorax """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser') class Effect958(EffectDef): """ shipArmorEmResistanceAC2 Used by: Ship: Maller """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('armorEmDamageResonance', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser') class Effect959(EffectDef): """ shipArmorExplosiveResistanceAC2 Used by: Ship: Maller """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('armorExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser') class Effect960(EffectDef): """ shipArmorKineticResistanceAC2 Used by: Ship: Maller """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('armorKineticDamageResonance', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser') class Effect961(EffectDef): """ shipArmorThermalResistanceAC2 Used by: Ship: Maller """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('armorThermalDamageResonance', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser') class Effect968(EffectDef): """ shipProjectileDmgMC2 Used by: Variations of ship: Rupture (3 of 3) Ship: Cynabal Ship: Moracha """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser') class Effect980(EffectDef): """ cloakingWarpSafe Used by: Modules named like: Covert Ops Cloaking Device II (2 of 2) """ runTime = 'early' type = 'active' @staticmethod def handler(fit, ship, context): fit.extraAttributes['cloaked'] = True # TODO: Implement class Effect989(EffectDef): """ eliteBonusGunshipHybridOptimal1 Used by: Ship: Enyo Ship: Harpy Ship: Ishkur """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates') class Effect991(EffectDef): """ eliteBonusGunshipLaserOptimal1 Used by: Ship: Retribution """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'maxRange', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates') class Effect996(EffectDef): """ eliteBonusGunshipHybridTracking2 Used by: Ship: Enyo """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates') class Effect998(EffectDef): """ eliteBonusGunshipProjectileFalloff2 Used by: Ship: Wolf """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'falloff', ship.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates') class Effect999(EffectDef): """ eliteBonusGunshipShieldBoost2 Used by: Ship: Hawk """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', ship.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates') class Effect1001(EffectDef): """ eliteBonusGunshipCapRecharge2 Used by: Ship: Vengeance """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('rechargeRate', ship.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates') class Effect1003(EffectDef): """ selfT2SmallLaserPulseDamageBonus Used by: Skill: Small Pulse Laser Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Pulse Laser Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect1004(EffectDef): """ selfT2SmallLaserBeamDamageBonus Used by: Skill: Small Beam Laser Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Beam Laser Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect1005(EffectDef): """ selfT2SmallHybridBlasterDamageBonus Used by: Skill: Small Blaster Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Blaster Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect1006(EffectDef): """ selfT2SmallHybridRailDamageBonus Used by: Skill: Small Railgun Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Railgun Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect1007(EffectDef): """ selfT2SmallProjectileACDamageBonus Used by: Skill: Small Autocannon Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Autocannon Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect1008(EffectDef): """ selfT2SmallProjectileArtyDamageBonus Used by: Skill: Small Artillery Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Artillery Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect1009(EffectDef): """ selfT2MediumLaserPulseDamageBonus Used by: Skill: Medium Pulse Laser Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Pulse Laser Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect1010(EffectDef): """ selfT2MediumLaserBeamDamageBonus Used by: Skill: Medium Beam Laser Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Beam Laser Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect1011(EffectDef): """ selfT2MediumHybridBlasterDamageBonus Used by: Skill: Medium Blaster Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Blaster Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect1012(EffectDef): """ selfT2MediumHybridRailDamageBonus Used by: Skill: Medium Railgun Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Railgun Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect1013(EffectDef): """ selfT2MediumProjectileACDamageBonus Used by: Skill: Medium Autocannon Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Autocannon Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect1014(EffectDef): """ selfT2MediumProjectileArtyDamageBonus Used by: Skill: Medium Artillery Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Artillery Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect1015(EffectDef): """ selfT2LargeLaserPulseDamageBonus Used by: Skill: Large Pulse Laser Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Pulse Laser Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect1016(EffectDef): """ selfT2LargeLaserBeamDamageBonus Used by: Skill: Large Beam Laser Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Beam Laser Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect1017(EffectDef): """ selfT2LargeHybridBlasterDamageBonus Used by: Skill: Large Blaster Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Blaster Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect1018(EffectDef): """ selfT2LargeHybridRailDamageBonus Used by: Skill: Large Railgun Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Railgun Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect1019(EffectDef): """ selfT2LargeProjectileACDamageBonus Used by: Skill: Large Autocannon Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Autocannon Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect1020(EffectDef): """ selfT2LargeProjectileArtyDamageBonus Used by: Skill: Large Artillery Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Artillery Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect1021(EffectDef): """ eliteBonusGunshipHybridDmg2 Used by: Ship: Harpy """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates') class Effect1024(EffectDef): """ shipMissileHeavyVelocityBonusCC2 Used by: Ship: Caracal Ship: Osprey Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser') class Effect1025(EffectDef): """ shipMissileLightVelocityBonusCC2 Used by: Ship: Caracal Ship: Osprey Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser') class Effect1030(EffectDef): """ 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): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level) class Effect1033(EffectDef): """ eliteBonusLogisticRemoteArmorRepairCapNeed1 Used by: Ship: Oneiros """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', src.getModifiedItemAttr('eliteBonusLogistics1'), skill='Logistics Cruisers') class Effect1034(EffectDef): """ eliteBonusLogisticRemoteArmorRepairCapNeed2 Used by: Ship: Guardian Ship: Rabisu """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', src.getModifiedItemAttr('eliteBonusLogistics2'), skill='Logistics Cruisers') class Effect1035(EffectDef): """ eliteBonusLogisticShieldTransferCapNeed2 Used by: Ship: Scimitar """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed', src.getModifiedItemAttr('eliteBonusLogistics2'), skill='Logistics Cruisers') class Effect1036(EffectDef): """ eliteBonusLogisticShieldTransferCapNeed1 Used by: Ship: Basilisk Ship: Etana """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed', src.getModifiedItemAttr('eliteBonusLogistics1'), skill='Logistics Cruisers') class Effect1046(EffectDef): """ shipRemoteArmorRangeGC1 Used by: Ship: Oneiros """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'maxRange', src.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser') class Effect1047(EffectDef): """ shipRemoteArmorRangeAC2 Used by: Ship: Guardian """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'maxRange', src.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser') class Effect1048(EffectDef): """ shipShieldTransferRangeCC1 Used by: Ship: Basilisk Ship: Etana """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'maxRange', src.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser') class Effect1049(EffectDef): """ shipShieldTransferRangeMC2 Used by: Ship: Scimitar """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'maxRange', src.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser') class Effect1056(EffectDef): """ eliteBonusHeavyGunshipHybridOptimal1 Used by: Ship: Eagle """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers') class Effect1057(EffectDef): """ eliteBonusHeavyGunshipProjectileOptimal1 Used by: Ship: Muninn """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'maxRange', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers') class Effect1058(EffectDef): """ eliteBonusHeavyGunshipLaserOptimal1 Used by: Ship: Zealot """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'maxRange', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers') class Effect1060(EffectDef): """ eliteBonusHeavyGunshipProjectileFallOff1 Used by: Ship: Vagabond """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'falloff', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers') class Effect1061(EffectDef): """ eliteBonusHeavyGunshipHybridDmg2 Used by: Ship: Deimos Ship: Eagle """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers') class Effect1062(EffectDef): """ eliteBonusHeavyGunshipLaserDmg2 Used by: Ship: Zealot """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers') class Effect1063(EffectDef): """ eliteBonusHeavyGunshipProjectileTracking2 Used by: Ship: Muninn """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers') class Effect1080(EffectDef): """ eliteBonusHeavyGunshipHybridFallOff1 Used by: Ship: Deimos """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'falloff', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers') class Effect1081(EffectDef): """ eliteBonusHeavyGunshipHeavyMissileFlightTime1 Used by: Ship: Cerberus """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'explosionDelay', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers') class Effect1082(EffectDef): """ eliteBonusHeavyGunshipLightMissileFlightTime1 Used by: Ship: Cerberus """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'explosionDelay', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers') class Effect1084(EffectDef): """ eliteBonusHeavyGunshipDroneControlRange1 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.extraAttributes.increase('droneControlRange', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers') class Effect1087(EffectDef): """ eliteBonusHeavyGunshipProjectileDmg2 Used by: Ship: Vagabond """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers') class Effect1099(EffectDef): """ shipProjectileTrackingMF2 Used by: Variations of ship: Slasher (3 of 3) Ship: Republic Fleet Firetail Ship: Wolf """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate') class Effect1176(EffectDef): """ accerationControlSkillAb&MwdSpeedBoost Used by: Implant: Zor's Custom Navigation Hyper-Link Skill: Acceleration Control """ type = 'passive' @staticmethod def handler(fit, container, context): 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) class Effect1179(EffectDef): """ eliteBonusGunshipLaserDamage2 Used by: Ship: Retribution """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates') class Effect1181(EffectDef): """ eliteBonusLogisticEnergyTransferCapNeed1 Used by: Ship: Guardian """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter', 'capacitorNeed', ship.getModifiedItemAttr('eliteBonusLogistics1'), skill='Logistics Cruisers') class Effect1182(EffectDef): """ shipEnergyTransferRange1 Used by: Ship: Guardian """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter', 'maxRange', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser') class Effect1183(EffectDef): """ eliteBonusLogisticEnergyTransferCapNeed2 Used by: Ship: Basilisk Ship: Etana """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter', 'capacitorNeed', ship.getModifiedItemAttr('eliteBonusLogistics2'), skill='Logistics Cruisers') class Effect1184(EffectDef): """ shipEnergyTransferRange2 Used by: Ship: Basilisk Ship: Etana """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter', 'maxRange', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser') class Effect1185(EffectDef): """ structureStealthEmitterArraySigDecrease Used by: Implants named like: X Instinct Booster (4 of 4) Implants named like: grade Halo (15 of 18) """ type = 'passive' @staticmethod def handler(fit, implant, context): fit.ship.boostItemAttr('signatureRadius', implant.getModifiedItemAttr('signatureRadiusBonus')) class Effect1190(EffectDef): """ iceHarvestCycleTimeModulesRequiringIceHarvesting Used by: Implants named like: Inherent Implants 'Yeti' Ice Harvesting IH (3 of 3) Module: Medium Ice Harvester Accelerator I Skill: Ice Harvesting """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'duration', container.getModifiedItemAttr('iceHarvestCycleBonus') * level) class Effect1200(EffectDef): """ miningInfoMultiplier Used by: Charges from group: Mining Crystal (40 of 40) Charges named like: Mining Crystal (42 of 42) """ type = 'passive' @staticmethod def handler(fit, module, context): module.multiplyItemAttr('specialtyMiningAmount', module.getModifiedChargeAttr('specialisationAsteroidYieldMultiplier')) # module.multiplyItemAttr('miningAmount', module.getModifiedChargeAttr('specialisationAsteroidYieldMultiplier')) class Effect1212(EffectDef): """ crystalMiningamountInfo2 Used by: Modules from group: Frequency Mining Laser (3 of 3) """ runTime = 'late' type = 'passive' @staticmethod def handler(fit, module, context): module.preAssignItemAttr('specialtyMiningAmount', module.getModifiedItemAttr('miningAmount')) class Effect1215(EffectDef): """ shipEnergyDrainAmountAF1 Used by: Ship: Caedes Ship: Cruor Ship: Sentinel """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate') class Effect1218(EffectDef): """ shipBonusPirateSmallHybridDmg Used by: Ship: Daredevil Ship: Hecate Ship: Sunesis """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7')) class Effect1219(EffectDef): """ shipEnergyVampireTransferAmountBonusAB Used by: Ship: Bhaalgorn """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship') class Effect1220(EffectDef): """ shipEnergyVampireTransferAmountBonusAc Used by: Ship: Ashimmu Ship: Rabisu Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser') class Effect1221(EffectDef): """ shipStasisWebRangeBonusMB Used by: Ship: Bhaalgorn """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship') class Effect1222(EffectDef): """ shipStasisWebRangeBonusMC2 Used by: Ship: Ashimmu """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser') class Effect1228(EffectDef): """ shipProjectileTrackingGF Used by: Ship: Chremoas Ship: Dramiel """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate') class Effect1230(EffectDef): """ shipMissileVelocityPirateFactionFrigate Used by: Ship: Barghest Ship: Garmur Ship: Orthrus """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusRole7')) class Effect1232(EffectDef): """ shipProjectileRofPirateCruiser Used by: Ship: Cynabal Ship: Moracha """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'speed', ship.getModifiedItemAttr('shipBonusRole7')) class Effect1233(EffectDef): """ shipHybridDmgPirateCruiser Used by: Ship: Gnosis Ship: Vigilant """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7')) class Effect1234(EffectDef): """ shipMissileVelocityPirateFactionLight Used by: Ship: Corax Ship: Talwar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusRole7')) class Effect1239(EffectDef): """ shipProjectileRofPirateBattleship Used by: Ship: Machariel """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'speed', ship.getModifiedItemAttr('shipBonusRole7')) class Effect1240(EffectDef): """ shipHybridDmgPirateBattleship Used by: Ship: Vindicator """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7')) class Effect1255(EffectDef): """ setBonusBloodraider Used by: Implants named like: grade Talisman (18 of 18) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant', 'durationBonus', implant.getModifiedItemAttr('implantSetBloodraider')) class Effect1256(EffectDef): """ setBonusBloodraiderNosferatu Used by: Implants named like: grade Talisman (15 of 18) """ type = 'passive' @staticmethod def handler(fit, implant, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capacitor Emission Systems'), 'duration', implant.getModifiedItemAttr('durationBonus')) class Effect1261(EffectDef): """ setBonusSerpentis Used by: Implants named like: grade Snake (18 of 18) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant', 'velocityBonus', implant.getModifiedItemAttr('implantSetSerpentis')) class Effect1264(EffectDef): """ interceptor2HybridTracking Used by: Ship: Taranis """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusInterceptor2'), skill='Interceptors') class Effect1268(EffectDef): """ interceptor2LaserTracking Used by: Ship: Crusader """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusInterceptor2'), skill='Interceptors') class Effect1281(EffectDef): """ 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): penalized = 'implant' not in context fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', container.getModifiedItemAttr('repairBonus'), stackingPenalties=penalized) class Effect1318(EffectDef): """ ewSkillScanStrengthBonus Used by: Modules named like: Particle Dispersion Augmentor (8 of 8) Skill: Signal Dispersion """ type = 'passive' @staticmethod def handler(fit, container, context): 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) class Effect1360(EffectDef): """ 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): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Sensor Linking'), 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level) class Effect1361(EffectDef): """ 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): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level) class Effect1370(EffectDef): """ 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): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Target Painting'), 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level) class Effect1372(EffectDef): """ 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): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level) class Effect1395(EffectDef): """ shieldBoostAmplifierPassive Used by: Implants named like: grade Crystal (15 of 18) """ type = 'passive' @staticmethod def handler(fit, container, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', container.getModifiedItemAttr('shieldBoostMultiplier')) class Effect1397(EffectDef): """ setBonusGuristas Used by: Implants named like: grade Crystal (18 of 18) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant', 'shieldBoostMultiplier', implant.getModifiedItemAttr('implantSetGuristas')) class Effect1409(EffectDef): """ systemScanDurationSkillAstrometrics Used by: Implants named like: Poteque 'Prospector' Astrometric Acquisition AQ (3 of 3) Skill: Astrometric Acquisition Skill: Astrometrics """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Astrometrics'), 'duration', container.getModifiedItemAttr('durationBonus') * level) class Effect1410(EffectDef): """ 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): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Propulsion Jamming'), 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level) class Effect1412(EffectDef): """ shipBonusHybridOptimalCB Used by: Ship: Rokh """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship') class Effect1434(EffectDef): """ caldariShipEwStrengthCB Used by: Ship: Scorpion """ type = 'passive' @staticmethod def handler(fit, ship, context): 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'), stackingPenalties=True, skill='Caldari Battleship') class Effect1441(EffectDef): """ caldariShipEwOptimalRangeCB3 Used by: Ship: Scorpion """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'maxRange', ship.getModifiedItemAttr('shipBonusCB3'), skill='Caldari Battleship') class Effect1442(EffectDef): """ caldariShipEwOptimalRangeCC2 Used by: Ship: Blackbird """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'maxRange', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser') class Effect1443(EffectDef): """ caldariShipEwCapacitorNeedCC Used by: Ship: Chameleon Ship: Falcon Ship: Rook """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'capacitorNeed', ship.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser') class Effect1445(EffectDef): """ ewSkillRsdMaxRangeBonus Used by: Modules named like: Particle Dispersion Projector (8 of 8) Skill: Long Distance Jamming """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Sensor Linking'), 'maxRange', container.getModifiedItemAttr('rangeSkillBonus') * level, stackingPenalties='skill' not in context) class Effect1446(EffectDef): """ ewSkillTpMaxRangeBonus Used by: Modules named like: Particle Dispersion Projector (8 of 8) Skill: Long Distance Jamming """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'maxRange', container.getModifiedItemAttr('rangeSkillBonus') * level, stackingPenalties='skill' not in context) class Effect1448(EffectDef): """ ewSkillTdMaxRangeBonus Used by: Modules named like: Particle Dispersion Projector (8 of 8) Skill: Long Distance Jamming """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Weapon Disruptor', 'maxRange', container.getModifiedItemAttr('rangeSkillBonus') * level, stackingPenalties='skill' not in context) class Effect1449(EffectDef): """ ewSkillRsdFallOffBonus Used by: Skill: Frequency Modulation """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Sensor Linking'), 'falloffEffectiveness', skill.getModifiedItemAttr('falloffBonus') * skill.level) class Effect1450(EffectDef): """ ewSkillTpFallOffBonus Used by: Skill: Frequency Modulation """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'falloffEffectiveness', skill.getModifiedItemAttr('falloffBonus') * skill.level) class Effect1451(EffectDef): """ ewSkillTdFallOffBonus Used by: Skill: Frequency Modulation """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Weapon Disruptor', 'falloffEffectiveness', skill.getModifiedItemAttr('falloffBonus') * skill.level) class Effect1452(EffectDef): """ ewSkillEwMaxRangeBonus Used by: Implants named like: grade Centurion (10 of 12) Modules named like: Particle Dispersion Projector (8 of 8) Skill: Long Distance Jamming """ type = 'passive' @staticmethod def handler(fit, container, context): 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) class Effect1453(EffectDef): """ ewSkillEwFallOffBonus Used by: Skill: Frequency Modulation """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'falloffEffectiveness', skill.getModifiedItemAttr('falloffBonus') * skill.level) class Effect1472(EffectDef): """ 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): level = container.level if 'skill' in context else 1 penalize = False if 'skill' in context or 'implant' in context else True fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeCloudSize', container.getModifiedItemAttr('aoeCloudSizeBonus') * level, stackingPenalties=penalize) class Effect1500(EffectDef): """ shieldOperationSkillBoostCapacitorNeedBonus Used by: Modules named like: Core Defense Capacitor Safeguard (8 of 8) Skill: Shield Compensation """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'capacitorNeed', container.getModifiedItemAttr('shieldBoostCapacitorBonus') * level) class Effect1550(EffectDef): """ ewSkillTargetPaintingStrengthBonus Used by: Skill: Signature Focusing """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'signatureRadiusBonus', skill.getModifiedItemAttr('scanSkillTargetPaintStrengthBonus') * skill.level) class Effect1551(EffectDef): """ minmatarShipEwTargetPainterMF2 Used by: Ship: Hyena Ship: Vigil """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'signatureRadiusBonus', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate') class Effect1577(EffectDef): """ angelsetbonus Used by: Implants named like: grade Halo (18 of 18) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context): fit.appliedImplants.filteredItemMultiply( lambda implant: 'signatureRadiusBonus' in implant.itemModifiedAttributes and 'implantSetAngel' in implant.itemModifiedAttributes, 'signatureRadiusBonus', implant.getModifiedItemAttr('implantSetAngel')) class Effect1579(EffectDef): """ setBonusSansha Used by: Implants named like: grade Slave (18 of 18) Implant: High-grade Halo Omega """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context): fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'), 'armorHpBonus', implant.getModifiedItemAttr('implantSetSansha') or 1) class Effect1581(EffectDef): """ jumpDriveSkillsRangeBonus Used by: Skill: Jump Drive Calibration """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.ship.boostItemAttr('jumpDriveRange', skill.getModifiedItemAttr('jumpDriveRangeBonus') * skill.level) class Effect1585(EffectDef): """ capitalTurretSkillLaserDamage Used by: Skill: Capital Energy Turret """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Energy Turret'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect1586(EffectDef): """ capitalTurretSkillProjectileDamage Used by: Skill: Capital Projectile Turret """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect1587(EffectDef): """ capitalTurretSkillHybridDamage Used by: Skill: Capital Hybrid Turret """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect1588(EffectDef): """ capitalLauncherSkillCitadelKineticDamage Used by: Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6) Skill: XL Torpedoes """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'kineticDamage', container.getModifiedItemAttr('damageMultiplierBonus') * level) class Effect1590(EffectDef): """ missileSkillAoeVelocityBonus Used by: 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): level = container.level if 'skill' in context else 1 penalize = False if 'skill' in context or 'implant' in context else True fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeVelocity', container.getModifiedItemAttr('aoeVelocityBonus') * level, stackingPenalties=penalize) class Effect1592(EffectDef): """ capitalLauncherSkillCitadelEmDamage Used by: Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6) Skill: XL Torpedoes """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'emDamage', container.getModifiedItemAttr('damageMultiplierBonus') * level) class Effect1593(EffectDef): """ capitalLauncherSkillCitadelExplosiveDamage Used by: Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6) Skill: XL Torpedoes """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'explosiveDamage', container.getModifiedItemAttr('damageMultiplierBonus') * level) class Effect1594(EffectDef): """ capitalLauncherSkillCitadelThermalDamage Used by: Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6) Skill: XL Torpedoes """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'thermalDamage', container.getModifiedItemAttr('damageMultiplierBonus') * level) class Effect1595(EffectDef): """ missileSkillWarheadUpgradesEmDamageBonus Used by: Implants named like: Agency 'Pyrolancea' DB Dose (4 of 4) Skill: Warhead Upgrades """ type = 'passive' @staticmethod def handler(fit, src, context): 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) class Effect1596(EffectDef): """ missileSkillWarheadUpgradesExplosiveDamageBonus Used by: Implants named like: Agency 'Pyrolancea' DB Dose (4 of 4) Skill: Warhead Upgrades """ type = 'passive' @staticmethod def handler(fit, src, context): 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) class Effect1597(EffectDef): """ missileSkillWarheadUpgradesKineticDamageBonus Used by: Implants named like: Agency 'Pyrolancea' DB Dose (4 of 4) Skill: Warhead Upgrades """ type = 'passive' @staticmethod def handler(fit, src, context): 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) class Effect1615(EffectDef): """ shipAdvancedSpaceshipCommandAgilityBonus Used by: Items from market group: Ships > Capital Ships (40 of 40) """ type = 'passive' @staticmethod def handler(fit, ship, context): skillName = 'Advanced Spaceship Command' skill = fit.character.getSkill(skillName) fit.ship.boostItemAttr('agility', skill.getModifiedItemAttr('agilityBonus'), skill=skillName) class Effect1616(EffectDef): """ skillCapitalShipsAdvancedAgility Used by: Skill: Capital Ships """ type = 'passive' @staticmethod def handler(fit, skill, context): if fit.ship.item.requiresSkill('Capital Ships'): fit.ship.boostItemAttr('agility', skill.getModifiedItemAttr('agilityBonus') * skill.level) class Effect1617(EffectDef): """ shipCapitalAgilityBonus Used by: Items from market group: Ships > Capital Ships (31 of 40) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.multiplyItemAttr('agility', src.getModifiedItemAttr('advancedCapitalAgility'), stackingPenalties=True) class Effect1634(EffectDef): """ 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): 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) class Effect1635(EffectDef): """ capitalRepairSystemsSkillDurationBonus Used by: Modules named like: Nanobot Accelerator (8 of 8) Skill: Capital Repair Systems """ type = 'passive' @staticmethod def handler(fit, container, context): 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, stackingPenalties='skill' not in context) class Effect1638(EffectDef): """ skillAdvancedWeaponUpgradesPowerNeedBonus Used by: Skill: Advanced Weapon Upgrades """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Gunnery') or mod.item.requiresSkill('Missile Launcher Operation'), 'power', skill.getModifiedItemAttr('powerNeedBonus') * skill.level) class Effect1643(EffectDef): """ armoredCommandMindlink Used by: Implant: Armored Command Mindlink Implant: Federation Navy Command Mindlink Implant: Imperial Navy Command Mindlink """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff2Multiplier', src.getModifiedItemAttr('mindlinkBonus')) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff1Multiplier', src.getModifiedItemAttr('mindlinkBonus')) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff4Multiplier', src.getModifiedItemAttr('mindlinkBonus')) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff3Multiplier', src.getModifiedItemAttr('mindlinkBonus')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'buffDuration', src.getModifiedItemAttr('mindlinkBonus')) class Effect1644(EffectDef): """ skirmishCommandMindlink Used by: Implant: Federation Navy Command Mindlink Implant: Republic Fleet Command Mindlink Implant: Skirmish Command Mindlink """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff3Multiplier', src.getModifiedItemAttr('mindlinkBonus')) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff4Multiplier', src.getModifiedItemAttr('mindlinkBonus')) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff2Multiplier', src.getModifiedItemAttr('mindlinkBonus')) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff1Multiplier', src.getModifiedItemAttr('mindlinkBonus')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'buffDuration', src.getModifiedItemAttr('mindlinkBonus')) class Effect1645(EffectDef): """ shieldCommandMindlink Used by: Implants from group: Cyber Leadership (4 of 10) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff4Multiplier', src.getModifiedItemAttr('mindlinkBonus')) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff3Multiplier', src.getModifiedItemAttr('mindlinkBonus')) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff2Multiplier', src.getModifiedItemAttr('mindlinkBonus')) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff1Multiplier', src.getModifiedItemAttr('mindlinkBonus')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'buffDuration', src.getModifiedItemAttr('mindlinkBonus')) class Effect1646(EffectDef): """ informationCommandMindlink Used by: Implant: Caldari Navy Command Mindlink Implant: Imperial Navy Command Mindlink Implant: Information Command Mindlink """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff4Multiplier', src.getModifiedItemAttr('mindlinkBonus')) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff3Multiplier', src.getModifiedItemAttr('mindlinkBonus')) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff1Multiplier', src.getModifiedItemAttr('mindlinkBonus')) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff2Multiplier', src.getModifiedItemAttr('mindlinkBonus')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'buffDuration', src.getModifiedItemAttr('mindlinkBonus')) class Effect1650(EffectDef): """ skillSiegeModuleConsumptionQuantityBonus Used by: Skill: Tactical Weapon Reconfiguration """ type = 'passive' @staticmethod def handler(fit, skill, context): amount = -skill.getModifiedItemAttr('consumptionQuantityBonus') fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill(skill), 'consumptionQuantity', amount * skill.level) class Effect1657(EffectDef): """ missileSkillWarheadUpgradesThermalDamageBonus Used by: Implants named like: Agency 'Pyrolancea' DB Dose (4 of 4) Skill: Warhead Upgrades """ type = 'passive' @staticmethod def handler(fit, src, context): 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) class Effect1668(EffectDef): """ freighterCargoBonusA2 Used by: Variations of ship: Providence (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('capacity', ship.getModifiedItemAttr('freighterBonusA2'), skill='Amarr Freighter') class Effect1669(EffectDef): """ freighterCargoBonusC2 Used by: Variations of ship: Charon (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('capacity', ship.getModifiedItemAttr('freighterBonusC2'), skill='Caldari Freighter') class Effect1670(EffectDef): """ freighterCargoBonusG2 Used by: Variations of ship: Obelisk (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('capacity', ship.getModifiedItemAttr('freighterBonusG2'), skill='Gallente Freighter') class Effect1671(EffectDef): """ freighterCargoBonusM2 Used by: Variations of ship: Fenrir (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('capacity', ship.getModifiedItemAttr('freighterBonusM2'), skill='Minmatar Freighter') class Effect1672(EffectDef): """ freighterMaxVelocityBonusA1 Used by: Ship: Providence """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('freighterBonusA1'), skill='Amarr Freighter') class Effect1673(EffectDef): """ freighterMaxVelocityBonusC1 Used by: Ship: Charon """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('freighterBonusC1'), skill='Caldari Freighter') class Effect1674(EffectDef): """ freighterMaxVelocityBonusG1 Used by: Ship: Obelisk """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('freighterBonusG1'), skill='Gallente Freighter') class Effect1675(EffectDef): """ freighterMaxVelocityBonusM1 Used by: Ship: Fenrir """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('freighterBonusM1'), skill='Minmatar Freighter') class Effect1720(EffectDef): """ shieldBoostAmplifier Used by: Modules from group: Capacitor Power Relay (20 of 20) Modules from group: Shield Boost Amplifier (25 of 25) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Operation') or mod.item.requiresSkill('Capital Shield Operation'), 'shieldBonus', module.getModifiedItemAttr('shieldBoostMultiplier'), stackingPenalties=True) class Effect1722(EffectDef): """ jumpDriveSkillsCapacitorNeedBonus Used by: Skill: Jump Drive Operation """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.ship.boostItemAttr('jumpDriveCapacitorNeed', skill.getModifiedItemAttr('jumpDriveCapacitorNeedBonus') * skill.level) class Effect1730(EffectDef): """ droneDmgBonus Used by: Skills from group: Drones (8 of 26) """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill(skill), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect1738(EffectDef): """ doHacking Used by: Modules from group: Data Miners (10 of 10) """ type = 'active' class Effect1763(EffectDef): """ missileSkillRapidLauncherRoF Used by: Implants named like: Zainou 'Deadeye' Rapid Launch RL (6 of 6) Implant: Standard Cerebral Accelerator Implant: Whelan Machorin's Ballistic Smartlink Skill: Missile Launcher Operation Skill: Rapid Launch """ type = 'passive' @staticmethod def handler(fit, container, context): 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) class Effect1764(EffectDef): """ 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): level = container.level if 'skill' in context else 1 penalized = False if 'skill' in context or 'implant' in context else True fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', container.getModifiedItemAttr('speedFactor') * level, stackingPenalties=penalized) class Effect1773(EffectDef): """ shipBonusSHTFalloffGF2 Used by: Ship: Atron Ship: Daredevil """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate') class Effect1804(EffectDef): """ shipArmorEMResistanceAF1 Used by: Ship: Astero Ship: Malice Ship: Punisher """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('armorEmDamageResonance', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate') class Effect1805(EffectDef): """ shipArmorTHResistanceAF1 Used by: Ship: Astero Ship: Malice Ship: Punisher """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('armorThermalDamageResonance', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate') class Effect1806(EffectDef): """ shipArmorKNResistanceAF1 Used by: Ship: Astero Ship: Malice Ship: Punisher """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('armorKineticDamageResonance', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate') class Effect1807(EffectDef): """ shipArmorEXResistanceAF1 Used by: Ship: Astero Ship: Malice Ship: Punisher """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('armorExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate') class Effect1812(EffectDef): """ shipShieldEMResistanceCC2 Used by: Variations of ship: Moa (3 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('shieldEmDamageResonance', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser') class Effect1813(EffectDef): """ shipShieldThermalResistanceCC2 Used by: Variations of ship: Moa (3 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('shieldThermalDamageResonance', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser') class Effect1814(EffectDef): """ shipShieldKineticResistanceCC2 Used by: Variations of ship: Moa (3 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('shieldKineticDamageResonance', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser') class Effect1815(EffectDef): """ shipShieldExplosiveResistanceCC2 Used by: Variations of ship: Moa (3 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('shieldExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser') class Effect1816(EffectDef): """ shipShieldEMResistanceCF2 Used by: Variations of ship: Merlin (3 of 4) Ship: Cambion Ship: Whiptail """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('shieldEmDamageResonance', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate') class Effect1817(EffectDef): """ shipShieldThermalResistanceCF2 Used by: Variations of ship: Merlin (3 of 4) Ship: Cambion Ship: Whiptail """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('shieldThermalDamageResonance', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate') class Effect1819(EffectDef): """ shipShieldKineticResistanceCF2 Used by: Variations of ship: Merlin (3 of 4) Ship: Cambion Ship: Whiptail """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('shieldKineticDamageResonance', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate') class Effect1820(EffectDef): """ shipShieldExplosiveResistanceCF2 Used by: Variations of ship: Merlin (3 of 4) Ship: Cambion Ship: Whiptail """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('shieldExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate') class Effect1848(EffectDef): """ miningForemanMindlink Used by: Implant: Mining Foreman Mindlink Implant: ORE Mining Director Mindlink """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff4Multiplier', src.getModifiedItemAttr('mindlinkBonus')) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff2Multiplier', src.getModifiedItemAttr('mindlinkBonus')) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff1Multiplier', src.getModifiedItemAttr('mindlinkBonus')) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff3Multiplier', src.getModifiedItemAttr('mindlinkBonus')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'buffDuration', src.getModifiedItemAttr('mindlinkBonus')) class Effect1851(EffectDef): """ 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): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), 'speed', skill.getModifiedItemAttr('rofBonus') * skill.level) class Effect1862(EffectDef): """ shipMissileEMDamageCF2 Used by: Ship: Garmur """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'emDamage', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate') class Effect1863(EffectDef): """ shipMissileThermalDamageCF2 Used by: Ship: Garmur """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate') class Effect1864(EffectDef): """ shipMissileExplosiveDamageCF2 Used by: Ship: Garmur """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate') class Effect1882(EffectDef): """ miningYieldMultiplyPercent Used by: Variations of module: Mining Laser Upgrade I (5 of 5) Module: Frostline 'Omnivore' Harvester Upgrade """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining'), 'miningAmount', module.getModifiedItemAttr('miningAmountBonus')) class Effect1885(EffectDef): """ shipCruiseLauncherROFBonus2CB Used by: Ship: Raven Ship: Raven State Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Cruise', 'speed', ship.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship') class Effect1886(EffectDef): """ shipSiegeLauncherROFBonus2CB Used by: Ship: Raven Ship: Raven State Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Torpedo', 'speed', ship.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship') class Effect1896(EffectDef): """ eliteBargeBonusIceHarvestingCycleTimeBarge3 Used by: Ships from group: Exhumer (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'duration', ship.getModifiedItemAttr('eliteBonusBarge2'), skill='Exhumers') class Effect1910(EffectDef): """ eliteBonusVampireDrainAmount2 Used by: Ship: Curse Ship: Pilgrim """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', ship.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships') class Effect1911(EffectDef): """ eliteReconBonusGravimetricStrength2 Used by: Ship: Chameleon Ship: Falcon Ship: Rook """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanGravimetricStrengthBonus', ship.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships') class Effect1912(EffectDef): """ eliteReconBonusMagnetometricStrength2 Used by: Ship: Chameleon Ship: Falcon Ship: Rook """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanMagnetometricStrengthBonus', ship.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships') class Effect1913(EffectDef): """ eliteReconBonusRadarStrength2 Used by: Ship: Chameleon Ship: Falcon Ship: Rook """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanRadarStrengthBonus', ship.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships') class Effect1914(EffectDef): """ eliteReconBonusLadarStrength2 Used by: Ship: Chameleon Ship: Falcon Ship: Rook """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanLadarStrengthBonus', ship.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships') class Effect1921(EffectDef): """ eliteReconStasisWebBonus2 Used by: Ship: Huginn Ship: Moracha Ship: Rapier Ship: Victor """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', ship.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships') class Effect1922(EffectDef): """ eliteReconScramblerRangeBonus2 Used by: Ship: Arazu Ship: Enforcer Ship: Lachesis """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', ship.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships') class Effect1959(EffectDef): """ armorReinforcerMassAdd Used by: Modules from group: Armor Reinforcer (51 of 51) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.increaseItemAttr('mass', module.getModifiedItemAttr('massAddition')) class Effect1964(EffectDef): """ shipBonusShieldTransferCapneed1 Used by: Ship: Osprey """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed', src.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser') class Effect1969(EffectDef): """ shipBonusRemoteArmorRepairCapNeedGC1 Used by: Ship: Exequror """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', src.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser') class Effect1996(EffectDef): """ caldariShipEwCapacitorNeedCF2 Used by: Ship: Griffin Ship: Kitsune """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'capacitorNeed', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate') class Effect2000(EffectDef): """ droneRangeBonusAdd Used by: Modules from group: Drone Control Range Module (7 of 7) """ type = 'passive' @staticmethod def handler(fit, module, context): amount = module.getModifiedItemAttr('droneRangeBonus') fit.extraAttributes.increase('droneControlRange', amount) class Effect2008(EffectDef): """ cynosuralDurationBonus Used by: Ships from group: Force Recon Ship (8 of 9) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Cynosural Field Generator', 'duration', ship.getModifiedItemAttr('durationBonus')) class Effect2013(EffectDef): """ droneMaxVelocityBonus Used by: 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): level = container.level if 'skill' in context else 1 fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'maxVelocity', container.getModifiedItemAttr('droneMaxVelocityBonus') * level, stackingPenalties=True) class Effect2014(EffectDef): """ droneMaxRangeBonus Used by: Modules named like: Drone Scope Chip (6 of 8) """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 stacking = False if 'skill' in context else True fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'maxRange', container.getModifiedItemAttr('rangeSkillBonus') * level, stackingPenalties=stacking) class Effect2015(EffectDef): """ droneDurabilityShieldCapBonus Used by: Modules named like: Drone Durability Enhancer (6 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'shieldCapacity', module.getModifiedItemAttr('hullHpBonus')) class Effect2016(EffectDef): """ droneDurabilityArmorHPBonus Used by: Modules named like: Drone Durability Enhancer (6 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'armorHP', module.getModifiedItemAttr('hullHpBonus')) class Effect2017(EffectDef): """ droneDurabilityHPBonus Used by: Modules named like: Drone Durability Enhancer (6 of 8) """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'hp', container.getModifiedItemAttr('hullHpBonus') * level) class Effect2019(EffectDef): """ repairDroneShieldBonusBonus Used by: Modules named like: Drone Repair Augmentor (8 of 8) Skill: Repair Drone Operation """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 fit.drones.filteredItemBoost(lambda drone: drone.item.group.name == 'Logistic Drone', 'shieldBonus', container.getModifiedItemAttr('damageHP') * level) class Effect2020(EffectDef): """ repairDroneArmorDamageAmountBonus Used by: Modules named like: Drone Repair Augmentor (8 of 8) Skill: Repair Drone Operation """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 fit.drones.filteredItemBoost(lambda drone: drone.item.group.name == 'Logistic Drone', 'armorDamageAmount', container.getModifiedItemAttr('damageHP') * level, stackingPenalties=True) class Effect2029(EffectDef): """ 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): fit.ship.increaseItemAttr('signatureRadius', module.getModifiedItemAttr('signatureRadiusAdd')) class Effect2041(EffectDef): """ modifyArmorResonancePostPercent Used by: Modules from group: Armor Coating (202 of 202) Modules from group: Armor Plating Energized (187 of 187) """ type = 'passive' @staticmethod def handler(fit, module, context): for type in ('kinetic', 'thermal', 'explosive', 'em'): fit.ship.boostItemAttr('armor%sDamageResonance' % type.capitalize(), module.getModifiedItemAttr('%sDamageResistanceBonus' % type), stackingPenalties=True) class Effect2052(EffectDef): """ modifyShieldResonancePostPercent Used by: Modules from group: Shield Resistance Amplifier (88 of 88) """ type = 'passive' @staticmethod def handler(fit, module, context): for type in ('kinetic', 'thermal', 'explosive', 'em'): fit.ship.boostItemAttr('shield%sDamageResonance' % type.capitalize(), module.getModifiedItemAttr('%sDamageResistanceBonus' % type), stackingPenalties=True) class Effect2053(EffectDef): """ emShieldCompensationHardeningBonusGroupShieldAmp Used by: Skill: EM Shield Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Shield Resistance Amplifier', 'emDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level) class Effect2054(EffectDef): """ explosiveShieldCompensationHardeningBonusGroupShieldAmp Used by: Skill: Explosive Shield Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Shield Resistance Amplifier', 'explosiveDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level) class Effect2055(EffectDef): """ kineticShieldCompensationHardeningBonusGroupShieldAmp Used by: Skill: Kinetic Shield Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Shield Resistance Amplifier', 'kineticDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level) class Effect2056(EffectDef): """ thermalShieldCompensationHardeningBonusGroupShieldAmp Used by: Skill: Thermal Shield Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Shield Resistance Amplifier', 'thermalDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level) class Effect2105(EffectDef): """ emArmorCompensationHardeningBonusGroupArmorCoating Used by: Skill: EM Armor Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Coating', 'emDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level) class Effect2106(EffectDef): """ explosiveArmorCompensationHardeningBonusGroupArmorCoating Used by: Skill: Explosive Armor Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Coating', 'explosiveDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level) class Effect2107(EffectDef): """ kineticArmorCompensationHardeningBonusGroupArmorCoating Used by: Skill: Kinetic Armor Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Coating', 'kineticDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level) class Effect2108(EffectDef): """ thermicArmorCompensationHardeningBonusGroupArmorCoating Used by: Skill: Thermal Armor Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Coating', 'thermalDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level) class Effect2109(EffectDef): """ emArmorCompensationHardeningBonusGroupEnergized Used by: Skill: EM Armor Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Plating Energized', 'emDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level) class Effect2110(EffectDef): """ explosiveArmorCompensationHardeningBonusGroupEnergized Used by: Skill: Explosive Armor Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Plating Energized', 'explosiveDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level) class Effect2111(EffectDef): """ kineticArmorCompensationHardeningBonusGroupEnergized Used by: Skill: Kinetic Armor Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Plating Energized', 'kineticDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level) class Effect2112(EffectDef): """ thermicArmorCompensationHardeningBonusGroupEnergized Used by: Skill: Thermal Armor Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Plating Energized', 'thermalDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level) class Effect2130(EffectDef): """ smallHybridMaxRangeBonus Used by: Ship: Catalyst Ship: Cormorant """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('maxRangeBonus')) class Effect2131(EffectDef): """ smallEnergyMaxRangeBonus Used by: Ship: Coercer Ship: Gold Magnate Ship: Silver Magnate """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'maxRange', ship.getModifiedItemAttr('maxRangeBonus')) class Effect2132(EffectDef): """ smallProjectileMaxRangeBonus Used by: Ship: Thrasher """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'maxRange', ship.getModifiedItemAttr('maxRangeBonus')) class Effect2133(EffectDef): """ energyTransferArrayMaxRangeBonus Used by: Ship: Augoror Ship: Osprey """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter', 'maxRange', ship.getModifiedItemAttr('maxRangeBonus2')) class Effect2134(EffectDef): """ 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): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Shield Booster', 'maxRange', ship.getModifiedItemAttr('maxRangeBonus')) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Ancillary Remote Shield Booster', 'maxRange', ship.getModifiedItemAttr('maxRangeBonus')) class Effect2135(EffectDef): """ 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): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Armor Repairer', 'maxRange', src.getModifiedItemAttr('maxRangeBonus')) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Ancillary Remote Armor Repairer', 'maxRange', src.getModifiedItemAttr('maxRangeBonus')) class Effect2143(EffectDef): """ minmatarShipEwTargetPainterMC2 Used by: Ship: Huginn """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'signatureRadiusBonus', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser') class Effect2155(EffectDef): """ eliteBonusCommandShipProjectileDamageCS1 Used by: Ship: Sleipnir """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusCommandShips1'), skill='Command Ships') class Effect2156(EffectDef): """ eliteBonusCommandShipProjectileFalloffCS2 Used by: Ship: Sleipnir """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'falloff', ship.getModifiedItemAttr('eliteBonusCommandShips2'), skill='Command Ships') class Effect2157(EffectDef): """ eliteBonusCommandShipLaserDamageCS1 Used by: Ship: Absolution """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusCommandShips1'), skill='Command Ships') class Effect2158(EffectDef): """ eliteBonusCommandShipLaserROFCS2 Used by: Ship: Absolution """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'speed', ship.getModifiedItemAttr('eliteBonusCommandShips2'), skill='Command Ships') class Effect2160(EffectDef): """ eliteBonusCommandShipHybridFalloffCS2 Used by: Ship: Astarte """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'falloff', ship.getModifiedItemAttr('eliteBonusCommandShips2'), skill='Command Ships') class Effect2161(EffectDef): """ eliteBonusCommandShipHybridOptimalCS1 Used by: Ship: Vulture """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('eliteBonusCommandShips1'), skill='Command Ships') class Effect2179(EffectDef): """ shipBonusDroneHitpointsGC2 Used by: Ships named like: Stratios (2 of 2) Ship: Vexor Ship: Vexor Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): for type in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), type, ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser') class Effect2181(EffectDef): """ shipBonusDroneHitpointsFixedAC2 Used by: Variations of ship: Arbitrator (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context): for type in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), type, ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser') class Effect2186(EffectDef): """ shipBonusDroneHitpointsGB2 Used by: Variations of ship: Dominix (3 of 3) Ship: Nestor """ type = 'passive' @staticmethod def handler(fit, ship, context): for type in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), type, ship.getModifiedItemAttr('shipBonusGB2'), skill='Gallente Battleship') class Effect2187(EffectDef): """ shipBonusDroneDamageMultiplierGB2 Used by: Variations of ship: Dominix (3 of 3) Ship: Nestor """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGB2'), skill='Gallente Battleship') class Effect2188(EffectDef): """ shipBonusDroneDamageMultiplierGC2 Used by: Ships named like: Stratios (2 of 2) Ship: Vexor Ship: Vexor Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser') class Effect2189(EffectDef): """ shipBonusDroneDamageMultiplierAC2 Used by: Variations of ship: Arbitrator (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser') class Effect2200(EffectDef): """ eliteBonusInterdictorsMissileKineticDamage1 Used by: Ship: Flycatcher """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Light Missiles') or mod.charge.requiresSkill('Rockets'), 'kineticDamage', ship.getModifiedItemAttr('eliteBonusInterdictors1'), skill='Interdictors') class Effect2201(EffectDef): """ eliteBonusInterdictorsProjectileFalloff1 Used by: Ship: Sabre """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'falloff', ship.getModifiedItemAttr('eliteBonusInterdictors1'), skill='Interdictors') class Effect2215(EffectDef): """ shipBonusPirateFrigateProjDamage Used by: Ship: Chremoas Ship: Dramiel Ship: Sunesis Ship: Svipul """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7')) class Effect2232(EffectDef): """ scanStrengthBonusPercentOnline Used by: Modules from group: Signal Amplifier (7 of 7) """ type = 'passive' @staticmethod def handler(fit, module, context): for type in ('Gravimetric', 'Magnetometric', 'Radar', 'Ladar'): fit.ship.boostItemAttr('scan%sStrength' % type, module.getModifiedItemAttr('scan%sStrengthPercent' % type), stackingPenalties=True) class Effect2249(EffectDef): """ shipBonusDroneMiningAmountAC2 Used by: Ship: Arbitrator """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'miningAmount', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser') class Effect2250(EffectDef): """ shipBonusDroneMiningAmountGC2 Used by: Ship: Vexor Ship: Vexor Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Mining Drone Operation'), 'miningAmount', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser') class Effect2251(EffectDef): """ commandshipMultiRelayEffect Used by: Ships from group: Command Ship (8 of 8) Ships from group: Industrial Command Ship (2 of 2) Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupActive', src.getModifiedItemAttr('maxGangModules')) fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupOnline', src.getModifiedItemAttr('maxGangModules')) class Effect2252(EffectDef): """ covertOpsAndReconOpsCloakModuleDelayBonus Used by: Ships from group: Black Ops (5 of 5) Ships from group: Blockade Runner (4 of 4) Ships from group: Covert Ops (8 of 8) Ships from group: Expedition Frigate (2 of 2) Ships from group: Force Recon Ship (9 of 9) 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: Rabisu """ type = 'passive' @staticmethod def handler(fit, container, context): fit.modules.filteredItemForce(lambda mod: mod.item.requiresSkill('Cloaking'), 'moduleReactivationDelay', container.getModifiedItemAttr('covertOpsAndReconOpsCloakModuleDelay')) class Effect2253(EffectDef): """ covertOpsStealthBomberTargettingDelayBonus Used by: Ships from group: Black Ops (5 of 5) Ships from group: Stealth Bomber (5 of 5) Ship: Caedes Ship: Chremoas Ship: Endurance Ship: Etana Ship: Rabisu """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemForce(lambda mod: mod.item.group.name == 'Cloaking Device', 'cloakingTargetingDelay', ship.getModifiedItemAttr('covertOpsStealthBomberTargettingDelay')) class Effect2255(EffectDef): """ tractorBeamCan Used by: Deployables from group: Mobile Tractor Unit (3 of 3) Modules from group: Tractor Beam (4 of 4) """ type = 'active' class Effect2298(EffectDef): """ scanStrengthBonusPercentPassive Used by: Implants named like: High grade (20 of 66) """ type = 'passive' @staticmethod def handler(fit, implant, context): 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)) class Effect2302(EffectDef): """ damageControl Used by: Modules from group: Damage Control (22 of 27) """ type = 'passive' @staticmethod def handler(fit, module, context): 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') class Effect2305(EffectDef): """ eliteReconBonusEnergyNeutAmount2 Used by: Ship: Curse Ship: Pilgrim """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', ship.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships') class Effect2354(EffectDef): """ 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): 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) class Effect2355(EffectDef): """ capitalRemoteShieldTransferCapNeedBonusSkill Used by: Skill: Capital Shield Emission Systems """ type = 'passive' @staticmethod def handler(fit, container, context): 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) class Effect2356(EffectDef): """ capitalRemoteEnergyTransferCapNeedBonusSkill Used by: Skill: Capital Capacitor Emission Systems """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Capacitor Emission Systems'), 'capacitorNeed', skill.getModifiedItemAttr('capNeedBonus') * skill.level) class Effect2402(EffectDef): """ skillSuperWeaponDmgBonus Used by: Skill: Doomsday Operation """ type = 'passive' @staticmethod def handler(fit, skill, context): damageTypes = ('em', 'explosive', 'kinetic', 'thermal') for dmgType in damageTypes: dmgAttr = '{0}Damage'.format(dmgType) fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Super Weapon' and dmgAttr in mod.itemModifiedAttributes, dmgAttr, skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect2422(EffectDef): """ 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): fit.ship.boostItemAttr('maxVelocity', implant.getModifiedItemAttr('implantBonusVelocity')) class Effect2432(EffectDef): """ energyManagementCapacitorBonusPostPercentCapacityLocationShipGroupCapacitorCapacityBonus Used by: Implants named like: Inherent Implants 'Squire' Capacitor Management EM (6 of 6) Implants named like: Mindflood Booster (4 of 4) Modules named like: Semiconductor Memory Cell (8 of 8) Implant: Antipharmakon Aeolis Implant: Genolution Core Augmentation CA-1 Skill: Capacitor Management """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 fit.ship.boostItemAttr('capacitorCapacity', container.getModifiedItemAttr('capacitorCapacityBonus') * level) class Effect2444(EffectDef): """ minerCpuUsageMultiplyPercent2 Used by: Variations of module: Mining Laser Upgrade I (5 of 5) Module: Frostline 'Omnivore' Harvester Upgrade """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining'), 'cpu', module.getModifiedItemAttr('cpuPenaltyPercent')) class Effect2445(EffectDef): """ iceMinerCpuUsagePercent Used by: Variations of module: Ice Harvester Upgrade I (5 of 5) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'cpu', module.getModifiedItemAttr('cpuPenaltyPercent')) class Effect2456(EffectDef): """ 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): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Upgrades'), 'cpuPenaltyPercent', container.getModifiedItemAttr('miningUpgradeCPUReductionBonus') * level) class Effect2465(EffectDef): """ shipBonusArmorResistAB Used by: Ship: Abaddon Ship: Nestor """ type = 'passive' @staticmethod def handler(fit, ship, context): for type in ('Em', 'Explosive', 'Kinetic', 'Thermal'): fit.ship.boostItemAttr('armor{0}DamageResonance'.format(type), ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship') class Effect2479(EffectDef): """ 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): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'duration', module.getModifiedItemAttr('iceHarvestCycleBonus')) class Effect2485(EffectDef): """ implantArmorHpBonus2 Used by: Implants named like: Inherent Implants 'Noble' Hull Upgrades HG (7 of 7) 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): fit.ship.boostItemAttr('armorHP', implant.getModifiedItemAttr('armorHpBonus2')) class Effect2488(EffectDef): """ implantVelocityBonus2 Used by: Implant: Republic Special Ops Field Enhancer - Gamma """ type = 'passive' @staticmethod def handler(fit, implant, context): fit.ship.boostItemAttr('maxVelocity', implant.getModifiedItemAttr('velocityBonus2')) class Effect2489(EffectDef): """ shipBonusRemoteTrackingComputerFalloffMC Used by: Ship: Scimitar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer', 'falloffEffectiveness', ship.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser') class Effect2490(EffectDef): """ shipBonusRemoteTrackingComputerFalloffGC2 Used by: Ship: Oneiros """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer', 'falloffEffectiveness', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser') class Effect2491(EffectDef): """ ewSkillEcmBurstRangeBonus Used by: Modules named like: Particle Dispersion Projector (8 of 8) Skill: Long Distance Jamming """ type = 'passive' @staticmethod def handler(fit, container, context): 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, stackingPenalties=False if 'skill' in context else True) class Effect2492(EffectDef): """ 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): 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) class Effect2503(EffectDef): """ shipHTTrackingBonusGB2 Used by: Ships named like: Megathron (3 of 3) Ship: Marshal """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGB2'), skill='Gallente Battleship') class Effect2504(EffectDef): """ shipBonusHybridTrackingGF2 Used by: Ship: Ares Ship: Federation Navy Comet Ship: Pacifier Ship: Tristan """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate') class Effect2561(EffectDef): """ eliteBonusAssaultShipMissileVelocity1 Used by: Ship: Hawk """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates') class Effect2589(EffectDef): """ 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): 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) class Effect2602(EffectDef): """ shipBonusEmShieldResistanceCB2 Used by: Ship: Rattlesnake Ship: Rokh Ship: Scorpion Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('shieldEmDamageResonance', ship.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship') class Effect2603(EffectDef): """ shipBonusExplosiveShieldResistanceCB2 Used by: Ship: Rattlesnake Ship: Rokh Ship: Scorpion Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('shieldExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship') class Effect2604(EffectDef): """ shipBonusKineticShieldResistanceCB2 Used by: Ship: Rattlesnake Ship: Rokh Ship: Scorpion Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('shieldKineticDamageResonance', ship.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship') class Effect2605(EffectDef): """ shipBonusThermicShieldResistanceCB2 Used by: Ship: Rattlesnake Ship: Rokh Ship: Scorpion Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('shieldThermalDamageResonance', ship.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship') class Effect2611(EffectDef): """ eliteBonusGunshipProjectileDamage1 Used by: Ship: Wolf """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates') class Effect2644(EffectDef): """ increaseSignatureRadiusOnline Used by: Modules from group: Inertial Stabilizer (7 of 7) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.boostItemAttr('signatureRadius', module.getModifiedItemAttr('signatureRadiusBonus'), stackingPenalties=True) class Effect2645(EffectDef): """ scanResolutionMultiplierOnline Used by: Modules from group: Warp Core Stabilizer (8 of 8) Module: Target Spectrum Breaker """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.multiplyItemAttr('scanResolution', module.getModifiedItemAttr('scanResolutionMultiplier'), stackingPenalties=True) class Effect2646(EffectDef): """ maxTargetRangeBonus Used by: Modules from group: Warp Core Stabilizer (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRangeBonus'), stackingPenalties=True) class Effect2647(EffectDef): """ eliteBonusHeavyGunshipHeavyMissileLaunhcerRof2 Used by: Ship: Cerberus """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy', 'speed', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers') class Effect2648(EffectDef): """ eliteBonusHeavyGunshipHeavyAssaultMissileLaunhcerRof2 Used by: Ship: Cerberus """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy Assault', 'speed', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers') class Effect2649(EffectDef): """ eliteBonusHeavyGunshipAssaultMissileLaunhcerRof2 Used by: Ship: Cerberus """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rapid Light', 'speed', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers') class Effect2670(EffectDef): """ sensorBoosterActivePercentage Used by: Modules from group: Sensor Booster (16 of 16) """ type = 'active' @staticmethod def handler(fit, module, context): fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRangeBonus'), stackingPenalties=True) fit.ship.boostItemAttr('scanResolution', module.getModifiedItemAttr('scanResolutionBonus'), stackingPenalties=True) for scanType in ('Gravimetric', 'Magnetometric', 'Radar', 'Ladar'): fit.ship.boostItemAttr( 'scan{}Strength'.format(scanType), module.getModifiedItemAttr('scan{}StrengthPercent'.format(scanType)), stackingPenalties=True ) class Effect2688(EffectDef): """ capNeedBonusEffectLasers Used by: Modules named like: Energy Discharge Elutriation (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Weapon', 'capacitorNeed', module.getModifiedItemAttr('capNeedBonus')) class Effect2689(EffectDef): """ capNeedBonusEffectHybrids Used by: Modules named like: Hybrid Discharge Elutriation (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'capacitorNeed', module.getModifiedItemAttr('capNeedBonus')) class Effect2690(EffectDef): """ cpuNeedBonusEffectLasers Used by: Modules named like: Algid Energy Administrations Unit (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Weapon', 'cpu', module.getModifiedItemAttr('cpuNeedBonus')) class Effect2691(EffectDef): """ cpuNeedBonusEffectHybrid Used by: Modules named like: Algid Hybrid Administrations Unit (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'cpu', module.getModifiedItemAttr('cpuNeedBonus')) class Effect2693(EffectDef): """ falloffBonusEffectLasers Used by: Modules named like: Energy Ambit Extension (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Weapon', 'falloff', module.getModifiedItemAttr('falloffBonus'), stackingPenalties=True) class Effect2694(EffectDef): """ falloffBonusEffectHybrids Used by: Modules named like: Hybrid Ambit Extension (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'falloff', module.getModifiedItemAttr('falloffBonus'), stackingPenalties=True) class Effect2695(EffectDef): """ falloffBonusEffectProjectiles Used by: Modules named like: Projectile Ambit Extension (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Projectile Weapon', 'falloff', module.getModifiedItemAttr('falloffBonus'), stackingPenalties=True) class Effect2696(EffectDef): """ maxRangeBonusEffectLasers Used by: Modules named like: Energy Locus Coordinator (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Weapon', 'maxRange', module.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True) class Effect2697(EffectDef): """ maxRangeBonusEffectHybrids Used by: Modules named like: Hybrid Locus Coordinator (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'maxRange', module.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True) class Effect2698(EffectDef): """ maxRangeBonusEffectProjectiles Used by: Modules named like: Projectile Locus Coordinator (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Projectile Weapon', 'maxRange', module.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True) class Effect2706(EffectDef): """ drawbackPowerNeedLasers Used by: Modules from group: Rig Energy Weapon (56 of 56) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Weapon', 'power', module.getModifiedItemAttr('drawback')) class Effect2707(EffectDef): """ drawbackPowerNeedHybrids Used by: Modules from group: Rig Hybrid Weapon (56 of 56) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'power', module.getModifiedItemAttr('drawback')) class Effect2708(EffectDef): """ drawbackPowerNeedProjectiles Used by: Modules from group: Rig Projectile Weapon (40 of 40) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Projectile Weapon', 'power', module.getModifiedItemAttr('drawback')) class Effect2712(EffectDef): """ drawbackArmorHP Used by: Modules from group: Rig Navigation (48 of 64) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.boostItemAttr('armorHP', module.getModifiedItemAttr('drawback')) class Effect2713(EffectDef): """ drawbackCPUOutput Used by: Modules from group: Rig Drones (58 of 64) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.boostItemAttr('cpuOutput', module.getModifiedItemAttr('drawback')) class Effect2714(EffectDef): """ drawbackCPUNeedLaunchers Used by: Modules from group: Rig Launcher (48 of 48) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'cpu', module.getModifiedItemAttr('drawback')) class Effect2716(EffectDef): """ 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): fit.ship.boostItemAttr('signatureRadius', module.getModifiedItemAttr('drawback'), stackingPenalties=True) class Effect2717(EffectDef): """ drawbackMaxVelocity 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): fit.ship.boostItemAttr('maxVelocity', module.getModifiedItemAttr('drawback'), stackingPenalties=True) class Effect2718(EffectDef): """ 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): fit.ship.boostItemAttr('shieldCapacity', module.getModifiedItemAttr('drawback')) class Effect2726(EffectDef): """ miningClouds Used by: Modules from group: Gas Cloud Harvester (5 of 5) """ type = 'active' class Effect2727(EffectDef): """ gasCloudHarvestingMaxGroupSkillLevel Used by: Skill: Gas Cloud Harvesting """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemIncrease(lambda mod: mod.item.group.name == 'Gas Cloud Harvester', 'maxGroupActive', skill.level) class Effect2734(EffectDef): """ shipECMScanStrengthBonusCF Used by: Variations of ship: Griffin (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context): 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') class Effect2735(EffectDef): """ boosterArmorHpPenalty Used by: Implants named like: Booster (12 of 35) """ attr = 'boosterArmorHPPenalty' displayName = 'Armor Capacity' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context): fit.ship.boostItemAttr('armorHP', booster.getModifiedItemAttr(cls.attr)) class Effect2736(EffectDef): """ 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) """ attr = 'boosterArmorRepairAmountPenalty' displayName = 'Armor Repair Amount' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Repair Unit', 'armorDamageAmount', booster.getModifiedItemAttr(cls.attr)) class Effect2737(EffectDef): """ boosterShieldCapacityPenalty Used by: Implants from group: Booster (12 of 70) """ attr = 'boosterShieldCapacityPenalty' displayName = 'Shield Capacity' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context): fit.ship.boostItemAttr('shieldCapacity', booster.getModifiedItemAttr(cls.attr)) class Effect2739(EffectDef): """ 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) """ attr = 'boosterTurretOptimalRangePenalty' displayName = 'Turret Optimal Range' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'maxRange', booster.getModifiedItemAttr(cls.attr)) class Effect2741(EffectDef): """ boosterTurretFalloffPenalty Used by: Implants named like: Drop Booster (3 of 4) Implants named like: X Instinct Booster (3 of 4) """ attr = 'boosterTurretFalloffPenalty' displayName = 'Turret Falloff' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'falloff', booster.getModifiedItemAttr(cls.attr)) class Effect2745(EffectDef): """ boosterCapacitorCapacityPenalty Used by: Implants named like: Blue Pill Booster (3 of 5) Implants named like: Exile Booster (3 of 4) """ attr = 'boosterCapacitorCapacityPenalty' displayName = 'Cap Capacity' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context): fit.ship.boostItemAttr('capacitorCapacity', booster.getModifiedItemAttr(cls.attr)) class Effect2746(EffectDef): """ boosterMaxVelocityPenalty Used by: Implants named like: Crash Booster (3 of 4) Items from market group: Implants & Boosters > Booster > Booster Slot 02 (9 of 13) """ attr = 'boosterMaxVelocityPenalty' displayName = 'Velocity' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context): fit.ship.boostItemAttr('maxVelocity', booster.getModifiedItemAttr(cls.attr)) class Effect2747(EffectDef): """ boosterTurretTrackingPenalty Used by: Implants named like: Exile Booster (3 of 4) Implants named like: Frentix Booster (3 of 4) """ attr = 'boosterTurretTrackingPenalty' displayName = 'Turret Tracking' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'trackingSpeed', booster.getModifiedItemAttr(cls.attr)) class Effect2748(EffectDef): """ boosterMissileVelocityPenalty Used by: Implants named like: Crash Booster (3 of 4) Implants named like: X Instinct Booster (3 of 4) """ attr = 'boosterMissileVelocityPenalty' displayName = 'Missile Velocity' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', booster.getModifiedItemAttr(cls.attr)) class Effect2749(EffectDef): """ boosterMissileExplosionVelocityPenalty Used by: Implants named like: Blue Pill Booster (3 of 5) """ attr = 'boosterAOEVelocityPenalty' displayName = 'Missile Explosion Velocity' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeVelocity', booster.getModifiedItemAttr(cls.attr)) class Effect2756(EffectDef): """ shipBonusECMStrengthBonusCC Used by: Ship: Blackbird """ type = 'passive' @staticmethod def handler(fit, ship, context): 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') class Effect2757(EffectDef): """ salvaging Used by: Modules from group: Salvager (3 of 3) """ type = 'active' class Effect2760(EffectDef): """ 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): 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) class Effect2763(EffectDef): """ 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): 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) class Effect2766(EffectDef): """ 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): 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) class Effect2776(EffectDef): """ 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): 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) class Effect2778(EffectDef): """ 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): 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) class Effect2791(EffectDef): """ 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): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeCloudSize', booster.getModifiedItemAttr(cls.attr)) class Effect2792(EffectDef): """ modifyArmorResonancePostPercentPassive Used by: Modules named like: Anti Pump (32 of 32) """ type = 'passive' @staticmethod def handler(fit, module, context): for type in ('kinetic', 'thermal', 'explosive', 'em'): fit.ship.boostItemAttr('armor' + type.capitalize() + 'DamageResonance', module.getModifiedItemAttr(type + 'DamageResistanceBonus') or 0, stackingPenalties=True) class Effect2794(EffectDef): """ 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): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Salvaging'), 'accessDifficultyBonus', container.getModifiedItemAttr('accessDifficultyBonus'), position='post') class Effect2795(EffectDef): """ modifyShieldResonancePostPercentPassive Used by: Modules named like: Anti Screen Reinforcer (32 of 32) """ type = 'passive' @staticmethod def handler(fit, module, context): for type in ('kinetic', 'thermal', 'explosive', 'em'): fit.ship.boostItemAttr('shield' + type.capitalize() + 'DamageResonance', module.getModifiedItemAttr(type + 'DamageResistanceBonus') or 0, stackingPenalties=True) class Effect2796(EffectDef): """ massReductionBonusPassive Used by: Modules from group: Rig Anchor (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.boostItemAttr('mass', module.getModifiedItemAttr('massBonusPercentage'), stackingPenalties=True) class Effect2797(EffectDef): """ projectileWeaponSpeedMultiplyPassive Used by: Modules named like: Projectile Burst Aerator (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Projectile Weapon', 'speed', module.getModifiedItemAttr('speedMultiplier'), stackingPenalties=True) class Effect2798(EffectDef): """ projectileWeaponDamageMultiplyPassive Used by: Modules named like: Projectile Collision Accelerator (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Projectile Weapon', 'damageMultiplier', module.getModifiedItemAttr('damageMultiplier'), stackingPenalties=True) class Effect2799(EffectDef): """ missileLauncherSpeedMultiplierPassive Used by: Modules named like: Bay Loading Accelerator (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'speed', module.getModifiedItemAttr('speedMultiplier'), stackingPenalties=True) class Effect2801(EffectDef): """ energyWeaponSpeedMultiplyPassive Used by: Modules named like: Energy Burst Aerator (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Energy Weapon', 'speed', module.getModifiedItemAttr('speedMultiplier'), stackingPenalties=True) class Effect2802(EffectDef): """ hybridWeaponDamageMultiplyPassive Used by: Modules named like: Hybrid Collision Accelerator (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'damageMultiplier', module.getModifiedItemAttr('damageMultiplier'), stackingPenalties=True) class Effect2803(EffectDef): """ energyWeaponDamageMultiplyPassive Used by: Modules named like: Energy Collision Accelerator (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Energy Weapon', 'damageMultiplier', module.getModifiedItemAttr('damageMultiplier'), stackingPenalties=True) class Effect2804(EffectDef): """ hybridWeaponSpeedMultiplyPassive Used by: Modules named like: Hybrid Burst Aerator (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'speed', module.getModifiedItemAttr('speedMultiplier'), stackingPenalties=True) class Effect2805(EffectDef): """ shipBonusLargeEnergyWeaponDamageAB2 Used by: Ship: Abaddon Ship: Marshal """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusAB2'), skill='Amarr Battleship') class Effect2809(EffectDef): """ shipMissileAssaultMissileVelocityBonusCC2 Used by: Ship: Caracal Ship: Osprey Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser') class Effect2810(EffectDef): """ eliteBonusHeavyGunshipAssaultMissileFlightTime1 Used by: Ship: Cerberus """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'explosionDelay', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers') class Effect2812(EffectDef): """ caldariShipECMBurstOptimalRangeCB3 Used by: Ship: Scorpion """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Burst Jammer', 'ecmBurstRange', ship.getModifiedItemAttr('shipBonusCB3'), skill='Caldari Battleship') class Effect2837(EffectDef): """ armorHPBonusAdd Used by: Modules from group: Armor Reinforcer (51 of 51) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.increaseItemAttr('armorHP', module.getModifiedItemAttr('armorHPBonusAdd')) class Effect2847(EffectDef): """ trackingSpeedBonusPassiveRequiringGunneryTrackingSpeedBonus Used by: Implants named like: Drop Booster (4 of 4) Implants named like: Eifyr and Co. 'Gunslinger' Motion Prediction MR (6 of 6) Implant: Antipharmakon Iokira Implant: Ogdin's Eye Coordination Enhancer Skill: Motion Prediction """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'trackingSpeed', container.getModifiedItemAttr('trackingSpeedBonus') * level) class Effect2848(EffectDef): """ 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): fit.modules.filteredItemIncrease(lambda module: module.item.requiresSkill('Archaeology'), 'accessDifficultyBonus', container.getModifiedItemAttr('accessDifficultyBonusModifier'), position='post') class Effect2849(EffectDef): """ accessDifficultyBonusModifierRequiringHacking Used by: Modules named like: Memetic Algorithm Bank (8 of 8) Implant: Neural Lace 'Blackglass' Net Intrusion 920-40 Implant: Poteque 'Prospector' Environmental Analysis EY-1005 Implant: Poteque 'Prospector' Hacking HC-905 """ type = 'passive' @staticmethod def handler(fit, container, context): fit.modules.filteredItemIncrease(lambda c: c.item.requiresSkill('Hacking'), 'accessDifficultyBonus', container.getModifiedItemAttr('accessDifficultyBonusModifier'), position='post') class Effect2850(EffectDef): """ durationBonusForGroupAfterburner Used by: Modules named like: Engine Thermal Shielding (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Propulsion Module', 'duration', module.getModifiedItemAttr('durationBonus')) class Effect2851(EffectDef): """ missileDMGBonusPassive Used by: Modules named like: Warhead Calefaction Catalyst (8 of 8) """ type = 'passive' @staticmethod def handler(fit, container, context): for dmgType in ('em', 'kinetic', 'explosive', 'thermal'): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), '%sDamage' % dmgType, container.getModifiedItemAttr('missileDamageMultiplierBonus'), stackingPenalties=True) class Effect2853(EffectDef): """ cloakingTargetingDelayBonusLRSMCloakingPassive Used by: Modules named like: Targeting Systems Stabilizer (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda module: module.item.requiresSkill('Cloaking'), 'cloakingTargetingDelay', module.getModifiedItemAttr('cloakingTargetingDelayBonus')) class Effect2857(EffectDef): """ cynosuralGeneration Used by: Modules from group: Cynosural Field Generator (2 of 2) """ type = 'active' @staticmethod def handler(fit, module, context): fit.ship.boostItemAttr('maxVelocity', module.getModifiedItemAttr('speedFactor')) class Effect2865(EffectDef): """ 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): fit.ship.boostItemAttr('maxVelocity', module.getModifiedItemAttr('implantBonusVelocity'), stackingPenalties=True) class Effect2866(EffectDef): """ 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): level = container.level if 'skill' in context else 1 fit.boosters.filteredItemBoost(lambda bst: True, 'boosterDuration', container.getModifiedItemAttr('durationBonus') * level) class Effect2867(EffectDef): """ sentryDroneDamageBonus Used by: Modules named like: Sentry Damage Augmentor (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'damageMultiplier', module.getModifiedItemAttr('damageMultiplierBonus'), stackingPenalties=True) class Effect2868(EffectDef): """ armorDamageAmountBonusCapitalArmorRepairers Used by: Modules named like: Auxiliary Nano Pump (8 of 8) """ type = 'passive' @staticmethod def handler(fit, implant, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Repair Systems'), 'armorDamageAmount', implant.getModifiedItemAttr('repairBonus'), stackingPenalties=True) class Effect2872(EffectDef): """ missileVelocityBonusDefender Used by: Implants named like: Zainou 'Snapshot' Defender Missiles DM (6 of 6) """ type = 'passive' @staticmethod def handler(fit, container, context): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Defender Missiles'), 'maxVelocity', container.getModifiedItemAttr('missileVelocityBonus')) class Effect2881(EffectDef): """ missileEMDmgBonusCruise3 Used by: Implants named like: Zainou 'Snapshot' Cruise Missiles CM (6 of 6) """ type = 'passive' @staticmethod def handler(fit, implant, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'emDamage', implant.getModifiedItemAttr('damageMultiplierBonus')) class Effect2882(EffectDef): """ missileExplosiveDmgBonusCruise3 Used by: Implants named like: Zainou 'Snapshot' Cruise Missiles CM (6 of 6) """ type = 'passive' @staticmethod def handler(fit, container, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'explosiveDamage', container.getModifiedItemAttr('damageMultiplierBonus')) class Effect2883(EffectDef): """ missileKineticDmgBonusCruise3 Used by: Implants named like: Zainou 'Snapshot' Cruise Missiles CM (6 of 6) """ type = 'passive' @staticmethod def handler(fit, container, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'kineticDamage', container.getModifiedItemAttr('damageMultiplierBonus')) class Effect2884(EffectDef): """ missileThermalDmgBonusCruise3 Used by: Implants named like: Zainou 'Snapshot' Cruise Missiles CM (6 of 6) """ type = 'passive' @staticmethod def handler(fit, container, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'thermalDamage', container.getModifiedItemAttr('damageMultiplierBonus')) class Effect2885(EffectDef): """ gasHarvestingCycleTimeModulesRequiringGasCloudHarvesting Used by: Implants named like: Eifyr and Co. 'Alchemist' Gas Harvesting GH (3 of 3) """ type = 'passive' @staticmethod def handler(fit, implant, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gas Cloud Harvesting'), 'duration', implant.getModifiedItemAttr('durationBonus')) class Effect2887(EffectDef): """ missileEMDmgBonusRocket Used by: Implants named like: Zainou 'Snapshot' Rockets RD (6 of 6) """ type = 'passive' @staticmethod def handler(fit, implant, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'emDamage', implant.getModifiedItemAttr('damageMultiplierBonus')) class Effect2888(EffectDef): """ missileExplosiveDmgBonusRocket Used by: Implants named like: Zainou 'Snapshot' Rockets RD (6 of 6) """ type = 'passive' @staticmethod def handler(fit, container, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'explosiveDamage', container.getModifiedItemAttr('damageMultiplierBonus')) class Effect2889(EffectDef): """ missileKineticDmgBonusRocket Used by: Implants named like: Zainou 'Snapshot' Rockets RD (6 of 6) """ type = 'passive' @staticmethod def handler(fit, container, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'kineticDamage', container.getModifiedItemAttr('damageMultiplierBonus')) class Effect2890(EffectDef): """ missileThermalDmgBonusRocket Used by: Implants named like: Zainou 'Snapshot' Rockets RD (6 of 6) """ type = 'passive' @staticmethod def handler(fit, container, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'thermalDamage', container.getModifiedItemAttr('damageMultiplierBonus')) class Effect2891(EffectDef): """ missileEMDmgBonusStandard Used by: Implants named like: Zainou 'Snapshot' Light Missiles LM (6 of 6) """ type = 'passive' @staticmethod def handler(fit, implant, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'emDamage', implant.getModifiedItemAttr('damageMultiplierBonus')) class Effect2892(EffectDef): """ missileExplosiveDmgBonusStandard Used by: Implants named like: Zainou 'Snapshot' Light Missiles LM (6 of 6) """ type = 'passive' @staticmethod def handler(fit, container, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'explosiveDamage', container.getModifiedItemAttr('damageMultiplierBonus')) class Effect2893(EffectDef): """ missileKineticDmgBonusStandard Used by: Implants named like: Zainou 'Snapshot' Light Missiles LM (6 of 6) """ type = 'passive' @staticmethod def handler(fit, container, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'kineticDamage', container.getModifiedItemAttr('damageMultiplierBonus')) class Effect2894(EffectDef): """ missileThermalDmgBonusStandard Used by: Implants named like: Zainou 'Snapshot' Light Missiles LM (6 of 6) """ type = 'passive' @staticmethod def handler(fit, container, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'thermalDamage', container.getModifiedItemAttr('damageMultiplierBonus')) class Effect2899(EffectDef): """ missileEMDmgBonusHeavy Used by: Implants named like: Zainou 'Snapshot' Heavy Missiles HM (6 of 6) """ type = 'passive' @staticmethod def handler(fit, implant, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'emDamage', implant.getModifiedItemAttr('damageMultiplierBonus')) class Effect2900(EffectDef): """ missileExplosiveDmgBonusHeavy Used by: Implants named like: Zainou 'Snapshot' Heavy Missiles HM (6 of 6) """ type = 'passive' @staticmethod def handler(fit, container, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'explosiveDamage', container.getModifiedItemAttr('damageMultiplierBonus')) class Effect2901(EffectDef): """ missileKineticDmgBonusHeavy Used by: Implants named like: Zainou 'Snapshot' Heavy Missiles HM (6 of 6) """ type = 'passive' @staticmethod def handler(fit, container, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage', container.getModifiedItemAttr('damageMultiplierBonus')) class Effect2902(EffectDef): """ missileThermalDmgBonusHeavy Used by: Implants named like: Zainou 'Snapshot' Heavy Missiles HM (6 of 6) """ type = 'passive' @staticmethod def handler(fit, container, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'thermalDamage', container.getModifiedItemAttr('damageMultiplierBonus')) class Effect2903(EffectDef): """ missileEMDmgBonusHAM Used by: Implants named like: Zainou 'Snapshot' Heavy Assault Missiles AM (6 of 6) """ type = 'passive' @staticmethod def handler(fit, implant, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'emDamage', implant.getModifiedItemAttr('damageMultiplierBonus')) class Effect2904(EffectDef): """ missileExplosiveDmgBonusHAM Used by: Implants named like: Zainou 'Snapshot' Heavy Assault Missiles AM (6 of 6) """ type = 'passive' @staticmethod def handler(fit, container, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'explosiveDamage', container.getModifiedItemAttr('damageMultiplierBonus')) class Effect2905(EffectDef): """ missileKineticDmgBonusHAM Used by: Implants named like: Zainou 'Snapshot' Heavy Assault Missiles AM (6 of 6) """ type = 'passive' @staticmethod def handler(fit, container, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'kineticDamage', container.getModifiedItemAttr('damageMultiplierBonus')) class Effect2906(EffectDef): """ missileThermalDmgBonusHAM Used by: Implants named like: Zainou 'Snapshot' Heavy Assault Missiles AM (6 of 6) """ type = 'passive' @staticmethod def handler(fit, container, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'thermalDamage', container.getModifiedItemAttr('damageMultiplierBonus')) class Effect2907(EffectDef): """ missileEMDmgBonusTorpedo Used by: Implants named like: Zainou 'Snapshot' Torpedoes TD (6 of 6) """ type = 'passive' @staticmethod def handler(fit, implant, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'emDamage', implant.getModifiedItemAttr('damageMultiplierBonus')) class Effect2908(EffectDef): """ missileExplosiveDmgBonusTorpedo Used by: Implants named like: Zainou 'Snapshot' Torpedoes TD (6 of 6) """ type = 'passive' @staticmethod def handler(fit, container, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'explosiveDamage', container.getModifiedItemAttr('damageMultiplierBonus')) class Effect2909(EffectDef): """ missileKineticDmgBonusTorpedo Used by: Implants named like: Zainou 'Snapshot' Torpedoes TD (6 of 6) """ type = 'passive' @staticmethod def handler(fit, container, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'kineticDamage', container.getModifiedItemAttr('damageMultiplierBonus')) class Effect2910(EffectDef): """ missileThermalDmgBonusTorpedo Used by: Implants named like: Zainou 'Snapshot' Torpedoes TD (6 of 6) """ type = 'passive' @staticmethod def handler(fit, container, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'thermalDamage', container.getModifiedItemAttr('damageMultiplierBonus')) class Effect2911(EffectDef): """ dataminerModuleDurationReduction Used by: Implant: Poteque 'Prospector' Environmental Analysis EY-1005 """ type = 'passive' @staticmethod def handler(fit, implant, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Data Miners', 'duration', implant.getModifiedItemAttr('durationBonus')) class Effect2967(EffectDef): """ skillTriageModuleConsumptionQuantityBonus Used by: Skill: Tactical Logistics Reconfiguration """ type = 'passive' @staticmethod def handler(fit, skill, context): amount = -skill.getModifiedItemAttr('consumptionQuantityBonus') fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill(skill), 'consumptionQuantity', amount * skill.level) class Effect2979(EffectDef): """ skillRemoteHullRepairSystemsCapNeedBonus Used by: Skill: Remote Hull Repair Systems """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Hull Repair Systems'), 'capacitorNeed', skill.getModifiedItemAttr('capNeedBonus') * skill.level) class Effect2980(EffectDef): """ skillCapitalRemoteHullRepairSystemsCapNeedBonus Used by: Skill: Capital Remote Hull Repair Systems """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Remote Hull Repair Systems'), 'capacitorNeed', skill.getModifiedItemAttr('capNeedBonus') * skill.level) class Effect2982(EffectDef): """ skillRemoteECMDurationBonus Used by: Skill: Burst Projector Operation """ type = 'passive' @staticmethod def handler(fit, skill, context): # 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) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation') and mod.item.getAttribute('durationECMJammerBurstProjector'), 'durationECMJammerBurstProjector', skill.getModifiedItemAttr('projECMDurationBonus') * skill.level) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation') and mod.item.getAttribute('durationTargetIlluminationBurstProjector'), 'durationTargetIlluminationBurstProjector', skill.getModifiedItemAttr('projECMDurationBonus') * skill.level) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation') and mod.item.getAttribute('durationSensorDampeningBurstProjector'), 'durationSensorDampeningBurstProjector', skill.getModifiedItemAttr('projECMDurationBonus') * skill.level) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation') and mod.item.getAttribute('durationWeaponDisruptionBurstProjector'), 'durationWeaponDisruptionBurstProjector', skill.getModifiedItemAttr('projECMDurationBonus') * skill.level) class Effect3001(EffectDef): """ overloadRofBonus Used by: Modules from group: Missile Launcher Torpedo (22 of 22) Items from market group: Ship Equipment > Turrets & Bays (429 of 883) Module: Interdiction Sphere Launcher I """ type = 'overheat' @staticmethod def handler(fit, module, context): module.boostItemAttr('speed', module.getModifiedItemAttr('overloadRofBonus')) class Effect3002(EffectDef): """ overloadSelfDurationBonus Used by: Modules from group: Ancillary Remote Shield Booster (4 of 4) Modules from group: Capacitor Booster (59 of 59) Modules from group: Energy Neutralizer (54 of 54) Modules from group: Energy Nosferatu (54 of 54) Modules from group: Hull Repair Unit (25 of 25) Modules from group: Remote Armor Repairer (39 of 39) Modules from group: Remote Capacitor Transmitter (41 of 41) Modules from group: Remote Shield Booster (38 of 38) Modules from group: Smart Bomb (118 of 118) Modules from group: Warp Disrupt Field Generator (7 of 7) Modules named like: Remote Repairer (56 of 56) Module: Reactive Armor Hardener Module: Target Spectrum Breaker """ type = 'overheat' @staticmethod def handler(fit, module, context): module.boostItemAttr('duration', module.getModifiedItemAttr('overloadSelfDurationBonus') or 0) class Effect3024(EffectDef): """ eliteBonusCoverOpsBombExplosiveDmg1 Used by: Ship: Hound Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'explosiveDamage', ship.getModifiedItemAttr('eliteBonusCovertOps1'), skill='Covert Ops') class Effect3025(EffectDef): """ overloadSelfDamageBonus Used by: Modules from group: Energy Weapon (101 of 214) Modules from group: Hybrid Weapon (105 of 221) Modules from group: Precursor Weapon (15 of 15) Modules from group: Projectile Weapon (99 of 165) """ type = 'overheat' @staticmethod def handler(fit, module, context): module.boostItemAttr('damageMultiplier', module.getModifiedItemAttr('overloadDamageModifier')) class Effect3026(EffectDef): """ eliteBonusCoverOpsBombKineticDmg1 Used by: Ship: Manticore """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'kineticDamage', ship.getModifiedItemAttr('eliteBonusCovertOps1'), skill='Covert Ops') class Effect3027(EffectDef): """ eliteBonusCoverOpsBombThermalDmg1 Used by: Ship: Nemesis Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'thermalDamage', ship.getModifiedItemAttr('eliteBonusCovertOps1'), skill='Covert Ops') class Effect3028(EffectDef): """ eliteBonusCoverOpsBombEmDmg1 Used by: Ship: Purifier """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'emDamage', ship.getModifiedItemAttr('eliteBonusCovertOps1'), skill='Covert Ops') class Effect3029(EffectDef): """ overloadSelfEmHardeningBonus Used by: Variations of module: Armor EM Hardener I (39 of 39) Variations of module: EM Ward Field I (19 of 19) Module: Civilian EM Ward Field """ type = 'overheat' @staticmethod def handler(fit, module, context): module.boostItemAttr('emDamageResistanceBonus', module.getModifiedItemAttr('overloadHardeningBonus')) class Effect3030(EffectDef): """ overloadSelfThermalHardeningBonus Used by: Variations of module: Armor Thermal Hardener I (39 of 39) Variations of module: Thermal Dissipation Field I (19 of 19) Module: Civilian Thermal Dissipation Field """ type = 'overheat' @staticmethod def handler(fit, module, context): module.boostItemAttr('thermalDamageResistanceBonus', module.getModifiedItemAttr('overloadHardeningBonus')) class Effect3031(EffectDef): """ overloadSelfExplosiveHardeningBonus Used by: Variations of module: Armor Explosive Hardener I (39 of 39) Variations of module: Explosive Deflection Field I (19 of 19) Module: Civilian Explosive Deflection Field """ type = 'overheat' @staticmethod def handler(fit, module, context): module.boostItemAttr('explosiveDamageResistanceBonus', module.getModifiedItemAttr('overloadHardeningBonus')) class Effect3032(EffectDef): """ overloadSelfKineticHardeningBonus Used by: Variations of module: Armor Kinetic Hardener I (39 of 39) Variations of module: Kinetic Deflection Field I (19 of 19) Module: Civilian Kinetic Deflection Field """ type = 'overheat' @staticmethod def handler(fit, module, context): module.boostItemAttr('kineticDamageResistanceBonus', module.getModifiedItemAttr('overloadHardeningBonus')) class Effect3035(EffectDef): """ overloadSelfHardeningInvulnerabilityBonus Used by: Modules named like: Capital Flex Hardener (9 of 9) Variations of module: Adaptive Invulnerability Field I (17 of 17) """ type = 'overheat' @staticmethod def handler(fit, module, context): for type in ('kinetic', 'thermal', 'explosive', 'em'): module.boostItemAttr('%sDamageResistanceBonus' % type, module.getModifiedItemAttr('overloadHardeningBonus')) class Effect3036(EffectDef): """ skillBombDeploymentModuleReactivationDelayBonus Used by: Skill: Bomb Deployment """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Bomb', 'moduleReactivationDelay', skill.getModifiedItemAttr('reactivationDelayBonus') * skill.level) class Effect3046(EffectDef): """ modifyMaxVelocityOfShipPassive Used by: Modules from group: Expanded Cargohold (7 of 7) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.multiplyItemAttr('maxVelocity', module.getModifiedItemAttr('maxVelocityModifier'), stackingPenalties=True) class Effect3047(EffectDef): """ structureHPMultiplyPassive Used by: Modules from group: Expanded Cargohold (7 of 7) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.multiplyItemAttr('hp', module.getModifiedItemAttr('structureHPMultiplier')) class Effect3061(EffectDef): """ heatDamageBonus Used by: Modules from group: Shield Boost Amplifier (25 of 25) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'heatDamage', module.getModifiedItemAttr('heatDamageBonus')) class Effect3169(EffectDef): """ shieldTransportCpuNeedBonusEffect Used by: Ships from group: Logistics (3 of 7) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'cpu', src.getModifiedItemAttr('shieldTransportCpuNeedBonus')) class Effect3172(EffectDef): """ droneArmorDamageBonusEffect Used by: Ships from group: Logistics (6 of 7) Ship: Exequror Ship: Scythe """ type = 'passive' @staticmethod def handler(fit, ship, context): # 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')) class Effect3173(EffectDef): """ droneShieldBonusBonusEffect Used by: Ships from group: Logistics (6 of 7) Ship: Exequror Ship: Scythe """ type = 'passive' @staticmethod def handler(fit, ship, context): # 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')) class Effect3174(EffectDef): """ overloadSelfRangeBonus Used by: Modules from group: Stasis Grappler (7 of 7) Modules from group: Stasis Web (19 of 19) Modules from group: Warp Scrambler (54 of 55) """ type = 'overheat' @staticmethod def handler(fit, module, context): module.boostItemAttr('maxRange', module.getModifiedItemAttr('overloadRangeBonus'), stackingPenalties=True) class Effect3175(EffectDef): """ overloadSelfSpeedBonus Used by: Modules from group: Propulsion Module (133 of 133) """ type = 'overheat' @staticmethod def handler(fit, module, context): module.boostItemAttr('speedFactor', module.getModifiedItemAttr('overloadSpeedFactorBonus'), stackingPenalties=True) class Effect3182(EffectDef): """ overloadSelfECMStrenghtBonus Used by: Modules from group: Burst Jammer (11 of 11) Modules from group: ECM (39 of 39) """ type = 'overheat' @staticmethod def handler(fit, module, context): if 'projected' not in context: for scanType in ('Gravimetric', 'Magnetometric', 'Radar', 'Ladar'): module.boostItemAttr('scan{0}StrengthBonus'.format(scanType), module.getModifiedItemAttr('overloadECMStrengthBonus'), stackingPenalties=True) class Effect3196(EffectDef): """ thermodynamicsSkillDamageBonus Used by: Skill: Thermodynamics """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: 'heatDamage' in mod.item.attributes, 'heatDamage', skill.getModifiedItemAttr('thermodynamicsHeatDamage') * skill.level) class Effect3200(EffectDef): """ overloadSelfArmorDamageAmountDurationBonus Used by: Modules from group: Ancillary Armor Repairer (7 of 7) Modules from group: Armor Repair Unit (108 of 108) """ type = 'overheat' @staticmethod def handler(fit, module, context): module.boostItemAttr('duration', module.getModifiedItemAttr('overloadSelfDurationBonus')) module.boostItemAttr('armorDamageAmount', module.getModifiedItemAttr('overloadArmorDamageAmount'), stackingPenalties=True) class Effect3201(EffectDef): """ overloadSelfShieldBonusDurationBonus Used by: Modules from group: Ancillary Shield Booster (8 of 8) Modules from group: Shield Booster (97 of 97) """ type = 'overheat' @staticmethod def handler(fit, module, context): module.boostItemAttr('duration', module.getModifiedItemAttr('overloadSelfDurationBonus')) module.boostItemAttr('shieldBonus', module.getModifiedItemAttr('overloadShieldBonus'), stackingPenalties=True) class Effect3212(EffectDef): """ missileSkillFoFAoeCloudSizeBonus Used by: Implants named like: Zainou 'Snapshot' Auto Targeting Explosion Radius FR (6 of 6) """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('FoF Missiles'), 'aoeCloudSize', container.getModifiedItemAttr('aoeCloudSizeBonus') * level) class Effect3234(EffectDef): """ shipRocketExplosiveDmgAF Used by: Ship: Anathema Ship: Vengeance """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate') class Effect3235(EffectDef): """ shipRocketKineticDmgAF Used by: Ship: Anathema Ship: Vengeance """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate') class Effect3236(EffectDef): """ shipRocketThermalDmgAF Used by: Ship: Anathema Ship: Vengeance """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate') class Effect3237(EffectDef): """ shipRocketEmDmgAF Used by: Ship: Anathema Ship: Vengeance """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'emDamage', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate') class Effect3241(EffectDef): """ eliteBonusGunshipArmorEmResistance1 Used by: Ship: Vengeance """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('armorEmDamageResonance', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates') class Effect3242(EffectDef): """ eliteBonusGunshipArmorThermalResistance1 Used by: Ship: Vengeance """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('armorThermalDamageResonance', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates') class Effect3243(EffectDef): """ eliteBonusGunshipArmorKineticResistance1 Used by: Ship: Vengeance """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('armorKineticDamageResonance', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates') class Effect3244(EffectDef): """ eliteBonusGunshipArmorExplosiveResistance1 Used by: Ship: Vengeance """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('armorExplosiveDamageResonance', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates') class Effect3249(EffectDef): """ shipCapRecharge2AF Used by: Ship: Anathema """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('rechargeRate', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate') class Effect3264(EffectDef): """ skillIndustrialReconfigurationConsumptionQuantityBonus Used by: Skill: Industrial Reconfiguration """ type = 'passive' @staticmethod def handler(fit, skill, context): amount = -skill.getModifiedItemAttr('consumptionQuantityBonus') fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill(skill), 'consumptionQuantity', amount * skill.level) class Effect3267(EffectDef): """ shipConsumptionQuantityBonusIndustrialReconfigurationORECapital1 Used by: Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Industrial Reconfiguration'), 'consumptionQuantity', ship.getModifiedItemAttr('shipBonusORECapital1'), skill='Capital Industrial Ships') class Effect3297(EffectDef): """ shipEnergyNeutralizerTransferAmountBonusAB Used by: Ship: Bhaalgorn """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship') class Effect3298(EffectDef): """ shipEnergyNeutralizerTransferAmountBonusAC Used by: Ship: Ashimmu Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser') class Effect3299(EffectDef): """ shipEnergyNeutralizerTransferAmountBonusAF Used by: Ship: Caedes Ship: Cruor Ship: Sentinel """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate') class Effect3313(EffectDef): """ cloneVatMaxJumpCloneBonusSkillNew Used by: Skill: Cloning Facility Operation """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.ship.boostItemAttr('maxJumpClones', skill.getModifiedItemAttr('maxJumpClonesBonus') * skill.level) class Effect3331(EffectDef): """ eliteBonusCommandShipArmorHP1 Used by: Ship: Damnation """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('armorHP', ship.getModifiedItemAttr('eliteBonusCommandShips1'), skill='Command Ships') class Effect3335(EffectDef): """ shipArmorEmResistanceMC2 Used by: Ship: Mimir """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('armorEmDamageResonance', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser') class Effect3336(EffectDef): """ shipArmorExplosiveResistanceMC2 Used by: Ship: Mimir """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('armorExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser') class Effect3339(EffectDef): """ shipArmorKineticResistanceMC2 Used by: Ship: Mimir """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('armorKineticDamageResonance', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser') class Effect3340(EffectDef): """ shipArmorThermalResistanceMC2 Used by: Ship: Mimir """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('armorThermalDamageResonance', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser') class Effect3343(EffectDef): """ eliteBonusHeavyInterdictorsProjectileFalloff1 Used by: Ship: Broadsword """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'falloff', ship.getModifiedItemAttr('eliteBonusHeavyInterdictors1'), skill='Heavy Interdiction Cruisers') class Effect3355(EffectDef): """ eliteBonusHeavyInterdictorHeavyMissileVelocityBonus1 Used by: Ship: Onyx """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'maxVelocity', ship.getModifiedItemAttr('eliteBonusHeavyInterdictors1'), skill='Heavy Interdiction Cruisers') class Effect3356(EffectDef): """ eliteBonusHeavyInterdictorHeavyAssaultMissileVelocityBonus Used by: Ship: Onyx """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'maxVelocity', ship.getModifiedItemAttr('eliteBonusHeavyInterdictors1'), skill='Heavy Interdiction Cruisers') class Effect3357(EffectDef): """ eliteBonusHeavyInterdictorLightMissileVelocityBonus Used by: Ship: Onyx """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'maxVelocity', ship.getModifiedItemAttr('eliteBonusHeavyInterdictors1'), skill='Heavy Interdiction Cruisers') class Effect3366(EffectDef): """ shipRemoteSensorDampenerCapNeedGF Used by: Ship: Keres Ship: Maulus """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'capacitorNeed', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate') class Effect3367(EffectDef): """ eliteBonusElectronicAttackShipWarpScramblerMaxRange1 Used by: Ship: Keres """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', ship.getModifiedItemAttr('eliteBonusElectronicAttackShip1'), skill='Electronic Attack Ships') class Effect3369(EffectDef): """ eliteBonusElectronicAttackShipECMOptimalRange1 Used by: Ship: Kitsune """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'maxRange', ship.getModifiedItemAttr('eliteBonusElectronicAttackShip1'), skill='Electronic Attack Ships') class Effect3370(EffectDef): """ eliteBonusElectronicAttackShipStasisWebMaxRange1 Used by: Ship: Hyena """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', ship.getModifiedItemAttr('eliteBonusElectronicAttackShip1'), skill='Electronic Attack Ships') class Effect3371(EffectDef): """ eliteBonusElectronicAttackShipWarpScramblerCapNeed2 Used by: Ship: Keres """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'capacitorNeed', ship.getModifiedItemAttr('eliteBonusElectronicAttackShip2'), skill='Electronic Attack Ships') class Effect3374(EffectDef): """ eliteBonusElectronicAttackShipSignatureRadius2 Used by: Ship: Hyena """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('signatureRadius', ship.getModifiedItemAttr('eliteBonusElectronicAttackShip2'), skill='Electronic Attack Ships') class Effect3379(EffectDef): """ implantHardwiringABcapacitorNeed Used by: Implants named like: Eifyr and Co. 'Rogue' Fuel Conservation FC (6 of 6) """ type = 'passive' @staticmethod def handler(fit, implant, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'capacitorNeed', implant.getModifiedItemAttr('capNeedBonus')) class Effect3380(EffectDef): """ warpDisruptSphere Used by: Modules from group: Warp Disrupt Field Generator (7 of 7) """ runTime = 'early' type = 'projected', 'active' @staticmethod def handler(fit, module, context): if 'projected' in context: fit.ship.increaseItemAttr('warpScrambleStatus', module.getModifiedItemAttr('warpScrambleStrength')) if module.charge is not None and module.charge.ID == 45010: for mod in fit.modules: if not mod.isEmpty and mod.item.requiresSkill('High Speed Maneuvering') and mod.state > FittingModuleState.ONLINE: mod.state = FittingModuleState.ONLINE if not mod.isEmpty and mod.item.requiresSkill('Micro Jump Drive Operation') and mod.state > FittingModuleState.ONLINE: mod.state = FittingModuleState.ONLINE else: if module.charge is None: fit.ship.boostItemAttr('mass', module.getModifiedItemAttr('massBonusPercentage')) fit.ship.boostItemAttr('signatureRadius', module.getModifiedItemAttr('signatureRadiusBonus')) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Propulsion Module', 'speedBoostFactor', module.getModifiedItemAttr('speedBoostFactorBonus')) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Propulsion Module', 'speedFactor', module.getModifiedItemAttr('speedFactorBonus')) fit.ship.forceItemAttr('disallowAssistance', 1) class Effect3392(EffectDef): """ eliteBonusBlackOpsLargeEnergyTurretTracking1 Used by: Ship: Redeemer """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusBlackOps1'), skill='Black Ops') class Effect3403(EffectDef): """ eliteBonusBlackOpsCloakVelocity2 Used by: Ships from group: Black Ops (5 of 5) """ type = 'passive' @staticmethod def handler(fit, ship, context): if fit.extraAttributes['cloaked']: fit.ship.multiplyItemAttr('maxVelocity', ship.getModifiedItemAttr('eliteBonusBlackOps2'), skill='Black Ops') class Effect3406(EffectDef): """ eliteBonusBlackOpsMaxVelocity1 Used by: Ship: Panther """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('eliteBonusBlackOps1'), skill='Black Ops') class Effect3415(EffectDef): """ eliteBonusViolatorsLargeEnergyTurretDamageRole1 Used by: Ship: Paladin """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusViolatorsRole1')) class Effect3416(EffectDef): """ eliteBonusViolatorsLargeHybridTurretDamageRole1 Used by: Ship: Kronos """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusViolatorsRole1')) class Effect3417(EffectDef): """ eliteBonusViolatorsLargeProjectileTurretDamageRole1 Used by: Ship: Vargur """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusViolatorsRole1')) class Effect3424(EffectDef): """ eliteBonusViolatorsLargeHybridTurretTracking1 Used by: Ship: Kronos """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusViolators1'), skill='Marauders') class Effect3425(EffectDef): """ eliteBonusViolatorsLargeProjectileTurretTracking1 Used by: Ship: Vargur """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusViolators1'), skill='Marauders') class Effect3427(EffectDef): """ eliteBonusViolatorsTractorBeamMaxRangeRole2 Used by: Ships from group: Marauder (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Tractor Beam', 'maxRange', ship.getModifiedItemAttr('eliteBonusViolatorsRole2')) class Effect3439(EffectDef): """ eliteBonusViolatorsEwTargetPainting1 Used by: Ship: Golem """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'signatureRadiusBonus', ship.getModifiedItemAttr('eliteBonusViolators1'), skill='Marauders') class Effect3447(EffectDef): """ shipBonusPTFalloffMB1 Used by: Ship: Marshal Ship: Vargur """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship') class Effect3466(EffectDef): """ eliteBonusElectronicAttackShipRechargeRate2 Used by: Ship: Sentinel """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('rechargeRate', ship.getModifiedItemAttr('eliteBonusElectronicAttackShip2'), skill='Electronic Attack Ships') class Effect3467(EffectDef): """ eliteBonusElectronicAttackShipCapacitorCapacity2 Used by: Ship: Kitsune """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('capacitorCapacity', ship.getModifiedItemAttr('eliteBonusElectronicAttackShip2'), skill='Electronic Attack Ships') class Effect3468(EffectDef): """ eliteBonusHeavyInterdictorsWarpDisruptFieldGeneratorWarpScrambleRange2 Used by: Ships from group: Heavy Interdiction Cruiser (5 of 5) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Disrupt Field Generator', 'warpScrambleRange', ship.getModifiedItemAttr('eliteBonusHeavyInterdictors2'), skill='Heavy Interdiction Cruisers') class Effect3473(EffectDef): """ eliteBonusViolatorsTractorBeamMaxTractorVelocityRole3 Used by: Ships from group: Marauder (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Tractor Beam', 'maxTractorVelocity', ship.getModifiedItemAttr('eliteBonusViolatorsRole3')) class Effect3478(EffectDef): """ shipLaserDamagePirateBattleship Used by: Ship: Bhaalgorn Ship: Nightmare """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7')) class Effect3480(EffectDef): """ shipTrackingBonusAB Used by: Ship: Nightmare """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusAB2'), skill='Amarr Battleship') class Effect3483(EffectDef): """ shipBonusMediumEnergyTurretDamagePirateFaction Used by: Ship: Ashimmu Ship: Fiend Ship: Gnosis Ship: Phantasm """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7')) class Effect3484(EffectDef): """ shipBonusMediumEnergyTurretTrackingAC2 Used by: Ship: Fiend Ship: Phantasm """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser') class Effect3487(EffectDef): """ shipBonusSmallEnergyTurretDamagePirateFaction Used by: Ship: Caedes Ship: Confessor Ship: Cruor Ship: Imp Ship: Succubus Ship: Sunesis """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7')) class Effect3489(EffectDef): """ shipBonusSmallEnergyTurretTracking2AF Used by: Ship: Imp Ship: Succubus """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate') class Effect3493(EffectDef): """ rorqualCargoScanRangeBonus Used by: Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Cargo Scanner', 'cargoScanRange', ship.getModifiedItemAttr('cargoScannerRangeBonus')) class Effect3494(EffectDef): """ rorqualSurveyScannerRangeBonus Used by: Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Survey Scanner', 'surveyScanRange', ship.getModifiedItemAttr('surveyScannerRangeBonus')) class Effect3495(EffectDef): """ 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): groups = ('Stasis Web', 'Warp Scrambler') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'capacitorNeed', ship.getModifiedItemAttr('eliteBonusInterceptorRole')) class Effect3496(EffectDef): """ setBonusThukker Used by: Implants named like: grade Nomad (12 of 12) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant', 'agilityBonus', implant.getModifiedItemAttr('implantSetThukker')) class Effect3498(EffectDef): """ setBonusSisters Used by: Implants named like: grade Virtue (12 of 12) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant', 'scanStrengthBonus', implant.getModifiedItemAttr('implantSetSisters')) class Effect3499(EffectDef): """ setBonusSyndicate Used by: Implants named like: grade Edge (12 of 12) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant', 'boosterAttributeModifier', implant.getModifiedItemAttr('implantSetSyndicate')) class Effect3513(EffectDef): """ setBonusMordus Used by: Implants named like: grade Centurion (12 of 12) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant', 'rangeSkillBonus', implant.getModifiedItemAttr('implantSetMordus')) class Effect3514(EffectDef): """ Interceptor2WarpScrambleRange Used by: Ships from group: Interceptor (6 of 10) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', ship.getModifiedItemAttr('eliteBonusInterceptor2'), skill='Interceptors') class Effect3519(EffectDef): """ weaponUpgradesCpuNeedBonusPostPercentCpuLocationShipModulesRequiringBombLauncher Used by: Skill: Weapon Upgrades """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Bomb Deployment'), 'cpu', skill.getModifiedItemAttr('cpuNeedBonus') * skill.level) class Effect3520(EffectDef): """ skillAdvancedWeaponUpgradesPowerNeedBonusBombLaunchers Used by: Skill: Advanced Weapon Upgrades """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Bomb Deployment'), 'power', skill.getModifiedItemAttr('powerNeedBonus') * skill.level) class Effect3526(EffectDef): """ cynosuralTheoryConsumptionBonus Used by: Ships from group: Force Recon Ship (8 of 9) Skill: Cynosural Field Theory """ type = 'passive' @staticmethod def handler(fit, container, context): 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) class Effect3530(EffectDef): """ eliteBonusBlackOpsAgiliy1 Used by: Ship: Sin """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('eliteBonusBlackOps1'), skill='Black Ops') class Effect3532(EffectDef): """ skillJumpDriveConsumptionAmountBonusPercentage Used by: Skill: Jump Fuel Conservation """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.ship.boostItemAttr('jumpDriveConsumptionAmount', skill.getModifiedItemAttr('consumptionQuantityBonusPercentage') * skill.level) class Effect3561(EffectDef): """ ewSkillTrackingDisruptionTrackingSpeedBonus Used by: Modules named like: Tracking Diagnostic Subroutines (8 of 8) Skill: Weapon Destabilization """ type = 'passive' @staticmethod def handler(fit, container, context): 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) class Effect3568(EffectDef): """ eliteBonusLogisticsTrackingLinkMaxRangeBonus1 Used by: Ship: Scimitar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer', 'maxRangeBonus', ship.getModifiedItemAttr('eliteBonusLogistics1'), skill='Logistics Cruisers') class Effect3569(EffectDef): """ eliteBonusLogisticsTrackingLinkMaxRangeBonus2 Used by: Ship: Oneiros """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer', 'maxRangeBonus', ship.getModifiedItemAttr('eliteBonusLogistics2'), skill='Logistics Cruisers') class Effect3570(EffectDef): """ eliteBonusLogisticsTrackingLinkTrackingSpeedBonus2 Used by: Ship: Oneiros """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer', 'trackingSpeedBonus', ship.getModifiedItemAttr('eliteBonusLogistics2'), skill='Logistics Cruisers') class Effect3571(EffectDef): """ eliteBonusLogisticsTrackingLinkTrackingSpeedBonus1 Used by: Ship: Scimitar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer', 'trackingSpeedBonus', ship.getModifiedItemAttr('eliteBonusLogistics1'), skill='Logistics Cruisers') class Effect3586(EffectDef): """ ewSkillSignalSuppressionScanResolutionBonus Used by: Modules named like: Inverted Signal Field Projector (8 of 8) Skill: Signal Suppression """ type = 'passive' @staticmethod def handler(fit, container, context): 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) class Effect3587(EffectDef): """ shipBonusEwRemoteSensorDampenerMaxTargetRangeBonusGC2 Used by: Variations of ship: Celestis (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'maxTargetRangeBonus', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser') class Effect3588(EffectDef): """ shipBonusEwRemoteSensorDampenerMaxTargetRangeBonusGF2 Used by: Ship: Keres Ship: Maulus """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'maxTargetRangeBonus', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate') class Effect3589(EffectDef): """ shipBonusEwRemoteSensorDampenerScanResolutionBonusGF2 Used by: Ship: Keres Ship: Maulus """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'scanResolutionBonus', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate') class Effect3590(EffectDef): """ shipBonusEwRemoteSensorDampenerScanResolutionBonusGC2 Used by: Variations of ship: Celestis (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'scanResolutionBonus', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser') class Effect3591(EffectDef): """ ewSkillSignalSuppressionMaxTargetRangeBonus Used by: Modules named like: Inverted Signal Field Projector (8 of 8) Skill: Signal Suppression """ type = 'passive' @staticmethod def handler(fit, container, context): 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) class Effect3592(EffectDef): """ eliteBonusJumpFreighterHullHP1 Used by: Ships from group: Jump Freighter (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('hp', ship.getModifiedItemAttr('eliteBonusJumpFreighter1'), skill='Jump Freighters') class Effect3593(EffectDef): """ eliteBonusJumpFreighterJumpDriveConsumptionAmount2 Used by: Ships from group: Jump Freighter (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('jumpDriveConsumptionAmount', ship.getModifiedItemAttr('eliteBonusJumpFreighter2'), skill='Jump Freighters') class Effect3597(EffectDef): """ 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): module.boostItemAttr('scanResolutionBonus', module.getModifiedChargeAttr('scanResolutionBonusBonus')) class Effect3598(EffectDef): """ 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): module.boostItemAttr('maxTargetRangeBonus', module.getModifiedChargeAttr('maxTargetRangeBonusBonus')) class Effect3599(EffectDef): """ 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): module.boostItemAttr('trackingSpeedBonus', module.getModifiedChargeAttr('trackingSpeedBonusBonus')) class Effect3600(EffectDef): """ 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): module.boostItemAttr('maxRangeBonus', module.getModifiedChargeAttr('maxRangeBonusBonus')) class Effect3601(EffectDef): """ scriptWarpDisruptionFieldGeneratorSetDisallowInEmpireSpace Used by: Charges from group: Warp Disruption Script (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context): module.forceItemAttr('disallowInEmpireSpace', module.getModifiedChargeAttr('disallowInEmpireSpace')) class Effect3602(EffectDef): """ scriptDurationBonus Used by: Charges from group: Warp Disruption Script (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context): module.boostItemAttr('duration', module.getModifiedChargeAttr('durationBonus')) class Effect3617(EffectDef): """ scriptSignatureRadiusBonusBonus Used by: Charges from group: Warp Disruption Script (2 of 2) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, module, context): module.boostItemAttr('signatureRadiusBonus', module.getModifiedChargeAttr('signatureRadiusBonusBonus')) class Effect3618(EffectDef): """ scriptMassBonusPercentageBonus Used by: Charges from group: Warp Disruption Script (2 of 2) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, module, context): module.boostItemAttr('massBonusPercentage', module.getModifiedChargeAttr('massBonusPercentageBonus')) class Effect3619(EffectDef): """ scriptSpeedBoostFactorBonusBonus Used by: Charges from group: Warp Disruption Script (2 of 2) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, module, context): module.boostItemAttr('speedBoostFactorBonus', module.getModifiedChargeAttr('speedBoostFactorBonusBonus')) class Effect3620(EffectDef): """ scriptSpeedFactorBonusBonus Used by: Charges from group: Warp Disruption Script (2 of 2) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, module, context): module.boostItemAttr('speedFactorBonus', module.getModifiedChargeAttr('speedFactorBonusBonus')) class Effect3648(EffectDef): """ scriptWarpScrambleRangeBonus Used by: Charges from group: Warp Disruption Script (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context): module.boostItemAttr('warpScrambleRange', module.getModifiedChargeAttr('warpScrambleRangeBonus')) class Effect3649(EffectDef): """ eliteBonusViolatorsLargeEnergyTurretDamage1 Used by: Ship: Paladin """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusViolators1'), skill='Marauders') class Effect3650(EffectDef): """ ewGroupRsdMaxRangeBonus Used by: Implants named like: grade Centurion (10 of 12) """ type = 'passive' @staticmethod def handler(fit, implant, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'maxRange', implant.getModifiedItemAttr('rangeSkillBonus')) class Effect3651(EffectDef): """ ewGroupTpMaxRangeBonus Used by: Implants named like: grade Centurion (10 of 12) """ type = 'passive' @staticmethod def handler(fit, implant, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'maxRange', implant.getModifiedItemAttr('rangeSkillBonus')) class Effect3652(EffectDef): """ ewGroupTdMaxRangeBonus Used by: Implants named like: grade Centurion (10 of 12) """ type = 'passive' @staticmethod def handler(fit, implant, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Weapon Disruptor', 'maxRange', implant.getModifiedItemAttr('rangeSkillBonus')) class Effect3653(EffectDef): """ ewGroupEcmBurstMaxRangeBonus Used by: Implants named like: grade Centurion (10 of 12) """ type = 'passive' @staticmethod def handler(fit, implant, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Burst Projectors', 'maxRange', implant.getModifiedItemAttr('rangeSkillBonus')) class Effect3655(EffectDef): """ gunneryMaxRangeBonusOnline Used by: Modules from group: Tracking Enhancer (10 of 10) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'maxRange', module.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True) class Effect3656(EffectDef): """ gunneryTrackingSpeedBonusOnline Used by: Modules from group: Tracking Enhancer (10 of 10) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'trackingSpeed', module.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=True) class Effect3657(EffectDef): """ 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): fit.ship.boostItemAttr('scanResolution', module.getModifiedItemAttr('scanResolutionBonus'), stackingPenalties=True) class Effect3659(EffectDef): """ 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): fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRangeBonus'), stackingPenalties=True) class Effect3660(EffectDef): """ 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): fit.ship.increaseItemAttr('maxLockedTargets', module.getModifiedItemAttr('maxLockedTargetsBonus')) class Effect3668(EffectDef): """ miningLaserRangeBonus Used by: Implants named like: grade Harvest (10 of 12) """ type = 'passive' @staticmethod def handler(fit, implant, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Mining Laser', 'maxRange', implant.getModifiedItemAttr('maxRangeBonus')) class Effect3669(EffectDef): """ frequencyMiningLaserMaxRangeBonus Used by: Implants named like: grade Harvest (10 of 12) """ type = 'passive' @staticmethod def handler(fit, implant, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Frequency Mining Laser', 'maxRange', implant.getModifiedItemAttr('maxRangeBonus')) class Effect3670(EffectDef): """ stripMinerMaxRangeBonus Used by: Implants named like: grade Harvest (10 of 12) """ type = 'passive' @staticmethod def handler(fit, implant, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Strip Miner', 'maxRange', implant.getModifiedItemAttr('maxRangeBonus')) class Effect3671(EffectDef): """ gasHarvesterMaxRangeBonus Used by: Implants named like: grade Harvest (10 of 12) """ type = 'passive' @staticmethod def handler(fit, implant, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Gas Cloud Harvester', 'maxRange', implant.getModifiedItemAttr('maxRangeBonus')) class Effect3672(EffectDef): """ setBonusOre Used by: Implants named like: grade Harvest (12 of 12) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant', 'maxRangeBonus', implant.getModifiedItemAttr('implantSetORE')) class Effect3677(EffectDef): """ shipBonusLargeEnergyTurretMaxRangeAB2 Used by: Ship: Apocalypse Ship: Apocalypse Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusAB2'), skill='Amarr Battleship') class Effect3678(EffectDef): """ eliteBonusJumpFreighterShieldHP1 Used by: Ship: Nomad Ship: Rhea """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('shieldCapacity', ship.getModifiedItemAttr('eliteBonusJumpFreighter1'), skill='Jump Freighters') class Effect3679(EffectDef): """ eliteBonusJumpFreighterArmorHP1 Used by: Ship: Anshar Ship: Ark """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('armorHP', ship.getModifiedItemAttr('eliteBonusJumpFreighter1'), skill='Jump Freighters') class Effect3680(EffectDef): """ freighterAgilityBonusC1 Used by: Ship: Rhea """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('freighterBonusC1'), skill='Caldari Freighter') class Effect3681(EffectDef): """ freighterAgilityBonusM1 Used by: Ship: Nomad """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('freighterBonusM1'), skill='Minmatar Freighter') class Effect3682(EffectDef): """ freighterAgilityBonusG1 Used by: Ship: Anshar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('freighterBonusG1'), skill='Gallente Freighter') class Effect3683(EffectDef): """ freighterAgilityBonusA1 Used by: Ship: Ark """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('freighterBonusA1'), skill='Amarr Freighter') class Effect3686(EffectDef): """ 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): module.boostItemAttr('falloffBonus', module.getModifiedChargeAttr('falloffBonusBonus')) class Effect3703(EffectDef): """ shipMissileLauncherSpeedBonusMC2 Used by: Ship: Bellicose """ type = 'passive' @staticmethod def handler(fit, ship, context): 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') class Effect3705(EffectDef): """ shipHybridTurretROFBonusGC2 Used by: Ship: Exequror Navy Issue Ship: Phobos """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'speed', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser') class Effect3706(EffectDef): """ shipBonusProjectileTrackingMC2 Used by: Ship: Stabber Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser') class Effect3726(EffectDef): """ agilityMultiplierEffectPassive Used by: Modules named like: Polycarbon Engine Housing (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.boostItemAttr('agility', module.getModifiedItemAttr('agilityBonus'), stackingPenalties=True) class Effect3727(EffectDef): """ velocityBonusPassive Used by: Modules named like: Polycarbon Engine Housing (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.boostItemAttr('maxVelocity', module.getModifiedItemAttr('implantBonusVelocity'), stackingPenalties=True) class Effect3739(EffectDef): """ zColinOrcaTractorRangeBonus Used by: Ships from group: Industrial Command Ship (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Tractor Beam', 'maxRange', src.getModifiedItemAttr('roleBonusTractorBeamRange')) class Effect3740(EffectDef): """ zColinOrcaTractorVelocityBonus Used by: Ships from group: Industrial Command Ship (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Tractor Beam', 'maxTractorVelocity', ship.getModifiedItemAttr('roleBonusTractorBeamVelocity')) class Effect3742(EffectDef): """ cargoAndOreHoldCapacityBonusICS1 Used by: Ships from group: Industrial Command Ship (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('specialOreHoldCapacity', src.getModifiedItemAttr('shipBonusICS1'), skill='Industrial Command Ships') fit.ship.boostItemAttr('capacity', src.getModifiedItemAttr('shipBonusICS1'), skill='Industrial Command Ships') class Effect3744(EffectDef): """ miningForemanBurstBonusICS2 Used by: Ships from group: Industrial Command Ship (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusICS2'), skill='Industrial Command Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusICS2'), skill='Industrial Command Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'buffDuration', src.getModifiedItemAttr('shipBonusICS2'), skill='Industrial Command Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusICS2'), skill='Industrial Command Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusICS2'), skill='Industrial Command Ships') class Effect3745(EffectDef): """ zColinOrcaSurveyScannerBonus Used by: Ships from group: Industrial Command Ship (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Survey Scanner', 'surveyScanRange', src.getModifiedItemAttr('roleBonusSurveyScannerRange')) class Effect3765(EffectDef): """ covertOpsStealthBomberSiegeMissileLauncherPowerNeedBonus Used by: Ships from group: Stealth Bomber (5 of 5) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Missile Launcher Torpedo', 'power', ship.getModifiedItemAttr('stealthBomberLauncherPower')) class Effect3766(EffectDef): """ interceptorMWDSignatureRadiusBonus Used by: Ships from group: Interceptor (10 of 10) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'signatureRadiusBonus', ship.getModifiedItemAttr('eliteBonusInterceptor'), skill='Interceptors') class Effect3767(EffectDef): """ eliteBonusCommandShipsHeavyMissileExplosionVelocityCS2 Used by: Ship: Claymore """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'aoeVelocity', ship.getModifiedItemAttr('eliteBonusCommandShips2'), skill='Command Ships') class Effect3771(EffectDef): """ armorHPBonusAddPassive Used by: Subsystems from group: Defensive Systems (9 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.increaseItemAttr('armorHP', module.getModifiedItemAttr('armorHPBonusAdd') or 0) class Effect3773(EffectDef): """ hardPointModifierEffect Used by: Subsystems from group: Offensive Systems (12 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.increaseItemAttr('turretSlotsLeft', module.getModifiedItemAttr('turretHardPointModifier')) fit.ship.increaseItemAttr('launcherSlotsLeft', module.getModifiedItemAttr('launcherHardPointModifier')) class Effect3774(EffectDef): """ slotModifier Used by: Items from category: Subsystem (48 of 48) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.increaseItemAttr('hiSlots', module.getModifiedItemAttr('hiSlotModifier')) fit.ship.increaseItemAttr('medSlots', module.getModifiedItemAttr('medSlotModifier')) fit.ship.increaseItemAttr('lowSlots', module.getModifiedItemAttr('lowSlotModifier')) class Effect3782(EffectDef): """ powerOutputAddPassive Used by: Subsystems from group: Offensive Systems (8 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.increaseItemAttr('powerOutput', module.getModifiedItemAttr('powerOutput')) class Effect3783(EffectDef): """ cpuOutputAddCpuOutputPassive Used by: Subsystems from group: Offensive Systems (8 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.increaseItemAttr('cpuOutput', module.getModifiedItemAttr('cpuOutput')) class Effect3797(EffectDef): """ droneBandwidthAddPassive Used by: Subsystems from group: Offensive Systems (12 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.increaseItemAttr('droneBandwidth', module.getModifiedItemAttr('droneBandwidth')) class Effect3799(EffectDef): """ droneCapacityAdddroneCapacityPassive Used by: Subsystems from group: Offensive Systems (12 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.increaseItemAttr('droneCapacity', module.getModifiedItemAttr('droneCapacity')) class Effect3807(EffectDef): """ maxTargetRangeAddPassive Used by: Subsystems named like: Propulsion Interdiction Nullifier (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.increaseItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRange')) class Effect3808(EffectDef): """ signatureRadiusAddPassive Used by: Subsystems from group: Defensive Systems (8 of 12) Subsystems named like: Propulsion Interdiction Nullifier (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.increaseItemAttr('signatureRadius', module.getModifiedItemAttr('signatureRadius')) class Effect3810(EffectDef): """ 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): fit.ship.increaseItemAttr('capacity', subsystem.getModifiedItemAttr('cargoCapacityAdd') or 0) class Effect3811(EffectDef): """ capacitorCapacityAddPassive Used by: Items from category: Subsystem (20 of 48) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.increaseItemAttr('capacitorCapacity', module.getModifiedItemAttr('capacitorCapacity') or 0) class Effect3831(EffectDef): """ shieldCapacityAddPassive Used by: Subsystems from group: Defensive Systems (8 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.increaseItemAttr('shieldCapacity', module.getModifiedItemAttr('shieldCapacity')) class Effect3857(EffectDef): """ subsystemBonusAmarrPropulsionMaxVelocity Used by: Subsystem: Legion Propulsion - Intercalated Nanofibers """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.boostItemAttr('maxVelocity', module.getModifiedItemAttr('subsystemBonusAmarrPropulsion'), skill='Amarr Propulsion Systems') class Effect3859(EffectDef): """ subsystemBonusCaldariPropulsionMaxVelocity Used by: Subsystem: Tengu Propulsion - Chassis Optimization """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('maxVelocity', src.getModifiedItemAttr('subsystemBonusCaldariPropulsion'), skill='Caldari Propulsion Systems') class Effect3860(EffectDef): """ subsystemBonusMinmatarPropulsionMaxVelocity Used by: Subsystem: Loki Propulsion - Intercalated Nanofibers """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.boostItemAttr('maxVelocity', module.getModifiedItemAttr('subsystemBonusMinmatarPropulsion'), skill='Minmatar Propulsion Systems') class Effect3861(EffectDef): """ subsystemBonusMinmatarPropulsionAfterburnerSpeedFactor Used by: Subsystem: Loki Propulsion - Wake Limiter """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'speedFactor', module.getModifiedItemAttr('subsystemBonusMinmatarPropulsion'), skill='Minmatar Propulsion Systems') class Effect3863(EffectDef): """ subsystemBonusCaldariPropulsionAfterburnerSpeedFactor Used by: Subsystem: Tengu Propulsion - Fuel Catalyst """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'speedFactor', module.getModifiedItemAttr('subsystemBonusCaldariPropulsion'), skill='Caldari Propulsion Systems') class Effect3864(EffectDef): """ subsystemBonusAmarrPropulsionAfterburnerSpeedFactor Used by: Subsystem: Legion Propulsion - Wake Limiter """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'speedFactor', module.getModifiedItemAttr('subsystemBonusAmarrPropulsion'), skill='Amarr Propulsion Systems') class Effect3865(EffectDef): """ subsystemBonusAmarrPropulsion2Agility Used by: Subsystem: Legion Propulsion - Intercalated Nanofibers """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('agility', src.getModifiedItemAttr('subsystemBonusAmarrPropulsion2'), skill='Amarr Propulsion Systems') class Effect3866(EffectDef): """ subsystemBonusCaldariPropulsion2Agility Used by: Subsystem: Tengu Propulsion - Chassis Optimization """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('agility', src.getModifiedItemAttr('subsystemBonusCaldariPropulsion2'), skill='Caldari Propulsion Systems') class Effect3867(EffectDef): """ subsystemBonusGallentePropulsion2Agility Used by: Subsystem: Proteus Propulsion - Hyperspatial Optimization """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('agility', src.getModifiedItemAttr('subsystemBonusGallentePropulsion2'), skill='Gallente Propulsion Systems') class Effect3868(EffectDef): """ subsystemBonusMinmatarPropulsion2Agility Used by: Subsystem: Loki Propulsion - Intercalated Nanofibers """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('agility', src.getModifiedItemAttr('subsystemBonusMinmatarPropulsion2'), skill='Minmatar Propulsion Systems') class Effect3869(EffectDef): """ subsystemBonusMinmatarPropulsion2MWDPenalty Used by: Subsystem: Loki Propulsion - Wake Limiter """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'signatureRadiusBonus', src.getModifiedItemAttr('subsystemBonusMinmatarPropulsion2'), skill='Minmatar Propulsion Systems') class Effect3872(EffectDef): """ subsystemBonusAmarrPropulsion2MWDPenalty Used by: Subsystem: Legion Propulsion - Wake Limiter """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'signatureRadiusBonus', src.getModifiedItemAttr('subsystemBonusAmarrPropulsion2'), skill='Amarr Propulsion Systems') class Effect3875(EffectDef): """ subsystemBonusGallentePropulsionABMWDCapNeed Used by: Subsystem: Proteus Propulsion - Localized Injectors """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Propulsion Module', 'capacitorNeed', module.getModifiedItemAttr('subsystemBonusGallentePropulsion'), skill='Gallente Propulsion Systems') class Effect3893(EffectDef): """ subsystemBonusMinmatarCoreScanStrengthLADAR Used by: Subsystem: Loki Core - Dissolution Sequencer """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('scanLadarStrength', src.getModifiedItemAttr('subsystemBonusMinmatarCore'), skill='Minmatar Core Systems') class Effect3895(EffectDef): """ subsystemBonusGallenteCoreScanStrengthMagnetometric Used by: Subsystem: Proteus Core - Electronic Efficiency Gate """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('scanMagnetometricStrength', src.getModifiedItemAttr('subsystemBonusGallenteCore'), skill='Gallente Core Systems') class Effect3897(EffectDef): """ subsystemBonusCaldariCoreScanStrengthGravimetric Used by: Subsystem: Tengu Core - Electronic Efficiency Gate """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('scanGravimetricStrength', src.getModifiedItemAttr('subsystemBonusCaldariCore'), skill='Caldari Core Systems') class Effect3900(EffectDef): """ subsystemBonusAmarrCoreScanStrengthRADAR Used by: Subsystem: Legion Core - Dissolution Sequencer """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('scanRadarStrength', src.getModifiedItemAttr('subsystemBonusAmarrCore'), skill='Amarr Core Systems') class Effect3959(EffectDef): """ subsystemBonusAmarrDefensiveArmorRepairAmount Used by: Subsystem: Legion Defensive - Covert Reconfiguration Subsystem: Legion Defensive - Nanobot Injector """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', module.getModifiedItemAttr('subsystemBonusAmarrDefensive'), skill='Amarr Defensive Systems') class Effect3961(EffectDef): """ subsystemBonusGallenteDefensiveArmorRepairAmount Used by: Subsystem: Proteus Defensive - Covert Reconfiguration Subsystem: Proteus Defensive - Nanobot Injector """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', module.getModifiedItemAttr('subsystemBonusGallenteDefensive'), skill='Gallente Defensive Systems') class Effect3962(EffectDef): """ subsystemBonusMinmatarDefensiveShieldArmorRepairAmount Used by: Subsystem: Loki Defensive - Adaptive Defense Node Subsystem: Loki Defensive - Covert Reconfiguration """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive'), skill='Minmatar Defensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive'), skill='Minmatar Defensive Systems') class Effect3964(EffectDef): """ subsystemBonusCaldariDefensiveShieldBoostAmount Used by: Subsystem: Tengu Defensive - Amplification Node Subsystem: Tengu Defensive - Covert Reconfiguration """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', module.getModifiedItemAttr('subsystemBonusCaldariDefensive'), skill='Caldari Defensive Systems') class Effect3976(EffectDef): """ subsystemBonusCaldariDefensiveShieldHP Used by: Subsystem: Tengu Defensive - Supplemental Screening """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.boostItemAttr('shieldCapacity', module.getModifiedItemAttr('subsystemBonusCaldariDefensive'), skill='Caldari Defensive Systems') class Effect3979(EffectDef): """ subsystemBonusMinmatarDefensiveShieldArmorHP Used by: Subsystem: Loki Defensive - Augmented Durability """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('shieldCapacity', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive'), skill='Minmatar Defensive Systems') fit.ship.boostItemAttr('armorHP', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive'), skill='Minmatar Defensive Systems') class Effect3980(EffectDef): """ subsystemBonusGallenteDefensiveArmorHP Used by: Subsystem: Proteus Defensive - Augmented Plating """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.boostItemAttr('armorHP', module.getModifiedItemAttr('subsystemBonusGallenteDefensive'), skill='Gallente Defensive Systems') class Effect3982(EffectDef): """ subsystemBonusAmarrDefensiveArmorHP Used by: Subsystem: Legion Defensive - Augmented Plating """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.boostItemAttr('armorHP', module.getModifiedItemAttr('subsystemBonusAmarrDefensive'), skill='Amarr Defensive Systems') class Effect3992(EffectDef): """ systemShieldHP Used by: Celestials named like: Pulsar Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.ship.multiplyItemAttr('shieldCapacity', beacon.getModifiedItemAttr('shieldCapacityMultiplier')) class Effect3993(EffectDef): """ systemTargetingRange Used by: Celestials named like: Black Hole Effect Beacon Class (6 of 6) Celestials named like: Magnetar Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.ship.multiplyItemAttr('maxTargetRange', beacon.getModifiedItemAttr('maxTargetRangeMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect3995(EffectDef): """ systemSignatureRadius Used by: Celestials named like: Pulsar Effect Beacon Class (6 of 6) Celestials named like: Wolf Rayet Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.ship.multiplyItemAttr('signatureRadius', beacon.getModifiedItemAttr('signatureRadiusMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect3996(EffectDef): """ systemArmorEmResistance Used by: Celestials named like: Incursion Effect (2 of 2) Celestials named like: Pulsar Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.ship.boostItemAttr('armorEmDamageResonance', beacon.getModifiedItemAttr('armorEmDamageResistanceBonus'), stackingPenalties=True) class Effect3997(EffectDef): """ systemArmorExplosiveResistance Used by: Celestials named like: Incursion Effect (2 of 2) Celestials named like: Pulsar Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.ship.boostItemAttr('armorExplosiveDamageResonance', beacon.getModifiedItemAttr('armorExplosiveDamageResistanceBonus'), stackingPenalties=True) class Effect3998(EffectDef): """ systemArmorKineticResistance Used by: Celestials named like: Incursion Effect (2 of 2) Celestials named like: Pulsar Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.ship.boostItemAttr('armorKineticDamageResonance', beacon.getModifiedItemAttr('armorKineticDamageResistanceBonus'), stackingPenalties=True) class Effect3999(EffectDef): """ systemArmorThermalResistance Used by: Celestials named like: Incursion Effect (2 of 2) Celestials named like: Pulsar Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.ship.boostItemAttr('armorThermalDamageResonance', beacon.getModifiedItemAttr('armorThermalDamageResistanceBonus'), stackingPenalties=True) class Effect4002(EffectDef): """ systemMissileVelocity Used by: Celestials named like: Black Hole Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', beacon.getModifiedItemAttr('missileVelocityMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect4003(EffectDef): """ systemMaxVelocity Used by: Celestials named like: Black Hole Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.ship.multiplyItemAttr('maxVelocity', beacon.getModifiedItemAttr('maxVelocityMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect4016(EffectDef): """ systemDamageMultiplierGunnery Used by: Celestials named like: Magnetar Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Gunnery'), 'damageMultiplier', beacon.getModifiedItemAttr('damageMultiplierMultiplier'), stackingPenalties=True) class Effect4017(EffectDef): """ systemDamageThermalMissiles Used by: Celestials named like: Magnetar Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', beacon.getModifiedItemAttr('damageMultiplierMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect4018(EffectDef): """ systemDamageEmMissiles Used by: Celestials named like: Magnetar Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'emDamage', beacon.getModifiedItemAttr('damageMultiplierMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect4019(EffectDef): """ systemDamageExplosiveMissiles Used by: Celestials named like: Magnetar Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosiveDamage', beacon.getModifiedItemAttr('damageMultiplierMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect4020(EffectDef): """ systemDamageKineticMissiles Used by: Celestials named like: Magnetar Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', beacon.getModifiedItemAttr('damageMultiplierMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect4021(EffectDef): """ systemDamageDrones Used by: Celestials named like: Magnetar Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.drones.filteredItemMultiply(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', beacon.getModifiedItemAttr('damageMultiplierMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect4022(EffectDef): """ systemTracking Used by: Celestials named like: Magnetar Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Gunnery'), 'trackingSpeed', module.getModifiedItemAttr('trackingSpeedMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect4023(EffectDef): """ systemAoeVelocity Used by: Celestials named like: Black Hole Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeVelocity', beacon.getModifiedItemAttr('aoeVelocityMultiplier')) class Effect4033(EffectDef): """ systemHeatDamage Used by: Celestials named like: Red Giant Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: 'heatDamage' in mod.itemModifiedAttributes, 'heatDamage', module.getModifiedItemAttr('heatDamageMultiplier')) class Effect4034(EffectDef): """ systemOverloadArmor Used by: Celestials named like: Red Giant Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: 'overloadArmorDamageAmount' in mod.itemModifiedAttributes, 'overloadArmorDamageAmount', module.getModifiedItemAttr('overloadBonusMultiplier')) class Effect4035(EffectDef): """ systemOverloadDamageModifier Used by: Celestials named like: Red Giant Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: 'overloadDamageModifier' in mod.itemModifiedAttributes, 'overloadDamageModifier', module.getModifiedItemAttr('overloadBonusMultiplier')) class Effect4036(EffectDef): """ systemOverloadDurationBonus Used by: Celestials named like: Red Giant Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: 'overloadDurationBonus' in mod.itemModifiedAttributes, 'overloadDurationBonus', module.getModifiedItemAttr('overloadBonusMultiplier')) class Effect4037(EffectDef): """ systemOverloadEccmStrength Used by: Celestials named like: Red Giant Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: 'overloadECCMStrenghtBonus' in mod.itemModifiedAttributes, 'overloadECCMStrenghtBonus', module.getModifiedItemAttr('overloadBonusMultiplier')) class Effect4038(EffectDef): """ systemOverloadEcmStrength Used by: Celestials named like: Red Giant Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: 'overloadECMStrenghtBonus' in mod.itemModifiedAttributes, 'overloadECMStrenghtBonus', module.getModifiedItemAttr('overloadBonusMultiplier')) class Effect4039(EffectDef): """ systemOverloadHardening Used by: Celestials named like: Red Giant Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: 'overloadHardeningBonus' in mod.itemModifiedAttributes, 'overloadHardeningBonus', module.getModifiedItemAttr('overloadBonusMultiplier')) class Effect4040(EffectDef): """ systemOverloadRange Used by: Celestials named like: Red Giant Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: 'overloadRangeBonus' in mod.itemModifiedAttributes, 'overloadRangeBonus', module.getModifiedItemAttr('overloadBonusMultiplier')) class Effect4041(EffectDef): """ systemOverloadRof Used by: Celestials named like: Red Giant Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: 'overloadRofBonus' in mod.itemModifiedAttributes, 'overloadRofBonus', module.getModifiedItemAttr('overloadBonusMultiplier')) class Effect4042(EffectDef): """ systemOverloadSelfDuration Used by: Celestials named like: Red Giant Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: 'overloadSelfDurationBonus' in mod.itemModifiedAttributes, 'overloadSelfDurationBonus', module.getModifiedItemAttr('overloadBonusMultiplier')) class Effect4043(EffectDef): """ systemOverloadShieldBonus Used by: Celestials named like: Red Giant Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: 'overloadShieldBonus' in mod.itemModifiedAttributes, 'overloadShieldBonus', module.getModifiedItemAttr('overloadBonusMultiplier')) class Effect4044(EffectDef): """ systemOverloadSpeedFactor Used by: Celestials named like: Red Giant Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: 'overloadSpeedFactorBonus' in mod.itemModifiedAttributes, 'overloadSpeedFactorBonus', module.getModifiedItemAttr('overloadBonusMultiplier')) class Effect4045(EffectDef): """ systemSmartBombRange Used by: Celestials named like: Red Giant Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Smart Bomb', 'empFieldRange', module.getModifiedItemAttr('empFieldRangeMultiplier')) class Effect4046(EffectDef): """ systemSmartBombEmDamage Used by: Celestials named like: Red Giant Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Smart Bomb', 'emDamage', module.getModifiedItemAttr('smartbombDamageMultiplier')) class Effect4047(EffectDef): """ systemSmartBombThermalDamage Used by: Celestials named like: Red Giant Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Smart Bomb', 'thermalDamage', module.getModifiedItemAttr('smartbombDamageMultiplier')) class Effect4048(EffectDef): """ systemSmartBombKineticDamage Used by: Celestials named like: Red Giant Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Smart Bomb', 'kineticDamage', module.getModifiedItemAttr('smartbombDamageMultiplier')) class Effect4049(EffectDef): """ systemSmartBombExplosiveDamage Used by: Celestials named like: Red Giant Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Smart Bomb', 'explosiveDamage', module.getModifiedItemAttr('smartbombDamageMultiplier')) class Effect4054(EffectDef): """ systemSmallEnergyDamage Used by: Celestials named like: Wolf Rayet Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier', module.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True) class Effect4055(EffectDef): """ systemSmallProjectileDamage Used by: Celestials named like: Wolf Rayet Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', module.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True) class Effect4056(EffectDef): """ systemSmallHybridDamage Used by: Celestials named like: Wolf Rayet Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', module.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True) class Effect4057(EffectDef): """ systemRocketEmDamage Used by: Celestials named like: Wolf Rayet Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Rockets'), 'emDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect4058(EffectDef): """ systemRocketExplosiveDamage Used by: Celestials named like: Wolf Rayet Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Rockets'), 'explosiveDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect4059(EffectDef): """ systemRocketKineticDamage Used by: Celestials named like: Wolf Rayet Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Rockets'), 'kineticDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect4060(EffectDef): """ systemRocketThermalDamage Used by: Celestials named like: Wolf Rayet Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Rockets'), 'thermalDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect4061(EffectDef): """ systemStandardMissileThermalDamage Used by: Celestials named like: Wolf Rayet Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'thermalDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect4062(EffectDef): """ systemStandardMissileEmDamage Used by: Celestials named like: Wolf Rayet Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'emDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect4063(EffectDef): """ systemStandardMissileExplosiveDamage Used by: Celestials named like: Wolf Rayet Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'explosiveDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect4086(EffectDef): """ systemArmorRepairAmount Used by: Celestials named like: Cataclysmic Variable Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context): 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') class Effect4088(EffectDef): """ systemArmorRemoteRepairAmount Used by: Celestials named like: Cataclysmic Variable Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'armorDamageAmount', module.getModifiedItemAttr('armorDamageAmountMultiplierRemote'), stackingPenalties=True) class Effect4089(EffectDef): """ systemShieldRemoteRepairAmount Used by: Celestials named like: Cataclysmic Variable Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'shieldBonus', module.getModifiedItemAttr('shieldBonusMultiplierRemote'), stackingPenalties=True, penaltyGroup='postMul') class Effect4090(EffectDef): """ systemCapacitorCapacity Used by: Celestials named like: Cataclysmic Variable Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.ship.multiplyItemAttr('capacitorCapacity', beacon.getModifiedItemAttr('capacitorCapacityMultiplierSystem')) class Effect4091(EffectDef): """ systemCapacitorRecharge Used by: Celestials named like: Cataclysmic Variable Effect Beacon Class (6 of 6) Celestials named like: Pulsar Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.ship.multiplyItemAttr('rechargeRate', beacon.getModifiedItemAttr('rechargeRateMultiplier')) class Effect4093(EffectDef): """ subsystemBonusAmarrOffensiveEnergyWeaponDamageMultiplier Used by: Subsystem: Legion Offensive - Liquid Crystal Magnifiers """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'damageMultiplier', module.getModifiedItemAttr('subsystemBonusAmarrOffensive'), skill='Amarr Offensive Systems') class Effect4104(EffectDef): """ subsystemBonusCaldariOffensiveHybridWeaponMaxRange Used by: Subsystem: Tengu Offensive - Magnetic Infusion Basin """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'maxRange', module.getModifiedItemAttr('subsystemBonusCaldariOffensive'), skill='Caldari Offensive Systems') class Effect4106(EffectDef): """ subsystemBonusGallenteOffensiveHybridWeaponFalloff Used by: Subsystem: Proteus Offensive - Hybrid Encoding Platform """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'falloff', module.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems') class Effect4114(EffectDef): """ subsystemBonusMinmatarOffensiveProjectileWeaponFalloff Used by: Subsystem: Loki Offensive - Projectile Scoping Array """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'falloff', module.getModifiedItemAttr('subsystemBonusMinmatarOffensive'), skill='Minmatar Offensive Systems') class Effect4115(EffectDef): """ subsystemBonusMinmatarOffensiveProjectileWeaponMaxRange Used by: Subsystem: Loki Offensive - Projectile Scoping Array """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'maxRange', module.getModifiedItemAttr('subsystemBonusMinmatarOffensive'), skill='Minmatar Offensive Systems') class Effect4122(EffectDef): """ subsystemBonusCaldariOffensive1LauncherROF Used by: Subsystem: Tengu Offensive - Accelerated Ejection Bay """ type = 'passive' @staticmethod def handler(fit, src, context): 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') class Effect4135(EffectDef): """ systemShieldEmResistance Used by: Celestials named like: Wolf Rayet Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.ship.boostItemAttr('shieldEmDamageResonance', beacon.getModifiedItemAttr('shieldEmDamageResistanceBonus'), stackingPenalties=True) class Effect4136(EffectDef): """ systemShieldExplosiveResistance Used by: Celestials named like: Wolf Rayet Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.ship.boostItemAttr('shieldExplosiveDamageResonance', beacon.getModifiedItemAttr('shieldExplosiveDamageResistanceBonus'), stackingPenalties=True) class Effect4137(EffectDef): """ systemShieldKineticResistance Used by: Celestials named like: Wolf Rayet Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.ship.boostItemAttr('shieldKineticDamageResonance', beacon.getModifiedItemAttr('shieldKineticDamageResistanceBonus'), stackingPenalties=True) class Effect4138(EffectDef): """ systemShieldThermalResistance Used by: Celestials named like: Wolf Rayet Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.ship.boostItemAttr('shieldThermalDamageResonance', beacon.getModifiedItemAttr('shieldThermalDamageResistanceBonus'), stackingPenalties=True) class Effect4152(EffectDef): """ subsystemBonusAmarrEngineeringHeatDamageReduction Used by: Subsystem: Legion Core - Energy Parasitic Complex """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', module.getModifiedItemAttr('subsystemBonusAmarrCore'), skill='Amarr Core Systems') class Effect4153(EffectDef): """ subsystemBonusCaldariEngineeringHeatDamageReduction Used by: Subsystem: Tengu Core - Obfuscation Manifold """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', module.getModifiedItemAttr('subsystemBonusCaldariCore'), skill='Caldari Core Systems') class Effect4154(EffectDef): """ subsystemBonusGallenteEngineeringHeatDamageReduction Used by: Subsystem: Proteus Core - Friction Extension Processor """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', module.getModifiedItemAttr('subsystemBonusGallenteCore'), skill='Gallente Core Systems') class Effect4155(EffectDef): """ subsystemBonusMinmatarEngineeringHeatDamageReduction Used by: Subsystem: Loki Core - Immobility Drivers """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', module.getModifiedItemAttr('subsystemBonusMinmatarCore'), skill='Minmatar Core Systems') class Effect4158(EffectDef): """ subsystemBonusCaldariCoreCapacitorCapacity Used by: Subsystem: Tengu Core - Augmented Graviton Reactor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('capacitorCapacity', src.getModifiedItemAttr('subsystemBonusCaldariCore'), skill='Caldari Core Systems') class Effect4159(EffectDef): """ subsystemBonusAmarrCoreCapacitorCapacity Used by: Subsystem: Legion Core - Augmented Antimatter Reactor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('capacitorCapacity', src.getModifiedItemAttr('subsystemBonusAmarrCore'), skill='Amarr Core Systems') class Effect4161(EffectDef): """ baseMaxScanDeviationModifierRequiringAstrometrics Used by: Implants named like: Poteque 'Prospector' Astrometric Pinpointing AP (3 of 3) Skill: Astrometric Pinpointing Skill: Astrometrics """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseMaxScanDeviation', container.getModifiedItemAttr('maxScanDeviationModifier') * level) class Effect4162(EffectDef): """ baseSensorStrengthModifierRequiringAstrometrics Used by: Modules from group: Scan Probe Launcher (4 of 7) Implants named like: Poteque 'Prospector' Astrometric Rangefinding AR (3 of 3) Implants named like: grade Virtue (10 of 12) Modules named like: Gravity Capacitor Upgrade (8 of 8) Skill: Astrometric Rangefinding Skill: Astrometrics """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 penalized = False if 'skill' in context or 'implant' in context else True fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength', container.getModifiedItemAttr('scanStrengthBonus') * level, stackingPenalties=penalized) class Effect4165(EffectDef): """ shipBonusScanProbeStrengthCF Used by: Ship: Heron """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Scanner Probe', 'baseSensorStrength', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate') class Effect4166(EffectDef): """ shipBonusScanProbeStrengthMF Used by: Ship: Probe """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Scanner Probe', 'baseSensorStrength', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate') class Effect4167(EffectDef): """ shipBonusScanProbeStrengthGF Used by: Ship: Imicus """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Scanner Probe', 'baseSensorStrength', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate') class Effect4168(EffectDef): """ eliteBonusCoverOpsScanProbeStrength2 Used by: Ships from group: Covert Ops (8 of 8) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Scanner Probe', 'baseSensorStrength', ship.getModifiedItemAttr('eliteBonusCovertOps2'), skill='Covert Ops') class Effect4187(EffectDef): """ shipBonusStrategicCruiserAmarrHeatDamage Used by: Ship: Legion """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', ship.getModifiedItemAttr('shipBonusStrategicCruiserAmarr1'), skill='Amarr Strategic Cruiser') class Effect4188(EffectDef): """ shipBonusStrategicCruiserCaldariHeatDamage Used by: Ship: Tengu """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', ship.getModifiedItemAttr('shipBonusStrategicCruiserCaldari1'), skill='Caldari Strategic Cruiser') class Effect4189(EffectDef): """ shipBonusStrategicCruiserGallenteHeatDamage Used by: Ship: Proteus """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', ship.getModifiedItemAttr('shipBonusStrategicCruiserGallente1'), skill='Gallente Strategic Cruiser') class Effect4190(EffectDef): """ shipBonusStrategicCruiserMinmatarHeatDamage Used by: Ship: Loki """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', ship.getModifiedItemAttr('shipBonusStrategicCruiserMinmatar1'), skill='Minmatar Strategic Cruiser') class Effect4215(EffectDef): """ subsystemBonusAmarrOffensive2EnergyWeaponCapacitorNeed Used by: Subsystem: Legion Offensive - Liquid Crystal Magnifiers """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'capacitorNeed', module.getModifiedItemAttr('subsystemBonusAmarrOffensive2'), skill='Amarr Offensive Systems') class Effect4216(EffectDef): """ subsystemBonusAmarrCore2EnergyVampireAmount Used by: Subsystem: Legion Core - Energy Parasitic Complex """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', src.getModifiedItemAttr('subsystemBonusAmarrCore2'), skill='Amarr Core Systems') class Effect4217(EffectDef): """ subsystemBonusAmarrCore2EnergyDestabilizerAmount Used by: Subsystem: Legion Core - Energy Parasitic Complex """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', src.getModifiedItemAttr('subsystemBonusAmarrCore2'), skill='Amarr Core Systems') class Effect4248(EffectDef): """ subsystemBonusCaldariOffensive2MissileLauncherKineticDamage Used by: Subsystem: Tengu Offensive - Accelerated Ejection Bay """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'kineticDamage', src.getModifiedItemAttr('subsystemBonusCaldariOffensive2'), skill='Caldari Offensive Systems') fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage', src.getModifiedItemAttr('subsystemBonusCaldariOffensive2'), skill='Caldari Offensive Systems') fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'kineticDamage', src.getModifiedItemAttr('subsystemBonusCaldariOffensive2'), skill='Caldari Offensive Systems') class Effect4250(EffectDef): """ subsystemBonusGallenteOffensiveDroneDamageHP Used by: Subsystem: Proteus Offensive - Drone Synthesis Projector """ type = 'passive' @staticmethod def handler(fit, src, context): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'armorHP', src.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems') fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'hp', src.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems') fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems') fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'shieldCapacity', src.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems') class Effect4251(EffectDef): """ subsystemBonusMinmatarOffensive2ProjectileWeaponDamageMultiplier Used by: Subsystem: Loki Offensive - Projectile Scoping Array """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier', module.getModifiedItemAttr('subsystemBonusMinmatarOffensive2'), skill='Minmatar Offensive Systems') class Effect4256(EffectDef): """ subsystemBonusMinmatarOffensive2MissileLauncherROF Used by: Subsystem: Loki Offensive - Launcher Efficiency Configuration """ type = 'passive' @staticmethod def handler(fit, src, context): 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') class Effect4264(EffectDef): """ subsystemBonusMinmatarCoreCapacitorRecharge Used by: Subsystem: Loki Core - Augmented Nuclear Reactor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('rechargeRate', src.getModifiedItemAttr('subsystemBonusMinmatarCore'), skill='Minmatar Core Systems') class Effect4265(EffectDef): """ subsystemBonusGallenteCoreCapacitorRecharge Used by: Subsystem: Proteus Core - Augmented Fusion Reactor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('rechargeRate', src.getModifiedItemAttr('subsystemBonusGallenteCore'), skill='Gallente Core Systems') class Effect4269(EffectDef): """ subsystemBonusAmarrCore3ScanResolution Used by: Subsystem: Legion Core - Dissolution Sequencer """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('scanResolution', src.getModifiedItemAttr('subsystemBonusAmarrCore3'), skill='Amarr Core Systems') class Effect4270(EffectDef): """ subsystemBonusMinmatarCore3ScanResolution Used by: Subsystem: Loki Core - Dissolution Sequencer """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('scanResolution', src.getModifiedItemAttr('subsystemBonusMinmatarCore3'), skill='Minmatar Core Systems') class Effect4271(EffectDef): """ subsystemBonusCaldariCore2MaxTargetingRange Used by: Subsystem: Tengu Core - Electronic Efficiency Gate """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('maxTargetRange', src.getModifiedItemAttr('subsystemBonusCaldariCore2'), skill='Caldari Core Systems') class Effect4272(EffectDef): """ subsystemBonusGallenteCore2MaxTargetingRange Used by: Subsystem: Proteus Core - Electronic Efficiency Gate """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('maxTargetRange', src.getModifiedItemAttr('subsystemBonusGallenteCore2'), skill='Gallente Core Systems') class Effect4273(EffectDef): """ subsystemBonusGallenteCore2WarpScrambleRange Used by: Subsystem: Proteus Core - Friction Extension Processor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', src.getModifiedItemAttr('subsystemBonusGallenteCore2'), skill='Gallente Core Systems') class Effect4274(EffectDef): """ subsystemBonusMinmatarCore2StasisWebifierRange Used by: Subsystem: Loki Core - Immobility Drivers """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', src.getModifiedItemAttr('subsystemBonusMinmatarCore2'), skill='Minmatar Core Systems') class Effect4275(EffectDef): """ subsystemBonusCaldariPropulsion2WarpSpeed Used by: Subsystem: Tengu Propulsion - Interdiction Nullifier """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('subsystemBonusCaldariPropulsion2'), skill='Caldari Propulsion Systems') class Effect4277(EffectDef): """ subsystemBonusGallentePropulsionWarpCapacitor Used by: Subsystem: Proteus Propulsion - Interdiction Nullifier """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('warpCapacitorNeed', src.getModifiedItemAttr('subsystemBonusGallentePropulsion'), skill='Gallente Propulsion Systems') class Effect4278(EffectDef): """ subsystemBonusGallentePropulsion2WarpSpeed Used by: Subsystem: Proteus Propulsion - Interdiction Nullifier """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('subsystemBonusGallentePropulsion2'), skill='Gallente Propulsion Systems') class Effect4280(EffectDef): """ systemAgility Used by: Celestials named like: Black Hole Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.ship.multiplyItemAttr('agility', beacon.getModifiedItemAttr('agilityMultiplier'), stackingPenalties=True) class Effect4282(EffectDef): """ subsystemBonusGallenteOffensive2HybridWeaponDamageMultiplier Used by: Subsystem: Proteus Offensive - Hybrid Encoding Platform """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', module.getModifiedItemAttr('subsystemBonusGallenteOffensive2'), skill='Gallente Offensive Systems') class Effect4283(EffectDef): """ subsystemBonusCaldariOffensive2HybridWeaponDamageMultiplier Used by: Subsystem: Tengu Offensive - Magnetic Infusion Basin """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', module.getModifiedItemAttr('subsystemBonusCaldariOffensive2'), skill='Caldari Offensive Systems') class Effect4286(EffectDef): """ subsystemBonusAmarrOffensive2RemoteArmorRepairCapUse Used by: Subsystem: Legion Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', src.getModifiedItemAttr('subsystemBonusAmarrOffensive2'), skill='Amarr Offensive Systems') class Effect4288(EffectDef): """ subsystemBonusGallenteOffensive2RemoteArmorRepairCapUse Used by: Subsystem: Proteus Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', src.getModifiedItemAttr('subsystemBonusGallenteOffensive2'), skill='Gallente Offensive Systems') class Effect4290(EffectDef): """ subsystemBonusMinmatarOffensive2RemoteRepCapUse Used by: Subsystem: Loki Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context): 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') class Effect4292(EffectDef): """ subsystemBonusCaldariOffensive2RemoteShieldBoosterCapUse Used by: Subsystem: Tengu Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed', src.getModifiedItemAttr('subsystemBonusCaldariOffensive2'), skill='Caldari Offensive Systems') class Effect4321(EffectDef): """ subsystemBonusCaldariCore2ECMStrengthRange Used by: Subsystem: Tengu Core - Obfuscation Manifold """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanLadarStrengthBonus', src.getModifiedItemAttr('subsystemBonusCaldariCore2'), skill='Caldari Core Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanRadarStrengthBonus', src.getModifiedItemAttr('subsystemBonusCaldariCore2'), skill='Caldari Core Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'maxRange', src.getModifiedItemAttr('subsystemBonusCaldariCore2'), skill='Caldari Core Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanGravimetricStrengthBonus', src.getModifiedItemAttr('subsystemBonusCaldariCore2'), skill='Caldari Core Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanMagnetometricStrengthBonus', src.getModifiedItemAttr('subsystemBonusCaldariCore2'), skill='Caldari Core Systems') class Effect4327(EffectDef): """ subsystemBonusAmarrOffensive3DroneDamageHP Used by: Subsystem: Legion Offensive - Assault Optimization """ type = 'passive' @staticmethod def handler(fit, src, context): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'hp', src.getModifiedItemAttr('subsystemBonusAmarrOffensive3'), skill='Amarr Offensive Systems') fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'armorHP', src.getModifiedItemAttr('subsystemBonusAmarrOffensive3'), skill='Amarr Offensive Systems') fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'shieldCapacity', src.getModifiedItemAttr('subsystemBonusAmarrOffensive3'), skill='Amarr Offensive Systems') fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('subsystemBonusAmarrOffensive3'), skill='Amarr Offensive Systems') class Effect4330(EffectDef): """ subsystemBonusAmarrOffensive3EnergyWeaponMaxRange Used by: Subsystem: Legion Offensive - Liquid Crystal Magnifiers """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'maxRange', module.getModifiedItemAttr('subsystemBonusAmarrOffensive3'), skill='Amarr Offensive Systems') class Effect4331(EffectDef): """ subsystemBonusCaldariOffensive3HMLHAMVelocity Used by: Subsystem: Tengu Offensive - Accelerated Ejection Bay """ type = 'passive' @staticmethod def handler(fit, src, context): 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') class Effect4342(EffectDef): """ subsystemBonusMinmatarCore2MaxTargetingRange Used by: Subsystem: Loki Core - Dissolution Sequencer """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('maxTargetRange', src.getModifiedItemAttr('subsystemBonusMinmatarCore2'), skill='Minmatar Core Systems') class Effect4343(EffectDef): """ subsystemBonusAmarrCore2MaxTargetingRange Used by: Subsystem: Legion Core - Dissolution Sequencer """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('maxTargetRange', src.getModifiedItemAttr('subsystemBonusAmarrCore2'), skill='Amarr Core Systems') class Effect4347(EffectDef): """ subsystemBonusGallenteOffensive3TurretTracking Used by: Subsystem: Proteus Offensive - Drone Synthesis Projector Subsystem: Proteus Offensive - Hybrid Encoding Platform """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'trackingSpeed', module.getModifiedItemAttr('subsystemBonusGallenteOffensive3'), skill='Gallente Offensive Systems') class Effect4351(EffectDef): """ subsystemBonusMinmatarOffensive3TurretTracking Used by: Subsystem: Loki Offensive - Projectile Scoping Array """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'trackingSpeed', module.getModifiedItemAttr('subsystemBonusMinmatarOffensive3'), skill='Minmatar Offensive Systems') class Effect4358(EffectDef): """ ecmRangeBonusModuleEffect Used by: Modules from group: ECM Stabilizer (6 of 6) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'maxRange', module.getModifiedItemAttr('ecmRangeBonus'), stackingPenalties=True) class Effect4360(EffectDef): """ subsystemBonusAmarrOffensiveMissileLauncherROF Used by: Subsystem: Legion Offensive - Assault Optimization """ type = 'passive' @staticmethod def handler(fit, src, context): 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') class Effect4362(EffectDef): """ subsystemBonusAmarrOffensive2MissileDamage Used by: Subsystem: Legion Offensive - Assault Optimization """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'explosiveDamage', src.getModifiedItemAttr('subsystemBonusAmarrOffensive2'), skill='Amarr Offensive Systems') fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'kineticDamage', src.getModifiedItemAttr('subsystemBonusAmarrOffensive2'), skill='Amarr Offensive Systems') fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'emDamage', src.getModifiedItemAttr('subsystemBonusAmarrOffensive2'), skill='Amarr Offensive Systems') fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'thermalDamage', src.getModifiedItemAttr('subsystemBonusAmarrOffensive2'), skill='Amarr Offensive Systems') class Effect4366(EffectDef): """ shipBonusMediumHybridDmgCC2 Used by: Ship: Falcon """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser') class Effect4369(EffectDef): """ subsystemBonusWarpBubbleImmune Used by: Subsystems named like: Propulsion Interdiction Nullifier (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.forceItemAttr('warpBubbleImmune', module.getModifiedItemAttr('warpBubbleImmuneModifier')) class Effect4370(EffectDef): """ caldariShipEwFalloffRangeCC2 Used by: Ship: Blackbird """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'falloffEffectiveness', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser') class Effect4372(EffectDef): """ caldariShipEwFalloffRangeCB3 Used by: Ship: Scorpion """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'falloffEffectiveness', ship.getModifiedItemAttr('shipBonusCB3'), skill='Caldari Battleship') class Effect4373(EffectDef): """ subSystemBonusAmarrOffensiveCommandBursts Used by: Subsystem: Legion Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'buffDuration', src.getModifiedItemAttr('subsystemBonusAmarrOffensive'), skill='Amarr Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff2Value', src.getModifiedItemAttr('subsystemBonusAmarrOffensive'), skill='Amarr Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff3Value', src.getModifiedItemAttr('subsystemBonusAmarrOffensive'), skill='Amarr Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff1Value', src.getModifiedItemAttr('subsystemBonusAmarrOffensive'), skill='Amarr Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff4Value', src.getModifiedItemAttr('subsystemBonusAmarrOffensive'), skill='Amarr Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff3Value', src.getModifiedItemAttr('subsystemBonusAmarrOffensive'), skill='Amarr Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff1Value', src.getModifiedItemAttr('subsystemBonusAmarrOffensive'), skill='Amarr Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff4Value', src.getModifiedItemAttr('subsystemBonusAmarrOffensive'), skill='Amarr Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff2Value', src.getModifiedItemAttr('subsystemBonusAmarrOffensive'), skill='Amarr Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'buffDuration', src.getModifiedItemAttr('subsystemBonusAmarrOffensive'), skill='Amarr Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff3Value', src.getModifiedItemAttr('subsystemBonusAmarrOffensive'), skill='Amarr Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff1Value', src.getModifiedItemAttr('subsystemBonusAmarrOffensive'), skill='Amarr Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff2Value', src.getModifiedItemAttr('subsystemBonusAmarrOffensive'), skill='Amarr Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'buffDuration', src.getModifiedItemAttr('subsystemBonusAmarrOffensive'), skill='Amarr Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff4Value', src.getModifiedItemAttr('subsystemBonusAmarrOffensive'), skill='Amarr Offensive Systems') class Effect4377(EffectDef): """ shipBonusTorpedoVelocityGF2 Used by: Ship: Nemesis Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate') class Effect4378(EffectDef): """ shipBonusTorpedoVelocityMF2 Used by: Ship: Hound """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate') class Effect4379(EffectDef): """ shipBonusTorpedoVelocity2AF Used by: Ship: Purifier """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'maxVelocity', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate') class Effect4380(EffectDef): """ shipBonusTorpedoVelocityCF2 Used by: Ship: Manticore """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate') class Effect4384(EffectDef): """ eliteReconBonusHeavyMissileVelocity Used by: Ship: Rook """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'maxVelocity', ship.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships') class Effect4385(EffectDef): """ eliteReconBonusHeavyAssaultMissileVelocity Used by: Ship: Rook """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'maxVelocity', ship.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships') class Effect4393(EffectDef): """ shipBonusEliteCover2TorpedoThermalDamage Used by: Ship: Nemesis Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'thermalDamage', ship.getModifiedItemAttr('eliteBonusCovertOps2'), skill='Covert Ops') class Effect4394(EffectDef): """ shipBonusEliteCover2TorpedoEMDamage Used by: Ship: Purifier """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'emDamage', ship.getModifiedItemAttr('eliteBonusCovertOps2'), skill='Covert Ops') class Effect4395(EffectDef): """ shipBonusEliteCover2TorpedoExplosiveDamage Used by: Ship: Hound Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'explosiveDamage', ship.getModifiedItemAttr('eliteBonusCovertOps2'), skill='Covert Ops') class Effect4396(EffectDef): """ shipBonusEliteCover2TorpedoKineticDamage Used by: Ship: Manticore """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'kineticDamage', ship.getModifiedItemAttr('eliteBonusCovertOps2'), skill='Covert Ops') class Effect4397(EffectDef): """ shipBonusGFTorpedoExplosionVelocity Used by: Ship: Nemesis """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'aoeVelocity', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate') class Effect4398(EffectDef): """ shipBonusMF1TorpedoExplosionVelocity Used by: Ship: Hound Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'aoeVelocity', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate') class Effect4399(EffectDef): """ shipBonusCF1TorpedoExplosionVelocity Used by: Ship: Manticore """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'aoeVelocity', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate') class Effect4400(EffectDef): """ shipBonusAF1TorpedoExplosionVelocity Used by: Ship: Purifier """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'aoeVelocity', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate') class Effect4413(EffectDef): """ shipBonusGF1TorpedoFlightTime Used by: Ship: Nemesis """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'explosionDelay', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate') class Effect4415(EffectDef): """ shipBonusMF1TorpedoFlightTime Used by: Ship: Hound Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'explosionDelay', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate') class Effect4416(EffectDef): """ shipBonusCF1TorpedoFlightTime Used by: Ship: Manticore """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'explosionDelay', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate') class Effect4417(EffectDef): """ shipBonusAF1TorpedoFlightTime Used by: Ship: Purifier """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'explosionDelay', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate') class Effect4451(EffectDef): """ ScanRadarStrengthModifierEffect Used by: Implants named like: Low grade Grail (5 of 6) """ type = 'passive' @staticmethod def handler(fit, implant, context): fit.ship.increaseItemAttr('scanRadarStrength', implant.getModifiedItemAttr('scanRadarStrengthModifier')) class Effect4452(EffectDef): """ ScanLadarStrengthModifierEffect Used by: Implants named like: Low grade Jackal (5 of 6) """ type = 'passive' @staticmethod def handler(fit, implant, context): fit.ship.increaseItemAttr('scanLadarStrength', implant.getModifiedItemAttr('scanLadarStrengthModifier')) class Effect4453(EffectDef): """ ScanGravimetricStrengthModifierEffect Used by: Implants named like: Low grade Talon (5 of 6) """ type = 'passive' @staticmethod def handler(fit, implant, context): fit.ship.increaseItemAttr('scanGravimetricStrength', implant.getModifiedItemAttr('scanGravimetricStrengthModifier')) class Effect4454(EffectDef): """ ScanMagnetometricStrengthModifierEffect Used by: Implants named like: Low grade Spur (5 of 6) """ type = 'passive' @staticmethod def handler(fit, implant, context): fit.ship.increaseItemAttr('scanMagnetometricStrength', implant.getModifiedItemAttr('scanMagnetometricStrengthModifier')) class Effect4456(EffectDef): """ federationsetbonus3 Used by: Implants named like: High grade Spur (6 of 6) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context): fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'), 'scanMagnetometricStrengthPercent', implant.getModifiedItemAttr('implantSetFederationNavy')) class Effect4457(EffectDef): """ imperialsetbonus3 Used by: Implants named like: High grade Grail (6 of 6) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context): fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'), 'scanRadarStrengthPercent', implant.getModifiedItemAttr('implantSetImperialNavy')) class Effect4458(EffectDef): """ republicsetbonus3 Used by: Implants named like: High grade Jackal (6 of 6) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context): fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'), 'scanLadarStrengthPercent', implant.getModifiedItemAttr('implantSetRepublicFleet')) class Effect4459(EffectDef): """ caldarisetbonus3 Used by: Implants named like: High grade Talon (6 of 6) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context): fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'), 'scanGravimetricStrengthPercent', implant.getModifiedItemAttr('implantSetCaldariNavy')) class Effect4460(EffectDef): """ imperialsetLGbonus Used by: Implants named like: Low grade Grail (6 of 6) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context): fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'), 'scanRadarStrengthModifier', implant.getModifiedItemAttr('implantSetLGImperialNavy')) class Effect4461(EffectDef): """ federationsetLGbonus Used by: Implants named like: Low grade Spur (6 of 6) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context): fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'), 'scanMagnetometricStrengthModifier', implant.getModifiedItemAttr('implantSetLGFederationNavy')) class Effect4462(EffectDef): """ caldarisetLGbonus Used by: Implants named like: Low grade Talon (6 of 6) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context): fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'), 'scanGravimetricStrengthModifier', implant.getModifiedItemAttr('implantSetLGCaldariNavy')) class Effect4463(EffectDef): """ republicsetLGbonus Used by: Implants named like: Low grade Jackal (6 of 6) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context): fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'), 'scanLadarStrengthModifier', implant.getModifiedItemAttr('implantSetLGRepublicFleet')) class Effect4464(EffectDef): """ shipProjectileRofMF Used by: Ship: Claw """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'speed', src.getModifiedItemAttr('shipBonusMF'), stackingPenalties=True, skill='Minmatar Frigate') class Effect4471(EffectDef): """ shipBonusStasisMF2 Used by: Ship: Caedes Ship: Cruor Ship: Freki """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate') class Effect4472(EffectDef): """ shipProjectileDmgMC Used by: Ship: Mimir """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser') class Effect4473(EffectDef): """ shipVelocityBonusATC1 Used by: Ship: Adrestia Ship: Mimir """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('shipBonusATC1')) class Effect4474(EffectDef): """ shipMTMaxRangeBonusATC Used by: Ship: Mimir """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusATC2')) class Effect4475(EffectDef): """ shipMTFalloffBonusATC Used by: Ship: Mimir """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusATC2')) class Effect4476(EffectDef): """ shipMTFalloffBonusATF Used by: Ship: Freki """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusATF2')) class Effect4477(EffectDef): """ shipMTMaxRangeBonusATF Used by: Ship: Freki """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusATF2')) class Effect4478(EffectDef): """ shipBonusAfterburnerCapNeedATF Used by: Ship: Freki """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Propulsion Module', 'capacitorNeed', ship.getModifiedItemAttr('shipBonusATF1')) class Effect4479(EffectDef): """ shipBonusSurveyProbeExplosionDelaySkillSurveyCovertOps3 Used by: Ships from group: Covert Ops (5 of 8) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Survey Probe', 'explosionDelay', ship.getModifiedItemAttr('eliteBonusCovertOps3'), skill='Covert Ops') class Effect4482(EffectDef): """ shipETOptimalRange2AF Used by: Ship: Imperial Navy Slicer Ship: Pacifier """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate') class Effect4484(EffectDef): """ shipPTurretFalloffBonusGB Used by: Ship: Machariel """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusGB'), skill='Gallente Battleship') class Effect4485(EffectDef): """ shipBonusStasisWebSpeedFactorMB Used by: Ship: Vindicator """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'speedFactor', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship') class Effect4489(EffectDef): """ superWeaponAmarr Used by: Module: 'Judgment' Electromagnetic Doomsday """ type = 'active' class Effect4490(EffectDef): """ superWeaponCaldari Used by: Module: 'Oblivion' Kinetic Doomsday """ type = 'active' class Effect4491(EffectDef): """ superWeaponGallente Used by: Module: 'Aurora Ominae' Thermal Doomsday """ type = 'active' class Effect4492(EffectDef): """ superWeaponMinmatar Used by: Module: 'Gjallarhorn' Explosive Doomsday """ type = 'active' class Effect4510(EffectDef): """ shipStasisWebStrengthBonusMC2 Used by: Ship: Victor Ship: Vigilant """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'speedFactor', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser') class Effect4512(EffectDef): """ shipPTurretFalloffBonusGC Used by: Ship: Cynabal Ship: Moracha """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser') class Effect4513(EffectDef): """ shipStasisWebStrengthBonusMF2 Used by: Ship: Daredevil Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'speedFactor', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate') class Effect4515(EffectDef): """ shipFalloffBonusMF Used by: Ship: Chremoas Ship: Dramiel """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate') class Effect4516(EffectDef): """ shipHTurretFalloffBonusGC Used by: Ship: Victor Ship: Vigilant """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser') class Effect4527(EffectDef): """ gunneryFalloffBonusOnline Used by: Modules from group: Tracking Enhancer (10 of 10) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'falloff', module.getModifiedItemAttr('falloffBonus'), stackingPenalties=True) class Effect4555(EffectDef): """ capitalLauncherSkillCruiseCitadelEmDamage1 Used by: Skill: XL Cruise Missiles """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'emDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect4556(EffectDef): """ capitalLauncherSkillCruiseCitadelExplosiveDamage1 Used by: Skill: XL Cruise Missiles """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'explosiveDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect4557(EffectDef): """ capitalLauncherSkillCruiseCitadelKineticDamage1 Used by: Skill: XL Cruise Missiles """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'kineticDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect4558(EffectDef): """ capitalLauncherSkillCruiseCitadelThermalDamage1 Used by: Skill: XL Cruise Missiles """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'thermalDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect4559(EffectDef): """ gunneryMaxRangeFalloffTrackingSpeedBonus Used by: Modules from group: Tracking Computer (11 of 11) """ type = 'active' @staticmethod def handler(fit, module, context): for attr in ('maxRange', 'falloff', 'trackingSpeed'): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), attr, module.getModifiedItemAttr('%sBonus' % attr), stackingPenalties=True) class Effect4575(EffectDef): """ industrialCoreEffect2 Used by: Variations of module: Industrial Core I (2 of 2) """ runTime = 'early' type = 'active' @staticmethod def handler(fit, src, context): fit.extraAttributes['siege'] = True fit.ship.boostItemAttr('maxVelocity', src.getModifiedItemAttr('speedFactor'), stackingPenalties=True) fit.ship.multiplyItemAttr('mass', src.getModifiedItemAttr('siegeMassMultiplier')) fit.ship.multiplyItemAttr('scanResolution', src.getModifiedItemAttr('scanResolutionMultiplier'), stackingPenalties=True) # Remote Shield Repper Bonuses fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Emission Systems'), 'duration', src.getModifiedItemAttr('industrialCoreRemoteLogisticsDurationBonus'), ) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Emission Systems'), 'maxRange', src.getModifiedItemAttr('industrialCoreRemoteLogisticsRangeBonus'), stackingPenalties=True ) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Emission Systems'), 'capacitorNeed', src.getModifiedItemAttr('industrialCoreRemoteLogisticsDurationBonus') ) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Emission Systems'), 'falloffEffectiveness', src.getModifiedItemAttr('industrialCoreRemoteLogisticsRangeBonus'), stackingPenalties=True ) # Local Shield Repper Bonuses fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Operation'), 'duration', src.getModifiedItemAttr('industrialCoreLocalLogisticsDurationBonus'), ) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('industrialCoreLocalLogisticsAmountBonus'), stackingPenalties=True ) # Mining Burst Bonuses fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff1Value', src.getModifiedItemAttr('industrialCoreBonusMiningBurstStrength'), ) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff2Value', src.getModifiedItemAttr('industrialCoreBonusMiningBurstStrength'), ) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff3Value', src.getModifiedItemAttr('industrialCoreBonusMiningBurstStrength'), ) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff4Value', src.getModifiedItemAttr('industrialCoreBonusMiningBurstStrength'), ) # Command Burst Range Bonus fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'maxRange', src.getModifiedItemAttr('industrialCoreBonusCommandBurstRange'), stackingPenalties=True ) # Drone Bonuses fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Ice Harvesting Drone Operation'), 'duration', src.getModifiedItemAttr('industrialCoreBonusDroneIceHarvesting'), ) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Mining Drone Operation'), 'miningAmount', src.getModifiedItemAttr('industrialCoreBonusDroneMining'), ) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'maxVelocity', src.getModifiedItemAttr('industrialCoreBonusDroneVelocity'), ) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('industrialCoreBonusDroneDamageHP'), stackingPenalties=True ) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'shieldCapacity', src.getModifiedItemAttr('industrialCoreBonusDroneDamageHP'), ) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'armorHP', src.getModifiedItemAttr('industrialCoreBonusDroneDamageHP'), ) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'hp', src.getModifiedItemAttr('industrialCoreBonusDroneDamageHP'), ) # Todo: remote impedance (no reps, etc) fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('siegeModeWarpStatus')) fit.ship.boostItemAttr('remoteRepairImpedance', src.getModifiedItemAttr('remoteRepairImpedanceBonus')) fit.ship.increaseItemAttr('disallowTethering', src.getModifiedItemAttr('disallowTethering')) fit.ship.boostItemAttr('sensorDampenerResistance', src.getModifiedItemAttr('sensorDampenerResistanceBonus')) fit.ship.boostItemAttr('remoteAssistanceImpedance', src.getModifiedItemAttr('remoteAssistanceImpedanceBonus')) fit.ship.increaseItemAttr('disallowDocking', src.getModifiedItemAttr('disallowDocking')) class Effect4576(EffectDef): """ eliteBonusLogisticsTrackingLinkFalloffBonus1 Used by: Ship: Scimitar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer', 'falloffBonus', ship.getModifiedItemAttr('eliteBonusLogistics1'), skill='Logistics Cruisers') class Effect4577(EffectDef): """ eliteBonusLogisticsTrackingLinkFalloffBonus2 Used by: Ship: Oneiros """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer', 'falloffBonus', ship.getModifiedItemAttr('eliteBonusLogistics2'), skill='Logistics Cruisers') class Effect4579(EffectDef): """ droneRigStasisWebSpeedFactorBonus Used by: Modules named like: Stasis Drone Augmentor (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.drones.filteredItemBoost(lambda drone: drone.item.group.name == 'Stasis Webifying Drone', 'speedFactor', module.getModifiedItemAttr('webSpeedFactorBonus')) class Effect4619(EffectDef): """ shipBonusDroneDamageGF2 Used by: Ship: Utu """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate') class Effect4620(EffectDef): """ shipBonusWarpScramblerMaxRangeGF2 Used by: Ship: Garmur Ship: Utu """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate') class Effect4621(EffectDef): """ shipBonusHeatDamageATF1 Used by: Ship: Cambion Ship: Etana Ship: Utu """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', ship.getModifiedItemAttr('shipBonusATF1')) class Effect4622(EffectDef): """ shipBonusSmallHybridMaxRangeATF2 Used by: Ship: Utu """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusATF2')) class Effect4623(EffectDef): """ shipBonusSmallHybridTrackingSpeedATF2 Used by: Ship: Utu """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusATF2')) class Effect4624(EffectDef): """ shipBonusHybridTrackingATC2 Used by: Ship: Adrestia """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusATC2')) class Effect4625(EffectDef): """ shipBonusHybridFalloffATC2 Used by: Ship: Adrestia """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusATC2')) class Effect4626(EffectDef): """ shipBonusWarpScramblerMaxRangeGC2 Used by: Ship: Adrestia Ship: Orthrus """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser') class Effect4635(EffectDef): """ eliteBonusMaraudersCruiseAndTorpedoDamageRole1 Used by: Ship: Golem """ type = 'passive' @staticmethod def handler(fit, ship, context): 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')) class Effect4636(EffectDef): """ shipBonusAoeVelocityCruiseAndTorpedoCB2 Used by: Ship: Golem """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Cruise Missiles') or mod.charge.requiresSkill('Torpedoes'), 'aoeVelocity', ship.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship') class Effect4637(EffectDef): """ shipCruiseAndTorpedoVelocityBonusCB3 Used by: Ship: Golem Ship: Widow """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Cruise Missiles') or mod.charge.requiresSkill('Torpedoes'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusCB3'), skill='Caldari Battleship') class Effect4640(EffectDef): """ shipArmorEMAndExpAndkinAndThmResistanceAC2 Used by: Ships named like: Stratios (2 of 2) Ship: Sacrilege Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, ship, context): damageTypes = ('Em', 'Explosive', 'Kinetic', 'Thermal') for damageType in damageTypes: fit.ship.boostItemAttr('armor{0}DamageResonance'.format(damageType), ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser') class Effect4643(EffectDef): """ shipHeavyAssaultMissileEMAndExpAndKinAndThmDmgAC1 Used by: Ship: Sacrilege """ type = 'passive' @staticmethod def handler(fit, ship, context): 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') class Effect4645(EffectDef): """ eliteBonusHeavyGunshipHeavyAndHeavyAssaultAndAssaultMissileLauncherROF Used by: Ship: Sacrilege """ type = 'passive' @staticmethod def handler(fit, ship, context): 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') class Effect4648(EffectDef): """ eliteBonusBlackOpsECMGravAndLadarAndMagnetometricAndRadarStrength1 Used by: Ship: Widow """ type = 'passive' @staticmethod def handler(fit, ship, context): 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') class Effect4649(EffectDef): """ shipCruiseAndSiegeLauncherROFBonus2CB Used by: Ship: Widow """ type = 'passive' @staticmethod def handler(fit, ship, context): 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') class Effect4667(EffectDef): """ shipBonusNoctisSalvageCycle Used by: Ship: Noctis """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Salvaging'), 'duration', ship.getModifiedItemAttr('shipBonusOreIndustrial1'), skill='ORE Industrial') class Effect4668(EffectDef): """ shipBonusNoctisTractorCycle Used by: Ship: Noctis """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Tractor Beam', 'duration', ship.getModifiedItemAttr('shipBonusOreIndustrial1'), skill='ORE Industrial') class Effect4669(EffectDef): """ shipBonusNoctisTractorVelocity Used by: Ship: Noctis """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Tractor Beam', 'maxTractorVelocity', ship.getModifiedItemAttr('shipBonusOreIndustrial2'), skill='ORE Industrial') class Effect4670(EffectDef): """ shipBonusNoctisTractorRange Used by: Ship: Noctis """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Tractor Beam', 'maxRange', ship.getModifiedItemAttr('shipBonusOreIndustrial2'), skill='ORE Industrial') class Effect4728(EffectDef): """ OffensiveDefensiveReduction Used by: Celestials named like: Drifter Incursion (6 of 6) Celestials named like: Incursion ship attributes effects (3 of 3) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): 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')) # Nerf smartbomb damage fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Smart Bomb', '{0}Damage'.format(damage), beacon.getModifiedItemAttr('systemEffectDamageReduction')) # Nerf armor resistances fit.ship.boostItemAttr('armor{0}DamageResonance'.format(damage.capitalize()), beacon.getModifiedItemAttr('armor{0}DamageResistanceBonus'.format(damage.capitalize()))) # Nerf shield resistances fit.ship.boostItemAttr('shield{0}DamageResonance'.format(damage.capitalize()), beacon.getModifiedItemAttr('shield{0}DamageResistanceBonus'.format(damage.capitalize()))) # Nerf drone damage output fit.drones.filteredItemBoost(lambda drone: True, 'damageMultiplier', beacon.getModifiedItemAttr('systemEffectDamageReduction')) # Nerf turret damage output fit.modules.filteredItemBoost(lambda module: module.item.requiresSkill('Gunnery'), 'damageMultiplier', beacon.getModifiedItemAttr('systemEffectDamageReduction')) class Effect4760(EffectDef): """ subsystemBonusCaldariPropulsionWarpCapacitor Used by: Subsystem: Tengu Propulsion - Interdiction Nullifier """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('warpCapacitorNeed', src.getModifiedItemAttr('subsystemBonusCaldariPropulsion'), skill='Caldari Propulsion Systems') class Effect4775(EffectDef): """ shipEnergyNeutralizerTransferAmountBonusAF2 Used by: Ship: Malice """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate') class Effect4782(EffectDef): """ shipBonusSmallEnergyWeaponOptimalRangeATF2 Used by: Ship: Malice """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusATF2')) class Effect4789(EffectDef): """ shipBonusSmallEnergyTurretDamageATF1 Used by: Ship: Malice """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusATF1')) class Effect4793(EffectDef): """ shipBonusMissileLauncherHeavyROFATC1 Used by: Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy', 'speed', ship.getModifiedItemAttr('shipBonusATC1')) class Effect4794(EffectDef): """ shipBonusMissileLauncherAssaultROFATC1 Used by: Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rapid Light', 'speed', ship.getModifiedItemAttr('shipBonusATC1')) class Effect4795(EffectDef): """ shipBonusMissileLauncherHeavyAssaultROFATC1 Used by: Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy Assault', 'speed', ship.getModifiedItemAttr('shipBonusATC1')) class Effect4799(EffectDef): """ eliteBonusBlackOpsECMBurstGravAndLadarAndMagnetoAndRadar Used by: Ship: Widow """ type = 'passive' @staticmethod def handler(fit, ship, context): 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') class Effect4804(EffectDef): """ dataMiningSkillBoostAccessDifficultyBonusAbsolutePercent Used by: Skill: Archaeology Skill: Hacking Skill: Salvaging """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill(skill), 'accessDifficultyBonus', skill.getModifiedItemAttr('accessDifficultyBonusAbsolutePercent') * skill.level) class Effect4809(EffectDef): """ ecmGravimetricStrengthBonusPercent Used by: Modules from group: ECM Stabilizer (6 of 6) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanGravimetricStrengthBonus', module.getModifiedItemAttr('ecmStrengthBonusPercent'), stackingPenalties=True) class Effect4810(EffectDef): """ ecmLadarStrengthBonusPercent Used by: Modules from group: ECM Stabilizer (6 of 6) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanLadarStrengthBonus', module.getModifiedItemAttr('ecmStrengthBonusPercent'), stackingPenalties=True) class Effect4811(EffectDef): """ ecmMagnetometricStrengthBonusPercent Used by: Modules from group: ECM Stabilizer (6 of 6) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanMagnetometricStrengthBonus', module.getModifiedItemAttr('ecmStrengthBonusPercent'), stackingPenalties=True) class Effect4812(EffectDef): """ ecmRadarStrengthBonusPercent Used by: Modules from group: ECM Stabilizer (6 of 6) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanRadarStrengthBonus', module.getModifiedItemAttr('ecmStrengthBonusPercent'), stackingPenalties=True) class Effect4814(EffectDef): """ jumpPortalConsumptionBonusPercentSkill Used by: Skill: Jump Portal Generation """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), 'consumptionQuantity', skill.getModifiedItemAttr('consumptionQuantityBonusPercent') * skill.level) class Effect4817(EffectDef): """ salvagerModuleDurationReduction Used by: Implant: Poteque 'Prospector' Environmental Analysis EY-1005 """ type = 'passive' @staticmethod def handler(fit, implant, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Salvager', 'duration', implant.getModifiedItemAttr('durationBonus')) class Effect4820(EffectDef): """ bcLargeEnergyTurretPowerNeedBonus Used by: Ship: Oracle """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'power', ship.getModifiedItemAttr('bcLargeTurretPower')) class Effect4821(EffectDef): """ bcLargeHybridTurretPowerNeedBonus Used by: Ship: Naga Ship: Talos """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'power', ship.getModifiedItemAttr('bcLargeTurretPower')) class Effect4822(EffectDef): """ bcLargeProjectileTurretPowerNeedBonus Used by: Ship: Tornado """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'power', ship.getModifiedItemAttr('bcLargeTurretPower')) class Effect4823(EffectDef): """ bcLargeEnergyTurretCPUNeedBonus Used by: Ship: Oracle """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'cpu', ship.getModifiedItemAttr('bcLargeTurretCPU')) class Effect4824(EffectDef): """ bcLargeHybridTurretCPUNeedBonus Used by: Ship: Naga Ship: Talos """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'cpu', ship.getModifiedItemAttr('bcLargeTurretCPU')) class Effect4825(EffectDef): """ bcLargeProjectileTurretCPUNeedBonus Used by: Ship: Tornado """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'cpu', ship.getModifiedItemAttr('bcLargeTurretCPU')) class Effect4826(EffectDef): """ bcLargeEnergyTurretCapacitorNeedBonus Used by: Ship: Oracle """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('bcLargeTurretCap')) class Effect4827(EffectDef): """ bcLargeHybridTurretCapacitorNeedBonus Used by: Ship: Naga Ship: Talos """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'capacitorNeed', ship.getModifiedItemAttr('bcLargeTurretCap')) class Effect4867(EffectDef): """ setBonusChristmasPowergrid Used by: Implants named like: Genolution Core Augmentation CA (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant', 'powerEngineeringOutputBonus', implant.getModifiedItemAttr('implantSetChristmas')) class Effect4868(EffectDef): """ setBonusChristmasCapacitorCapacity Used by: Implants named like: Genolution Core Augmentation CA (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant', 'capacitorCapacityBonus', implant.getModifiedItemAttr('implantSetChristmas')) class Effect4869(EffectDef): """ setBonusChristmasCPUOutput Used by: Implants named like: Genolution Core Augmentation CA (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant', 'cpuOutputBonus2', implant.getModifiedItemAttr('implantSetChristmas')) class Effect4871(EffectDef): """ setBonusChristmasCapacitorRecharge2 Used by: Implants named like: Genolution Core Augmentation CA (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant', 'capRechargeBonus', implant.getModifiedItemAttr('implantSetChristmas')) class Effect4896(EffectDef): """ shipBonusDroneHitpointsGF2 Used by: Ship: Ishkur """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'hp', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate') class Effect4897(EffectDef): """ shipBonusDroneArmorHitpointsGF2 Used by: Ship: Ishkur """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'armorHP', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate') class Effect4898(EffectDef): """ shipBonusDroneShieldHitpointsGF2 Used by: Ship: Ishkur """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate') class Effect4901(EffectDef): """ shipMissileSpeedBonusAF Used by: Ship: Vengeance """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'speed', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate') class Effect4902(EffectDef): """ MWDSignatureRadiusRoleBonus Used by: Ships from group: Assault Frigate (8 of 12) Ships from group: Command Destroyer (4 of 4) Ships from group: Heavy Assault Cruiser (8 of 11) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'signatureRadiusBonus', ship.getModifiedItemAttr('MWDSignatureRadiusBonus')) class Effect4906(EffectDef): """ systemDamageFighters Used by: Celestials named like: Magnetar Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.drones.filteredItemMultiply(lambda drone: drone.item.requiresSkill('Fighters'), 'damageMultiplier', beacon.getModifiedItemAttr('damageMultiplierMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect4911(EffectDef): """ modifyShieldRechargeRatePassive Used by: Modules named like: Processor Overclocking Unit (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.multiplyItemAttr('shieldRechargeRate', module.getModifiedItemAttr('shieldRechargeRateMultiplier')) class Effect4921(EffectDef): """ microJumpDrive Used by: Modules from group: Micro Jump Drive (2 of 2) """ type = 'active' @staticmethod def handler(fit, module, context): fit.ship.boostItemAttr('signatureRadius', module.getModifiedItemAttr('signatureRadiusBonusPercent')) class Effect4923(EffectDef): """ skillMJDdurationBonus Used by: Skill: Micro Jump Drive Operation """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Micro Jump Drive Operation'), 'duration', skill.getModifiedItemAttr('durationBonus') * skill.level) class Effect4928(EffectDef): """ adaptiveArmorHardener Used by: Module: Reactive Armor Hardener """ runTime = 'late' type = 'active' @staticmethod def handler(fit, module, context): # pyfalog = Logger(__name__) damagePattern = fit.damagePattern # pyfalog.debug('==============================') static_adaptive_behavior = eos.config.settings['useStaticAdaptiveArmorHardener'] if (damagePattern.emAmount == damagePattern.thermalAmount == damagePattern.kineticAmount == damagePattern.explosiveAmount) and static_adaptive_behavior: # pyfalog.debug('Setting adaptivearmorhardener resists to uniform profile.') 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') class Effect4934(EffectDef): """ shipArmorRepairingGF2 Used by: Ship: Incursus """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate') class Effect4936(EffectDef): """ fueledShieldBoosting Used by: Modules from group: Ancillary Shield Booster (8 of 8) """ runTime = 'late' type = 'active' @staticmethod def handler(fit, module, context): amount = module.getModifiedItemAttr('shieldBonus') speed = module.getModifiedItemAttr('duration') / 1000.0 fit.extraAttributes.increase('shieldRepair', amount / speed) class Effect4941(EffectDef): """ shipHybridDamageBonusCF2 Used by: Ship: Griffin Navy Issue Ship: Merlin """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate') class Effect4942(EffectDef): """ targetBreaker Used by: Module: Target Spectrum Breaker """ type = 'active' class Effect4945(EffectDef): """ skillTargetBreakerDurationBonus2 Used by: Skill: Target Breaker Amplification """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Breaker', 'duration', skill.getModifiedItemAttr('durationBonus') * skill.level) class Effect4946(EffectDef): """ skillTargetBreakerCapNeedBonus2 Used by: Skill: Target Breaker Amplification """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Breaker', 'capacitorNeed', skill.getModifiedItemAttr('capNeedBonus') * skill.level) class Effect4950(EffectDef): """ shipBonusShieldBoosterMB1a Used by: Ship: Maelstrom """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship') class Effect4951(EffectDef): """ shieldBoostAmplifierPassiveBooster Used by: Implants named like: Agency 'Hardshell' TB Dose (4 of 4) Implants named like: Blue Pill Booster (5 of 5) Implant: Antipharmakon Thureo """ type = 'passive' @staticmethod def handler(fit, container, context): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Operation') or mod.item.requiresSkill('Capital Shield Operation'), 'shieldBonus', container.getModifiedItemAttr('shieldBoostMultiplier')) class Effect4961(EffectDef): """ systemShieldRepairAmountShieldSkills Used by: Celestials named like: Cataclysmic Variable Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context): 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') class Effect4967(EffectDef): """ shieldBoosterDurationBonusShieldSkills Used by: Modules named like: Core Defense Operational Solidifier (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Operation') or mod.item.requiresSkill('Capital Shield Operation'), 'duration', module.getModifiedItemAttr('durationSkillBonus')) class Effect4970(EffectDef): """ 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): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('boosterShieldBoostAmountPenalty')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('boosterShieldBoostAmountPenalty')) class Effect4972(EffectDef): """ eliteBonusAssaultShipLightMissileROF Used by: Ship: Cambion """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Light', 'speed', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates') class Effect4973(EffectDef): """ eliteBonusAssaultShipRocketROF Used by: Ship: Cambion """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rocket', 'speed', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates') class Effect4974(EffectDef): """ eliteBonusMarauderShieldBonus2a Used by: Ship: Golem Ship: Vargur """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', ship.getModifiedItemAttr('eliteBonusViolators2'), skill='Marauders') class Effect4975(EffectDef): """ shipBonusMissileKineticlATF2 Used by: Ship: Cambion """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusATF2')) class Effect4976(EffectDef): """ skillReactiveArmorHardenerDurationBonus Used by: Skill: Resistance Phasing """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Resistance Shift Hardener', 'duration', src.getModifiedItemAttr('durationBonus') * lvl) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Resistance Phasing'), 'duration', src.getModifiedItemAttr('durationBonus') * lvl) class Effect4989(EffectDef): """ missileSkillAoeCloudSizeBonusAllIncludingCapitals Used by: Implants named like: Crash Booster (4 of 4) """ type = 'passive' @staticmethod def handler(fit, implant, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeCloudSize', implant.getModifiedItemAttr('aoeCloudSizeBonus')) class Effect4990(EffectDef): """ shipEnergyTCapNeedBonusRookie Used by: Ship: Hematos Ship: Impairor """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('rookieSETCapBonus')) class Effect4991(EffectDef): """ shipSETDmgBonusRookie Used by: Ship: Hematos Ship: Immolator Ship: Impairor """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('rookieSETDamageBonus')) class Effect4994(EffectDef): """ shipArmorEMResistanceRookie Used by: Ship: Devoter Ship: Gold Magnate Ship: Impairor Ship: Phobos Ship: Silver Magnate """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('armorEmDamageResonance', ship.getModifiedItemAttr('rookieArmorResistanceBonus')) class Effect4995(EffectDef): """ shipArmorEXResistanceRookie Used by: Ship: Devoter Ship: Gold Magnate Ship: Impairor Ship: Phobos Ship: Silver Magnate """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('armorExplosiveDamageResonance', ship.getModifiedItemAttr('rookieArmorResistanceBonus')) class Effect4996(EffectDef): """ shipArmorKNResistanceRookie Used by: Ship: Devoter Ship: Gold Magnate Ship: Impairor Ship: Phobos Ship: Silver Magnate """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('armorKineticDamageResonance', ship.getModifiedItemAttr('rookieArmorResistanceBonus')) class Effect4997(EffectDef): """ shipArmorTHResistanceRookie Used by: Ship: Devoter Ship: Gold Magnate Ship: Impairor Ship: Phobos Ship: Silver Magnate """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('armorThermalDamageResonance', ship.getModifiedItemAttr('rookieArmorResistanceBonus')) class Effect4999(EffectDef): """ shipHybridRangeBonusRookie Used by: Ship: Ibis """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('rookieSHTOptimalBonus')) class Effect5000(EffectDef): """ shipMissileKineticDamageRookie Used by: Ship: Ibis """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('rookieMissileKinDamageBonus')) class Effect5008(EffectDef): """ shipShieldEMResistanceRookie Used by: Ships from group: Heavy Interdiction Cruiser (3 of 5) Ship: Ibis Ship: Taipan """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('shieldEmDamageResonance', ship.getModifiedItemAttr('rookieShieldResistBonus')) class Effect5009(EffectDef): """ shipShieldExplosiveResistanceRookie Used by: Ships from group: Heavy Interdiction Cruiser (3 of 5) Ship: Ibis Ship: Taipan """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('shieldExplosiveDamageResonance', ship.getModifiedItemAttr('rookieShieldResistBonus')) class Effect5011(EffectDef): """ shipShieldKineticResistanceRookie Used by: Ships from group: Heavy Interdiction Cruiser (3 of 5) Ship: Ibis Ship: Taipan """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('shieldKineticDamageResonance', ship.getModifiedItemAttr('rookieShieldResistBonus')) class Effect5012(EffectDef): """ shipShieldThermalResistanceRookie Used by: Ships from group: Heavy Interdiction Cruiser (3 of 5) Ship: Ibis Ship: Taipan """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('shieldThermalDamageResonance', ship.getModifiedItemAttr('rookieShieldResistBonus')) class Effect5013(EffectDef): """ shipSHTDmgBonusRookie Used by: Ship: Velator Ship: Violator Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('rookieSHTDamageBonus')) class Effect5014(EffectDef): """ shipBonusDroneDamageMultiplierRookie Used by: Ship: Gnosis Ship: Praxis Ship: Sunesis Ship: Taipan Ship: Velator """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', ship.getModifiedItemAttr('rookieDroneBonus')) class Effect5015(EffectDef): """ shipBonusEwRemoteSensorDampenerMaxTargetRangeBonusRookie Used by: Ship: Velator """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'maxTargetRangeBonus', ship.getModifiedItemAttr('rookieDampStrengthBonus')) class Effect5016(EffectDef): """ shipBonusEwRemoteSensorDampenerScanResolutionBonusRookie Used by: Ship: Velator """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'scanResolutionBonus', ship.getModifiedItemAttr('rookieDampStrengthBonus')) class Effect5017(EffectDef): """ shipArmorRepairingRookie Used by: Ship: Velator """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('rookieArmorRepBonus')) class Effect5018(EffectDef): """ shipVelocityBonusRookie Used by: Ship: Reaper """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('rookieShipVelocityBonus')) class Effect5019(EffectDef): """ minmatarShipEwTargetPainterRookie Used by: Ship: Reaper """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'signatureRadiusBonus', ship.getModifiedItemAttr('rookieTargetPainterStrengthBonus')) class Effect5020(EffectDef): """ shipSPTDmgBonusRookie Used by: Ship: Echo Ship: Reaper """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('rookieSPTDamageBonus')) class Effect5021(EffectDef): """ shipShieldBoostRookie Used by: Ship: Immolator Ship: Reaper """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', ship.getModifiedItemAttr('rookieShieldBoostBonus')) class Effect5028(EffectDef): """ shipECMScanStrengthBonusRookie Used by: Ship: Ibis """ type = 'passive' @staticmethod def handler(fit, ship, context): 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')) class Effect5029(EffectDef): """ shipBonusDroneMiningAmountRole Used by: Ships from group: Industrial Command Ship (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Mining Drone Operation'), 'miningAmount', src.getModifiedItemAttr('roleBonusDroneMiningYield'), ) class Effect5030(EffectDef): """ shipBonusMiningDroneAmountPercentRookie Used by: Ship: Gnosis Ship: Praxis Ship: Taipan Ship: Velator """ type = 'passive' @staticmethod def handler(fit, container, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Mining Drone Operation'), 'miningAmount', container.getModifiedItemAttr('rookieDroneBonus')) class Effect5035(EffectDef): """ shipBonusDroneHitpointsRookie Used by: Variations of ship: Procurer (2 of 2) Ship: Gnosis Ship: Praxis Ship: Sunesis Ship: Taipan Ship: Velator """ type = 'passive' @staticmethod def handler(fit, ship, context): for type in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), type, ship.getModifiedItemAttr('rookieDroneBonus')) class Effect5036(EffectDef): """ shipBonusSalvageCycleAF Used by: Ship: Magnate """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Salvaging'), 'duration', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate') class Effect5045(EffectDef): """ shipBonusSalvageCycleCF Used by: Ship: Heron """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Salvaging'), 'duration', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate') class Effect5048(EffectDef): """ shipBonusSalvageCycleGF Used by: Ship: Imicus """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Salvaging'), 'duration', ship.getModifiedItemAttr('shipBonusGF'), skill='Amarr Frigate') class Effect5051(EffectDef): """ shipBonusSalvageCycleMF Used by: Ship: Probe """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Salvaging'), 'duration', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate') class Effect5055(EffectDef): """ iceHarvesterDurationMultiplier Used by: Ship: Endurance """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'duration', ship.getModifiedItemAttr('iceHarvestCycleBonus')) class Effect5058(EffectDef): """ miningYieldMultiplyPassive Used by: Variations of ship: Venture (3 of 3) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Mining'), 'miningAmount', module.getModifiedItemAttr('miningAmountMultiplier')) class Effect5059(EffectDef): """ shipBonusIceHarvesterDurationORE3 Used by: Ships from group: Exhumer (3 of 3) Ships from group: Mining Barge (3 of 3) """ type = 'passive' @staticmethod def handler(fit, container, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'duration', container.getModifiedItemAttr('shipBonusORE3'), skill='Mining Barge') class Effect5066(EffectDef): """ shipBonusTargetPainterOptimalMF1 Used by: Ship: Hyena Ship: Vigil """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Target Painting'), 'maxRange', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate') class Effect5067(EffectDef): """ shipBonusOreHoldORE2 Used by: Variations of ship: Retriever (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('specialOreHoldCapacity', ship.getModifiedItemAttr('shipBonusORE2'), skill='Mining Barge') class Effect5068(EffectDef): """ shipBonusShieldCapacityORE2 Used by: Variations of ship: Procurer (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('shieldCapacity', ship.getModifiedItemAttr('shipBonusORE2'), skill='Mining Barge') class Effect5069(EffectDef): """ mercoxitCrystalBonus Used by: Module: Medium Mercoxit Mining Crystal Optimization I """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Mercoxit Processing'), 'specialisationAsteroidYieldMultiplier', module.getModifiedItemAttr('miningAmountBonus')) class Effect5079(EffectDef): """ shipMissileKineticDamageCF2 Used by: Ship: Garmur """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate') class Effect5080(EffectDef): """ shipMissileVelocityCF Used by: Ship: Caldari Navy Hookbill Ship: Crow Ship: Kestrel """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate') class Effect5081(EffectDef): """ maxTargetingRangeBonusPostPercentPassive Used by: Modules named like: Ionic Field Projector (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRangeBonus'), stackingPenalties=True) class Effect5087(EffectDef): """ shipBonusDroneHitpointsGF Used by: Ship: Astero Ship: Maulus Navy Issue Ship: Tristan """ type = 'passive' @staticmethod def handler(fit, ship, context): for layer in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), layer, ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate') class Effect5090(EffectDef): """ shipShieldBoostMF Used by: Ship: Breacher Ship: Jaguar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate') class Effect5103(EffectDef): """ shipBonusShieldTransferCapNeedCF Used by: Variations of ship: Bantam (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate') class Effect5104(EffectDef): """ shipBonusShieldTransferBoostAmountCF2 Used by: Variations of ship: Bantam (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate') class Effect5105(EffectDef): """ shipBonusShieldTransferCapNeedMF Used by: Variations of ship: Burst (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate') class Effect5106(EffectDef): """ shipBonusShieldTransferBoostAmountMF2 Used by: Variations of ship: Burst (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate') class Effect5107(EffectDef): """ shipBonusRemoteArmorRepairCapNeedGF Used by: Variations of ship: Navitas (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', src.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate') class Effect5108(EffectDef): """ shipBonusRemoteArmorRepairAmountGF2 Used by: Variations of ship: Navitas (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate') class Effect5109(EffectDef): """ shipBonusRemoteArmorRepairCapNeedAF Used by: Ship: Deacon Ship: Inquisitor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', src.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate') class Effect5110(EffectDef): """ shipBonusRemoteArmorRepairAmount2AF Used by: Ship: Deacon Ship: Inquisitor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate') class Effect5111(EffectDef): """ shipBonusDroneTrackingGF Used by: Ship: Maulus Navy Issue Ship: Tristan """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate') class Effect5119(EffectDef): """ shipBonusScanProbeStrength2AF Used by: Ship: Magnate """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Scanner Probe', 'baseSensorStrength', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate') class Effect5121(EffectDef): """ energyTransferArrayTransferAmountBonus Used by: Ship: Augoror Ship: Osprey """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter', 'powerTransferAmount', ship.getModifiedItemAttr('energyTransferAmountBonus')) class Effect5122(EffectDef): """ shipBonusShieldTransferCapneedMC1 Used by: Ship: Scythe """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser') class Effect5123(EffectDef): """ shipBonusRemoteArmorRepairCapNeedAC1 Used by: Ship: Augoror """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', src.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser') class Effect5124(EffectDef): """ shipBonusRemoteArmorRepairAmountAC2 Used by: Ship: Augoror """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser') class Effect5125(EffectDef): """ shipBonusRemoteArmorRepairAmountGC2 Used by: Ship: Exequror """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser') class Effect5126(EffectDef): """ shipBonusShieldTransferBoostAmountCC2 Used by: Ship: Osprey """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser') class Effect5127(EffectDef): """ shipBonusShieldTransferBoostAmountMC2 Used by: Ship: Scythe """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser') class Effect5128(EffectDef): """ shipBonusEwRemoteSensorDampenerOptimalBonusGC1 Used by: Ship: Celestis """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'maxRange', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser') class Effect5129(EffectDef): """ minmatarShipEwTargetPainterMC1 Used by: Ship: Bellicose Ship: Rapier """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'signatureRadiusBonus', ship.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser') class Effect5131(EffectDef): """ shipMissileRofCC Used by: Ships named like: Caracal (2 of 2) Ship: Enforcer """ type = 'passive' @staticmethod def handler(fit, ship, context): 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') class Effect5132(EffectDef): """ shipPTurretFalloffBonusMC2 Used by: Ship: Enforcer Ship: Stabber """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser') class Effect5133(EffectDef): """ shipHTDamageBonusCC Used by: Ship: Moa """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser') class Effect5136(EffectDef): """ shipMETCDamageBonusAC Used by: Ship: Augoror Navy Issue Ship: Enforcer Ship: Maller Ship: Omen Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser') class Effect5139(EffectDef): """ shipMiningBonusOREfrig1 Used by: Variations of ship: Venture (3 of 3) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining'), 'miningAmount', module.getModifiedItemAttr('shipBonusOREfrig1'), skill='Mining Frigate') class Effect5142(EffectDef): """ GCHYieldMultiplyPassive Used by: Ship: Prospect Ship: Venture """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Gas Cloud Harvester', 'miningAmount', module.getModifiedItemAttr('miningAmountMultiplier')) class Effect5153(EffectDef): """ shipMissileVelocityPirateFactionRocket Used by: Ship: Corax Ship: Talwar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5156(EffectDef): """ shipGCHYieldBonusOREfrig2 Used by: Ship: Prospect Ship: Venture """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Gas Cloud Harvester', 'duration', module.getModifiedItemAttr('shipBonusOREfrig2'), skill='Mining Frigate') class Effect5162(EffectDef): """ skillReactiveArmorHardenerCapNeedBonus Used by: Skill: Resistance Phasing """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Resistance Shift Hardener', 'capacitorNeed', src.getModifiedItemAttr('capNeedBonus') * lvl) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Resistance Phasing'), 'capacitorNeed', src.getModifiedItemAttr('capNeedBonus') * lvl) class Effect5165(EffectDef): """ shipBonusDroneMWDboostrole Used by: Ship: Algos Ship: Dragoon """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5168(EffectDef): """ droneSalvageBonus Used by: Skill: Salvage Drone Operation """ type = 'passive' @staticmethod def handler(fit, container, context): fit.drones.filteredItemIncrease(lambda drone: drone.item.requiresSkill('Salvage Drone Operation'), 'accessDifficultyBonus', container.getModifiedItemAttr('accessDifficultyBonus') * container.level) class Effect5180(EffectDef): """ sensorCompensationSensorStrengthBonusGravimetric Used by: Skill: Gravimetric Sensor Compensation """ type = 'passive' @staticmethod def handler(fit, container, context): fit.ship.boostItemAttr('scanGravimetricStrength', container.getModifiedItemAttr('sensorStrengthBonus') * container.level) class Effect5181(EffectDef): """ sensorCompensationSensorStrengthBonusLadar Used by: Skill: Ladar Sensor Compensation """ type = 'passive' @staticmethod def handler(fit, container, context): fit.ship.boostItemAttr('scanLadarStrength', container.getModifiedItemAttr('sensorStrengthBonus') * container.level) class Effect5182(EffectDef): """ sensorCompensationSensorStrengthBonusMagnetometric Used by: Skill: Magnetometric Sensor Compensation """ type = 'passive' @staticmethod def handler(fit, container, context): fit.ship.boostItemAttr('scanMagnetometricStrength', container.getModifiedItemAttr('sensorStrengthBonus') * container.level) class Effect5183(EffectDef): """ sensorCompensationSensorStrengthBonusRadar Used by: Skill: Radar Sensor Compensation """ type = 'passive' @staticmethod def handler(fit, container, context): fit.ship.boostItemAttr('scanRadarStrength', container.getModifiedItemAttr('sensorStrengthBonus') * container.level) class Effect5185(EffectDef): """ shipEnergyVampireAmountBonusFixedAF2 Used by: Ship: Malice """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate') class Effect5187(EffectDef): """ shipBonusEwRemoteSensorDampenerFalloffBonusGC1 Used by: Ship: Celestis """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'falloffEffectiveness', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser') class Effect5188(EffectDef): """ trackingSpeedBonusEffectHybrids Used by: Modules named like: Hybrid Metastasis Adjuster (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'trackingSpeed', module.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=True) class Effect5189(EffectDef): """ trackingSpeedBonusEffectLasers Used by: Modules named like: Energy Metastasis Adjuster (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Weapon', 'trackingSpeed', module.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=True) class Effect5190(EffectDef): """ trackingSpeedBonusEffectProjectiles Used by: Modules named like: Projectile Metastasis Adjuster (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Projectile Weapon', 'trackingSpeed', module.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=True) class Effect5201(EffectDef): """ armorUpgradesMassPenaltyReductionBonus Used by: Skill: Armor Layering """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Reinforcer', 'massAddition', container.getModifiedItemAttr('massPenaltyReduction') * level) class Effect5205(EffectDef): """ shipSETTrackingBonusRookie Used by: Ship: Immolator """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'trackingSpeed', ship.getModifiedItemAttr('rookieSETTracking')) class Effect5206(EffectDef): """ shipSETOptimalBonusRookie Used by: Ship: Immolator """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'maxRange', ship.getModifiedItemAttr('rookieSETOptimal')) class Effect5207(EffectDef): """ shipNOSTransferAmountBonusRookie Used by: Ship: Hematos """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', ship.getModifiedItemAttr('rookieNosDrain')) class Effect5208(EffectDef): """ shipNeutDestabilizationAmountBonusRookie Used by: Ship: Hematos """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', ship.getModifiedItemAttr('rookieNeutDrain')) class Effect5209(EffectDef): """ shipWebVelocityBonusRookie Used by: Ship: Hematos Ship: Violator """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'speedFactor', ship.getModifiedItemAttr('rookieWebAmount')) class Effect5212(EffectDef): """ shipDroneMWDSpeedBonusRookie Used by: Ship: Taipan """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda mod: True, 'maxVelocity', ship.getModifiedItemAttr('rookieDroneMWDspeed')) class Effect5213(EffectDef): """ shipRocketMaxVelocityBonusRookie Used by: Ship: Taipan """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'maxVelocity', ship.getModifiedItemAttr('rookieRocketVelocity')) class Effect5214(EffectDef): """ shipLightMissileMaxVelocityBonusRookie Used by: Ship: Taipan """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'maxVelocity', ship.getModifiedItemAttr('rookieLightMissileVelocity')) class Effect5215(EffectDef): """ shipSHTTrackingSpeedBonusRookie Used by: Ship: Violator """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('rookieSHTTracking')) class Effect5216(EffectDef): """ shipSHTFalloffBonusRookie Used by: Ship: Violator """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'falloff', ship.getModifiedItemAttr('rookieSHTFalloff')) class Effect5217(EffectDef): """ shipSPTTrackingSpeedBonusRookie Used by: Ship: Echo """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'trackingSpeed', ship.getModifiedItemAttr('rookieSPTTracking')) class Effect5218(EffectDef): """ shipSPTFalloffBonusRookie Used by: Ship: Echo """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'falloff', ship.getModifiedItemAttr('rookieSPTFalloff')) class Effect5219(EffectDef): """ shipSPTOptimalRangeBonusRookie Used by: Ship: Echo """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'maxRange', ship.getModifiedItemAttr('rookieSPTOptimal')) class Effect5220(EffectDef): """ shipProjectileDmgPirateCruiser Used by: Ship: Gnosis """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5221(EffectDef): """ shipHeavyAssaultMissileEMDmgPirateCruiser Used by: Ship: Gnosis """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'emDamage', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5222(EffectDef): """ shipHeavyAssaultMissileKinDmgPirateCruiser Used by: Ship: Gnosis """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5223(EffectDef): """ shipHeavyAssaultMissileThermDmgPirateCruiser Used by: Ship: Gnosis """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5224(EffectDef): """ shipHeavyAssaultMissileExpDmgPirateCruiser Used by: Ship: Gnosis """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5225(EffectDef): """ shipHeavyMissileEMDmgPirateCruiser Used by: Ship: Gnosis """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'emDamage', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5226(EffectDef): """ shipHeavyMissileExpDmgPirateCruiser Used by: Ship: Gnosis """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5227(EffectDef): """ shipHeavyMissileKinDmgPirateCruiser Used by: Ship: Gnosis """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5228(EffectDef): """ shipHeavyMissileThermDmgPirateCruiser Used by: Ship: Gnosis """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5229(EffectDef): """ shipScanProbeStrengthBonusPirateCruiser Used by: Ships named like: Stratios (2 of 2) Ship: Astero Ship: Gnosis Ship: Praxis Ship: Sunesis """ type = 'passive' @staticmethod def handler(fit, container, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength', container.getModifiedItemAttr('shipBonusRole8')) class Effect5230(EffectDef): """ modifyActiveShieldResonancePostPercent Used by: Modules from group: Flex Shield Hardener (5 of 5) Modules from group: Shield Hardener (97 of 97) """ type = 'active' @staticmethod def handler(fit, module, context): for damageType in ('kinetic', 'thermal', 'explosive', 'em'): fit.ship.boostItemAttr('shield' + damageType.capitalize() + 'DamageResonance', module.getModifiedItemAttr(damageType + 'DamageResistanceBonus'), stackingPenalties=True) class Effect5231(EffectDef): """ modifyActiveArmorResonancePostPercent Used by: Modules from group: Armor Hardener (156 of 156) Modules from group: Flex Armor Hardener (4 of 4) """ type = 'active' @staticmethod def handler(fit, module, context): for damageType in ('kinetic', 'thermal', 'explosive', 'em'): fit.ship.boostItemAttr('armor%sDamageResonance' % damageType.capitalize(), module.getModifiedItemAttr('%sDamageResistanceBonus' % damageType), stackingPenalties=True) class Effect5234(EffectDef): """ shipSmallMissileExpDmgCF2 Used by: Ship: Caldari Navy Hookbill Ship: Kestrel """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Rockets') or mod.charge.requiresSkill('Light Missiles'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate') class Effect5237(EffectDef): """ shipSmallMissileKinDmgCF2 Used by: Ship: Kestrel """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Rockets') or mod.charge.requiresSkill('Light Missiles'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate') class Effect5240(EffectDef): """ shipSmallMissileThermDmgCF2 Used by: Ship: Caldari Navy Hookbill Ship: Kestrel """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Rockets') or mod.charge.requiresSkill('Light Missiles'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate') class Effect5243(EffectDef): """ shipSmallMissileEMDmgCF2 Used by: Ship: Caldari Navy Hookbill Ship: Kestrel """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Rockets') or mod.charge.requiresSkill('Light Missiles'), 'emDamage', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate') class Effect5259(EffectDef): """ reconShipCloakCpuBonus1 Used by: Ships from group: Force Recon Ship (7 of 9) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Cloaking Device', 'cpu', ship.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships') class Effect5260(EffectDef): """ covertOpsCloakCpuPercentBonus1 Used by: Ships from group: Covert Ops (6 of 8) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Cloaking'), 'cpu', ship.getModifiedItemAttr('eliteBonusCovertOps1'), skill='Covert Ops') class Effect5261(EffectDef): """ 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): module.increaseItemAttr('cpu', module.getModifiedItemAttr('covertCloakCPUAdd') or 0) class Effect5262(EffectDef): """ covertOpsCloakCpuPenalty Used by: Subsystems from group: Defensive Systems (8 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Cloaking'), 'covertCloakCPUAdd', module.getModifiedItemAttr('covertCloakCPUPenalty')) class Effect5263(EffectDef): """ covertCynoCpuPenalty Used by: Subsystems from group: Defensive Systems (8 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Cynosural Field Theory'), 'covertCloakCPUAdd', module.getModifiedItemAttr('covertCloakCPUPenalty')) class Effect5264(EffectDef): """ warfareLinkCPUAddition Used by: Modules from group: Command Burst (10 of 10) Modules from group: Gang Coordinator (6 of 6) """ type = 'passive' @staticmethod def handler(fit, module, context): module.increaseItemAttr('cpu', module.getModifiedItemAttr('warfareLinkCPUAdd') or 0) class Effect5265(EffectDef): """ warfareLinkCpuPenalty Used by: Subsystems from group: Offensive Systems (8 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'warfareLinkCPUAdd', module.getModifiedItemAttr('warfareLinkCPUPenalty')) class Effect5266(EffectDef): """ blockadeRunnerCloakCpuPercentBonus Used by: Ships from group: Blockade Runner (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Cloaking Device', 'cpu', ship.getModifiedItemAttr('eliteIndustrialCovertCloakBonus'), skill='Transport Ships') class Effect5267(EffectDef): """ 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): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'power', module.getModifiedItemAttr('drawback')) class Effect5268(EffectDef): """ 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): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Repair Systems'), 'power', module.getModifiedItemAttr('drawback')) class Effect5275(EffectDef): """ fueledArmorRepair Used by: Modules from group: Ancillary Armor Repairer (7 of 7) """ runTime = 'late' type = 'active' @staticmethod def handler(fit, module, context): 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) fit.extraAttributes.increase('armorRepairPreSpool', rps) fit.extraAttributes.increase('armorRepairFullSpool', rps) class Effect5293(EffectDef): """ shipLaserCapNeed2AD1 Used by: Ship: Coercer """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer') class Effect5294(EffectDef): """ shipLaserTracking2AD2 Used by: Ship: Coercer """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusAD2'), skill='Amarr Destroyer') class Effect5295(EffectDef): """ shipBonusDroneDamageMultiplierAD1 Used by: Variations of ship: Dragoon (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer') class Effect5300(EffectDef): """ shipBonusDroneHitpointsAD1 Used by: Variations of ship: Dragoon (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'shieldCapacity', src.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer') fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'hp', src.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer') fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'armorHP', src.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer') class Effect5303(EffectDef): """ shipHybridRange1CD1 Used by: Ship: Cormorant """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer') class Effect5304(EffectDef): """ shipHybridTrackingCD2 Used by: Ship: Cormorant """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer') class Effect5305(EffectDef): """ shipBonusFrigateSizedMissileKineticDamageCD1 Used by: Ship: Corax """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer') class Effect5306(EffectDef): """ shipRocketKineticDmgCD1 Used by: Ship: Corax """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer') class Effect5307(EffectDef): """ shipBonusAoeVelocityRocketsCD2 Used by: Ship: Corax """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'aoeVelocity', ship.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer') class Effect5308(EffectDef): """ shipBonusAoeVelocityStandardMissilesCD2 Used by: Ship: Corax """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'aoeVelocity', ship.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer') class Effect5309(EffectDef): """ shipHybridFallOff1GD1 Used by: Ship: Catalyst """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer') class Effect5310(EffectDef): """ shipHybridTracking1GD2 Used by: Variations of ship: Catalyst (2 of 2) Ship: Algos """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGD2'), skill='Gallente Destroyer') class Effect5311(EffectDef): """ shipBonusDroneDamageMultiplierGD1 Used by: Variations of ship: Algos (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer') class Effect5316(EffectDef): """ shipBonusDroneHitpointsGD1 Used by: Variations of ship: Algos (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'shieldCapacity', src.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer') fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'armorHP', src.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer') fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'hp', src.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer') class Effect5317(EffectDef): """ shipProjectileDamageMD1 Used by: Variations of ship: Thrasher (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusMD1'), skill='Minmatar Destroyer') class Effect5318(EffectDef): """ shipProjectileTracking1MD2 Used by: Variations of ship: Thrasher (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusMD2'), skill='Minmatar Destroyer') class Effect5319(EffectDef): """ shipBonusFrigateSizedLightMissileExplosiveDamageMD1 Used by: Ship: Talwar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusMD1'), skill='Minmatar Destroyer') class Effect5320(EffectDef): """ shipRocketExplosiveDmgMD1 Used by: Ship: Talwar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusMD1'), skill='Minmatar Destroyer') class Effect5321(EffectDef): """ shipBonusMWDSignatureRadiusMD2 Used by: Ship: Talwar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'signatureRadiusBonus', ship.getModifiedItemAttr('shipBonusMD2'), skill='Minmatar Destroyer') class Effect5322(EffectDef): """ shipArmorEMResistance1ABC1 Used by: Variations of ship: Prophecy (2 of 2) Ship: Absolution """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('armorEmDamageResonance', ship.getModifiedItemAttr('shipBonusABC1'), skill='Amarr Battlecruiser') class Effect5323(EffectDef): """ shipArmorExplosiveResistance1ABC1 Used by: Variations of ship: Prophecy (2 of 2) Ship: Absolution """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('armorExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusABC1'), skill='Amarr Battlecruiser') class Effect5324(EffectDef): """ shipArmorKineticResistance1ABC1 Used by: Variations of ship: Prophecy (2 of 2) Ship: Absolution """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('armorKineticDamageResonance', ship.getModifiedItemAttr('shipBonusABC1'), skill='Amarr Battlecruiser') class Effect5325(EffectDef): """ shipArmorThermResistance1ABC1 Used by: Variations of ship: Prophecy (2 of 2) Ship: Absolution """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('armorThermalDamageResonance', ship.getModifiedItemAttr('shipBonusABC1'), skill='Amarr Battlecruiser') class Effect5326(EffectDef): """ shipBonusDroneDamageMultiplierABC2 Used by: Ship: Prophecy """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusABC2'), skill='Amarr Battlecruiser') class Effect5331(EffectDef): """ shipBonusDroneHitpointsABC2 Used by: Ship: Prophecy """ type = 'passive' @staticmethod def handler(fit, ship, context): for layer in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), layer, ship.getModifiedItemAttr('shipBonusABC2'), skill='Amarr Battlecruiser') class Effect5332(EffectDef): """ shipLaserCapABC1 Used by: Ship: Harbinger """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusABC1'), skill='Amarr Battlecruiser') class Effect5333(EffectDef): """ shipLaserDamageBonusABC2 Used by: Ships named like: Harbinger (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusABC2'), skill='Amarr Battlecruiser') class Effect5334(EffectDef): """ shipHybridOptimal1CBC1 Used by: Variations of ship: Ferox (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser') class Effect5335(EffectDef): """ shipShieldEmResistance1CBC2 Used by: Ship: Drake Ship: Nighthawk Ship: Vulture """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('shieldEmDamageResonance', ship.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser') class Effect5336(EffectDef): """ shipShieldExplosiveResistance1CBC2 Used by: Ship: Drake Ship: Nighthawk Ship: Vulture """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('shieldExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser') class Effect5337(EffectDef): """ shipShieldKineticResistance1CBC2 Used by: Ship: Drake Ship: Nighthawk Ship: Vulture """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('shieldKineticDamageResonance', ship.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser') class Effect5338(EffectDef): """ shipShieldThermalResistance1CBC2 Used by: Ship: Drake Ship: Nighthawk Ship: Vulture """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('shieldThermalDamageResonance', ship.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser') class Effect5339(EffectDef): """ shipBonusHeavyAssaultMissileKineticDamageCBC1 Used by: Ship: Drake Ship: Nighthawk """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser') class Effect5340(EffectDef): """ shipBonusHeavyMissileKineticDamageCBC1 Used by: Ship: Drake Ship: Nighthawk """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser') class Effect5341(EffectDef): """ shipHybridDmg1GBC1 Used by: Variations of ship: Brutix (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser') class Effect5342(EffectDef): """ shipArmorRepairing1GBC2 Used by: Variations of ship: Myrmidon (2 of 2) Ship: Astarte Ship: Brutix """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusGBC2'), skill='Gallente Battlecruiser') class Effect5343(EffectDef): """ shipBonusDroneDamageMultiplierGBC1 Used by: Variations of ship: Myrmidon (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser') class Effect5348(EffectDef): """ shipBonusDroneHitpointsGBC1 Used by: Variations of ship: Myrmidon (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context): for layer in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), layer, ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser') class Effect5349(EffectDef): """ shipBonusHeavyMissileLauncherRofMBC2 Used by: Variations of ship: Cyclone (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy', 'speed', ship.getModifiedItemAttr('shipBonusMBC2'), skill='Minmatar Battlecruiser') class Effect5350(EffectDef): """ shipBonusHeavyAssaultMissileLauncherRofMBC2 Used by: Variations of ship: Cyclone (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy Assault', 'speed', ship.getModifiedItemAttr('shipBonusMBC2'), skill='Minmatar Battlecruiser') class Effect5351(EffectDef): """ shipShieldBoost1MBC1 Used by: Variations of ship: Cyclone (2 of 2) Ship: Sleipnir """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusMBC1'), skill='Minmatar Battlecruiser') class Effect5352(EffectDef): """ shipBonusProjectileDamageMBC1 Used by: Ships named like: Hurricane (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusMBC1'), skill='Minmatar Battlecruiser') class Effect5353(EffectDef): """ shipProjectileRof1MBC2 Used by: Ship: Hurricane """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'speed', ship.getModifiedItemAttr('shipBonusMBC2'), skill='Minmatar Battlecruiser') class Effect5354(EffectDef): """ shipLargeLaserCapABC1 Used by: Ship: Oracle """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusABC1'), skill='Amarr Battlecruiser') class Effect5355(EffectDef): """ shipLargeLaserDamageBonusABC2 Used by: Ship: Oracle """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusABC2'), skill='Amarr Battlecruiser') class Effect5356(EffectDef): """ shipHybridRangeBonusCBC1 Used by: Ship: Naga """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser') class Effect5357(EffectDef): """ shipHybridDamageBonusCBC2 Used by: Ship: Naga """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser') class Effect5358(EffectDef): """ shipLargeHybridTrackingBonusGBC1 Used by: Ship: Talos """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser') class Effect5359(EffectDef): """ shipHybridDamageBonusGBC2 Used by: Ship: Talos """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGBC2'), skill='Gallente Battlecruiser') class Effect5360(EffectDef): """ shipProjectileRofBonusMBC1 Used by: Ship: Tornado """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'speed', ship.getModifiedItemAttr('shipBonusMBC1'), skill='Minmatar Battlecruiser') class Effect5361(EffectDef): """ shipProjectileFalloffBonusMBC2 Used by: Ship: Tornado """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusMBC2'), skill='Minmatar Battlecruiser') class Effect5364(EffectDef): """ armorAllRepairSystemsAmountBonusPassive Used by: Implants named like: Agency 'Hardshell' TB Dose (4 of 4) Implants named like: Exile Booster (4 of 4) Implant: Antipharmakon Kosybo """ type = 'passive' @staticmethod def handler(fit, booster, context): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Repair Systems') or mod.item.requiresSkill('Capital Repair Systems'), 'armorDamageAmount', booster.getModifiedItemAttr('armorDamageAmountBonus') or 0) class Effect5365(EffectDef): """ eliteBonusViolatorsRepairSystemsArmorDamageAmount2 Used by: Ship: Kronos Ship: Paladin """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('eliteBonusViolators2'), skill='Marauders') class Effect5366(EffectDef): """ shipBonusRepairSystemsBonusATC2 Used by: Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusATC2')) class Effect5367(EffectDef): """ shipBonusRepairSystemsArmorRepairAmountGB2 Used by: Ship: Hyperion """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusGB2'), skill='Gallente Battleship') class Effect5378(EffectDef): """ shipHeavyMissileAOECloudSizeCBC1 Used by: Ship: Drake Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'aoeCloudSize', ship.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser') class Effect5379(EffectDef): """ shipHeavyAssaultMissileAOECloudSizeCBC1 Used by: Ship: Drake Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'aoeCloudSize', ship.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser') class Effect5380(EffectDef): """ shipHybridTrackingGBC2 Used by: Ship: Brutix Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGBC2'), skill='Gallente Battlecruiser') class Effect5381(EffectDef): """ shipEnergyTrackingABC1 Used by: Ship: Harbinger Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusABC1'), skill='Amarr Battlecruiser') class Effect5382(EffectDef): """ shipBonusMETOptimalAC2 Used by: Ship: Enforcer Ship: Omen Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser') class Effect5383(EffectDef): """ shipMissileEMDamageCC Used by: Ship: Orthrus Ship: Osprey Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'emDamage', ship.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser') class Effect5384(EffectDef): """ shipMissileThermDamageCC Used by: Ship: Orthrus Ship: Osprey Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser') class Effect5385(EffectDef): """ shipMissileExpDamageCC Used by: Ship: Orthrus Ship: Osprey Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser') class Effect5386(EffectDef): """ shipMissileKinDamageCC2 Used by: Ship: Rook """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser') class Effect5387(EffectDef): """ shipHeavyAssaultMissileAOECloudSizeCC2 Used by: Ship: Caracal Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'aoeCloudSize', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser') class Effect5388(EffectDef): """ shipHeavyMissileAOECloudSizeCC2 Used by: Ship: Caracal Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'aoeCloudSize', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser') class Effect5389(EffectDef): """ shipBonusDroneTrackingGC Used by: Ship: Vexor Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser') class Effect5390(EffectDef): """ shipBonusDroneMWDboostGC Used by: Ship: Vexor Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser') class Effect5397(EffectDef): """ baseMaxScanDeviationModifierModuleOnline2None Used by: Variations of module: Scan Pinpointing Array I (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseMaxScanDeviation', module.getModifiedItemAttr('maxScanDeviationModifierModule'), stackingPenalties=True) class Effect5398(EffectDef): """ systemScanDurationModuleModifier Used by: Modules from group: Scanning Upgrade Time (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Astrometrics'), 'duration', module.getModifiedItemAttr('scanDurationBonus')) class Effect5399(EffectDef): """ baseSensorStrengthModifierModule Used by: Variations of module: Scan Rangefinding Array I (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength', module.getModifiedItemAttr('scanStrengthBonusModule'), stackingPenalties=True) class Effect5402(EffectDef): """ shipMissileHeavyAssaultVelocityABC2 Used by: Ship: Damnation """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusABC2'), skill='Amarr Battlecruiser') class Effect5403(EffectDef): """ shipMissileHeavyVelocityABC2 Used by: Ship: Damnation """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusABC2'), skill='Amarr Battlecruiser') class Effect5410(EffectDef): """ shipLaserCap1ABC2 Used by: Ship: Absolution """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusABC2'), skill='Amarr Battlecruiser') class Effect5411(EffectDef): """ shipMissileVelocityCD1 Used by: Ship: Flycatcher """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer') class Effect5417(EffectDef): """ shipBonusDroneDamageMultiplierAB Used by: Ship: Armageddon """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship') class Effect5418(EffectDef): """ shipBonusDroneArmorHitPointsAB Used by: Ship: Armageddon """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'armorHP', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship') class Effect5419(EffectDef): """ shipBonusDroneShieldHitPointsAB Used by: Ship: Armageddon """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship') class Effect5420(EffectDef): """ shipBonusDroneStructureHitPointsAB Used by: Ship: Armageddon """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'hp', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship') class Effect5424(EffectDef): """ shipLargeHybridTurretRofGB Used by: Ship: Megathron Ship: Megathron Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'speed', ship.getModifiedItemAttr('shipBonusGB'), skill='Gallente Battleship') class Effect5427(EffectDef): """ shipBonusDroneTrackingGB Used by: Ship: Dominix """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGB'), skill='Gallente Battleship') class Effect5428(EffectDef): """ shipBonusDroneOptimalRangeGB Used by: Ship: Dominix """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'maxRange', ship.getModifiedItemAttr('shipBonusGB'), skill='Gallente Battleship') class Effect5429(EffectDef): """ shipBonusMissileAoeVelocityMB2 Used by: Ship: Typhoon """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'aoeVelocity', ship.getModifiedItemAttr('shipBonusMB2'), skill='Minmatar Battleship') class Effect5430(EffectDef): """ shipBonusAoeVelocityCruiseMissilesMB2 Used by: Ship: Typhoon """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'aoeVelocity', ship.getModifiedItemAttr('shipBonusMB2'), skill='Minmatar Battleship') class Effect5431(EffectDef): """ shipBonusLargeEnergyTurretTrackingAB Used by: Ship: Apocalypse Ship: Apocalypse Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship') class Effect5433(EffectDef): """ hackingSkillVirusBonus Used by: Modules named like: Memetic Algorithm Bank (8 of 8) Implant: Neural Lace 'Blackglass' Net Intrusion 920-40 Implant: Poteque 'Prospector' Environmental Analysis EY-1005 Implant: Poteque 'Prospector' Hacking HC-905 Skill: Hacking """ type = 'passive' @staticmethod def handler(fit, container, context): level = container.level if 'skill' in context else 1 fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Hacking'), 'virusCoherence', container.getModifiedItemAttr('virusCoherenceBonus') * level) class Effect5437(EffectDef): """ archaeologySkillVirusBonus Used by: 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): level = container.level if 'skill' in context else 1 fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Archaeology'), 'virusCoherence', container.getModifiedItemAttr('virusCoherenceBonus') * level) class Effect5440(EffectDef): """ systemStandardMissileKineticDamage Used by: Celestials named like: Wolf Rayet Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'kineticDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect5444(EffectDef): """ shipTorpedoAOECloudSize1CB Used by: Ship: Raven Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'aoeCloudSize', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship') class Effect5445(EffectDef): """ shipCruiseMissileAOECloudSize1CB Used by: Ship: Raven Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'aoeCloudSize', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship') class Effect5456(EffectDef): """ shipCruiseMissileROFCB Used by: Ship: Scorpion Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Cruise', 'speed', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship') class Effect5457(EffectDef): """ shipTorpedoROFCB Used by: Ship: Scorpion Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Torpedo', 'speed', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship') class Effect5459(EffectDef): """ hackingVirusStrengthBonus Used by: Implant: Neural Lace 'Blackglass' Net Intrusion 920-40 """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Hacking'), 'virusStrength', src.getModifiedItemAttr('virusStrengthBonus')) class Effect5460(EffectDef): """ minigameVirusStrengthBonus Used by: Ships from group: Covert Ops (7 of 8) Ships named like: Stratios (2 of 2) Subsystems named like: Defensive Covert Reconfiguration (4 of 4) Ship: Astero Ship: Heron Ship: Imicus Ship: Magnate Ship: Nestor Ship: Probe """ type = 'passive' @staticmethod def handler(fit, container, context): 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) class Effect5461(EffectDef): """ shieldOperationRechargeratebonusPostPercentOnline Used by: Modules from group: Shield Power Relay (6 of 6) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.boostItemAttr('shieldRechargeRate', module.getModifiedItemAttr('rechargeratebonus') or 0) class Effect5468(EffectDef): """ shipBonusAgilityCI2 Used by: Ship: Badger """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('shipBonusCI2'), skill='Caldari Industrial') class Effect5469(EffectDef): """ shipBonusAgilityMI2 Used by: Ship: Wreathe """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('shipBonusMI2'), skill='Minmatar Industrial') class Effect5470(EffectDef): """ shipBonusAgilityGI2 Used by: Ship: Nereus """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('shipBonusGI2'), skill='Gallente Industrial') class Effect5471(EffectDef): """ shipBonusAgilityAI2 Used by: Ship: Sigil """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('shipBonusAI2'), skill='Amarr Industrial') class Effect5476(EffectDef): """ shipBonusOreCapacityGI2 Used by: Ship: Miasmos """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('specialOreHoldCapacity', ship.getModifiedItemAttr('shipBonusGI2'), skill='Gallente Industrial') class Effect5477(EffectDef): """ shipBonusAmmoBayMI2 Used by: Ship: Hoarder """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('specialAmmoHoldCapacity', ship.getModifiedItemAttr('shipBonusMI2'), skill='Minmatar Industrial') class Effect5478(EffectDef): """ shipBonusPICommoditiesHoldGI2 Used by: Ship: Epithal """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('specialPlanetaryCommoditiesHoldCapacity', ship.getModifiedItemAttr('shipBonusGI2'), skill='Gallente Industrial') class Effect5479(EffectDef): """ shipBonusMineralBayGI2 Used by: Ship: Kryos """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('specialMineralHoldCapacity', ship.getModifiedItemAttr('shipBonusGI2'), skill='Gallente Industrial') class Effect5480(EffectDef): """ setBonusChristmasBonusVelocity Used by: Implants named like: Genolution Core Augmentation CA (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant', 'implantBonusVelocity', implant.getModifiedItemAttr('implantSetChristmas')) class Effect5482(EffectDef): """ setBonusChristmasAgilityBonus Used by: Implants named like: Genolution Core Augmentation CA (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant', 'agilityBonus', implant.getModifiedItemAttr('implantSetChristmas')) class Effect5483(EffectDef): """ setBonusChristmasShieldCapacityBonus Used by: Implants named like: Genolution Core Augmentation CA (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant', 'shieldCapacityBonus', implant.getModifiedItemAttr('implantSetChristmas')) class Effect5484(EffectDef): """ setBonusChristmasArmorHPBonus2 Used by: Implants named like: Genolution Core Augmentation CA (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant', 'armorHpBonus2', implant.getModifiedItemAttr('implantSetChristmas')) class Effect5485(EffectDef): """ shipSPTOptimalBonusMF Used by: Ship: Chremoas """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate') class Effect5486(EffectDef): """ shipBonusProjectileDamageMBC2 Used by: Ship: Sleipnir """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusMBC2'), skill='Minmatar Battlecruiser') class Effect5496(EffectDef): """ eliteBonusCommandShipHAMRoFCS1 Used by: Ship: Claymore Ship: Nighthawk """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy Assault', 'speed', ship.getModifiedItemAttr('eliteBonusCommandShips1'), skill='Command Ships') class Effect5497(EffectDef): """ eliteBonusCommandShipHMRoFCS1 Used by: Ship: Claymore Ship: Nighthawk """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy', 'speed', ship.getModifiedItemAttr('eliteBonusCommandShips1'), skill='Command Ships') class Effect5498(EffectDef): """ eliteBonusCommandShipsHeavyAssaultMissileExplosionVelocityCS2 Used by: Ship: Claymore """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'aoeVelocity', ship.getModifiedItemAttr('eliteBonusCommandShips2'), skill='Command Ships') class Effect5499(EffectDef): """ eliteBonusCommandShipsHeavyAssaultMissileExplosionRadiusCS2 Used by: Ship: Nighthawk """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'aoeCloudSize', ship.getModifiedItemAttr('eliteBonusCommandShips2'), skill='Command Ships') class Effect5500(EffectDef): """ eliteBonusCommandShipsHeavyMissileExplosionRadiusCS2 Used by: Ship: Nighthawk """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'aoeCloudSize', ship.getModifiedItemAttr('eliteBonusCommandShips2'), skill='Command Ships') class Effect5501(EffectDef): """ eliteBonusCommandShipMediumHybridDamageCS2 Used by: Ship: Vulture """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusCommandShips2'), skill='Command Ships') class Effect5502(EffectDef): """ eliteBonusCommandShipMediumHybridTrackingCS1 Used by: Ship: Eos """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusCommandShips1'), skill='Command Ships') class Effect5503(EffectDef): """ eliteBonusCommandShipHeavyDroneTrackingCS2 Used by: Ship: Eos """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusCommandShips2'), skill='Command Ships') class Effect5504(EffectDef): """ eliteBonusCommandShipHeavyDroneVelocityCS2 Used by: Ship: Eos """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'maxVelocity', ship.getModifiedItemAttr('eliteBonusCommandShips2'), skill='Command Ships') class Effect5505(EffectDef): """ eliteBonusCommandShipMediumHybridRoFCS1 Used by: Ship: Astarte """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'speed', ship.getModifiedItemAttr('eliteBonusCommandShips1'), skill='Command Ships') class Effect5514(EffectDef): """ eliteBonusCommandShipHeavyAssaultMissileDamageCS2 Used by: Ship: Damnation """ type = 'passive' @staticmethod def handler(fit, ship, context): 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') class Effect5521(EffectDef): """ eliteBonusCommandShipHeavyMissileDamageCS2 Used by: Ship: Damnation """ type = 'passive' @staticmethod def handler(fit, ship, context): 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') class Effect5539(EffectDef): """ shipBonusHMLKineticDamageAC Used by: Ship: Sacrilege """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser') class Effect5540(EffectDef): """ shipBonusHMLEMDamageAC Used by: Ship: Sacrilege """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'emDamage', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser') class Effect5541(EffectDef): """ shipBonusHMLThermDamageAC Used by: Ship: Sacrilege """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser') class Effect5542(EffectDef): """ shipBonusHMLExploDamageAC Used by: Ship: Sacrilege """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser') class Effect5552(EffectDef): """ shipBonusHMLVelocityEliteBonusHeavyGunship1 Used by: Ship: Sacrilege """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'maxVelocity', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers') class Effect5553(EffectDef): """ shipBonusHAMVelocityEliteBonusHeavyGunship1 Used by: Ship: Sacrilege """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'maxVelocity', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers') class Effect5554(EffectDef): """ shipBonusArmorRepAmountGC2 Used by: Ship: Deimos """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser') class Effect5555(EffectDef): """ shipBonusHeavyDroneSpeedGC Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser') class Effect5556(EffectDef): """ shipBonusHeavyDRoneTrackingGC Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser') class Effect5557(EffectDef): """ shipBonusSentryDroneOptimalRangeEliteBonusHeavyGunship2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'maxRange', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers') class Effect5558(EffectDef): """ shipBonusSentryDroneTrackingEliteBonusHeavyGunship2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers') class Effect5559(EffectDef): """ shipBonusShieldBoostAmountMC2 Used by: Ship: Vagabond """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser') class Effect5560(EffectDef): """ roleBonusMarauderMJDRReactivationDelayBonus Used by: Ships from group: Marauder (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Micro Jump Drive', 'moduleReactivationDelay', ship.getModifiedItemAttr('roleBonusMarauder')) class Effect5564(EffectDef): """ subSystemBonusCaldariOffensiveCommandBursts Used by: Subsystem: Tengu Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff2Value', src.getModifiedItemAttr('subsystemBonusCaldariOffensive'), skill='Caldari Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff4Value', src.getModifiedItemAttr('subsystemBonusCaldariOffensive'), skill='Caldari Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff3Value', src.getModifiedItemAttr('subsystemBonusCaldariOffensive'), skill='Caldari Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff1Value', src.getModifiedItemAttr('subsystemBonusCaldariOffensive'), skill='Caldari Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'buffDuration', src.getModifiedItemAttr('subsystemBonusCaldariOffensive'), skill='Caldari Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'buffDuration', src.getModifiedItemAttr('subsystemBonusCaldariOffensive'), skill='Caldari Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff1Value', src.getModifiedItemAttr('subsystemBonusCaldariOffensive'), skill='Caldari Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff3Value', src.getModifiedItemAttr('subsystemBonusCaldariOffensive'), skill='Caldari Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff2Value', src.getModifiedItemAttr('subsystemBonusCaldariOffensive'), skill='Caldari Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff4Value', src.getModifiedItemAttr('subsystemBonusCaldariOffensive'), skill='Caldari Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'buffDuration', src.getModifiedItemAttr('subsystemBonusCaldariOffensive'), skill='Caldari Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff3Value', src.getModifiedItemAttr('subsystemBonusCaldariOffensive'), skill='Caldari Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff1Value', src.getModifiedItemAttr('subsystemBonusCaldariOffensive'), skill='Caldari Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff4Value', src.getModifiedItemAttr('subsystemBonusCaldariOffensive'), skill='Caldari Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff2Value', src.getModifiedItemAttr('subsystemBonusCaldariOffensive'), skill='Caldari Offensive Systems') class Effect5568(EffectDef): """ subSystemBonusGallenteOffensiveCommandBursts Used by: Subsystem: Proteus Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff1Value', src.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff4Value', src.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'buffDuration', src.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff2Value', src.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff3Value', src.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff4Value', src.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff1Value', src.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff2Value', src.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'buffDuration', src.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff3Value', src.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff3Value', src.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff1Value', src.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff2Value', src.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'buffDuration', src.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff4Value', src.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems') class Effect5570(EffectDef): """ subSystemBonusMinmatarOffensiveCommandBursts Used by: Subsystem: Loki Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff1Value', src.getModifiedItemAttr('subsystemBonusMinmatarOffensive'), skill='Minmatar Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff2Value', src.getModifiedItemAttr('subsystemBonusMinmatarOffensive'), skill='Minmatar Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'buffDuration', src.getModifiedItemAttr('subsystemBonusMinmatarOffensive'), skill='Minmatar Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff4Value', src.getModifiedItemAttr('subsystemBonusMinmatarOffensive'), skill='Minmatar Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff3Value', src.getModifiedItemAttr('subsystemBonusMinmatarOffensive'), skill='Minmatar Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff3Value', src.getModifiedItemAttr('subsystemBonusMinmatarOffensive'), skill='Minmatar Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff2Value', src.getModifiedItemAttr('subsystemBonusMinmatarOffensive'), skill='Minmatar Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'buffDuration', src.getModifiedItemAttr('subsystemBonusMinmatarOffensive'), skill='Minmatar Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff4Value', src.getModifiedItemAttr('subsystemBonusMinmatarOffensive'), skill='Minmatar Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'war' 'fareBuff1Value', src.getModifiedItemAttr('subsystemBonusMinmatarOffensive'), skill='Minmatar Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff3Value', src.getModifiedItemAttr('subsystemBonusMinmatarOffensive'), skill='Minmatar Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff4Value', src.getModifiedItemAttr('subsystemBonusMinmatarOffensive'), skill='Minmatar Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff1Value', src.getModifiedItemAttr('subsystemBonusMinmatarOffensive'), skill='Minmatar Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'buffDuration', src.getModifiedItemAttr('subsystemBonusMinmatarOffensive'), skill='Minmatar Offensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff2Value', src.getModifiedItemAttr('subsystemBonusMinmatarOffensive'), skill='Minmatar Offensive Systems') class Effect5572(EffectDef): """ eliteBonusCommandShipArmoredCS3 Used by: Ships from group: Command Ship (4 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff3Value', src.getModifiedItemAttr('eliteBonusCommandShips3'), skill='Command Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff1Value', src.getModifiedItemAttr('eliteBonusCommandShips3'), skill='Command Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff2Value', src.getModifiedItemAttr('eliteBonusCommandShips3'), skill='Command Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'buffDuration', src.getModifiedItemAttr('eliteBonusCommandShips3'), skill='Command Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff4Value', src.getModifiedItemAttr('eliteBonusCommandShips3'), skill='Command Ships') class Effect5573(EffectDef): """ eliteBonusCommandShipSiegeCS3 Used by: Ships from group: Command Ship (4 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff1Value', src.getModifiedItemAttr('eliteBonusCommandShips3'), skill='Command Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff4Value', src.getModifiedItemAttr('eliteBonusCommandShips3'), skill='Command Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff2Value', src.getModifiedItemAttr('eliteBonusCommandShips3'), skill='Command Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'buffDuration', src.getModifiedItemAttr('eliteBonusCommandShips3'), skill='Command Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff3Value', src.getModifiedItemAttr('eliteBonusCommandShips3'), skill='Command Ships') class Effect5574(EffectDef): """ eliteBonusCommandShipSkirmishCS3 Used by: Ships from group: Command Ship (4 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff2Value', src.getModifiedItemAttr('eliteBonusCommandShips3'), skill='Command Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff1Value', src.getModifiedItemAttr('eliteBonusCommandShips3'), skill='Command Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff3Value', src.getModifiedItemAttr('eliteBonusCommandShips3'), skill='Command Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff4Value', src.getModifiedItemAttr('eliteBonusCommandShips3'), skill='Command Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'buffDuration', src.getModifiedItemAttr('eliteBonusCommandShips3'), skill='Command Ships') class Effect5575(EffectDef): """ eliteBonusCommandShipInformationCS3 Used by: Ships from group: Command Ship (4 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'buffDuration', src.getModifiedItemAttr('eliteBonusCommandShips3'), skill='Command Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff3Value', src.getModifiedItemAttr('eliteBonusCommandShips3'), skill='Command Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff2Value', src.getModifiedItemAttr('eliteBonusCommandShips3'), skill='Command Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff1Value', src.getModifiedItemAttr('eliteBonusCommandShips3'), skill='Command Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff4Value', src.getModifiedItemAttr('eliteBonusCommandShips3'), skill='Command Ships') class Effect5607(EffectDef): """ 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): 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) class Effect5610(EffectDef): """ shipBonusLargeEnergyTurretMaxRangeAB Used by: Ship: Marshal Ship: Paladin """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship') class Effect5611(EffectDef): """ shipBonusHTFalloffGB2 Used by: Ship: Kronos """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusGB2'), skill='Gallente Battleship') class Effect5618(EffectDef): """ shipBonusRHMLROF2CB Used by: Ship: Raven Ship: Widow """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rapid Heavy', 'speed', ship.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship') class Effect5619(EffectDef): """ shipBonusRHMLROFCB Used by: Ship: Scorpion Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rapid Heavy', 'speed', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship') class Effect5620(EffectDef): """ shipBonusRHMLROFMB Used by: Ship: Typhoon """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rapid Heavy', 'speed', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship') class Effect5621(EffectDef): """ shipBonusCruiseROFMB Used by: Ship: Typhoon """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Cruise', 'speed', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship') class Effect5622(EffectDef): """ shipBonusTorpedoROFMB Used by: Ship: Typhoon """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Torpedo', 'speed', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship') class Effect5628(EffectDef): """ shipBonusCruiseMissileEMDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'emDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship') class Effect5629(EffectDef): """ shipBonusCruiseMissileThermDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship') class Effect5630(EffectDef): """ shipBonusCruiseMissileKineticDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship') class Effect5631(EffectDef): """ shipBonusCruiseMissileExploDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship') class Effect5632(EffectDef): """ shipBonusTorpedoMissileExploDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship') class Effect5633(EffectDef): """ shipBonusTorpedoMissileEMDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'emDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship') class Effect5634(EffectDef): """ shipBonusTorpedoMissileThermDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship') class Effect5635(EffectDef): """ shipBonusTorpedoMissileKineticDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship') class Effect5636(EffectDef): """ shipBonusHeavyMissileEMDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'emDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship') class Effect5637(EffectDef): """ shipBonusHeavyMissileThermDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship') class Effect5638(EffectDef): """ shipBonusHeavyMissileKineticDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship') class Effect5639(EffectDef): """ shipBonusHeavyMissileExploDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship') class Effect5644(EffectDef): """ shipBonusMissileVelocityCC2 Used by: Ship: Cerberus """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser') class Effect5647(EffectDef): """ covertOpsCloakCPUPercentRoleBonus Used by: Ships from group: Expedition Frigate (2 of 2) Ship: Astero Ship: Enforcer Ship: Pacifier Ship: Victor Ship: Victorieux Luxury Yacht Ship: Virtuoso """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Cloaking'), 'cpu', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5650(EffectDef): """ shipArmorResistanceAF1 Used by: Ship: Malediction """ type = 'passive' @staticmethod def handler(fit, ship, context): damageTypes = ('Em', 'Explosive', 'Kinetic', 'Thermal') for damageType in damageTypes: fit.ship.boostItemAttr('armor{0}DamageResonance'.format(damageType), ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate') class Effect5657(EffectDef): """ Interceptor2ShieldResist Used by: Ship: Raptor """ type = 'passive' @staticmethod def handler(fit, ship, context): damageTypes = ('Em', 'Explosive', 'Kinetic', 'Thermal') for damageType in damageTypes: fit.ship.boostItemAttr('shield{0}DamageResonance'.format(damageType), ship.getModifiedItemAttr('eliteBonusInterceptor2'), skill='Interceptors') class Effect5673(EffectDef): """ interceptor2ProjectileDamage Used by: Ship: Claw """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusInterceptor2'), skill='Interceptors') class Effect5676(EffectDef): """ shipBonusSmallMissileExplosionRadiusCD2 Used by: Ship: Flycatcher """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Rockets') or mod.charge.requiresSkill('Light Missiles'), 'aoeCloudSize', ship.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer') class Effect5688(EffectDef): """ shipBonusMissileVelocityAD2 Used by: Ship: Heretic """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusAD2'), skill='Amarr Destroyer') class Effect5695(EffectDef): """ eliteBonusInterdictorsArmorResist1 Used by: Ship: Heretic """ type = 'passive' @staticmethod def handler(fit, ship, context): for damageType in ('Em', 'Thermal', 'Explosive', 'Kinetic'): fit.ship.boostItemAttr('armor%sDamageResonance' % damageType, ship.getModifiedItemAttr('eliteBonusInterdictors1'), skill='Interdictors') class Effect5717(EffectDef): """ implantSetWarpSpeed Used by: Implants named like: grade Ascendancy (12 of 12) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant', 'WarpSBonus', implant.getModifiedItemAttr('implantSetWarpSpeed')) class Effect5721(EffectDef): """ shipBonusMETOptimalRangePirateFaction Used by: Ships named like: Stratios (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5722(EffectDef): """ shipHybridOptimalGD1 Used by: Ship: Eris """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer') class Effect5723(EffectDef): """ eliteBonusInterdictorsMWDSigRadius2 Used by: Ships from group: Interdictor (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'signatureRadiusBonus', ship.getModifiedItemAttr('eliteBonusInterdictors2'), skill='Interdictors') class Effect5724(EffectDef): """ shipSHTOptimalBonusGF Used by: Ship: Ares """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate') class Effect5725(EffectDef): """ shipBonusRemoteRepairAmountPirateFaction Used by: Ship: Nestor """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5726(EffectDef): """ shipBonusLETOptimalRangePirateFaction Used by: Ship: Nestor """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5733(EffectDef): """ eliteBonusMaraudersHeavyMissileDamageExpRole1 Used by: Ship: Golem """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'explosiveDamage', ship.getModifiedItemAttr('eliteBonusViolatorsRole1')) class Effect5734(EffectDef): """ eliteBonusMaraudersHeavyMissileDamageKinRole1 Used by: Ship: Golem """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage', ship.getModifiedItemAttr('eliteBonusViolatorsRole1')) class Effect5735(EffectDef): """ eliteBonusMaraudersHeavyMissileDamageEMRole1 Used by: Ship: Golem """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'emDamage', ship.getModifiedItemAttr('eliteBonusViolatorsRole1')) class Effect5736(EffectDef): """ eliteBonusMaraudersHeavyMissileDamageThermRole1 Used by: Ship: Golem """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'thermalDamage', ship.getModifiedItemAttr('eliteBonusViolatorsRole1')) class Effect5737(EffectDef): """ shipScanProbeStrengthBonusPirateFaction Used by: Ship: Nestor """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5738(EffectDef): """ shipBonusRemoteRepairRangePirateFaction2 Used by: Ship: Nestor """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'maxRange', ship.getModifiedItemAttr('shipBonusRole8')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'falloffEffectiveness', ship.getModifiedItemAttr('shipBonusRole8')) class Effect5754(EffectDef): """ 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): module.boostItemAttr('maxRangeBonus', module.getModifiedItemAttr('overloadTrackingModuleStrengthBonus')) module.boostItemAttr('falloffBonus', module.getModifiedItemAttr('overloadTrackingModuleStrengthBonus')) module.boostItemAttr('trackingSpeedBonus', module.getModifiedItemAttr('overloadTrackingModuleStrengthBonus')) class Effect5757(EffectDef): """ 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): module.boostItemAttr('maxTargetRangeBonus', module.getModifiedItemAttr('overloadSensorModuleStrengthBonus')) module.boostItemAttr('scanResolutionBonus', module.getModifiedItemAttr('overloadSensorModuleStrengthBonus'), stackingPenalties=True) for scanType in ('Gravimetric', 'Magnetometric', 'Radar', 'Ladar'): module.boostItemAttr( 'scan{}StrengthPercent'.format(scanType), module.getModifiedItemAttr('overloadSensorModuleStrengthBonus'), stackingPenalties=True ) class Effect5758(EffectDef): """ overloadSelfPainterBonus Used by: Modules from group: Target Painter (8 of 8) """ type = 'overheat' @staticmethod def handler(fit, module, context): module.boostItemAttr('signatureRadiusBonus', module.getModifiedItemAttr('overloadPainterStrengthBonus') or 0) class Effect5769(EffectDef): """ repairDroneHullBonusBonus Used by: Modules named like: Drone Repair Augmentor (8 of 8) Skill: Repair Drone Operation """ type = 'passive' @staticmethod def handler(fit, container, context): 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) class Effect5778(EffectDef): """ shipMissileRoFMF2 Used by: Ship: Breacher Ship: Jaguar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'speed', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate') class Effect5779(EffectDef): """ shipBonusSPTFalloffMF2 Used by: Ship: Pacifier Ship: Rifter """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate') class Effect5793(EffectDef): """ ewSkillTrackingDisruptionRangeDisruptionBonus Used by: Modules named like: Tracking Diagnostic Subroutines (8 of 8) Skill: Weapon Destabilization """ type = 'passive' @staticmethod def handler(fit, container, context): 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) class Effect5802(EffectDef): """ shipBonusAfterburnerSpeedFactor2CB Used by: Ship: Nightmare """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'speedFactor', module.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship') class Effect5803(EffectDef): """ shipBonusSentryDroneDamageMultiplierPirateFaction Used by: Ship: Rattlesnake """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5804(EffectDef): """ shipBonusHeavyDroneDamageMultiplierPirateFaction Used by: Ship: Rattlesnake """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5805(EffectDef): """ shipBonusSentryDroneHPPirateFaction Used by: Ship: Rattlesnake """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'hp', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5806(EffectDef): """ shipBonusSentryDroneArmorHpPirateFaction Used by: Ship: Rattlesnake """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'armorHP', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5807(EffectDef): """ shipBonusSentryDroneShieldHpPirateFaction Used by: Ship: Rattlesnake """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5808(EffectDef): """ shipBonusHeavyDroneShieldHpPirateFaction Used by: Ship: Rattlesnake """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5809(EffectDef): """ shipBonusHeavyDroneArmorHpPirateFaction Used by: Ship: Rattlesnake """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'armorHP', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5810(EffectDef): """ shipBonusHeavyDroneHPPirateFaction Used by: Ship: Rattlesnake """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'hp', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5811(EffectDef): """ shipBonusKineticMissileDamageGB2 Used by: Ship: Rattlesnake """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusGB2'), skill='Gallente Battleship') class Effect5812(EffectDef): """ shipBonusThermalMissileDamageGB2 Used by: Ship: Rattlesnake """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusGB2'), skill='Gallente Battleship') class Effect5813(EffectDef): """ shipBonusAfterburnerSpeedFactorCF2 Used by: Ship: Imp Ship: Succubus """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'speedFactor', module.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate') class Effect5814(EffectDef): """ shipBonusKineticMissileDamageGF Used by: Ship: Whiptail Ship: Worm """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate') class Effect5815(EffectDef): """ shipBonusThermalMissileDamageGF Used by: Ship: Whiptail Ship: Worm """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate') class Effect5816(EffectDef): """ shipBonusLightDroneDamageMultiplierPirateFaction Used by: Ship: Whiptail Ship: Worm """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5817(EffectDef): """ shipBonusLightDroneHPPirateFaction Used by: Ship: Whiptail Ship: Worm """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'), 'hp', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5818(EffectDef): """ shipBonusLightDroneArmorHPPirateFaction Used by: Ship: Whiptail Ship: Worm """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'), 'armorHP', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5819(EffectDef): """ shipBonusLightDroneShieldHPPirateFaction Used by: Ship: Whiptail Ship: Worm """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5820(EffectDef): """ shipBonusAfterburnerSpeedFactorCC2 Used by: Ship: Fiend Ship: Phantasm """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'speedFactor', module.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser') class Effect5821(EffectDef): """ shipBonusMediumDroneDamageMultiplierPirateFaction Used by: Ship: Chameleon Ship: Gila """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5822(EffectDef): """ shipBonusMediumDroneHPPirateFaction Used by: Ship: Chameleon Ship: Gila """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'), 'hp', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5823(EffectDef): """ shipBonusMediumDroneArmorHPPirateFaction Used by: Ship: Chameleon Ship: Gila """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'), 'armorHP', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5824(EffectDef): """ shipBonusMediumDroneShieldHPPirateFaction Used by: Ship: Chameleon Ship: Gila """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusRole7')) class Effect5825(EffectDef): """ shipBonusKineticMissileDamageGC2 Used by: Ship: Chameleon Ship: Gila """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser') class Effect5826(EffectDef): """ shipBonusThermalMissileDamageGC2 Used by: Ship: Chameleon Ship: Gila """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser') class Effect5827(EffectDef): """ shipBonusTDOptimalBonusAF1 Used by: Ship: Crucifier """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'maxRange', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate') class Effect5829(EffectDef): """ shipBonusMiningDurationORE3 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): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining'), 'duration', ship.getModifiedItemAttr('shipBonusORE3'), skill='Mining Barge') class Effect5832(EffectDef): """ shipBonusMiningIceHarvestingRangeORE2 Used by: Variations of ship: Covetor (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining') or mod.item.requiresSkill('Ice Harvesting'), 'maxRange', ship.getModifiedItemAttr('shipBonusORE2'), skill='Mining Barge') class Effect5839(EffectDef): """ eliteBargeShieldResistance1 Used by: Ships from group: Exhumer (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context): for damageType in ('em', 'thermal', 'explosive', 'kinetic'): fit.ship.boostItemAttr('shield{}DamageResonance'.format(damageType.capitalize()), ship.getModifiedItemAttr('eliteBonusBarge1'), skill='Exhumers') class Effect5840(EffectDef): """ eliteBargeBonusMiningDurationBarge2 Used by: Ships from group: Exhumer (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining'), 'duration', ship.getModifiedItemAttr('eliteBonusBarge2'), skill='Exhumers') class Effect5852(EffectDef): """ eliteBonusExpeditionMining1 Used by: Ship: Prospect """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining'), 'miningAmount', module.getModifiedItemAttr('eliteBonusExpedition1'), skill='Expedition Frigates') class Effect5853(EffectDef): """ eliteBonusExpeditionSigRadius2 Used by: Ship: Prospect """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('signatureRadius', ship.getModifiedItemAttr('eliteBonusExpedition2'), skill='Expedition Frigates') class Effect5862(EffectDef): """ shipMissileEMDamageCB Used by: Ship: Barghest """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'emDamage', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship') class Effect5863(EffectDef): """ shipMissileKinDamageCB Used by: Ship: Barghest """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship') class Effect5864(EffectDef): """ shipMissileThermDamageCB Used by: Ship: Barghest """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship') class Effect5865(EffectDef): """ shipMissileExploDamageCB Used by: Ship: Barghest """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship') class Effect5866(EffectDef): """ shipBonusWarpScrambleMaxRangeGB Used by: Ship: Barghest """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', ship.getModifiedItemAttr('shipBonusGB'), skill='Gallente Battleship') class Effect5867(EffectDef): """ shipBonusMissileExplosionDelayPirateFaction2 Used by: Ship: Barghest Ship: Garmur Ship: Orthrus """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosionDelay', ship.getModifiedItemAttr('shipBonusRole8')) class Effect5868(EffectDef): """ drawbackCargoCapacity Used by: Modules named like: Transverse Bulkhead (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.boostItemAttr('capacity', module.getModifiedItemAttr('drawback')) class Effect5869(EffectDef): """ eliteIndustrialWarpSpeedBonus1 Used by: Ships from group: Blockade Runner (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('warpSpeedMultiplier', ship.getModifiedItemAttr('eliteBonusIndustrial1'), skill='Transport Ships') class Effect5870(EffectDef): """ shipBonusShieldBoostCI2 Used by: Ship: Bustard """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusCI2'), skill='Caldari Industrial') class Effect5871(EffectDef): """ shipBonusShieldBoostMI2 Used by: Ship: Mastodon """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusMI2'), skill='Minmatar Industrial') class Effect5872(EffectDef): """ shipBonusArmorRepairAI2 Used by: Ship: Impel """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusAI2'), skill='Amarr Industrial') class Effect5873(EffectDef): """ shipBonusArmorRepairGI2 Used by: Ship: Occator """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusGI2'), skill='Gallente Industrial') class Effect5874(EffectDef): """ eliteIndustrialFleetCapacity1 Used by: Ships from group: Deep Space Transport (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('fleetHangarCapacity', ship.getModifiedItemAttr('eliteBonusIndustrial1'), skill='Transport Ships') class Effect5881(EffectDef): """ eliteIndustrialShieldResists2 Used by: Ship: Bustard Ship: Mastodon """ type = 'passive' @staticmethod def handler(fit, ship, context): for damageType in ('em', 'thermal', 'explosive', 'kinetic'): fit.ship.boostItemAttr('shield{}DamageResonance'.format(damageType.capitalize()), ship.getModifiedItemAttr('eliteBonusIndustrial2'), skill='Transport Ships') class Effect5888(EffectDef): """ eliteIndustrialArmorResists2 Used by: Ship: Impel Ship: Occator """ type = 'passive' @staticmethod def handler(fit, ship, context): for damageType in ('em', 'thermal', 'explosive', 'kinetic'): fit.ship.boostItemAttr('armor{}DamageResonance'.format(damageType.capitalize()), ship.getModifiedItemAttr('eliteBonusIndustrial2'), skill='Transport Ships') class Effect5889(EffectDef): """ eliteIndustrialABHeatBonus Used by: Ships from group: Deep Space Transport (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'overloadSpeedFactorBonus', ship.getModifiedItemAttr('roleBonusOverheatDST')) class Effect5890(EffectDef): """ eliteIndustrialMWDHeatBonus Used by: Ships from group: Deep Space Transport (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'overloadSpeedFactorBonus', ship.getModifiedItemAttr('roleBonusOverheatDST')) class Effect5891(EffectDef): """ eliteIndustrialArmorHardenerHeatBonus Used by: Ships from group: Deep Space Transport (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'overloadHardeningBonus', ship.getModifiedItemAttr('roleBonusOverheatDST')) class Effect5892(EffectDef): """ eliteIndustrialReactiveArmorHardenerHeatBonus Used by: Ships from group: Deep Space Transport (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'overloadSelfDurationBonus', ship.getModifiedItemAttr('roleBonusOverheatDST')) class Effect5893(EffectDef): """ eliteIndustrialShieldHardenerHeatBonus Used by: Ships from group: Deep Space Transport (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Tactical Shield Manipulation'), 'overloadHardeningBonus', ship.getModifiedItemAttr('roleBonusOverheatDST')) class Effect5896(EffectDef): """ eliteIndustrialShieldBoosterHeatBonus Used by: Ships from group: Deep Space Transport (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'overloadShieldBonus', ship.getModifiedItemAttr('roleBonusOverheatDST')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'overloadSelfDurationBonus', ship.getModifiedItemAttr('roleBonusOverheatDST')) class Effect5899(EffectDef): """ eliteIndustrialArmorRepairHeatBonus Used by: Ships from group: Deep Space Transport (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'overloadArmorDamageAmount', ship.getModifiedItemAttr('roleBonusOverheatDST')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'overloadSelfDurationBonus', ship.getModifiedItemAttr('roleBonusOverheatDST')) class Effect5900(EffectDef): """ warpSpeedAddition Used by: Modules from group: Warp Accelerator (3 of 3) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.increaseItemAttr('warpSpeedMultiplier', module.getModifiedItemAttr('warpSpeedAdd')) class Effect5901(EffectDef): """ roleBonusBulkheadCPU Used by: Ships from group: Freighter (4 of 5) Ships from group: Jump Freighter (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Reinforced Bulkhead', 'cpu', ship.getModifiedItemAttr('cpuNeedBonus')) class Effect5911(EffectDef): """ onlineJumpDriveConsumptionAmountBonusPercentage Used by: Modules from group: Jump Drive Economizer (3 of 3) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context): fit.ship.boostItemAttr('jumpDriveConsumptionAmount', module.getModifiedItemAttr('consumptionQuantityBonusPercentage'), stackingPenalties=True) class Effect5912(EffectDef): """ systemRemoteCapTransmitterAmount Used by: Celestials named like: Cataclysmic Variable Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter', 'powerTransferAmount', beacon.getModifiedItemAttr('energyTransferAmountBonus'), stackingPenalties=True, penaltyGroup='postMul') class Effect5913(EffectDef): """ systemArmorHP Used by: Celestials named like: Wolf Rayet Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.ship.multiplyItemAttr('armorHP', beacon.getModifiedItemAttr('armorHPMultiplier')) class Effect5914(EffectDef): """ systemEnergyNeutMultiplier Used by: Celestials named like: Pulsar Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', beacon.getModifiedItemAttr('energyWarfareStrengthMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect5915(EffectDef): """ systemEnergyVampireMultiplier Used by: Celestials named like: Pulsar Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', beacon.getModifiedItemAttr('energyWarfareStrengthMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect5916(EffectDef): """ systemDamageExplosiveBombs Used by: Celestials named like: Red Giant Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'explosiveDamage', beacon.getModifiedItemAttr('smartbombDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect5917(EffectDef): """ systemDamageKineticBombs Used by: Celestials named like: Red Giant Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'kineticDamage', beacon.getModifiedItemAttr('smartbombDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect5918(EffectDef): """ systemDamageThermalBombs Used by: Celestials named like: Red Giant Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'thermalDamage', beacon.getModifiedItemAttr('smartbombDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect5919(EffectDef): """ systemDamageEMBombs Used by: Celestials named like: Red Giant Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'emDamage', beacon.getModifiedItemAttr('smartbombDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect5920(EffectDef): """ systemAoeCloudSize Used by: Celestials named like: Magnetar Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeCloudSize', beacon.getModifiedItemAttr('aoeCloudSizeMultiplier')) class Effect5921(EffectDef): """ systemTargetPainterMultiplier Used by: Celestials named like: Magnetar Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Target Painting'), 'signatureRadiusBonus', beacon.getModifiedItemAttr('targetPainterStrengthMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect5922(EffectDef): """ systemWebifierStrengthMultiplier Used by: Celestials named like: Black Hole Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Stasis Web', 'speedFactor', beacon.getModifiedItemAttr('stasisWebStrengthMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect5923(EffectDef): """ systemNeutBombs Used by: Celestials named like: Red Giant Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'energyNeutralizerAmount', beacon.getModifiedItemAttr('smartbombDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect5924(EffectDef): """ systemGravimetricECMBomb Used by: Celestials named like: Red Giant Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'scanGravimetricStrengthBonus', beacon.getModifiedItemAttr('smartbombDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect5925(EffectDef): """ systemLadarECMBomb Used by: Celestials named like: Red Giant Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'scanLadarStrengthBonus', beacon.getModifiedItemAttr('smartbombDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect5926(EffectDef): """ systemMagnetrometricECMBomb Used by: Celestials named like: Red Giant Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'scanMagnetometricStrengthBonus', beacon.getModifiedItemAttr('smartbombDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect5927(EffectDef): """ systemRadarECMBomb Used by: Celestials named like: Red Giant Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'scanRadarStrengthBonus', beacon.getModifiedItemAttr('smartbombDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect5929(EffectDef): """ systemDroneTracking Used by: Celestials named like: Magnetar Effect Beacon Class (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.drones.filteredItemMultiply(lambda drone: True, 'trackingSpeed', beacon.getModifiedItemAttr('trackingSpeedMultiplier'), stackingPenalties=True, penaltyGroup='postMul') class Effect5934(EffectDef): """ warpScrambleBlockMWDWithNPCEffect Used by: Modules named like: Warp Scrambler (27 of 27) """ runTime = 'early' type = 'projected', 'active' @staticmethod def handler(fit, module, context): if 'projected' not in context: return fit.ship.increaseItemAttr('warpScrambleStatus', module.getModifiedItemAttr('warpScrambleStrength')) # this is such a dirty hack for mod in fit.modules: if not mod.isEmpty and mod.state > FittingModuleState.ONLINE and ( mod.item.requiresSkill('Micro Jump Drive Operation') or mod.item.requiresSkill('High Speed Maneuvering') ): mod.state = FittingModuleState.ONLINE if not mod.isEmpty and mod.item.requiresSkill('Micro Jump Drive Operation') and mod.state > FittingModuleState.ONLINE: mod.state = FittingModuleState.ONLINE class Effect5938(EffectDef): """ shipBonusSmallMissileExplosionRadiusCF2 Used by: Ship: Crow """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Rockets') or mod.charge.requiresSkill('Light Missiles'), 'aoeCloudSize', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate') class Effect5939(EffectDef): """ shipRocketRoFBonusAF2 Used by: Ship: Malediction """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rocket', 'speed', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate') class Effect5940(EffectDef): """ eliteBonusInterdictorsSHTRoF1 Used by: Ship: Eris """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'speed', ship.getModifiedItemAttr('eliteBonusInterdictors1'), skill='Interdictors') class Effect5944(EffectDef): """ shipMissileLauncherRoFAD1Fixed Used by: Ship: Heretic """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'speed', ship.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer') class Effect5945(EffectDef): """ cloakingPrototype Used by: Modules named like: Prototype Cloaking Device I (2 of 2) """ runTime = 'early' type = 'active' @staticmethod def handler(fit, module, context): # 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')) class Effect5951(EffectDef): """ drawbackWarpSpeed Used by: Modules from group: Rig Anchor (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.boostItemAttr('warpSpeedMultiplier', module.getModifiedItemAttr('drawback'), stackingPenalties=True) class Effect5956(EffectDef): """ shipMETDamageBonusAC2 Used by: Ship: Devoter """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser') class Effect5957(EffectDef): """ eliteBonusHeavyInterdictorsMETOptimal Used by: Ship: Devoter """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'maxRange', ship.getModifiedItemAttr('eliteBonusHeavyInterdictors1'), skill='Heavy Interdiction Cruisers') class Effect5958(EffectDef): """ shipHybridTrackingGC Used by: Ship: Lachesis Ship: Phobos """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser') class Effect5959(EffectDef): """ eliteBonusHeavyInterdictorsHybridOptimal1 Used by: Ship: Phobos """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('eliteBonusHeavyInterdictors1'), skill='Heavy Interdiction Cruisers') class Effect5994(EffectDef): """ resistanceKillerHullAll Used by: Modules named like: Polarized (12 of 18) """ type = 'passive' @staticmethod def handler(fit, module, context): for dmgType in ('em', 'thermal', 'kinetic', 'explosive'): tgtAttr = '{}DamageResonance'.format(dmgType) fit.ship.forceItemAttr(tgtAttr, module.getModifiedItemAttr('resistanceKillerHull')) class Effect5995(EffectDef): """ resistanceKillerShieldArmorAll Used by: Modules named like: Polarized (12 of 18) """ type = 'passive' @staticmethod def handler(fit, module, context): 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')) class Effect5998(EffectDef): """ freighterSMACapacityBonusO1 Used by: Ship: Bowhead """ type = 'passive' @staticmethod def handler(fit, ship, context): # todo: stacking? fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('freighterBonusO2'), skill='ORE Freighter', stackingPenalties=True) class Effect6001(EffectDef): """ freighterAgilityBonus2O2 Used by: Ship: Bowhead """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('shipMaintenanceBayCapacity', ship.getModifiedItemAttr('freighterBonusO1'), skill='ORE Freighter') class Effect6006(EffectDef): """ shipSETDamageAmarrTacticalDestroyer1 Used by: Ship: Confessor """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusTacticalDestroyerAmarr1'), skill='Amarr Tactical Destroyer') class Effect6007(EffectDef): """ shipSETCapNeedAmarrTacticalDestroyer2 Used by: Ship: Confessor """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusTacticalDestroyerAmarr2'), skill='Amarr Tactical Destroyer') class Effect6008(EffectDef): """ shipHeatDamageAmarrTacticalDestroyer3 Used by: Ship: Confessor """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', ship.getModifiedItemAttr('shipBonusTacticalDestroyerAmarr3'), skill='Amarr Tactical Destroyer') class Effect6009(EffectDef): """ probeLauncherCPUPercentRoleBonusT3 Used by: Ships from group: Strategic Cruiser (4 of 4) Ships from group: Tactical Destroyer (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Astrometrics'), 'cpu', src.getModifiedItemAttr('roleBonusT3ProbeCPU')) class Effect6010(EffectDef): """ shipModeMaxTargetRangePostDiv Used by: Modules named like: Sharpshooter Mode (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.multiplyItemAttr( 'maxTargetRange', 1 / module.getModifiedItemAttr('modeMaxTargetRangePostDiv'), stackingPenalties=True, penaltyGroup='postDiv' ) class Effect6011(EffectDef): """ shipModeSETOptimalRangePostDiv Used by: Module: Confessor Sharpshooter Mode """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'maxRange', 1 / module.getModifiedItemAttr('modeMaxRangePostDiv'), stackingPenalties=True, penaltyGroup='postDiv' ) class Effect6012(EffectDef): """ shipModeScanStrengthPostDiv Used by: Modules named like: Sharpshooter Mode (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context): 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' ) class Effect6014(EffectDef): """ modeSigRadiusPostDiv Used by: Module: Confessor Defense Mode Module: Jackdaw Defense Mode """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.multiplyItemAttr('signatureRadius', 1 / module.getModifiedItemAttr('modeSignatureRadiusPostDiv'), stackingPenalties=True, penaltyGroup='postDiv') class Effect6015(EffectDef): """ modeArmorResonancePostDiv Used by: Modules named like: Defense Mode (3 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context): 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' ) class Effect6016(EffectDef): """ modeAgilityPostDiv Used by: Modules named like: Propulsion Mode (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.multiplyItemAttr( 'agility', 1 / module.getModifiedItemAttr('modeAgilityPostDiv'), stackingPenalties=True, penaltyGroup='postDiv' ) class Effect6017(EffectDef): """ modeVelocityPostDiv Used by: Module: Jackdaw Propulsion Mode """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.multiplyItemAttr( 'maxVelocity', 1 / module.getModifiedItemAttr('modeVelocityPostDiv'), stackingPenalties=True, penaltyGroup='postDiv' ) class Effect6020(EffectDef): """ shipBonusEnergyNeutOptimalRS3 Used by: Ship: Pilgrim """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'maxRange', src.getModifiedItemAttr('eliteBonusReconShip3'), skill='Recon Ships') class Effect6021(EffectDef): """ shipBonusEnergyNosOptimalRS3 Used by: Ship: Pilgrim """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange', src.getModifiedItemAttr('eliteBonusReconShip3'), skill='Recon Ships') class Effect6025(EffectDef): """ eliteReconBonusMHTOptimalRange1 Used by: Ship: Lachesis """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships') class Effect6027(EffectDef): """ eliteReconBonusMPTdamage1 Used by: Ship: Huginn """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships') class Effect6032(EffectDef): """ remoteCapacitorTransmitterPowerNeedBonusEffect Used by: Ships from group: Logistics (3 of 7) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter', 'power', ship.getModifiedItemAttr('powerTransferPowerNeedBonus')) class Effect6036(EffectDef): """ shipHeatDamageMinmatarTacticalDestroyer3 Used by: Ship: Svipul """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', ship.getModifiedItemAttr('shipBonusTacticalDestroyerMinmatar3'), skill='Minmatar Tactical Destroyer') class Effect6037(EffectDef): """ shipSPTDamageMinmatarTacticalDestroyer1 Used by: Ship: Svipul """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusTacticalDestroyerMinmatar1'), skill='Minmatar Tactical Destroyer') class Effect6038(EffectDef): """ shipSPTOptimalMinmatarTacticalDestroyer2 Used by: Ship: Svipul """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusTacticalDestroyerMinmatar2'), skill='Minmatar Tactical Destroyer') class Effect6039(EffectDef): """ shipModeSPTTrackingPostDiv Used by: Module: Svipul Sharpshooter Mode """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'trackingSpeed', 1 / module.getModifiedItemAttr('modeTrackingPostDiv'), stackingPenalties=True, penaltyGroup='postDiv' ) class Effect6040(EffectDef): """ modeMWDSigRadiusPostDiv Used by: Module: Svipul Defense Mode """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'signatureRadiusBonus', 1 / module.getModifiedItemAttr('modeMWDSigPenaltyPostDiv'), stackingPenalties=True, penaltyGroup='postDiv' ) class Effect6041(EffectDef): """ modeShieldResonancePostDiv Used by: Module: Jackdaw Defense Mode Module: Svipul Defense Mode """ type = 'passive' @staticmethod def handler(fit, module, context): 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' ) class Effect6045(EffectDef): """ shipBonusSentryDamageMultiplierGC3 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGC3'), skill='Gallente Cruiser') class Effect6046(EffectDef): """ shipBonusSentryHPGC3 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'hp', ship.getModifiedItemAttr('shipBonusGC3'), skill='Gallente Cruiser') class Effect6047(EffectDef): """ shipBonusSentryArmorHPGC3 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'armorHP', ship.getModifiedItemAttr('shipBonusGC3'), skill='Gallente Cruiser') class Effect6048(EffectDef): """ shipBonusSentryShieldHPGC3 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusGC3'), skill='Gallente Cruiser') class Effect6051(EffectDef): """ shipBonusLightDroneDamageMultiplierGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser') class Effect6052(EffectDef): """ shipBonusMediumDroneDamageMultiplierGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser') class Effect6053(EffectDef): """ shipBonusHeavyDroneDamageMultiplierGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser') class Effect6054(EffectDef): """ shipBonusHeavyDroneHPGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'hp', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser') class Effect6055(EffectDef): """ shipBonusHeavyDroneArmorHPGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'armorHP', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser') class Effect6056(EffectDef): """ shipBonusHeavyDroneShieldHPGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser') class Effect6057(EffectDef): """ shipBonusMediumDroneShieldHPGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser') class Effect6058(EffectDef): """ shipBonusMediumDroneArmorHPGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'), 'armorHP', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser') class Effect6059(EffectDef): """ shipBonusMediumDroneHPGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'), 'hp', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser') class Effect6060(EffectDef): """ shipBonusLightDroneHPGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'), 'hp', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser') class Effect6061(EffectDef): """ shipBonusLightDroneArmorHPGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'), 'armorHP', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser') class Effect6062(EffectDef): """ shipBonusLightDroneShieldHPGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser') class Effect6063(EffectDef): """ entosisLink Used by: Modules from group: Entosis Link (6 of 6) """ type = 'active' @staticmethod def handler(fit, module, context): 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 ) class Effect6076(EffectDef): """ shipModeMissileVelocityPostDiv Used by: Module: Jackdaw Sharpshooter Mode """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredChargeMultiply( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', 1 / module.getModifiedItemAttr('modeMaxRangePostDiv'), stackingPenalties=True, penaltyGroup='postDiv' ) class Effect6077(EffectDef): """ shipHeatDamageCaldariTacticalDestroyer3 Used by: Ship: Jackdaw """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', ship.getModifiedItemAttr('shipBonusTacticalDestroyerCaldari3'), skill='Caldari Tactical Destroyer') class Effect6083(EffectDef): """ shipSmallMissileDmgPirateFaction Used by: Ship: Jackdaw Ship: Sunesis """ type = 'passive' @staticmethod def handler(fit, ship, context): 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')) class Effect6085(EffectDef): """ shipMissileRoFCaldariTacticalDestroyer1 Used by: Ship: Jackdaw """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'speed', ship.getModifiedItemAttr('shipBonusTacticalDestroyerCaldari1'), skill='Caldari Tactical Destroyer') class Effect6088(EffectDef): """ shipBonusHeavyAssaultMissileAllDamageMC2 Used by: Ship: Rapier Ship: Scythe Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): 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') class Effect6093(EffectDef): """ shipBonusHeavyMissileAllDamageMC2 Used by: Ship: Rapier Ship: Scythe Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): 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') class Effect6096(EffectDef): """ shipBonusLightMissileAllDamageMC2 Used by: Ship: Rapier Ship: Scythe Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): 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') class Effect6098(EffectDef): """ shipMissileReloadTimeCaldariTacticalDestroyer2 Used by: Ship: Jackdaw """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'reloadTime', ship.getModifiedItemAttr('shipBonusTacticalDestroyerCaldari2'), skill='Caldari Tactical Destroyer') class Effect6104(EffectDef): """ entosisDurationMultiply Used by: Items from market group: Ships > Capital Ships (31 of 40) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Infomorph Psychology'), 'duration', ship.getModifiedItemAttr('entosisDurationMultiplier') or 1) class Effect6110(EffectDef): """ missileVelocityBonusOnline Used by: Modules from group: Missile Guidance Enhancer (3 of 3) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', module.getModifiedItemAttr('missileVelocityBonus'), stackingPenalties=True) class Effect6111(EffectDef): """ missileExplosionDelayBonusOnline Used by: Modules from group: Missile Guidance Enhancer (3 of 3) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosionDelay', module.getModifiedItemAttr('explosionDelayBonus'), stackingPenalties=True) class Effect6112(EffectDef): """ missileAOECloudSizeBonusOnline Used by: Modules from group: Missile Guidance Enhancer (3 of 3) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeCloudSize', module.getModifiedItemAttr('aoeCloudSizeBonus'), stackingPenalties=True) class Effect6113(EffectDef): """ 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): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeVelocity', module.getModifiedItemAttr('aoeVelocityBonus'), stackingPenalties=True) class Effect6128(EffectDef): """ 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): module.boostItemAttr('aoeCloudSizeBonus', module.getModifiedChargeAttr('aoeCloudSizeBonusBonus')) class Effect6129(EffectDef): """ 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): module.boostItemAttr('aoeVelocityBonus', module.getModifiedChargeAttr('aoeVelocityBonusBonus')) class Effect6130(EffectDef): """ scriptMissileGuidanceComputerMissileVelocityBonusBonus Used by: Charges named like: Missile Script (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context): module.boostItemAttr('missileVelocityBonus', module.getModifiedChargeAttr('missileVelocityBonusBonus')) class Effect6131(EffectDef): """ scriptMissileGuidanceComputerExplosionDelayBonusBonus Used by: Charges named like: Missile Script (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context): module.boostItemAttr('explosionDelayBonus', module.getModifiedChargeAttr('explosionDelayBonusBonus')) class Effect6135(EffectDef): """ missileGuidanceComputerBonus4 Used by: Modules from group: Missile Guidance Computer (3 of 3) """ type = 'active' @staticmethod def handler(fit, container, context): 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) class Effect6144(EffectDef): """ overloadSelfMissileGuidanceBonus5 Used by: Modules from group: Missile Guidance Computer (3 of 3) """ type = 'overheat' @staticmethod def handler(fit, module, context): for tgtAttr in ( 'aoeCloudSizeBonus', 'explosionDelayBonus', 'missileVelocityBonus', 'maxVelocityModifier', 'aoeVelocityBonus' ): module.boostItemAttr(tgtAttr, module.getModifiedItemAttr('overloadTrackingModuleStrengthBonus')) class Effect6148(EffectDef): """ shipHeatDamageGallenteTacticalDestroyer3 Used by: Ship: Hecate """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', ship.getModifiedItemAttr('shipBonusTacticalDestroyerGallente3'), skill='Gallente Tactical Destroyer') class Effect6149(EffectDef): """ shipSHTRoFGallenteTacticalDestroyer1 Used by: Ship: Hecate """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'speed', ship.getModifiedItemAttr('shipBonusTacticalDestroyerGallente1'), skill='Gallente Tactical Destroyer') class Effect6150(EffectDef): """ shipSHTTrackingGallenteTacticalDestroyer2 Used by: Ship: Hecate """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusTacticalDestroyerGallente2'), skill='Gallente Tactical Destroyer') class Effect6151(EffectDef): """ modeHullResonancePostDiv Used by: Module: Hecate Defense Mode """ type = 'passive' @staticmethod def handler(fit, module, context): 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)) ) class Effect6152(EffectDef): """ shipModeSHTOptimalRangePostDiv Used by: Module: Hecate Sharpshooter Mode """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', 1 / module.getModifiedItemAttr('modeMaxRangePostDiv'), stackingPenalties=True, penaltyGroup='postDiv' ) class Effect6153(EffectDef): """ modeMWDCapPostDiv Used by: Module: Hecate Propulsion Mode """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'capacitorNeed', 1 / module.getModifiedItemAttr('modeMWDCapPostDiv') ) class Effect6154(EffectDef): """ modeMWDBoostPostDiv Used by: Module: Hecate Propulsion Mode """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'speedFactor', 1 / module.getModifiedItemAttr('modeMWDVelocityPostDiv'), stackingPenalties=True, penaltyGroup='postDiv' ) class Effect6155(EffectDef): """ modeArmorRepDurationPostDiv Used by: Module: Hecate Defense Mode """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Repair Systems'), 'duration', 1 / module.getModifiedItemAttr('modeArmorRepDurationPostDiv') ) class Effect6163(EffectDef): """ passiveSpeedLimit Used by: Modules from group: Entosis Link (6 of 6) """ runtime = 'late' type = 'passive' @staticmethod def handler(fit, src, context): fit.extraAttributes['speedLimit'] = src.getModifiedItemAttr('speedLimit') class Effect6164(EffectDef): """ systemMaxVelocityPercentage Used by: Celestials named like: Drifter Incursion (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context): fit.ship.boostItemAttr('maxVelocity', beacon.getModifiedItemAttr('maxVelocityMultiplier'), stackingPenalties=True) class Effect6166(EffectDef): """ shipBonusWDFGnullPenalties Used by: Ship: Fiend """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Propulsion Jamming'), 'speedFactorBonus', ship.getModifiedItemAttr('shipBonusAT')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Propulsion Jamming'), 'speedBoostFactorBonus', ship.getModifiedItemAttr('shipBonusAT')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Propulsion Jamming'), 'massBonusPercentage', ship.getModifiedItemAttr('shipBonusAT')) class Effect6170(EffectDef): """ entosisCPUPenalty Used by: Ships from group: Interceptor (10 of 10) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Infomorph Psychology'), 'entosisCPUAdd', ship.getModifiedItemAttr('entosisCPUPenalty')) class Effect6171(EffectDef): """ entosisCPUAddition Used by: Modules from group: Entosis Link (6 of 6) """ type = 'passive' @staticmethod def handler(fit, module, context): module.increaseItemAttr('cpu', module.getModifiedItemAttr('entosisCPUAdd')) class Effect6172(EffectDef): """ battlecruiserMETRange Used by: Ships named like: Harbinger (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'maxRange', ship.getModifiedItemAttr('roleBonusCBC')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'falloff', ship.getModifiedItemAttr('roleBonusCBC')) class Effect6173(EffectDef): """ battlecruiserMHTRange Used by: Ships named like: Brutix (2 of 2) Ship: Ferox """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('roleBonusCBC')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'falloff', ship.getModifiedItemAttr('roleBonusCBC')) class Effect6174(EffectDef): """ battlecruiserMPTRange Used by: Ships named like: Hurricane (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'maxRange', ship.getModifiedItemAttr('roleBonusCBC')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'falloff', ship.getModifiedItemAttr('roleBonusCBC')) class Effect6175(EffectDef): """ battlecruiserMissileRange Used by: Ships named like: Drake (2 of 2) Ship: Cyclone """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', skill.getModifiedItemAttr('roleBonusCBC')) class Effect6176(EffectDef): """ battlecruiserDroneSpeed Used by: Ship: Myrmidon Ship: Prophecy """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'maxVelocity', ship.getModifiedItemAttr('roleBonusCBC')) class Effect6177(EffectDef): """ shipHybridDmg1CBC2 Used by: Ship: Ferox """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser') class Effect6178(EffectDef): """ shipBonusProjectileTrackingMBC2 Used by: Ship: Hurricane Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusMBC2'), skill='Minmatar Battlecruiser') class Effect6184(EffectDef): """ shipModuleRemoteCapacitorTransmitter Used by: Modules from group: Remote Capacitor Transmitter (41 of 41) """ runTime = 'late' type = 'projected', 'active' @staticmethod def handler(fit, src, context, **kwargs): if 'projected' in context: 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(EffectDef): """ shipModuleRemoteHullRepairer Used by: Modules from group: Remote Hull Repairer (8 of 8) """ runTime = 'late' type = 'projected', 'active' @staticmethod def handler(fit, module, context): if 'projected' not in context: return bonus = module.getModifiedItemAttr('structureDamageAmount') duration = module.getModifiedItemAttr('duration') / 1000.0 fit.extraAttributes.increase('hullRepair', bonus / duration) class Effect6186(EffectDef): """ shipModuleRemoteShieldBooster Used by: Modules from group: Remote Shield Booster (38 of 38) """ type = 'projected', 'active' @staticmethod def handler(fit, container, context, **kwargs): if 'projected' in context: bonus = container.getModifiedItemAttr('shieldBonus') duration = container.getModifiedItemAttr('duration') / 1000.0 fit.extraAttributes.increase('shieldRepair', bonus / duration, **kwargs) class Effect6187(EffectDef): """ energyNeutralizerFalloff Used by: Modules from group: Energy Neutralizer (54 of 54) """ type = 'active', 'projected' @staticmethod def handler(fit, src, context, **kwargs): if 'projected' in context and ((hasattr(src, 'state') and src.state >= FittingModuleState.ACTIVE) or hasattr(src, 'amountActive')): 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 Effect6188(EffectDef): """ shipModuleRemoteArmorRepairer Used by: Modules from group: Remote Armor Repairer (39 of 39) """ runTime = 'late' type = 'projected', 'active' @staticmethod def handler(fit, container, context, **kwargs): if 'projected' in context: bonus = container.getModifiedItemAttr('armorDamageAmount') duration = container.getModifiedItemAttr('duration') / 1000.0 rps = bonus / duration fit.extraAttributes.increase('armorRepair', rps) fit.extraAttributes.increase('armorRepairPreSpool', rps) fit.extraAttributes.increase('armorRepairFullSpool', rps) class Effect6195(EffectDef): """ expeditionFrigateShieldResistance1 Used by: Ship: Endurance """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('eliteBonusExpedition1'), skill='Expedition Frigates') fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('eliteBonusExpedition1'), skill='Expedition Frigates') fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('eliteBonusExpedition1'), skill='Expedition Frigates') fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('eliteBonusExpedition1'), skill='Expedition Frigates') class Effect6196(EffectDef): """ expeditionFrigateBonusIceHarvestingCycleTime2 Used by: Ship: Endurance """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'duration', src.getModifiedItemAttr('eliteBonusExpedition2'), skill='Expedition Frigates') class Effect6197(EffectDef): """ energyNosferatuFalloff Used by: Modules from group: Energy Nosferatu (54 of 54) """ runTime = 'late' type = 'active', 'projected' @staticmethod def handler(fit, src, context, **kwargs): amount = src.getModifiedItemAttr('powerTransferAmount') time = src.getModifiedItemAttr('duration') if 'effect' in kwargs and 'projected' in context: from eos.modifiedAttributeDict import ModifiedAttributeDict amount *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) if 'projected' in context: fit.addDrain(src, time, amount, 0) elif 'module' in context: src.itemModifiedAttributes.force('capacitorNeed', -amount) class Effect6201(EffectDef): """ doomsdaySlash Used by: Modules named like: Reaper (4 of 4) """ type = 'active' class Effect6208(EffectDef): """ microJumpPortalDrive Used by: Module: Micro Jump Field Generator """ type = 'active' @staticmethod def handler(fit, module, context): fit.ship.boostItemAttr('signatureRadius', module.getModifiedItemAttr('signatureRadiusBonusPercent'), stackingPenalties=True) class Effect6214(EffectDef): """ roleBonusCDLinksPGReduction Used by: Ships from group: Command Destroyer (4 of 4) Ship: Porpoise """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'power', src.getModifiedItemAttr('roleBonusCD')) class Effect6216(EffectDef): """ structureEnergyNeutralizerFalloff Used by: Structure Modules from group: Structure Energy Neutralizer (5 of 5) """ type = 'active', 'projected' @staticmethod def handler(fit, src, context, **kwargs): amount = 0 if 'projected' in context: if (hasattr(src, 'state') and src.state >= FittingModuleState.ACTIVE) or hasattr(src, 'amountActive'): 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 Effect6222(EffectDef): """ structureWarpScrambleBlockMWDWithNPCEffect Used by: Structure Modules from group: Structure Warp Scrambler (2 of 2) """ runTime = 'early' type = 'projected', 'active' @staticmethod def handler(fit, module, context): if 'projected' in context: fit.ship.increaseItemAttr('warpScrambleStatus', module.getModifiedItemAttr('warpScrambleStrength')) if module.charge is not None and module.charge.ID == 47336: for mod in fit.modules: if not mod.isEmpty and mod.item.requiresSkill('High Speed Maneuvering') and mod.state > FittingModuleState.ONLINE: mod.state = FittingModuleState.ONLINE if not mod.isEmpty and mod.item.requiresSkill('Micro Jump Drive Operation') and mod.state > FittingModuleState.ONLINE: mod.state = FittingModuleState.ONLINE class Effect6230(EffectDef): """ shipBonusEnergyNeutOptimalRS1 Used by: Ship: Curse """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'maxRange', src.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships') class Effect6232(EffectDef): """ shipBonusEnergyNeutFalloffRS2 Used by: Ship: Pilgrim """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'falloffEffectiveness', src.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships') class Effect6233(EffectDef): """ shipBonusEnergyNeutFalloffRS3 Used by: Ship: Curse """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'falloffEffectiveness', src.getModifiedItemAttr('eliteBonusReconShip3'), skill='Recon Ships') class Effect6234(EffectDef): """ shipBonusEnergyNosOptimalRS1 Used by: Ship: Curse """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange', src.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships') class Effect6237(EffectDef): """ shipBonusEnergyNosFalloffRS2 Used by: Ship: Pilgrim """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness', src.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships') class Effect6238(EffectDef): """ shipBonusEnergyNosFalloffRS3 Used by: Ship: Curse """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness', src.getModifiedItemAttr('eliteBonusReconShip3'), skill='Recon Ships') class Effect6239(EffectDef): """ miningFrigateBonusIceHarvestingCycleTime2 Used by: Ship: Endurance """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'duration', src.getModifiedItemAttr('shipBonusOREfrig2'), skill='Mining Frigate') class Effect6241(EffectDef): """ shipBonusEnergyNeutFalloffAD1 Used by: Ship: Dragoon """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer') class Effect6242(EffectDef): """ shipBonusEnergyNeutOptimalAD2 Used by: Ship: Dragoon """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'maxRange', src.getModifiedItemAttr('shipBonusAD2'), skill='Amarr Destroyer') class Effect6245(EffectDef): """ shipBonusEnergyNosOptimalAD2 Used by: Ship: Dragoon """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange', src.getModifiedItemAttr('shipBonusAD2'), skill='Amarr Destroyer') class Effect6246(EffectDef): """ shipBonusEnergyNosFalloffAD1 Used by: Ship: Dragoon """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer') class Effect6253(EffectDef): """ shipBonusEnergyNeutOptimalAB Used by: Ship: Armageddon """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'maxRange', src.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship') class Effect6256(EffectDef): """ shipBonusEnergyNeutFalloffAB2 Used by: Ship: Armageddon """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusAB2'), skill='Amarr Battleship') class Effect6257(EffectDef): """ shipBonusEnergyNosOptimalAB Used by: Ship: Armageddon """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange', src.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship') class Effect6260(EffectDef): """ shipBonusEnergyNosFalloffAB2 Used by: Ship: Armageddon """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusAB2'), skill='Amarr Battleship') class Effect6267(EffectDef): """ shipBonusEnergyNeutOptimalEAF1 Used by: Ship: Sentinel """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'maxRange', src.getModifiedItemAttr('eliteBonusElectronicAttackShip1'), skill='Electronic Attack Ships') class Effect6272(EffectDef): """ shipBonusEnergyNeutFalloffEAF3 Used by: Ship: Sentinel """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'falloffEffectiveness', src.getModifiedItemAttr('eliteBonusElectronicAttackShip3'), skill='Electronic Attack Ships') class Effect6273(EffectDef): """ shipBonusEnergyNosOptimalEAF1 Used by: Ship: Sentinel """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange', src.getModifiedItemAttr('eliteBonusElectronicAttackShip1'), skill='Electronic Attack Ships') class Effect6278(EffectDef): """ shipBonusEnergyNosFalloffEAF3 Used by: Ship: Sentinel """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness', src.getModifiedItemAttr('eliteBonusElectronicAttackShip3'), skill='Electronic Attack Ships') class Effect6281(EffectDef): """ shipBonusEnergyNeutOptimalAF2 Used by: Ship: Malice """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'maxRange', src.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate') class Effect6285(EffectDef): """ shipBonusEnergyNeutFalloffAF3 Used by: Ship: Malice """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'falloffEffectiveness', src.getModifiedItemAttr('shipBonus3AF'), skill='Amarr Frigate') class Effect6287(EffectDef): """ shipBonusEnergyNosOptimalAF2 Used by: Ship: Malice """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange', src.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate') class Effect6291(EffectDef): """ shipBonusEnergyNosFalloffAF3 Used by: Ship: Malice """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness', src.getModifiedItemAttr('shipBonus3AF'), skill='Amarr Frigate') class Effect6294(EffectDef): """ shipBonusEnergyNeutOptimalAC1 Used by: Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'maxRange', src.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser') class Effect6299(EffectDef): """ shipBonusEnergyNeutFalloffAC3 Used by: Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusAC3'), skill='Amarr Cruiser') class Effect6300(EffectDef): """ shipBonusEnergyNosOptimalAC1 Used by: Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange', src.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser') class Effect6301(EffectDef): """ shipBonusNosOptimalFalloffAC2 Used by: Ship: Rabisu """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange', src.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser') class Effect6305(EffectDef): """ shipBonusEnergyNosFalloffAC3 Used by: Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusAC3'), skill='Amarr Cruiser') class Effect6307(EffectDef): """ shipBonusThermMissileDmgMD1 Used by: Ship: Bifrost """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', src.getModifiedItemAttr('shipBonusMD1'), skill='Minmatar Destroyer') class Effect6308(EffectDef): """ shipBonusEMMissileDmgMD1 Used by: Ship: Bifrost """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'emDamage', src.getModifiedItemAttr('shipBonusMD1'), skill='Minmatar Destroyer') class Effect6309(EffectDef): """ shipBonusKineticMissileDmgMD1 Used by: Ship: Bifrost """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', src.getModifiedItemAttr('shipBonusMD1'), skill='Minmatar Destroyer') class Effect6310(EffectDef): """ shipBonusExplosiveMissileDmgMD1 Used by: Ship: Bifrost """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusMD1'), skill='Minmatar Destroyer') class Effect6315(EffectDef): """ eliteBonusCommandDestroyerSkirmish1 Used by: Ship: Bifrost Ship: Magus """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff3Value', src.getModifiedItemAttr('eliteBonusCommandDestroyer1'), skill='Command Destroyers') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'buffDuration', src.getModifiedItemAttr('eliteBonusCommandDestroyer1'), skill='Command Destroyers') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff1Value', src.getModifiedItemAttr('eliteBonusCommandDestroyer1'), skill='Command Destroyers') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff4Value', src.getModifiedItemAttr('eliteBonusCommandDestroyer1'), skill='Command Destroyers') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff2Value', src.getModifiedItemAttr('eliteBonusCommandDestroyer1'), skill='Command Destroyers') class Effect6316(EffectDef): """ eliteBonusCommandDestroyerShield1 Used by: Ship: Bifrost Ship: Stork """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff3Value', src.getModifiedItemAttr('eliteBonusCommandDestroyer1'), skill='Command Destroyers') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'buffDuration', src.getModifiedItemAttr('eliteBonusCommandDestroyer1'), skill='Command Destroyers') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff1Value', src.getModifiedItemAttr('eliteBonusCommandDestroyer1'), skill='Command Destroyers') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff4Value', src.getModifiedItemAttr('eliteBonusCommandDestroyer1'), skill='Command Destroyers') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff2Value', src.getModifiedItemAttr('eliteBonusCommandDestroyer1'), skill='Command Destroyers') class Effect6317(EffectDef): """ eliteBonusCommandDestroyerMJFGspool2 Used by: Ships from group: Command Destroyer (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Micro Jump Drive Operation'), 'duration', src.getModifiedItemAttr('eliteBonusCommandDestroyer2'), skill='Command Destroyers') class Effect6318(EffectDef): """ shipBonusEMShieldResistanceMD2 Used by: Ship: Bifrost """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('shipBonusMD2'), skill='Minmatar Destroyer') class Effect6319(EffectDef): """ shipBonusKineticShieldResistanceMD2 Used by: Ship: Bifrost """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('shipBonusMD2'), skill='Minmatar Destroyer') class Effect6320(EffectDef): """ shipBonusThermalShieldResistanceMD2 Used by: Ship: Bifrost """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('shipBonusMD2'), skill='Minmatar Destroyer') class Effect6321(EffectDef): """ shipBonusExplosiveShieldResistanceMD2 Used by: Ship: Bifrost """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusMD2'), skill='Minmatar Destroyer') class Effect6322(EffectDef): """ scriptscanGravimetricStrengthBonusBonus Used by: Charges from group: Structure ECM script (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context, *args, **kwargs): src.boostItemAttr('scanGravimetricStrengthBonus', src.getModifiedChargeAttr('scanGravimetricStrengthBonusBonus')) class Effect6323(EffectDef): """ scriptscanLadarStrengthBonusBonus Used by: Charges from group: Structure ECM script (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context, *args, **kwargs): src.boostItemAttr('scanLadarStrengthBonus', src.getModifiedChargeAttr('scanLadarStrengthBonusBonus')) class Effect6324(EffectDef): """ scriptscanMagnetometricStrengthBonusBonus Used by: Charges from group: Structure ECM script (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context, *args, **kwargs): src.boostItemAttr('scanMagnetometricStrengthBonus', src.getModifiedChargeAttr('scanMagnetometricStrengthBonusBonus')) class Effect6325(EffectDef): """ scriptscanRadarStrengthBonusBonus Used by: Charges from group: Structure ECM script (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context, *args, **kwargs): src.boostItemAttr('scanRadarStrengthBonus', src.getModifiedChargeAttr('scanRadarStrengthBonusBonus')) class Effect6326(EffectDef): """ shipBonusThermalMissileDamageCD1 Used by: Ship: Stork """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', src.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer') class Effect6327(EffectDef): """ shipBonusEMMissileDamageCD1 Used by: Ship: Stork """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'emDamage', src.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer') class Effect6328(EffectDef): """ shipBonusKineticMissileDamageCD1 Used by: Ship: Stork """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', src.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer') class Effect6329(EffectDef): """ shipBonusExplosiveMissileDamageCD1 Used by: Ship: Stork """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer') class Effect6330(EffectDef): """ shipBonusShieldEMResistanceCD2 Used by: Ship: Stork """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer') class Effect6331(EffectDef): """ shipBonusShieldThermalResistanceCD2 Used by: Ship: Stork """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer') class Effect6332(EffectDef): """ shipBonusShieldKineticResistanceCD2 Used by: Ship: Stork """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer') class Effect6333(EffectDef): """ shipBonusShieldExplosiveResistanceCD2 Used by: Ship: Stork """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer') class Effect6334(EffectDef): """ eliteBonusCommandDestroyerInfo1 Used by: Ship: Pontifex Ship: Stork """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff1Value', src.getModifiedItemAttr('eliteBonusCommandDestroyer1'), skill='Command Destroyers') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff3Value', src.getModifiedItemAttr('eliteBonusCommandDestroyer1'), skill='Command Destroyers') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff2Value', src.getModifiedItemAttr('eliteBonusCommandDestroyer1'), skill='Command Destroyers') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'buffDuration', src.getModifiedItemAttr('eliteBonusCommandDestroyer1'), skill='Command Destroyers') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff4Value', src.getModifiedItemAttr('eliteBonusCommandDestroyer1'), skill='Command Destroyers') class Effect6335(EffectDef): """ shipBonusKineticArmorResistanceAD2 Used by: Ship: Pontifex """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('armorKineticDamageResonance', src.getModifiedItemAttr('shipBonusAD2'), skill='Amarr Destroyer') class Effect6336(EffectDef): """ shipBonusThermalArmorResistanceAD2 Used by: Ship: Pontifex """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('armorThermalDamageResonance', src.getModifiedItemAttr('shipBonusAD2'), skill='Amarr Destroyer') class Effect6337(EffectDef): """ shipBonusEMArmorResistanceAD2 Used by: Ship: Pontifex """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('armorEmDamageResonance', src.getModifiedItemAttr('shipBonusAD2'), skill='Amarr Destroyer') class Effect6338(EffectDef): """ shipBonusExplosiveArmorResistanceAD2 Used by: Ship: Pontifex """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('armorExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusAD2'), skill='Amarr Destroyer') class Effect6339(EffectDef): """ eliteBonusCommandDestroyerArmored1 Used by: Ship: Magus Ship: Pontifex """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff2Value', src.getModifiedItemAttr('eliteBonusCommandDestroyer1'), skill='Command Destroyers') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff3Value', src.getModifiedItemAttr('eliteBonusCommandDestroyer1'), skill='Command Destroyers') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'buffDuration', src.getModifiedItemAttr('eliteBonusCommandDestroyer1'), skill='Command Destroyers') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff4Value', src.getModifiedItemAttr('eliteBonusCommandDestroyer1'), skill='Command Destroyers') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff1Value', src.getModifiedItemAttr('eliteBonusCommandDestroyer1'), skill='Command Destroyers') class Effect6340(EffectDef): """ shipBonusKineticArmorResistanceGD2 Used by: Ship: Magus """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('armorKineticDamageResonance', src.getModifiedItemAttr('shipBonusGD2'), skill='Gallente Destroyer') class Effect6341(EffectDef): """ shipBonusEMArmorResistanceGD2 Used by: Ship: Magus """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('armorEmDamageResonance', src.getModifiedItemAttr('shipBonusGD2'), skill='Gallente Destroyer') class Effect6342(EffectDef): """ shipBonusThermalArmorResistanceGD2 Used by: Ship: Magus """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('armorThermalDamageResonance', src.getModifiedItemAttr('shipBonusGD2'), skill='Gallente Destroyer') class Effect6343(EffectDef): """ shipBonusExplosiveArmorResistanceGD2 Used by: Ship: Magus """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('armorExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusGD2'), skill='Gallente Destroyer') class Effect6350(EffectDef): """ shipSmallMissileKinDmgCF3 Used by: Ship: Caldari Navy Hookbill """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Light Missiles') or mod.charge.requiresSkill('Rockets'), 'kineticDamage', src.getModifiedItemAttr('shipBonus3CF'), skill='Caldari Frigate') class Effect6351(EffectDef): """ shipMissileKinDamageCC3 Used by: Ship: Osprey Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', src.getModifiedItemAttr('shipBonusCC3'), skill='Caldari Cruiser') class Effect6352(EffectDef): """ roleBonusWDRange Used by: Ship: Crucifier Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'falloffEffectiveness', src.getModifiedItemAttr('roleBonus')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'maxRange', src.getModifiedItemAttr('roleBonus')) class Effect6353(EffectDef): """ roleBonusWDCapCPU Used by: Ship: Crucifier Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'cpu', src.getModifiedItemAttr('roleBonus')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'capacitorNeed', src.getModifiedItemAttr('roleBonus')) class Effect6354(EffectDef): """ shipBonusEwWeaponDisruptionStrengthAF2 Used by: Variations of ship: Crucifier (3 of 3) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'trackingSpeedBonus', src.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'explosionDelayBonus', src.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'maxRangeBonus', src.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'falloffBonus', src.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'missileVelocityBonus', src.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'aoeVelocityBonus', src.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'aoeCloudSizeBonus', src.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate') class Effect6355(EffectDef): """ roleBonusECMCapCPU Used by: Ship: Griffin Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'capacitorNeed', src.getModifiedItemAttr('roleBonus')) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'cpu', src.getModifiedItemAttr('roleBonus')) class Effect6356(EffectDef): """ roleBonusECMRange Used by: Ship: Griffin Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'falloffEffectiveness', src.getModifiedItemAttr('roleBonus')) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'maxRange', src.getModifiedItemAttr('roleBonus')) class Effect6357(EffectDef): """ shipBonusJustScramblerRangeGF2 Used by: Ship: Maulus Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Navigation'), 'maxRange', src.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate') class Effect6358(EffectDef): """ roleBonusJustScramblerStrength Used by: Ship: Maulus Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Navigation'), 'warpScrambleStrength', ship.getModifiedItemAttr('roleBonus')) class Effect6359(EffectDef): """ shipBonusAoeVelocityRocketsMF Used by: Ship: Vigil Fleet Issue """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'aoeVelocity', src.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate') class Effect6360(EffectDef): """ shipRocketEMThermKinDmgMF2 Used by: Ship: Vigil Fleet Issue """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'emDamage', src.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate') fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'thermalDamage', src.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate') fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'kineticDamage', src.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate') class Effect6361(EffectDef): """ shipRocketExpDmgMF3 Used by: Ship: Vigil Fleet Issue """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'explosiveDamage', src.getModifiedItemAttr('shipBonus3MF'), skill='Minmatar Frigate') class Effect6362(EffectDef): """ roleBonusStasisRange Used by: Ship: Vigil Fleet Issue """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', src.getModifiedItemAttr('roleBonus')) class Effect6368(EffectDef): """ 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): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Shield Booster', 'falloffEffectiveness', src.getModifiedItemAttr('falloffBonus')) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Ancillary Remote Shield Booster', 'falloffEffectiveness', src.getModifiedItemAttr('falloffBonus')) class Effect6369(EffectDef): """ shipShieldTransferFalloffMC2 Used by: Ship: Scimitar """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser') class Effect6370(EffectDef): """ shipShieldTransferFalloffCC1 Used by: Ship: Basilisk Ship: Etana """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser') class Effect6371(EffectDef): """ shipRemoteArmorFalloffGC1 Used by: Ship: Oneiros """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser') class Effect6372(EffectDef): """ shipRemoteArmorFalloffAC2 Used by: Ship: Guardian """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser') class Effect6373(EffectDef): """ 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): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Armor Repairer', 'falloffEffectiveness', src.getModifiedItemAttr('falloffBonus')) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Ancillary Remote Armor Repairer', 'falloffEffectiveness', src.getModifiedItemAttr('falloffBonus')) class Effect6374(EffectDef): """ droneHullRepairBonusEffect Used by: Ships from group: Logistics (6 of 7) Ship: Exequror Ship: Scythe """ type = 'passive' @staticmethod def handler(fit, src, context): fit.drones.filteredItemBoost(lambda drone: drone.item.group.name == 'Logistic Drone', 'structureDamageAmount', src.getModifiedItemAttr('droneArmorDamageAmountBonus')) class Effect6377(EffectDef): """ eliteBonusLogiFrigArmorRepSpeedCap1 Used by: Ship: Deacon Ship: Thalia """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', src.getModifiedItemAttr('eliteBonusLogiFrig1'), skill='Logistics Frigates') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'duration', src.getModifiedItemAttr('eliteBonusLogiFrig1'), skill='Logistics Frigates') class Effect6378(EffectDef): """ eliteBonusLogiFrigShieldRepSpeedCap1 Used by: Ship: Kirin Ship: Scalpel """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'duration', src.getModifiedItemAttr('eliteBonusLogiFrig1'), skill='Logistics Frigates') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed', src.getModifiedItemAttr('eliteBonusLogiFrig1'), skill='Logistics Frigates') class Effect6379(EffectDef): """ eliteBonusLogiFrigArmorHP2 Used by: Ship: Deacon """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('armorHP', src.getModifiedItemAttr('eliteBonusLogiFrig2'), skill='Logistics Frigates') class Effect6380(EffectDef): """ eliteBonusLogiFrigShieldHP2 Used by: Ship: Kirin """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('shieldCapacity', src.getModifiedItemAttr('eliteBonusLogiFrig2'), skill='Logistics Frigates') class Effect6381(EffectDef): """ eliteBonusLogiFrigSignature2 Used by: Ship: Scalpel Ship: Thalia """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('signatureRadius', src.getModifiedItemAttr('eliteBonusLogiFrig2'), skill='Logistics Frigates') class Effect6384(EffectDef): """ overloadSelfMissileGuidanceModuleBonus Used by: Variations of module: Guidance Disruptor I (6 of 6) """ type = 'overheat' @staticmethod def handler(fit, module, context): for tgtAttr in ( 'aoeCloudSizeBonus', 'explosionDelayBonus', 'missileVelocityBonus', 'aoeVelocityBonus' ): module.boostItemAttr(tgtAttr, module.getModifiedItemAttr('overloadTrackingModuleStrengthBonus')) class Effect6385(EffectDef): """ ignoreCloakVelocityPenalty Used by: Ship: Endurance """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemForce(lambda mod: mod.item.group.name == 'Cloaking Device', 'maxVelocityModifier', src.getModifiedItemAttr('velocityPenaltyReduction')) class Effect6386(EffectDef): """ ewSkillGuidanceDisruptionBonus Used by: Modules named like: Tracking Diagnostic Subroutines (8 of 8) Skill: Weapon Destabilization """ type = 'passive' @staticmethod def handler(fit, src, context): 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) class Effect6395(EffectDef): """ shipBonusEwWeaponDisruptionStrengthAC1 Used by: Variations of ship: Arbitrator (3 of 3) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'missileVelocityBonus', src.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'aoeVelocityBonus', src.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'maxRangeBonus', src.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'explosionDelayBonus', src.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'aoeCloudSizeBonus', src.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'trackingSpeedBonus', src.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'falloffBonus', src.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser') class Effect6396(EffectDef): """ skillStructureMissileDamageBonus Used by: Skill: Structure Missile Systems """ type = 'passive', 'structure' @staticmethod def handler(fit, src, context): groups = ('Structure Anti-Capital Missile', 'Structure Anti-Subcapital Missile', 'Structure 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') class Effect6400(EffectDef): """ skillStructureElectronicSystemsCapNeedBonus Used by: Skill: Structure Electronic Systems """ type = 'passive', 'structure' @staticmethod def handler(fit, src, context): groups = ('Structure Warp Scrambler', 'Structure Disruption Battery', 'Structure Stasis Webifier') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'capacitorNeed', src.getModifiedItemAttr('capNeedBonus'), skill='Structure Electronic Systems') class Effect6401(EffectDef): """ skillStructureEngineeringSystemsCapNeedBonus Used by: Skill: Structure Engineering Systems """ type = 'passive', 'structure' @staticmethod def handler(fit, src, context): 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') class Effect6402(EffectDef): """ structureRigAoeVelocityBonusSingleTargetMissiles Used by: Structure Modules named like: Standup Set Missile (6 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context): 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) class Effect6403(EffectDef): """ structureRigVelocityBonusSingleTargetMissiles Used by: Structure Modules named like: Standup Set Missile (6 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context): 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) class Effect6404(EffectDef): """ 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): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Energy Neutralizer', 'maxRange', src.getModifiedItemAttr('structureRigEwarOptimalBonus'), stackingPenalties=True) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Energy Neutralizer', 'falloffEffectiveness', src.getModifiedItemAttr('structureRigEwarFalloffBonus'), stackingPenalties=True) class Effect6405(EffectDef): """ 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): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Energy Neutralizer', 'capacitorNeed', src.getModifiedItemAttr('structureRigEwarCapUseBonus'), stackingPenalties=True) class Effect6406(EffectDef): """ 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): groups = ('Structure ECM Battery', 'Structure Disruption Battery') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'falloff', src.getModifiedItemAttr('structureRigEwarFalloffBonus'), stackingPenalties=True) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'maxRange', src.getModifiedItemAttr('structureRigEwarOptimalBonus'), stackingPenalties=True) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'falloffEffectiveness', src.getModifiedItemAttr('structureRigEwarFalloffBonus'), stackingPenalties=True) class Effect6407(EffectDef): """ 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): groups = ('Structure ECM Battery', 'Structure Disruption Battery') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'capacitorNeed', src.getModifiedItemAttr('structureRigEwarCapUseBonus'), stackingPenalties=True) class Effect6408(EffectDef): """ 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): fit.extraAttributes.increase('maxTargetsLockedFromSkills', src.getModifiedItemAttr('structureRigMaxTargetBonus')) class Effect6409(EffectDef): """ 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): fit.ship.boostItemAttr('scanResolution', src.getModifiedItemAttr('structureRigScanResBonus'), stackingPenalties=True) class Effect6410(EffectDef): """ 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): fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Structure Guided Bomb', 'aoeCloudSize', src.getModifiedItemAttr('structureRigMissileExplosionRadiusBonus'), stackingPenalties=True) class Effect6411(EffectDef): """ 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): fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Structure Guided Bomb', 'maxVelocity', src.getModifiedItemAttr('structureRigMissileVelocityBonus'), stackingPenalties=True) class Effect6412(EffectDef): """ 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): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Area Denial Module', 'empFieldRange', src.getModifiedItemAttr('structureRigPDRangeBonus'), stackingPenalties=True) class Effect6413(EffectDef): """ 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): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Area Denial Module', 'capacitorNeed', src.getModifiedItemAttr('structureRigPDCapUseBonus'), stackingPenalties=True) class Effect6417(EffectDef): """ 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): fit.modules.filteredItemIncrease(lambda mod: mod.item.group.name == 'Structure Doomsday Weapon', 'lightningWeaponDamageLossTarget', src.getModifiedItemAttr('structureRigDoomsdayDamageLossTargetBonus')) class Effect6422(EffectDef): """ 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, *args, **kwargs): if 'projected' not in context: return fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRangeBonus'), stackingPenalties=True, *args, **kwargs) fit.ship.boostItemAttr('scanResolution', module.getModifiedItemAttr('scanResolutionBonus'), stackingPenalties=True, *args, **kwargs) class Effect6423(EffectDef): """ shipModuleGuidanceDisruptor Used by: Variations of module: Guidance Disruptor I (6 of 6) """ type = 'active', 'projected' @staticmethod def handler(fit, module, context, *args, **kwargs): if 'projected' in context: 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, *args, **kwargs) class Effect6424(EffectDef): """ shipModuleTrackingDisruptor Used by: Variations of module: Tracking Disruptor I (6 of 6) """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, *args, **kwargs): if 'projected' in context: fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'trackingSpeed', module.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=True, *args, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'maxRange', module.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True, *args, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'falloff', module.getModifiedItemAttr('falloffBonus'), stackingPenalties=True, *args, **kwargs) class Effect6425(EffectDef): """ remoteTargetPaintFalloff Used by: Modules from group: Target Painter (8 of 8) """ type = 'projected', 'active' @staticmethod def handler(fit, container, context, *args, **kwargs): if 'projected' in context: fit.ship.boostItemAttr('signatureRadius', container.getModifiedItemAttr('signatureRadiusBonus'), stackingPenalties=True, *args, **kwargs) class Effect6426(EffectDef): """ remoteWebifierFalloff Used by: Modules from group: Stasis Grappler (7 of 7) 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, *args, **kwargs): if 'projected' not in context: return fit.ship.boostItemAttr('maxVelocity', module.getModifiedItemAttr('speedFactor'), stackingPenalties=True, *args, **kwargs) class Effect6427(EffectDef): """ remoteSensorBoostFalloff Used by: Modules from group: Remote Sensor Booster (8 of 8) """ type = 'projected', 'active' @staticmethod def handler(fit, module, context): if 'projected' not in context: return fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRangeBonus'), stackingPenalties=True) fit.ship.boostItemAttr('scanResolution', module.getModifiedItemAttr('scanResolutionBonus'), stackingPenalties=True) for scanType in ('Gravimetric', 'Magnetometric', 'Radar', 'Ladar'): fit.ship.boostItemAttr( 'scan{}Strength'.format(scanType), module.getModifiedItemAttr('scan{}StrengthPercent'.format(scanType)), stackingPenalties=True ) class Effect6428(EffectDef): """ shipModuleRemoteTrackingComputer Used by: Modules from group: Remote Tracking Computer (8 of 8) """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, **kwargs): if 'projected' in context: fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'trackingSpeed', module.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=True, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'maxRange', module.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'falloff', module.getModifiedItemAttr('falloffBonus'), stackingPenalties=True, **kwargs) class Effect6431(EffectDef): """ fighterAbilityMissiles Used by: Items from category: Fighter (48 of 82) Fighters from group: Light Fighter (32 of 32) """ displayName = 'Missile Attack' hasCharges = True prefix = 'fighterAbilityMissiles' type = 'active' class Effect6434(EffectDef): """ fighterAbilityEnergyNeutralizer Used by: Fighters named like: Cenobite (4 of 4) """ displayName = 'Energy Neutralizer' grouped = True prefix = 'fighterAbilityEnergyNeutralizer' type = 'active', 'projected' @classmethod def handler(cls, fit, src, context, **kwargs): if 'projected' in context: amount = src.getModifiedItemAttr('{}Amount'.format(cls.prefix)) * src.amountActive time = src.getModifiedItemAttr('{}Duration'.format(cls.prefix)) if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict amount *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) fit.addDrain(src, time, amount, 0) class Effect6435(EffectDef): """ fighterAbilityStasisWebifier Used by: Fighters named like: Dromi (4 of 4) """ displayName = 'Stasis Webifier' grouped = True prefix = 'fighterAbilityStasisWebifier' type = 'active', 'projected' @classmethod def handler(cls, fit, src, context): if 'projected' not in context: return fit.ship.boostItemAttr('maxVelocity', src.getModifiedItemAttr('{}SpeedPenalty'.format(cls.prefix)) * src.amountActive, stackingPenalties=True) class Effect6436(EffectDef): """ fighterAbilityWarpDisruption Used by: Fighters named like: Siren (4 of 4) """ displayName = 'Warp Disruption' grouped = True prefix = 'fighterAbilityWarpDisruption' type = 'active', 'projected' @classmethod def handler(cls, fit, src, context): if 'projected' not in context: return fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('{}PointStrength'.format(cls.prefix)) * src.amountActive) class Effect6437(EffectDef): """ fighterAbilityECM Used by: Fighters named like: Scarab (4 of 4) """ displayName = 'ECM' grouped = True prefix = 'fighterAbilityECM' type = 'projected', 'active' @classmethod def handler(cls, fit, module, context, **kwargs): if 'projected' not in context: return # jam formula: 1 - (1- (jammer str/ship str))^(# of jam mods with same str)) strModifier = 1 - (module.getModifiedItemAttr('{}Strength{}'.format(cls.prefix, fit.scanType)) * module.amountActive) / fit.scanStrength if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict strModifier *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) fit.ecmProjectedStr *= strModifier class Effect6439(EffectDef): """ fighterAbilityEvasiveManeuvers Used by: Fighters from group: Light Fighter (16 of 32) """ displayName = 'Evasive Maneuvers' grouped = True prefix = 'fighterAbilityEvasiveManeuvers' runTime = 'late' type = 'active' @staticmethod def handler(fit, container, context): container.boostItemAttr('maxVelocity', container.getModifiedItemAttr('fighterAbilityEvasiveManeuversSpeedBonus')) container.boostItemAttr('signatureRadius', container.getModifiedItemAttr('fighterAbilityEvasiveManeuversSignatureRadiusBonus'), stackingPenalties=True) # 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) container.multiplyItemAttr('shieldThermalDamageResonance', container.getModifiedItemAttr('fighterAbilityEvasiveManeuversThermResonance'), stackingPenalties=True) container.multiplyItemAttr('shieldKineticDamageResonance', container.getModifiedItemAttr('fighterAbilityEvasiveManeuversKinResonance'), stackingPenalties=True) container.multiplyItemAttr('shieldExplosiveDamageResonance', container.getModifiedItemAttr('fighterAbilityEvasiveManeuversExpResonance'), stackingPenalties=True) class Effect6441(EffectDef): """ fighterAbilityMicroWarpDrive Used by: Items from category: Fighter (48 of 82) """ displayName = 'Microwarpdrive' grouped = True runTime = 'late' type = 'active' @staticmethod def handler(fit, module, context): module.boostItemAttr('maxVelocity', module.getModifiedItemAttr('fighterAbilityMicroWarpDriveSpeedBonus'), stackingPenalties=True) module.boostItemAttr('signatureRadius', module.getModifiedItemAttr('fighterAbilityMicroWarpDriveSignatureRadiusBonus'), stackingPenalties=True) class Effect6443(EffectDef): """ pointDefense Used by: Structure Modules from group: Structure Area Denial Module (2 of 2) """ type = 'active' class Effect6447(EffectDef): """ lightningWeapon Used by: Structure Module: Standup Arcing Vorton Projector I """ type = 'active' class Effect6448(EffectDef): """ structureMissileGuidanceEnhancer Used by: Variations of structure module: Standup Missile Guidance Enhancer I (2 of 2) """ type = 'passive' @staticmethod def handler(fit, container, context): 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) class Effect6449(EffectDef): """ structureBallisticControlSystem Used by: Variations of structure module: Standup Ballistic Control System I (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context): 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) 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) class Effect6465(EffectDef): """ fighterAbilityAttackM Used by: Items from category: Fighter (50 of 82) Fighters from group: Heavy Fighter (34 of 34) """ displayName = 'Turret Attack' prefix = 'fighterAbilityAttackMissile' type = 'active' class Effect6470(EffectDef): """ remoteECMFalloff Used by: Modules from group: ECM (39 of 39) Starbases from group: Electronic Warfare Battery (12 of 12) """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, **kwargs): if 'projected' in context: # jam formula: 1 - (1- (jammer str/ship str))^(# of jam mods with same str)) strModifier = 1 - module.getModifiedItemAttr('scan{0}StrengthBonus'.format(fit.scanType)) / fit.scanStrength if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict strModifier *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) fit.ecmProjectedStr *= strModifier class Effect6472(EffectDef): """ doomsdayBeamDOT Used by: Modules named like: Lance (4 of 4) """ type = 'active' class Effect6473(EffectDef): """ doomsdayConeDOT Used by: Module: Bosonic Field Generator """ type = 'active' class Effect6474(EffectDef): """ doomsdayHOG Used by: Module: Gravitational Transportation Field Oscillator """ type = 'active' class Effect6475(EffectDef): """ 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): fit.modules.filteredItemIncrease(lambda mod: mod.item.group.name == 'Structure Doomsday Weapon', 'lightningWeaponTargetAmount', src.getModifiedItemAttr('structureRigDoomsdayTargetAmountBonus')) class Effect6476(EffectDef): """ doomsdayAOEWeb Used by: Module: Stasis Webification Burst Projector Structure Module: Standup Stasis Webification Burst Projector """ type = 'active', 'projected' @staticmethod def handler(fit, module, context, *args, **kwargs): if 'projected' not in context: return fit.ship.boostItemAttr('maxVelocity', module.getModifiedItemAttr('speedFactor'), stackingPenalties=True, *args, **kwargs) class Effect6477(EffectDef): """ doomsdayAOENeut Used by: Module: Energy Neutralization Burst Projector Structure Module: Standup Energy Neutralization Burst Projector """ type = 'active', 'projected' @staticmethod def handler(fit, src, context, **kwargs): if 'projected' in context and ((hasattr(src, 'state') and src.state >= FittingModuleState.ACTIVE) or hasattr(src, 'amountActive')): 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(EffectDef): """ doomsdayAOEPaint Used by: Module: Target Illumination Burst Projector Structure Module: Standup Target Illumination Burst Projector """ type = 'projected', 'active' @staticmethod def handler(fit, container, context, *args, **kwargs): if 'projected' in context: fit.ship.boostItemAttr('signatureRadius', container.getModifiedItemAttr('signatureRadiusBonus'), stackingPenalties=True, *args, **kwargs) class Effect6479(EffectDef): """ doomsdayAOETrack Used by: Module: Weapon Disruption Burst Projector Structure Module: Standup Weapon Disruption Burst Projector """ type = 'active', 'projected' @staticmethod def handler(fit, module, context, *args, **kwargs): if 'projected' in context: 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, *args, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'trackingSpeed', module.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=True, *args, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'maxRange', module.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True, *args, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'falloff', module.getModifiedItemAttr('falloffBonus'), stackingPenalties=True, *args, **kwargs) class Effect6481(EffectDef): """ doomsdayAOEDamp Used by: Module: Sensor Dampening Burst Projector Structure Module: Standup Sensor Dampening Burst Projector """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, *args, **kwargs): if 'projected' not in context: return fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRangeBonus'), stackingPenalties=True, *args, **kwargs) fit.ship.boostItemAttr('scanResolution', module.getModifiedItemAttr('scanResolutionBonus'), stackingPenalties=True, *args, **kwargs) class Effect6482(EffectDef): """ doomsdayAOEBubble Used by: Module: Warp Disruption Burst Projector Structure Module: Standup Warp Disruption Burst Projector """ type = 'projected', 'active' @staticmethod def handler(fit, module, context): return class Effect6484(EffectDef): """ emergencyHullEnergizer Used by: Variations of module: Capital Emergency Hull Energizer I (5 of 5) """ runtime = 'late' type = 'active' @staticmethod def handler(fit, src, context): for dmgType in ('em', 'thermal', 'kinetic', 'explosive'): fit.ship.multiplyItemAttr('{}DamageResonance'.format(dmgType), src.getModifiedItemAttr('hull{}DamageResonance'.format(dmgType.title())), stackingPenalties=True, penaltyGroup='postMul') class Effect6485(EffectDef): """ fighterAbilityLaunchBomb Used by: Fighters from group: Heavy Fighter (16 of 34) """ displayName = 'Bomb' hasCharges = True prefix = 'fighterAbilityLaunchBomb' type = 'active' class Effect6487(EffectDef): """ modifyEnergyWarfareResistance Used by: Modules from group: Capacitor Battery (30 of 30) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.boostItemAttr('energyWarfareResistance', module.getModifiedItemAttr('energyWarfareResistanceBonus'), stackingPenalties=True) class Effect6488(EffectDef): """ scriptSensorBoosterSensorStrengthBonusBonus Used by: Charges from group: Sensor Booster Script (3 of 3) """ type = 'active' @staticmethod def handler(fit, module, context): for scanType in ('Gravimetric', 'Magnetometric', 'Radar', 'Ladar'): module.boostItemAttr('scan{}StrengthPercent'.format(scanType), module.getModifiedChargeAttr('sensorStrengthBonusBonus')) class Effect6501(EffectDef): """ shipBonusDreadnoughtA1DamageBonus Used by: Ship: Revelation """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Energy Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusDreadnoughtA1'), skill='Amarr Dreadnought') class Effect6502(EffectDef): """ shipBonusDreadnoughtA2ArmorResists Used by: Ship: Revelation """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('armorExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusDreadnoughtA2'), skill='Amarr Dreadnought') fit.ship.boostItemAttr('armorEmDamageResonance', src.getModifiedItemAttr('shipBonusDreadnoughtA2'), skill='Amarr Dreadnought') fit.ship.boostItemAttr('armorThermalDamageResonance', src.getModifiedItemAttr('shipBonusDreadnoughtA2'), skill='Amarr Dreadnought') fit.ship.boostItemAttr('armorKineticDamageResonance', src.getModifiedItemAttr('shipBonusDreadnoughtA2'), skill='Amarr Dreadnought') class Effect6503(EffectDef): """ shipBonusDreadnoughtA3CapNeed Used by: Ship: Revelation """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Energy Turret'), 'capacitorNeed', src.getModifiedItemAttr('shipBonusDreadnoughtA3'), skill='Amarr Dreadnought') class Effect6504(EffectDef): """ shipBonusDreadnoughtC1DamageBonus Used by: Ship: Phoenix """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'thermalDamage', src.getModifiedItemAttr('shipBonusDreadnoughtC1'), skill='Caldari Dreadnought') fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'kineticDamage', src.getModifiedItemAttr('shipBonusDreadnoughtC1'), skill='Caldari Dreadnought') fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'emDamage', src.getModifiedItemAttr('shipBonusDreadnoughtC1'), skill='Caldari Dreadnought') fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusDreadnoughtC1'), skill='Caldari Dreadnought') fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusDreadnoughtC1'), skill='Caldari Dreadnought') fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'thermalDamage', src.getModifiedItemAttr('shipBonusDreadnoughtC1'), skill='Caldari Dreadnought') fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'thermalDamage', src.getModifiedItemAttr('shipBonusDreadnoughtC1'), skill='Caldari Dreadnought') fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'emDamage', src.getModifiedItemAttr('shipBonusDreadnoughtC1'), skill='Caldari Dreadnought') fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'kineticDamage', src.getModifiedItemAttr('shipBonusDreadnoughtC1'), skill='Caldari Dreadnought') fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'kineticDamage', src.getModifiedItemAttr('shipBonusDreadnoughtC1'), skill='Caldari Dreadnought') fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusDreadnoughtC1'), skill='Caldari Dreadnought') fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'emDamage', src.getModifiedItemAttr('shipBonusDreadnoughtC1'), skill='Caldari Dreadnought') class Effect6505(EffectDef): """ shipBonusDreadnoughtC2ShieldResists Used by: Variations of ship: Phoenix (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('shipBonusDreadnoughtC2'), skill='Caldari Dreadnought') fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('shipBonusDreadnoughtC2'), skill='Caldari Dreadnought') fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('shipBonusDreadnoughtC2'), skill='Caldari Dreadnought') fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusDreadnoughtC2'), skill='Caldari Dreadnought') class Effect6506(EffectDef): """ shipBonusDreadnoughtG1DamageBonus Used by: Ship: Moros """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought') class Effect6507(EffectDef): """ shipBonusDreadnoughtG2ROFBonus Used by: Variations of ship: Moros (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'speed', src.getModifiedItemAttr('shipBonusDreadnoughtG2'), skill='Gallente Dreadnought') class Effect6508(EffectDef): """ shipBonusDreadnoughtG3RepairTime Used by: Ship: Moros """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Repair Systems'), 'duration', src.getModifiedItemAttr('shipBonusDreadnoughtG3'), skill='Gallente Dreadnought') class Effect6509(EffectDef): """ shipBonusDreadnoughtM1DamageBonus Used by: Ship: Naglfar """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusDreadnoughtM1'), skill='Minmatar Dreadnought') class Effect6510(EffectDef): """ shipBonusDreadnoughtM2ROFBonus Used by: Ship: Naglfar """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'speed', src.getModifiedItemAttr('shipBonusDreadnoughtM2'), skill='Minmatar Dreadnought') class Effect6511(EffectDef): """ shipBonusDreadnoughtM3RepairTime Used by: Ship: Naglfar """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Operation'), 'duration', src.getModifiedItemAttr('shipBonusDreadnoughtM2'), skill='Minmatar Dreadnought') class Effect6513(EffectDef): """ doomsdayAOEECM Used by: Module: ECM Jammer Burst Projector Structure Module: Standup ECM Jammer Burst Projector """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, **kwargs): if 'projected' in context: # jam formula: 1 - (1- (jammer str/ship str))^(# of jam mods with same str)) strModifier = 1 - module.getModifiedItemAttr('scan{0}StrengthBonus'.format(fit.scanType)) / fit.scanStrength if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict strModifier *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) fit.ecmProjectedStr *= strModifier class Effect6526(EffectDef): """ shipBonusForceAuxiliaryA1RemoteRepairAndCapAmount Used by: Ship: Apostle """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capacitor Emission Systems') or mod.item.requiresSkill('Capital Capacitor Emission Systems'), 'powerTransferAmount', src.getModifiedItemAttr('shipBonusForceAuxiliaryA1'), skill='Amarr Carrier') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems') or mod.item.requiresSkill('Capital Remote Armor Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusForceAuxiliaryA1'), skill='Amarr Carrier') class Effect6527(EffectDef): """ shipBonusForceAuxiliaryA2ArmorResists Used by: Ship: Apostle """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('armorKineticDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryA2'), skill='Amarr Carrier') fit.ship.boostItemAttr('armorExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryA2'), skill='Amarr Carrier') fit.ship.boostItemAttr('armorEmDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryA2'), skill='Amarr Carrier') fit.ship.boostItemAttr('armorThermalDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryA2'), skill='Amarr Carrier') class Effect6533(EffectDef): """ shipBonusForceAuxiliaryA4WarfareLinksBonus Used by: Ship: Apostle """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryA4'), skill='Amarr Carrier') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryA4'), skill='Amarr Carrier') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryA4'), skill='Amarr Carrier') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusForceAuxiliaryA4'), skill='Amarr Carrier') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryA4'), skill='Amarr Carrier') class Effect6534(EffectDef): """ shipBonusForceAuxiliaryM4WarfareLinksBonus Used by: Ship: Lif """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryM4'), skill='Minmatar Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryM4'), skill='Minmatar Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryM4'), skill='Minmatar Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusForceAuxiliaryM4'), skill='Minmatar Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryM4'), skill='Minmatar Carrier') class Effect6535(EffectDef): """ shipBonusForceAuxiliaryG4WarfareLinksBonus Used by: Ship: Ninazu """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryG4'), skill='Gallente Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryG4'), skill='Gallente Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusForceAuxiliaryG4'), skill='Gallente Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryG4'), skill='Gallente Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryG4'), skill='Gallente Carrier') class Effect6536(EffectDef): """ shipBonusForceAuxiliaryC4WarfareLinksBonus Used by: Ship: Minokawa """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryC4'), skill='Caldari Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryC4'), skill='Caldari Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryC4'), skill='Caldari Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusForceAuxiliaryC4'), skill='Caldari Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryC4'), skill='Caldari Carrier') class Effect6537(EffectDef): """ shipBonusRole1CommandBurstCPUBonus Used by: Ships from group: Force Auxiliary (6 of 6) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'cpu', src.getModifiedItemAttr('shipBonusRole1')) class Effect6545(EffectDef): """ shipBonusForceAuxiliaryC1RemoteBoostAndCapAmount Used by: Ship: Minokawa """ type = 'passive' @staticmethod def handler(fit, src, context): if src.getModifiedItemAttr('shipBonusForceAuxiliaryC1') is None: return # See GH Issue 1321 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capacitor Emission Systems') or mod.item.requiresSkill('Capital Capacitor Emission Systems'), 'powerTransferAmount', src.getModifiedItemAttr('shipBonusForceAuxiliaryC1'), skill='Caldari Carrier') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems') or mod.item.requiresSkill('Capital Shield Emission Systems'), 'shieldBonus', src.getModifiedItemAttr('shipBonusForceAuxiliaryC1'), skill='Caldari Carrier') class Effect6546(EffectDef): """ shipBonusForceAuxiliaryC2ShieldResists Used by: Variations of ship: Minokawa (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryC2'), skill='Caldari Carrier') fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryC2'), skill='Caldari Carrier') fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryC2'), skill='Caldari Carrier') fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryC2'), skill='Caldari Carrier') class Effect6548(EffectDef): """ shipBonusForceAuxiliaryG1RemoteCycleTime Used by: Ship: Ninazu """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems') or mod.item.requiresSkill('Capital Shield Emission Systems'), 'duration', src.getModifiedItemAttr('shipBonusForceAuxiliaryG1'), skill='Gallente Carrier') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems') or mod.item.requiresSkill('Capital Remote Armor Repair Systems'), 'duration', src.getModifiedItemAttr('shipBonusForceAuxiliaryG1'), skill='Gallente Carrier') class Effect6549(EffectDef): """ shipBonusForceAuxiliaryG2LocalRepairAmount Used by: Ship: Ninazu """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusForceAuxiliaryG2'), skill='Gallente Carrier') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusForceAuxiliaryG2'), skill='Gallente Carrier') class Effect6551(EffectDef): """ shipBonusForceAuxiliaryM1RemoteDuration Used by: Ship: Lif """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems') or mod.item.requiresSkill('Capital Shield Emission Systems'), 'duration', src.getModifiedItemAttr('shipBonusForceAuxiliaryM1'), skill='Minmatar Carrier') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems') or mod.item.requiresSkill('Capital Remote Armor Repair Systems'), 'duration', src.getModifiedItemAttr('shipBonusForceAuxiliaryM1'), skill='Minmatar Carrier') class Effect6552(EffectDef): """ shipBonusForceAuxiliaryM2LocalBoostAmount Used by: Ship: Lif """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('shipBonusForceAuxiliaryM2'), skill='Minmatar Carrier') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('shipBonusForceAuxiliaryM2'), skill='Minmatar Carrier') class Effect6555(EffectDef): """ moduleBonusDroneNavigationComputer Used by: Modules from group: Drone Navigation Computer (8 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'maxVelocity', src.getModifiedItemAttr('speedFactor'), stackingPenalties=True) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'maxVelocity', src.getModifiedItemAttr('speedFactor'), stackingPenalties=True) class Effect6556(EffectDef): """ moduleBonusDroneDamageAmplifier Used by: Modules from group: Drone Damage Modules (11 of 11) 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): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('droneDamageBonus'), stackingPenalties=True) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('droneDamageBonus'), stackingPenalties=True) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('droneDamageBonus'), stackingPenalties=True) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('droneDamageBonus'), stackingPenalties=True) class Effect6557(EffectDef): """ moduleBonusOmnidirectionalTrackingLink Used by: Modules from group: Drone Tracking Modules (10 of 10) """ type = 'active' @staticmethod def handler(fit, src, context): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretRangeFalloff', src.getModifiedItemAttr('falloffBonus'), stackingPenalties=True) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesExplosionVelocity', src.getModifiedItemAttr('aoeVelocityBonus'), stackingPenalties=True) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'trackingSpeed', src.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=True) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileExplosionRadius', src.getModifiedItemAttr('aoeCloudSizeBonus'), stackingPenalties=True) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretTrackingSpeed', src.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=True) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesExplosionRadius', src.getModifiedItemAttr('aoeCloudSizeBonus'), stackingPenalties=True) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesRange', src.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileRangeOptimal', src.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'falloff', src.getModifiedItemAttr('falloffBonus'), stackingPenalties=True) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileExplosionVelocity', src.getModifiedItemAttr('aoeVelocityBonus'), stackingPenalties=True) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileRangeFalloff', src.getModifiedItemAttr('falloffBonus'), stackingPenalties=True) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'maxRange', src.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretRangeOptimal', src.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True) class Effect6558(EffectDef): """ moduleBonusOmnidirectionalTrackingLinkOverload Used by: Modules from group: Drone Tracking Modules (10 of 10) """ type = 'overheat' @staticmethod def handler(fit, module, context): overloadBonus = module.getModifiedItemAttr('overloadTrackingModuleStrengthBonus') module.boostItemAttr('maxRangeBonus', overloadBonus) module.boostItemAttr('falloffBonus', overloadBonus) module.boostItemAttr('trackingSpeedBonus', overloadBonus) module.boostItemAttr('aoeCloudSizeBonus', overloadBonus) module.boostItemAttr('aoeVelocityBonus', overloadBonus) class Effect6559(EffectDef): """ moduleBonusOmnidirectionalTrackingEnhancer Used by: Modules from group: Drone Tracking Enhancer (10 of 10) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileExplosionRadius', src.getModifiedItemAttr('aoeCloudSizeBonus'), stackingPenalties=True) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileRangeOptimal', src.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretRangeFalloff', src.getModifiedItemAttr('falloffBonus'), stackingPenalties=True) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesExplosionRadius', src.getModifiedItemAttr('aoeCloudSizeBonus'), stackingPenalties=True) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'falloff', src.getModifiedItemAttr('falloffBonus'), stackingPenalties=True) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileRangeFalloff', src.getModifiedItemAttr('falloffBonus'), stackingPenalties=True) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretTrackingSpeed', src.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=True) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'maxRange', src.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'trackingSpeed', src.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=True) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretRangeOptimal', src.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesExplosionVelocity', src.getModifiedItemAttr('aoeVelocityBonus'), stackingPenalties=True) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileExplosionVelocity', src.getModifiedItemAttr('aoeVelocityBonus'), stackingPenalties=True) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesRange', src.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True) class Effect6560(EffectDef): """ skillBonusFighters Used by: Skill: Fighters """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl) class Effect6561(EffectDef): """ skillBonusLightFighters Used by: Skill: Light Fighters """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Light Fighters'), 'maxVelocity', src.getModifiedItemAttr('maxVelocityBonus') * lvl) class Effect6562(EffectDef): """ skillBonusSupportFightersShield Used by: Skill: Support Fighters """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'shieldCapacity', src.getModifiedItemAttr('shieldBonus') * lvl) class Effect6563(EffectDef): """ skillBonusHeavyFighters Used by: Skill: Heavy Fighters """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Heavy Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Heavy Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Heavy Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl) class Effect6565(EffectDef): """ citadelRigBonus Used by: Structures from group: Citadel (9 of 9) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context): 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')) class Effect6566(EffectDef): """ moduleBonusFighterSupportUnit Used by: Modules from group: Fighter Support Unit (8 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.fighters.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Fighters'), 'shieldCapacity', src.getModifiedItemAttr('fighterBonusShieldCapacityPercent')) fit.fighters.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Fighters'), 'maxVelocity', src.getModifiedItemAttr('fighterBonusVelocityPercent'), stackingPenalties=True, penaltyGroup='postMul') fit.fighters.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDuration', src.getModifiedItemAttr('fighterBonusROFPercent'), stackingPenalties=True, penaltyGroup='postMul') fit.fighters.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDuration', src.getModifiedItemAttr('fighterBonusROFPercent'), stackingPenalties=True, penaltyGroup='postMul') fit.fighters.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDuration', src.getModifiedItemAttr('fighterBonusROFPercent'), stackingPenalties=True, penaltyGroup='postMul') fit.fighters.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Fighters'), 'shieldRechargeRate', src.getModifiedItemAttr('fighterBonusShieldRechargePercent')) class Effect6567(EffectDef): """ moduleBonusNetworkedSensorArray Used by: Module: Networked Sensor Array """ type = 'active' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('scanResolution', src.getModifiedItemAttr('scanResolutionBonus'), stackingPenalties=True) 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) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), attr, bonus, stackingPenalties=True) # 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')) class Effect6570(EffectDef): """ skillBonusFighterHangarManagement Used by: Skill: Fighter Hangar Management """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.ship.boostItemAttr('fighterCapacity', src.getModifiedItemAttr('skillBonusFighterHangarSize') * lvl) class Effect6571(EffectDef): """ skillBonusCapitalAutocannonSpecialization Used by: Skill: Capital Autocannon Specialization """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Autocannon Specialization'), 'damageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl) class Effect6572(EffectDef): """ skillBonusCapitalArtillerySpecialization Used by: Skill: Capital Artillery Specialization """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Artillery Specialization'), 'damageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl) class Effect6573(EffectDef): """ skillBonusCapitalBlasterSpecialization Used by: Skill: Capital Blaster Specialization """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Blaster Specialization'), 'damageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl) class Effect6574(EffectDef): """ skillBonusCapitalRailgunSpecialization Used by: Skill: Capital Railgun Specialization """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Railgun Specialization'), 'damageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl) class Effect6575(EffectDef): """ skillBonusCapitalPulseLaserSpecialization Used by: Skill: Capital Pulse Laser Specialization """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Pulse Laser Specialization'), 'damageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl) class Effect6576(EffectDef): """ skillBonusCapitalBeamLaserSpecialization Used by: Skill: Capital Beam Laser Specialization """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Beam Laser Specialization'), 'damageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl) class Effect6577(EffectDef): """ skillBonusXLCruiseMissileSpecialization Used by: Skill: XL Cruise Missile Specialization """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('XL Cruise Missile Specialization'), 'speed', src.getModifiedItemAttr('rofBonus') * lvl) class Effect6578(EffectDef): """ skillBonusXLTorpedoSpecialization Used by: Skill: XL Torpedo Specialization """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('XL Torpedo Specialization'), 'speed', src.getModifiedItemAttr('rofBonus') * lvl) class Effect6580(EffectDef): """ shipBonusRole2LogisticDroneRepAmountBonus Used by: Ships from group: Force Auxiliary (5 of 6) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'), 'structureDamageAmount', src.getModifiedItemAttr('shipBonusRole2')) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusRole2')) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'), 'shieldBonus', src.getModifiedItemAttr('shipBonusRole2')) class Effect6581(EffectDef): """ moduleBonusTriageModule Used by: Variations of module: Triage Module I (2 of 2) """ runTime = 'early' type = 'active' @staticmethod def handler(fit, src, context): # Remote effect bonuses (duration / amount / range / fallout) 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')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), amtAttr, src.getModifiedItemAttr('siegeRemoteLogisticsAmountBonus'), stackingPenalties=stack) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), 'maxRange', src.getModifiedItemAttr('siegeRemoteLogisticsRangeBonus'), stackingPenalties=True) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), 'falloffEffectiveness', src.getModifiedItemAttr('siegeRemoteLogisticsRangeBonus'), stackingPenalties=True) # Local armor/shield rep effects (duration / amoutn) 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')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), amtAttr, src.getModifiedItemAttr('siegeLocalLogisticsAmountBonus')) # Speed bonus fit.ship.boostItemAttr('maxVelocity', src.getModifiedItemAttr('speedFactor'), stackingPenalties=True) # Scan resolution multiplier fit.ship.multiplyItemAttr('scanResolution', src.getModifiedItemAttr('scanResolutionMultiplier'), stackingPenalties=True) # Mass multiplier fit.ship.multiplyItemAttr('mass', src.getModifiedItemAttr('siegeMassMultiplier'), stackingPenalties=True) # Max locked targets fit.ship.increaseItemAttr('maxLockedTargets', src.getModifiedItemAttr('maxLockedTargetsBonus')) # 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')) # todo: test for April 2016 release # Block EWAR & projected effects fit.ship.forceItemAttr('disallowOffensiveModifiers', src.getModifiedItemAttr('disallowOffensiveModifiers')) fit.ship.forceItemAttr('disallowAssistance', src.getModifiedItemAttr('disallowAssistance')) # new in April 2016 release fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('droneDamageBonus'), stackingPenalties=True) fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('siegeModeWarpStatus')) fit.ship.boostItemAttr('sensorDampenerResistance', src.getModifiedItemAttr('sensorDampenerResistanceBonus')) fit.ship.boostItemAttr('remoteAssistanceImpedance', src.getModifiedItemAttr('remoteAssistanceImpedanceBonus')) fit.ship.boostItemAttr('remoteRepairImpedance', src.getModifiedItemAttr('remoteRepairImpedanceBonus')) fit.ship.forceItemAttr('disallowTethering', src.getModifiedItemAttr('disallowTethering')) fit.ship.forceItemAttr('disallowDocking', src.getModifiedItemAttr('disallowDocking')) class Effect6582(EffectDef): """ moduleBonusSiegeModule Used by: Variations of module: Siege Module I (2 of 2) """ runTime = 'early' type = 'active' @staticmethod def handler(fit, src, context): # 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'), 'damageMultiplier', src.getModifiedItemAttr('siegeTurretDamageBonus')) # 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')) # Reppers fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Operation') or mod.item.requiresSkill('Capital Repair Systems'), 'duration', src.getModifiedItemAttr('siegeLocalLogisticsDurationBonus')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('siegeLocalLogisticsAmountBonus'), stackingPenalties=True) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('siegeLocalLogisticsAmountBonus'), stackingPenalties=True) # Speed penalty fit.ship.boostItemAttr('maxVelocity', src.getModifiedItemAttr('speedFactor')) # Mass fit.ship.multiplyItemAttr('mass', src.getModifiedItemAttr('siegeMassMultiplier'), stackingPenalties=True, penaltyGroup='postMul') # @ todo: test for April 2016 release # Block Hostile EWAR and friendly effects fit.ship.forceItemAttr('disallowOffensiveModifiers', src.getModifiedItemAttr('disallowOffensiveModifiers')) fit.ship.forceItemAttr('disallowAssistance', src.getModifiedItemAttr('disallowAssistance')) # new in April 2016 release # missile ROF bonus for group in ('Missile Launcher XL Torpedo', 'Missile Launcher Rapid Torpedo', 'Missile Launcher XL Cruise'): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == group, 'speed', src.getModifiedItemAttr('siegeLauncherROFBonus')) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'maxVelocity', src.getModifiedItemAttr('siegeTorpedoVelocityBonus'), stackingPenalties=True) fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('siegeModeWarpStatus')) fit.ship.boostItemAttr('remoteRepairImpedance', src.getModifiedItemAttr('remoteRepairImpedanceBonus')) fit.ship.boostItemAttr('sensorDampenerResistance', src.getModifiedItemAttr('sensorDampenerResistanceBonus')) fit.ship.boostItemAttr('remoteAssistanceImpedance', src.getModifiedItemAttr('remoteAssistanceImpedanceBonus')) fit.ship.boostItemAttr('weaponDisruptionResistance', src.getModifiedItemAttr('weaponDisruptionResistanceBonus')) fit.ship.forceItemAttr('disallowDocking', src.getModifiedItemAttr('disallowDocking')) fit.ship.forceItemAttr('disallowTethering', src.getModifiedItemAttr('disallowTethering')) class Effect6591(EffectDef): """ shipBonusSupercarrierA3WarpStrength Used by: Ship: Aeon Ship: Revenant """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusSupercarrierA3'), skill='Amarr Carrier') class Effect6592(EffectDef): """ shipBonusSupercarrierC3WarpStrength Used by: Ship: Revenant Ship: Wyvern """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusSupercarrierC3'), skill='Caldari Carrier') class Effect6593(EffectDef): """ shipBonusSupercarrierG3WarpStrength Used by: Variations of ship: Nyx (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusSupercarrierG3'), skill='Gallente Carrier') class Effect6594(EffectDef): """ shipBonusSupercarrierM3WarpStrength Used by: Ship: Hel Ship: Vendetta """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusSupercarrierM3'), skill='Minmatar Carrier') class Effect6595(EffectDef): """ shipBonusCarrierA4WarfareLinksBonus Used by: Ship: Archon """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusCarrierA4'), skill='Amarr Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusCarrierA4'), skill='Amarr Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusCarrierA4'), skill='Amarr Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusCarrierA4'), skill='Amarr Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusCarrierA4'), skill='Amarr Carrier') class Effect6596(EffectDef): """ shipBonusCarrierC4WarfareLinksBonus Used by: Ship: Chimera """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusCarrierC4'), skill='Caldari Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusCarrierC4'), skill='Caldari Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusCarrierC4'), skill='Caldari Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusCarrierC4'), skill='Caldari Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusCarrierC4'), skill='Caldari Carrier') class Effect6597(EffectDef): """ shipBonusCarrierG4WarfareLinksBonus Used by: Ship: Thanatos """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusCarrierG4'), skill='Gallente Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusCarrierG4'), skill='Gallente Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusCarrierG4'), skill='Gallente Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusCarrierG4'), skill='Gallente Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusCarrierG4'), skill='Gallente Carrier') class Effect6598(EffectDef): """ shipBonusCarrierM4WarfareLinksBonus Used by: Ship: Nidhoggur """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusCarrierM4'), skill='Minmatar Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusCarrierM4'), skill='Minmatar Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusCarrierM4'), skill='Minmatar Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusCarrierM4'), skill='Minmatar Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusCarrierM4'), skill='Minmatar Carrier') class Effect6599(EffectDef): """ shipBonusCarrierA1ArmorResists Used by: Ship: Archon """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('armorKineticDamageResonance', src.getModifiedItemAttr('shipBonusCarrierA1'), skill='Amarr Carrier') fit.ship.boostItemAttr('armorEmDamageResonance', src.getModifiedItemAttr('shipBonusCarrierA1'), skill='Amarr Carrier') fit.ship.boostItemAttr('armorExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusCarrierA1'), skill='Amarr Carrier') fit.ship.boostItemAttr('armorThermalDamageResonance', src.getModifiedItemAttr('shipBonusCarrierA1'), skill='Amarr Carrier') class Effect6600(EffectDef): """ shipBonusCarrierC1ShieldResists Used by: Ship: Chimera """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('shipBonusCarrierC1'), skill='Caldari Carrier') fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('shipBonusCarrierC1'), skill='Caldari Carrier') fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('shipBonusCarrierC1'), skill='Caldari Carrier') fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusCarrierC1'), skill='Caldari Carrier') class Effect6601(EffectDef): """ shipBonusCarrierG1FighterDamage Used by: Ship: Thanatos """ type = 'passive' @staticmethod def handler(fit, src, context): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('shipBonusCarrierG1'), skill='Gallente Carrier') fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('shipBonusCarrierG1'), skill='Gallente Carrier') fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('shipBonusCarrierG1'), skill='Gallente Carrier') class Effect6602(EffectDef): """ shipBonusCarrierM1FighterDamage Used by: Ship: Nidhoggur """ type = 'passive' @staticmethod def handler(fit, src, context): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('shipBonusCarrierM1'), skill='Minmatar Carrier') fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('shipBonusCarrierM1'), skill='Minmatar Carrier') fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('shipBonusCarrierM1'), skill='Minmatar Carrier') class Effect6603(EffectDef): """ shipBonusSupercarrierA1FighterDamage Used by: Ship: Aeon Ship: Revenant """ type = 'passive' @staticmethod def handler(fit, src, context): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierA1'), skill='Amarr Carrier') fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierA1'), skill='Amarr Carrier') fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierA1'), skill='Amarr Carrier') class Effect6604(EffectDef): """ shipBonusSupercarrierC1FighterDamage Used by: Ship: Revenant Ship: Wyvern """ type = 'passive' @staticmethod def handler(fit, src, context): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierC1'), skill='Caldari Carrier') fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierC1'), skill='Caldari Carrier') fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierC1'), skill='Caldari Carrier') class Effect6605(EffectDef): """ shipBonusSupercarrierG1FighterDamage Used by: Variations of ship: Nyx (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierG1'), skill='Gallente Carrier') fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierG1'), skill='Gallente Carrier') fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierG1'), skill='Gallente Carrier') class Effect6606(EffectDef): """ shipBonusSupercarrierM1FighterDamage Used by: Ship: Hel """ type = 'passive' @staticmethod def handler(fit, src, context): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierM1'), skill='Minmatar Carrier') fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierM1'), skill='Minmatar Carrier') fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierM1'), skill='Minmatar Carrier') class Effect6607(EffectDef): """ shipBonusSupercarrierA5WarfareLinksBonus Used by: Ship: Aeon """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusSupercarrierA5'), skill='Amarr Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusSupercarrierA5'), skill='Amarr Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusSupercarrierA5'), skill='Amarr Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusSupercarrierA5'), skill='Amarr Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusSupercarrierA5'), skill='Amarr Carrier') class Effect6608(EffectDef): """ shipBonusSupercarrierC5WarfareLinksBonus Used by: Ship: Wyvern """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusSupercarrierC5'), skill='Caldari Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusSupercarrierC5'), skill='Caldari Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusSupercarrierC5'), skill='Caldari Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusSupercarrierC5'), skill='Caldari Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusSupercarrierC5'), skill='Caldari Carrier') class Effect6609(EffectDef): """ shipBonusSupercarrierG5WarfareLinksBonus Used by: Ship: Nyx """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusSupercarrierG5'), skill='Gallente Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusSupercarrierG5'), skill='Gallente Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusSupercarrierG5'), skill='Gallente Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusSupercarrierG5'), skill='Gallente Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusSupercarrierG5'), skill='Gallente Carrier') class Effect6610(EffectDef): """ shipBonusSupercarrierM5WarfareLinksBonus Used by: Ship: Hel """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusSupercarrierM5'), skill='Minmatar Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusSupercarrierM5'), skill='Minmatar Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusSupercarrierM5'), skill='Minmatar Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusSupercarrierM5'), skill='Minmatar Carrier') fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusSupercarrierM5'), skill='Minmatar Carrier') class Effect6611(EffectDef): """ shipBonusSupercarrierC2AfterburnerBonus Used by: Ship: Revenant """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'speedFactor', src.getModifiedItemAttr('shipBonusSupercarrierC2'), skill='Caldari Carrier') class Effect6612(EffectDef): """ shipBonusSupercarrierA2FighterApplicationBonus Used by: Ship: Revenant """ type = 'passive' @staticmethod def handler(fit, src, context): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesExplosionVelocity', src.getModifiedItemAttr('shipBonusSupercarrierA2'), skill='Amarr Carrier') fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileExplosionVelocity', src.getModifiedItemAttr('shipBonusSupercarrierA2'), skill='Amarr Carrier') class Effect6613(EffectDef): """ shipBonusSupercarrierRole1NumWarfareLinks Used by: Ships from group: Supercarrier (6 of 6) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupActive', src.getModifiedItemAttr('shipBonusRole1')) class Effect6614(EffectDef): """ shipBonusSupercarrierRole2ArmorShieldModuleBonus Used by: Ships from group: Supercarrier (6 of 6) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'armorHPBonusAdd', src.getModifiedItemAttr('shipBonusRole2')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Upgrades'), 'capacityBonus', src.getModifiedItemAttr('shipBonusRole2')) class Effect6615(EffectDef): """ shipBonusSupercarrierA4BurstProjectorBonus Used by: Ship: Aeon """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation'), 'durationWeaponDisruptionBurstProjector', src.getModifiedItemAttr('shipBonusSupercarrierA4'), skill='Amarr Carrier') class Effect6616(EffectDef): """ shipBonusSupercarrierC4BurstProjectorBonus Used by: Ship: Wyvern """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation'), 'durationECMJammerBurstProjector', src.getModifiedItemAttr('shipBonusSupercarrierC4'), skill='Caldari Carrier') class Effect6617(EffectDef): """ shipBonusSupercarrierG4BurstProjectorBonus Used by: Ship: Nyx """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation'), 'durationSensorDampeningBurstProjector', src.getModifiedItemAttr('shipBonusSupercarrierG4'), skill='Gallente Carrier') class Effect6618(EffectDef): """ shipBonusSupercarrierM4BurstProjectorBonus Used by: Ship: Hel """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation'), 'durationTargetIlluminationBurstProjector', src.getModifiedItemAttr('shipBonusSupercarrierM4'), skill='Minmatar Carrier') class Effect6619(EffectDef): """ shipBonusCarrierRole1NumWarfareLinks Used by: Ships from group: Carrier (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupActive', src.getModifiedItemAttr('shipBonusRole1')) class Effect6620(EffectDef): """ shipBonusDreadnoughtC3ReloadBonus Used by: Ship: Phoenix """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'reloadTime', src.getModifiedItemAttr('shipBonusDreadnoughtC3'), skill='Caldari Dreadnought') class Effect6621(EffectDef): """ shipBonusSupercarrierA2ArmorResists Used by: Ship: Aeon """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('armorExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierA2'), skill='Amarr Carrier') fit.ship.boostItemAttr('armorEmDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierA2'), skill='Amarr Carrier') fit.ship.boostItemAttr('armorThermalDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierA2'), skill='Amarr Carrier') fit.ship.boostItemAttr('armorKineticDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierA2'), skill='Amarr Carrier') class Effect6622(EffectDef): """ shipBonusSupercarrierC2ShieldResists Used by: Ship: Wyvern """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierC2'), skill='Caldari Carrier') fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierC2'), skill='Caldari Carrier') fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierC2'), skill='Caldari Carrier') fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierC2'), skill='Caldari Carrier') class Effect6623(EffectDef): """ shipBonusSupercarrierG2FighterHitpoints Used by: Variations of ship: Nyx (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'shieldCapacity', src.getModifiedItemAttr('shipBonusSupercarrierG2'), skill='Gallente Carrier') class Effect6624(EffectDef): """ shipBonusSupercarrierM2FighterVelocity Used by: Ship: Hel Ship: Vendetta """ type = 'passive' @staticmethod def handler(fit, src, context): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'maxVelocity', src.getModifiedItemAttr('shipBonusSupercarrierM2'), skill='Minmatar Carrier') class Effect6625(EffectDef): """ shipBonusCarrierA2SupportFighterBonus Used by: Ship: Archon """ type = 'passive' @staticmethod def handler(fit, src, context): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterSquadronOrbitRange', src.getModifiedItemAttr('shipBonusCarrierA2'), skill='Amarr Carrier') fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterAbilityEnergyNeutralizerOptimalRange', src.getModifiedItemAttr('shipBonusCarrierA2'), skill='Amarr Carrier') class Effect6626(EffectDef): """ shipBonusCarrierC2SupportFighterBonus Used by: Ship: Chimera """ type = 'passive' @staticmethod def handler(fit, src, context): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterSquadronOrbitRange', src.getModifiedItemAttr('shipBonusCarrierC2'), skill='Caldari Carrier') fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterAbilityECMRangeOptimal', src.getModifiedItemAttr('shipBonusCarrierC2'), skill='Caldari Carrier') class Effect6627(EffectDef): """ shipBonusCarrierG2SupportFighterBonus Used by: Ship: Thanatos """ type = 'passive' @staticmethod def handler(fit, src, context): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterSquadronOrbitRange', src.getModifiedItemAttr('shipBonusCarrierG2'), skill='Gallente Carrier') fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterAbilityWarpDisruptionRange', src.getModifiedItemAttr('shipBonusCarrierG2'), skill='Gallente Carrier') class Effect6628(EffectDef): """ shipBonusCarrierM2SupportFighterBonus Used by: Ship: Nidhoggur """ type = 'passive' @staticmethod def handler(fit, src, context): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterSquadronOrbitRange', src.getModifiedItemAttr('shipBonusCarrierM2'), skill='Minmatar Carrier') fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterAbilityStasisWebifierOptimalRange', src.getModifiedItemAttr('shipBonusCarrierM2'), skill='Minmatar Carrier') class Effect6629(EffectDef): """ scriptResistanceBonusBonus Used by: Charges named like: Resistance Script (8 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context): src.boostItemAttr('emDamageResistanceBonus', src.getModifiedChargeAttr('emDamageResistanceBonusBonus')) src.boostItemAttr('explosiveDamageResistanceBonus', src.getModifiedChargeAttr('explosiveDamageResistanceBonusBonus')) src.boostItemAttr('kineticDamageResistanceBonus', src.getModifiedChargeAttr('kineticDamageResistanceBonusBonus')) src.boostItemAttr('thermalDamageResistanceBonus', src.getModifiedChargeAttr('thermalDamageResistanceBonusBonus')) class Effect6634(EffectDef): """ shipBonusTitanA1DamageBonus Used by: Ship: Avatar """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Energy Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusTitanA1'), skill='Amarr Titan') class Effect6635(EffectDef): """ shipBonusTitanC1KinDamageBonus Used by: Ship: Leviathan """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'kineticDamage', src.getModifiedItemAttr('shipBonusTitanC1'), skill='Caldari Titan') fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'kineticDamage', src.getModifiedItemAttr('shipBonusTitanC1'), skill='Caldari Titan') fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'kineticDamage', src.getModifiedItemAttr('shipBonusTitanC1'), skill='Caldari Titan') class Effect6636(EffectDef): """ shipBonusTitanG1DamageBonus Used by: Ship: Erebus """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusTitanG1'), skill='Gallente Titan') class Effect6637(EffectDef): """ shipBonusTitanM1DamageBonus Used by: Ship: Ragnarok """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusTitanM1'), skill='Minmatar Titan') class Effect6638(EffectDef): """ shipBonusTitanC2ROFBonus Used by: Variations of ship: Leviathan (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher XL Cruise', 'speed', src.getModifiedItemAttr('shipBonusTitanC2'), skill='Caldari Titan') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rapid Torpedo', 'speed', src.getModifiedItemAttr('shipBonusTitanC2'), skill='Caldari Titan') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher XL Torpedo', 'speed', src.getModifiedItemAttr('shipBonusTitanC2'), skill='Caldari Titan') class Effect6639(EffectDef): """ shipBonusSupercarrierA4FighterApplicationBonus Used by: Ship: Revenant """ type = 'passive' @staticmethod def handler(fit, src, context): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesExplosionRadius', src.getModifiedItemAttr('shipBonusSupercarrierA4'), skill='Amarr Carrier') fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileExplosionRadius', src.getModifiedItemAttr('shipBonusSupercarrierA4'), skill='Amarr Carrier') class Effect6640(EffectDef): """ shipBonusRole1NumWarfareLinks Used by: Ships from group: Titan (7 of 7) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupActive', src.getModifiedItemAttr('shipBonusRole1')) class Effect6641(EffectDef): """ shipBonusRole2ArmorPlates&ShieldExtendersBonus Used by: Ships from group: Titan (7 of 7) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'armorHPBonusAdd', src.getModifiedItemAttr('shipBonusRole2')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Upgrades'), 'capacityBonus', src.getModifiedItemAttr('shipBonusRole2')) class Effect6642(EffectDef): """ skillBonusDoomsdayRapidFiring Used by: Skill: Doomsday Rapid Firing """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Doomsday Operation'), 'duration', src.getModifiedItemAttr('rofBonus') * lvl) class Effect6647(EffectDef): """ shipBonusTitanA3WarpStrength Used by: Variations of ship: Avatar (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusTitanA3'), skill='Amarr Titan') class Effect6648(EffectDef): """ shipBonusTitanC3WarpStrength Used by: Variations of ship: Leviathan (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusTitanC3'), skill='Caldari Titan') class Effect6649(EffectDef): """ shipBonusTitanG3WarpStrength Used by: Variations of ship: Erebus (2 of 2) Ship: Komodo """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusTitanG3'), skill='Gallente Titan') class Effect6650(EffectDef): """ shipBonusTitanM3WarpStrength Used by: Ships from group: Titan (3 of 7) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusTitanM3'), skill='Minmatar Titan') class Effect6651(EffectDef): """ shipModuleAncillaryRemoteArmorRepairer Used by: Modules from group: Ancillary Remote Armor Repairer (4 of 4) """ runTime = 'late' type = 'projected', 'active' @staticmethod def handler(fit, module, context, **kwargs): if 'projected' not in context: return 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) fit.extraAttributes.increase('armorRepairPreSpool', rps) fit.extraAttributes.increase('armorRepairFullSpool', rps) class Effect6652(EffectDef): """ shipModuleAncillaryRemoteShieldBooster Used by: Modules from group: Ancillary Remote Shield Booster (4 of 4) """ runTime = 'late' type = 'projected', 'active' @staticmethod def handler(fit, module, context, **kwargs): if 'projected' not in context: return amount = module.getModifiedItemAttr('shieldBonus') speed = module.getModifiedItemAttr('duration') / 1000.0 fit.extraAttributes.increase('shieldRepair', amount / speed, **kwargs) class Effect6653(EffectDef): """ shipBonusTitanA2CapNeed Used by: Ship: Avatar """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Energy Turret'), 'capacitorNeed', src.getModifiedItemAttr('shipBonusTitanA2'), skill='Amarr Titan') class Effect6654(EffectDef): """ shipBonusTitanG2ROFBonus Used by: Variations of ship: Erebus (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'speed', src.getModifiedItemAttr('shipBonusTitanG2'), skill='Gallente Titan') class Effect6655(EffectDef): """ shipBonusTitanM2ROFBonus Used by: Ship: Ragnarok """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'speed', src.getModifiedItemAttr('shipBonusTitanM2'), skill='Minmatar Titan') class Effect6656(EffectDef): """ shipBonusRole3XLTorpdeoVelocityBonus Used by: Variations of ship: Leviathan (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'maxVelocity', src.getModifiedItemAttr('shipBonusRole3')) class Effect6657(EffectDef): """ shipBonusTitanC5AllDamageBonus Used by: Ship: Leviathan """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'emDamage', src.getModifiedItemAttr('shipBonusTitanC5'), skill='Caldari Titan') fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusTitanC5'), skill='Caldari Titan') fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'thermalDamage', src.getModifiedItemAttr('shipBonusTitanC5'), skill='Caldari Titan') fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusTitanC5'), skill='Caldari Titan') fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'thermalDamage', src.getModifiedItemAttr('shipBonusTitanC5'), skill='Caldari Titan') fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'emDamage', src.getModifiedItemAttr('shipBonusTitanC5'), skill='Caldari Titan') fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'thermalDamage', src.getModifiedItemAttr('shipBonusTitanC5'), skill='Caldari Titan') fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'emDamage', src.getModifiedItemAttr('shipBonusTitanC5'), skill='Caldari Titan') fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusTitanC5'), skill='Caldari Titan') class Effect6658(EffectDef): """ moduleBonusBastionModule Used by: Module: Bastion Module I """ runTime = 'early' type = 'active' @staticmethod def handler(fit, src, context): # 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') # 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'), 'maxRange', src.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True) 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) # 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')) # Tanking fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('armorDamageAmountBonus'), stackingPenalties=True) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('shieldBoostMultiplier'), stackingPenalties=True) # Speed penalty fit.ship.boostItemAttr('maxVelocity', src.getModifiedItemAttr('speedFactor')) # @todo: test these for April 2016 release # Max locked targets fit.ship.forceItemAttr('maxLockedTargets', src.getModifiedItemAttr('maxLockedTargets')) # Block Hostile ewar fit.ship.forceItemAttr('disallowOffensiveModifiers', src.getModifiedItemAttr('disallowOffensiveModifiers')) # 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) fit.ship.boostItemAttr('remoteRepairImpedance', src.getModifiedItemAttr('remoteRepairImpedanceBonus')) fit.ship.boostItemAttr('remoteAssistanceImpedance', src.getModifiedItemAttr('remoteAssistanceImpedanceBonus')) fit.ship.boostItemAttr('sensorDampenerResistance', src.getModifiedItemAttr('sensorDampenerResistanceBonus')) fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Micro Jump Drive Operation'), 'activationBlocked', src.getModifiedItemAttr('activationBlockedStrenght')) fit.ship.boostItemAttr('targetPainterResistance', src.getModifiedItemAttr('targetPainterResistanceBonus')) fit.ship.boostItemAttr('weaponDisruptionResistance', src.getModifiedItemAttr('weaponDisruptionResistanceBonus')) fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('siegeModeWarpStatus')) fit.ship.forceItemAttr('disallowDocking', src.getModifiedItemAttr('disallowDocking')) fit.ship.forceItemAttr('disallowTethering', src.getModifiedItemAttr('disallowTethering')) class Effect6661(EffectDef): """ shipBonusCarrierM3FighterVelocity Used by: Ship: Nidhoggur """ type = 'passive' @staticmethod def handler(fit, src, context): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'maxVelocity', src.getModifiedItemAttr('shipBonusCarrierM3'), skill='Minmatar Carrier') class Effect6662(EffectDef): """ shipBonusCarrierG3FighterHitpoints Used by: Ship: Thanatos """ type = 'passive' @staticmethod def handler(fit, src, context): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'shieldCapacity', src.getModifiedItemAttr('shipBonusCarrierG3'), skill='Gallente Carrier') class Effect6663(EffectDef): """ skillBonusDroneInterfacing Used by: Skill: Drone Interfacing """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level if 'skill' in context else 1 fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Mining Drone Operation'), 'miningDroneAmountPercent', src.getModifiedItemAttr('miningAmountBonus') * lvl) class Effect6664(EffectDef): """ skillBonusDroneSharpshooting Used by: Skill: Drone Sharpshooting """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level if 'skill' in context else 1 fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'maxRange', src.getModifiedItemAttr('rangeSkillBonus') * lvl) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesRange', src.getModifiedItemAttr('rangeSkillBonus') * lvl) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretRangeOptimal', src.getModifiedItemAttr('rangeSkillBonus') * lvl) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileRangeOptimal', src.getModifiedItemAttr('rangeSkillBonus') * lvl) class Effect6665(EffectDef): """ skillBonusDroneDurability Used by: Skill: Drone Durability """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level if 'skill' in context else 1 fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'hp', src.getModifiedItemAttr('hullHpBonus') * lvl) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'armorHP', src.getModifiedItemAttr('armorHpBonus') * lvl) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'shieldCapacity', src.getModifiedItemAttr('shieldCapacityBonus') * lvl) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'shieldCapacity', src.getModifiedItemAttr('shieldCapacityBonus') * lvl) class Effect6667(EffectDef): """ skillBonusDroneNavigation Used by: Skill: Drone Navigation """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level if 'skill' in context else 1 fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'maxVelocity', src.getModifiedItemAttr('maxVelocityBonus') * lvl) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'maxVelocity', src.getModifiedItemAttr('maxVelocityBonus') * lvl) class Effect6669(EffectDef): """ moduleBonusCapitalDroneDurabilityEnhancer Used by: Variations of module: Capital Drone Durability Enhancer I (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'armorHP', src.getModifiedItemAttr('hullHpBonus')) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'hp', src.getModifiedItemAttr('hullHpBonus')) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'shieldCapacity', src.getModifiedItemAttr('hullHpBonus')) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'shieldCapacity', src.getModifiedItemAttr('hullHpBonus')) fit.ship.boostItemAttr('cpuOutput', src.getModifiedItemAttr('drawback')) class Effect6670(EffectDef): """ moduleBonusCapitalDroneScopeChip Used by: Variations of module: Capital Drone Scope Chip I (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'maxRange', src.getModifiedItemAttr('rangeSkillBonus'), stackingPenalties=True) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesRange', src.getModifiedItemAttr('rangeSkillBonus'), stackingPenalties=True) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretRangeOptimal', src.getModifiedItemAttr('rangeSkillBonus'), stackingPenalties=True) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileRangeOptimal', src.getModifiedItemAttr('rangeSkillBonus'), stackingPenalties=True) fit.ship.boostItemAttr('cpuOutput', src.getModifiedItemAttr('drawback')) class Effect6671(EffectDef): """ moduleBonusCapitalDroneSpeedAugmentor Used by: Variations of module: Capital Drone Speed Augmentor I (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'maxVelocity', src.getModifiedItemAttr('droneMaxVelocityBonus'), stackingPenalties=True) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'maxVelocity', src.getModifiedItemAttr('droneMaxVelocityBonus'), stackingPenalties=True) fit.ship.boostItemAttr('cpuOutput', src.getModifiedItemAttr('drawback')) class Effect6672(EffectDef): """ 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): secModifier = module.getModifiedItemAttr('securityModifier') module.multiplyItemAttr('structureRigDoomsdayDamageLossTargetBonus', secModifier) module.multiplyItemAttr('structureRigScanResBonus', secModifier) module.multiplyItemAttr('structureRigPDRangeBonus', secModifier) module.multiplyItemAttr('structureRigPDCapUseBonus', secModifier) module.multiplyItemAttr('structureRigMissileExploVeloBonus', secModifier) module.multiplyItemAttr('structureRigMissileVelocityBonus', secModifier) module.multiplyItemAttr('structureRigEwarOptimalBonus', secModifier) module.multiplyItemAttr('structureRigEwarFalloffBonus', secModifier) module.multiplyItemAttr('structureRigEwarCapUseBonus', secModifier) module.multiplyItemAttr('structureRigMissileExplosionRadiusBonus', secModifier) module.multiplyItemAttr('structureRigMaxTargetRangeBonus', secModifier) class Effect6679(EffectDef): """ skillStructureDoomsdayDurationBonus Used by: Skill: Structure Doomsday Operation """ type = 'passive', 'structure' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Doomsday Weapon', 'duration', src.getModifiedItemAttr('durationBonus'), skill='Structure Doomsday Operation') class Effect6681(EffectDef): """ shipBonusRole3NumWarfareLinks Used by: Ships from group: Force Auxiliary (6 of 6) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupActive', src.getModifiedItemAttr('shipBonusRole3')) class Effect6682(EffectDef): """ structureModuleEffectStasisWebifier Used by: Structure Modules from group: Structure Stasis Webifier (2 of 2) """ type = 'active', 'projected' @staticmethod def handler(fit, module, context, *args, **kwargs): if 'projected' not in context: return fit.ship.boostItemAttr('maxVelocity', module.getModifiedItemAttr('speedFactor'), stackingPenalties=True, *args, **kwargs) class Effect6683(EffectDef): """ structureModuleEffectTargetPainter Used by: Variations of structure module: Standup Target Painter I (2 of 2) """ type = 'projected', 'active' @staticmethod def handler(fit, container, context, *args, **kwargs): if 'projected' in context: fit.ship.boostItemAttr('signatureRadius', container.getModifiedItemAttr('signatureRadiusBonus'), stackingPenalties=True, *args, **kwargs) class Effect6684(EffectDef): """ structureModuleEffectRemoteSensorDampener Used by: Variations of structure module: Standup Remote Sensor Dampener I (2 of 2) """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, *args, **kwargs): if 'projected' not in context: return fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRangeBonus'), stackingPenalties=True, *args, **kwargs) fit.ship.boostItemAttr('scanResolution', module.getModifiedItemAttr('scanResolutionBonus'), stackingPenalties=True, *args, **kwargs) class Effect6685(EffectDef): """ structureModuleEffectECM Used by: Structure Modules from group: Structure ECM Battery (3 of 3) """ type = 'projected', 'active' @staticmethod def handler(fit, module, context): if 'projected' in context: # jam formula: 1 - (1- (jammer str/ship str))^(# of jam mods with same str)) strModifier = 1 - module.getModifiedItemAttr('scan{0}StrengthBonus'.format(fit.scanType)) / fit.scanStrength fit.ecmProjectedStr *= strModifier class Effect6686(EffectDef): """ structureModuleEffectWeaponDisruption Used by: Variations of structure module: Standup Weapon Disruptor I (2 of 2) """ type = 'active', 'projected' @staticmethod def handler(fit, module, context, *args, **kwargs): if 'projected' in context: 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, *args, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'trackingSpeed', module.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=True, *args, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'maxRange', module.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True, *args, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'falloff', module.getModifiedItemAttr('falloffBonus'), stackingPenalties=True, *args, **kwargs) class Effect6687(EffectDef): """ npcEntityRemoteArmorRepairer Used by: Drones named like: Armor Maintenance Bot (6 of 6) """ type = 'projected', 'active' @staticmethod def handler(fit, container, context): if 'projected' in context: bonus = container.getModifiedItemAttr('armorDamageAmount') duration = container.getModifiedItemAttr('duration') / 1000.0 rps = bonus / duration fit.extraAttributes.increase('armorRepair', rps) fit.extraAttributes.increase('armorRepairPreSpool', rps) fit.extraAttributes.increase('armorRepairFullSpool', rps) class Effect6688(EffectDef): """ npcEntityRemoteShieldBooster Used by: Drones named like: Shield Maintenance Bot (6 of 6) """ type = 'projected', 'active' @staticmethod def handler(fit, container, context): if 'projected' in context: bonus = container.getModifiedItemAttr('shieldBonus') duration = container.getModifiedItemAttr('duration') / 1000.0 fit.extraAttributes.increase('shieldRepair', bonus / duration) class Effect6689(EffectDef): """ npcEntityRemoteHullRepairer Used by: Drones named like: Hull Maintenance Bot (6 of 6) """ runTime = 'late' type = 'projected', 'active' @staticmethod def handler(fit, module, context): if 'projected' not in context: return bonus = module.getModifiedItemAttr('structureDamageAmount') duration = module.getModifiedItemAttr('duration') / 1000.0 fit.extraAttributes.increase('hullRepair', bonus / duration) class Effect6690(EffectDef): """ remoteWebifierEntity Used by: Drones from group: Stasis Webifying Drone (3 of 3) """ type = 'active', 'projected' @staticmethod def handler(fit, module, context, *args, **kwargs): if 'projected' not in context: return fit.ship.boostItemAttr('maxVelocity', module.getModifiedItemAttr('speedFactor'), stackingPenalties=True, *args, **kwargs) class Effect6691(EffectDef): """ entityEnergyNeutralizerFalloff Used by: Drones from group: Energy Neutralizer Drone (3 of 3) """ type = 'active', 'projected' @staticmethod def handler(fit, src, context, **kwargs): if 'projected' in context and ((hasattr(src, 'state') and src.state >= FittingModuleState.ACTIVE) or hasattr(src, 'amountActive')): amount = src.getModifiedItemAttr('energyNeutralizerAmount') time = src.getModifiedItemAttr('energyNeutralizerDuration') if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict amount *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) fit.addDrain(src, time, amount, 0) class Effect6692(EffectDef): """ remoteTargetPaintEntity Used by: Drones named like: TP (3 of 3) """ type = 'projected', 'active' @staticmethod def handler(fit, container, context, *args, **kwargs): if 'projected' in context: fit.ship.boostItemAttr('signatureRadius', container.getModifiedItemAttr('signatureRadiusBonus'), stackingPenalties=True, *args, **kwargs) class Effect6693(EffectDef): """ remoteSensorDampEntity Used by: Drones named like: SD (3 of 3) """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, *args, **kwargs): if 'projected' not in context: return fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRangeBonus'), stackingPenalties=True, *args, **kwargs) fit.ship.boostItemAttr('scanResolution', module.getModifiedItemAttr('scanResolutionBonus'), stackingPenalties=True, *args, **kwargs) class Effect6694(EffectDef): """ npcEntityWeaponDisruptor Used by: Drones named like: TD (3 of 3) """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, *args, **kwargs): if 'projected' in context: fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'trackingSpeed', module.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=True, *args, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'maxRange', module.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True, *args, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'falloff', module.getModifiedItemAttr('falloffBonus'), stackingPenalties=True, *args, **kwargs) class Effect6695(EffectDef): """ entityECMFalloff Used by: Drones named like: EC (3 of 3) """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, **kwargs): if 'projected' in context: # jam formula: 1 - (1- (jammer str/ship str))^(# of jam mods with same str)) strModifier = 1 - module.getModifiedItemAttr('scan{0}StrengthBonus'.format(fit.scanType)) / fit.scanStrength if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict strModifier *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) fit.ecmProjectedStr *= strModifier class Effect6697(EffectDef): """ rigDrawbackReductionArmor Used by: Skill: Armor Rigging """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Armor', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Resource Processing', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl) class Effect6698(EffectDef): """ rigDrawbackReductionAstronautics Used by: Skill: Astronautics Rigging """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Navigation', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Anchor', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl) class Effect6699(EffectDef): """ rigDrawbackReductionDrones Used by: Skill: Drones Rigging """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Drones', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl) class Effect6700(EffectDef): """ rigDrawbackReductionElectronic Used by: Skill: Electronic Superiority Rigging """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Electronic Systems', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Scanning', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Targeting', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl) class Effect6701(EffectDef): """ rigDrawbackReductionProjectile Used by: Skill: Projectile Weapon Rigging """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Projectile Weapon', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl) class Effect6702(EffectDef): """ rigDrawbackReductionEnergyWeapon Used by: Skill: Energy Weapon Rigging """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Energy Weapon', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl) class Effect6703(EffectDef): """ rigDrawbackReductionHybrid Used by: Skill: Hybrid Weapon Rigging """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Hybrid Weapon', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl) class Effect6704(EffectDef): """ rigDrawbackReductionLauncher Used by: Skill: Launcher Rigging """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Launcher', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl) class Effect6705(EffectDef): """ rigDrawbackReductionShield Used by: Skill: Shield Rigging """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Shield', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl) class Effect6706(EffectDef): """ setBonusAsklepian Used by: Implants named like: grade Asklepian (18 of 18) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Cybernetics'), 'armorRepairBonus', src.getModifiedItemAttr('implantSetSerpentis2')) class Effect6708(EffectDef): """ armorRepairAmountBonusSubcap Used by: Implants named like: grade Asklepian (15 of 18) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('armorRepairBonus')) class Effect6709(EffectDef): """ shipBonusRole1CapitalHybridDamageBonus Used by: Ship: Vehement """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole1')) class Effect6710(EffectDef): """ shipBonusDreadnoughtM1WebStrengthBonus Used by: Ship: Vehement """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'speedFactor', src.getModifiedItemAttr('shipBonusDreadnoughtM1'), skill='Minmatar Dreadnought') class Effect6711(EffectDef): """ shipBonusRole3CapitalHybridDamageBonus Used by: Ship: Vanquisher """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusRole3')) class Effect6712(EffectDef): """ shipBonusTitanM1WebStrengthBonus Used by: Ship: Vanquisher """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'speedFactor', src.getModifiedItemAttr('shipBonusTitanM1'), skill='Minmatar Titan') class Effect6713(EffectDef): """ shipBonusSupercarrierM1BurstProjectorWebBonus Used by: Ship: Hel Ship: Vendetta """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation'), 'speedFactor', src.getModifiedItemAttr('shipBonusSupercarrierM1'), skill='Minmatar Carrier') class Effect6714(EffectDef): """ ECMBurstJammer Used by: Modules from group: Burst Jammer (11 of 11) """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, **kwargs): if 'projected' in context: # jam formula: 1 - (1- (jammer str/ship str))^(# of jam mods with same str)) strModifier = 1 - module.getModifiedItemAttr('scan{0}StrengthBonus'.format(fit.scanType)) / fit.scanStrength if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict strModifier *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) fit.ecmProjectedStr *= strModifier class Effect6717(EffectDef): """ roleBonusIceOreMiningDurationCap Used by: Variations of ship: Covetor (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining'), 'capacitorNeed', src.getModifiedItemAttr('miningDurationRoleBonus')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining'), 'duration', src.getModifiedItemAttr('miningDurationRoleBonus')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'duration', src.getModifiedItemAttr('miningDurationRoleBonus')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'capacitorNeed', src.getModifiedItemAttr('miningDurationRoleBonus')) class Effect6720(EffectDef): """ shipBonusDroneRepairMC1 Used by: Ship: Rabisu """ type = 'passive' @staticmethod def handler(fit, src, context): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'shieldBonus', src.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser') fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'structureDamageAmount', src.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser') fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser') class Effect6721(EffectDef): """ eliteBonusLogisticRemoteArmorRepairOptimalFalloff1 Used by: Ship: Rabisu """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'falloffEffectiveness', src.getModifiedItemAttr('eliteBonusLogistics1'), skill='Logistics Cruisers') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'maxRange', src.getModifiedItemAttr('eliteBonusLogistics1'), skill='Logistics Cruisers') class Effect6722(EffectDef): """ roleBonusRemoteArmorRepairOptimalFalloff Used by: Ship: Rabisu """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'falloffEffectiveness', src.getModifiedItemAttr('roleBonusRepairRange')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'maxRange', src.getModifiedItemAttr('roleBonusRepairRange')) class Effect6723(EffectDef): """ shipBonusCloakCpuMC2 Used by: Ship: Rabisu """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Cloaking'), 'cpu', src.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser') class Effect6724(EffectDef): """ eliteBonusLogisticRemoteArmorRepairDuration3 Used by: Ship: Rabisu """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'duration', src.getModifiedItemAttr('eliteBonusLogistics3'), skill='Logistics Cruisers') class Effect6725(EffectDef): """ shipBonusSETFalloffAF2 Used by: Ship: Caedes """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'falloff', src.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate') class Effect6726(EffectDef): """ shipBonusCloakCpuMF1 Used by: Ship: Caedes """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Cloaking'), 'cpu', src.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate') class Effect6727(EffectDef): """ eliteBonusCoverOpsNOSNeutFalloff1 Used by: Ship: Caedes """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Energy Nosferatu', 'Energy Neutralizer'), 'falloffEffectiveness', src.getModifiedItemAttr('eliteBonusCovertOps1'), stackingPenalties=True, skill='Covert Ops') class Effect6730(EffectDef): """ moduleBonusMicrowarpdrive Used by: Modules from group: Propulsion Module (68 of 133) """ runTime = 'late' type = 'active' @staticmethod def handler(fit, module, context): fit.ship.increaseItemAttr('mass', module.getModifiedItemAttr('massAddition')) speedBoost = module.getModifiedItemAttr('speedFactor') mass = fit.ship.getModifiedItemAttr('mass') thrust = module.getModifiedItemAttr('speedBoostFactor') fit.ship.boostItemAttr('maxVelocity', speedBoost * thrust / mass) fit.ship.boostItemAttr('signatureRadius', module.getModifiedItemAttr('signatureRadiusBonus'), stackingPenalties=True) class Effect6731(EffectDef): """ moduleBonusAfterburner Used by: Modules from group: Propulsion Module (65 of 133) """ runTime = 'late' type = 'active' @staticmethod def handler(fit, module, context): fit.ship.increaseItemAttr('mass', module.getModifiedItemAttr('massAddition')) speedBoost = module.getModifiedItemAttr('speedFactor') mass = fit.ship.getModifiedItemAttr('mass') thrust = module.getModifiedItemAttr('speedBoostFactor') fit.ship.boostItemAttr('maxVelocity', speedBoost * thrust / mass) class Effect6732(EffectDef): """ moduleBonusWarfareLinkArmor Used by: Variations of module: Armor Command Burst I (2 of 2) """ type = 'active', 'gang' @staticmethod def handler(fit, module, context, **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(EffectDef): """ moduleBonusWarfareLinkShield Used by: Variations of module: Shield Command Burst I (2 of 2) """ type = 'active', 'gang' @staticmethod def handler(fit, module, context, **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(EffectDef): """ moduleBonusWarfareLinkSkirmish Used by: Variations of module: Skirmish Command Burst I (2 of 2) """ type = 'active', 'gang' @staticmethod def handler(fit, module, context, **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(EffectDef): """ moduleBonusWarfareLinkInfo Used by: Variations of module: Information Command Burst I (2 of 2) """ type = 'active', 'gang' @staticmethod def handler(fit, module, context, **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(EffectDef): """ moduleBonusWarfareLinkMining Used by: Variations of module: Mining Foreman Burst I (2 of 2) """ type = 'active', 'gang' @staticmethod def handler(fit, module, context, **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(EffectDef): """ chargeBonusWarfareCharge Used by: Items from market group: Ammunition & Charges > Command Burst Charges (15 of 15) """ type = 'active' @staticmethod def handler(fit, module, context): for x in range(1, 4): value = module.getModifiedChargeAttr('warfareBuff{}Multiplier'.format(x)) module.multiplyItemAttr('warfareBuff{}Value'.format(x), value) class Effect6753(EffectDef): """ moduleTitanEffectGenerator Used by: Modules from group: Titan Phenomena Generator (4 of 4) """ type = 'active', 'gang' @staticmethod def handler(fit, module, context, **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(EffectDef): """ miningDroneSpecBonus Used by: Skill: Mining Drone Specialization """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Drone Specialization'), 'miningAmount', src.getModifiedItemAttr('miningAmountBonus') * lvl) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Drone Specialization'), 'maxVelocity', src.getModifiedItemAttr('maxVelocityBonus') * lvl) class Effect6763(EffectDef): """ 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): 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) class Effect6764(EffectDef): """ iceHarvestingDroneSpecBonus Used by: Skill: Ice Harvesting Drone Specialization """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Ice Harvesting Drone Specialization'), 'duration', src.getModifiedItemAttr('rofBonus') * lvl) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Ice Harvesting Drone Specialization'), 'maxVelocity', src.getModifiedItemAttr('maxVelocityBonus') * lvl) class Effect6765(EffectDef): """ spatialPhenomenaGenerationDurationBonus Used by: Skill: Spatial Phenomena Generation """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Spatial Phenomena Generation'), 'buffDuration', src.getModifiedItemAttr('durationBonus') * lvl) class Effect6766(EffectDef): """ commandProcessorEffect Used by: Modules named like: Command Processor I (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupActive', src.getModifiedItemAttr('maxGangModules')) fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupOnline', src.getModifiedItemAttr('maxGangModules')) class Effect6769(EffectDef): """ commandBurstAoEBonus Used by: Skill: Fleet Command Skill: Leadership Skill: Wing Command """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'maxRange', src.getModifiedItemAttr('areaOfEffectBonus') * src.level) class Effect6770(EffectDef): """ armoredCommandDurationBonus Used by: Skill: Armored Command """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'buffDuration', src.getModifiedItemAttr('durationBonus') * lvl) class Effect6771(EffectDef): """ shieldCommandDurationBonus Used by: Skill: Shield Command """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'buffDuration', src.getModifiedItemAttr('durationBonus') * lvl) class Effect6772(EffectDef): """ informationCommandDurationBonus Used by: Skill: Information Command """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'buffDuration', src.getModifiedItemAttr('durationBonus') * lvl) class Effect6773(EffectDef): """ skirmishCommandDurationBonus Used by: Skill: Skirmish Command """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'buffDuration', src.getModifiedItemAttr('durationBonus') * lvl) class Effect6774(EffectDef): """ miningForemanDurationBonus Used by: Skill: Mining Foreman """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'buffDuration', src.getModifiedItemAttr('durationBonus') * lvl) class Effect6776(EffectDef): """ armoredCommandStrengthBonus Used by: Skill: Armored Command Specialist """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff1Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff2Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff4Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff3Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl) class Effect6777(EffectDef): """ shieldCommandStrengthBonus Used by: Skill: Shield Command Specialist """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff3Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff1Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff2Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff4Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl) class Effect6778(EffectDef): """ informationCommandStrengthBonus Used by: Skill: Information Command Specialist """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff2Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff1Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff3Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff4Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl) class Effect6779(EffectDef): """ skirmishCommandStrengthBonus Used by: Skill: Skirmish Command Specialist """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff3Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff4Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff1Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff2Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl) class Effect6780(EffectDef): """ miningForemanStrengthBonus Used by: Skill: Mining Director """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff4Value', src.getModifiedItemAttr('commandStrengthBonus') * lvl) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff3Value', src.getModifiedItemAttr('commandStrengthBonus') * lvl) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff2Value', src.getModifiedItemAttr('commandStrengthBonus') * lvl) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff1Value', src.getModifiedItemAttr('commandStrengthBonus') * lvl) class Effect6782(EffectDef): """ commandBurstReloadTimeBonus Used by: Skill: Command Burst Specialist """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'reloadTime', src.getModifiedItemAttr('reloadTimeBonus') * lvl) class Effect6783(EffectDef): """ commandBurstAoERoleBonus Used by: Ships from group: Carrier (4 of 4) Ships from group: Combat Battlecruiser (14 of 14) 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 (7 of 7) Subsystems named like: Offensive Support Processor (4 of 4) Ship: Orca Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'maxRange', src.getModifiedItemAttr('roleBonusCommandBurstAoERange')) class Effect6786(EffectDef): """ shieldCommandBurstBonusICS3 Used by: Ship: Orca """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff4Multiplier', src.getModifiedItemAttr('shipBonusICS3'), skill='Industrial Command Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff1Multiplier', src.getModifiedItemAttr('shipBonusICS3'), skill='Industrial Command Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff2Multiplier', src.getModifiedItemAttr('shipBonusICS3'), skill='Industrial Command Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff3Multiplier', src.getModifiedItemAttr('shipBonusICS3'), skill='Industrial Command Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusICS3'), skill='Industrial Command Ships') class Effect6787(EffectDef): """ shipBonusDroneHPDamageMiningICS4 Used by: Ships from group: Industrial Command Ship (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusICS4'), skill='Industrial Command Ships' ) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'shieldCapacity', src.getModifiedItemAttr('shipBonusICS4'), skill='Industrial Command Ships' ) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'armorHP', src.getModifiedItemAttr('shipBonusICS4'), skill='Industrial Command Ships' ) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'hp', src.getModifiedItemAttr('shipBonusICS4'), skill='Industrial Command Ships' ) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Mining Drone Operation'), 'miningAmount', src.getModifiedItemAttr('shipBonusICS4'), skill='Industrial Command Ships' ) class Effect6788(EffectDef): """ shipBonusDroneIceHarvestingICS5 Used by: Ships from group: Industrial Command Ship (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Ice Harvesting Drone Operation'), 'duration', src.getModifiedItemAttr('shipBonusICS5'), skill='Industrial Command Ships' ) class Effect6789(EffectDef): """ industrialBonusDroneDamage Used by: Ships from group: Blockade Runner (4 of 4) Ships from group: Deep Space Transport (4 of 4) Ships from group: Exhumer (3 of 3) Ships from group: Industrial (17 of 17) Ships from group: Industrial Command Ship (2 of 2) Ships from group: Mining Barge (3 of 3) Variations of ship: Venture (3 of 3) Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, src, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('industrialBonusDroneDamage')) class Effect6790(EffectDef): """ shipBonusDroneIceHarvestingRole Used by: Ship: Orca """ type = 'passive' @staticmethod def handler(fit, src, context): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Ice Harvesting Drone Operation'), 'duration', src.getModifiedItemAttr('roleBonusDroneIceHarvestingSpeed')) class Effect6792(EffectDef): """ shipBonusDroneHPDamageMiningORECapital4 Used by: Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, src, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusORECapital4'), skill='Capital Industrial Ships' ) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'shieldCapacity', src.getModifiedItemAttr('shipBonusORECapital4'), skill='Capital Industrial Ships' ) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'armorHP', src.getModifiedItemAttr('shipBonusORECapital4'), skill='Capital Industrial Ships' ) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'hp', src.getModifiedItemAttr('shipBonusORECapital4'), skill='Capital Industrial Ships' ) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Mining Drone Operation'), 'miningAmount', src.getModifiedItemAttr('shipBonusORECapital4'), skill='Capital Industrial Ships' ) class Effect6793(EffectDef): """ miningForemanBurstBonusORECapital2 Used by: Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusORECapital2'), skill='Capital Industrial Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusORECapital2'), skill='Capital Industrial Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusORECapital2'), skill='Capital Industrial Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusORECapital2'), skill='Capital Industrial Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'buffDuration', src.getModifiedItemAttr('shipBonusORECapital2'), skill='Capital Industrial Ships') class Effect6794(EffectDef): """ shieldCommandBurstBonusORECapital3 Used by: Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusORECapital3'), skill='Capital Industrial Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusORECapital3'), skill='Capital Industrial Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusORECapital3'), skill='Capital Industrial Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusORECapital3'), skill='Capital Industrial Ships') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusORECapital3'), skill='Capital Industrial Ships') class Effect6795(EffectDef): """ shipBonusDroneIceHarvestingORECapital5 Used by: Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, src, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Ice Harvesting Drone Operation'), 'duration', src.getModifiedItemAttr('shipBonusORECapital5'), skill='Capital Industrial Ships' ) class Effect6796(EffectDef): """ shipModeSHTDamagePostDiv Used by: Module: Hecate Sharpshooter Mode """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', 1 / module.getModifiedItemAttr('modeDamageBonusPostDiv'), stackingPenalties=True, penaltyGroup='postDiv' ) class Effect6797(EffectDef): """ shipModeSPTDamagePostDiv Used by: Module: Svipul Sharpshooter Mode """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', 1 / module.getModifiedItemAttr('modeDamageBonusPostDiv'), stackingPenalties=True, penaltyGroup='postDiv' ) class Effect6798(EffectDef): """ shipModeSETDamagePostDiv Used by: Module: Confessor Sharpshooter Mode """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier', 1 / module.getModifiedItemAttr('modeDamageBonusPostDiv'), stackingPenalties=True, penaltyGroup='postDiv' ) class Effect6799(EffectDef): """ shipModeSmallMissileDamagePostDiv Used by: Module: Jackdaw Sharpshooter Mode """ type = 'passive' @staticmethod def handler(fit, module, context): 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') class Effect6800(EffectDef): """ modeDampTDResistsPostDiv Used by: Modules named like: Sharpshooter Mode (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.multiplyItemAttr('weaponDisruptionResistance', 1 / module.getModifiedItemAttr('modeEwarResistancePostDiv')) fit.ship.multiplyItemAttr('sensorDampenerResistance', 1 / module.getModifiedItemAttr('modeEwarResistancePostDiv')) class Effect6801(EffectDef): """ modeMWDandABBoostPostDiv Used by: Module: Confessor Propulsion Mode Module: Svipul Propulsion Mode """ type = 'passive' @staticmethod def handler(fit, module, context): 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' ) class Effect6807(EffectDef): """ invulnerabilityCoreDurationBonus Used by: Skill: Invulnerability Core Operation """ type = 'passive' @staticmethod def handler(fit, src, context): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Invulnerability Core Operation'), 'buffDuration', src.getModifiedItemAttr('durationBonus') * lvl) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Invulnerability Core Operation'), 'duration', src.getModifiedItemAttr('durationBonus') * lvl) class Effect6844(EffectDef): """ skillMultiplierDefenderMissileVelocity Used by: Skill: Defender Missiles """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Defender Missiles'), 'maxVelocity', skill.getModifiedItemAttr('missileVelocityBonus') * skill.level) class Effect6845(EffectDef): """ shipBonusCommandDestroyerRole1DefenderBonus Used by: Ships from group: Command Destroyer (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Defender Missiles'), 'moduleReactivationDelay', ship.getModifiedItemAttr('shipBonusRole1')) class Effect6851(EffectDef): """ shipBonusRole3CapitalEnergyDamageBonus Used by: Ship: Chemosh Ship: Molok """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Energy Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusRole3')) class Effect6852(EffectDef): """ shipBonusTitanM1WebRangeBonus Used by: Ship: Molok """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', src.getModifiedItemAttr('shipBonusTitanM1'), skill='Minmatar Titan') class Effect6853(EffectDef): """ shipBonusTitanA1EnergyWarfareAmountBonus Used by: Ship: Molok """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', src.getModifiedItemAttr('shipBonusTitanA1'), skill='Amarr Titan') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', src.getModifiedItemAttr('shipBonusTitanA1'), skill='Amarr Titan') class Effect6855(EffectDef): """ shipBonusDreadnoughtA1EnergyWarfareAmountBonus Used by: Ship: Chemosh """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', src.getModifiedItemAttr('shipBonusDreadnoughtA1'), skill='Amarr Dreadnought') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', src.getModifiedItemAttr('shipBonusDreadnoughtA1'), skill='Amarr Dreadnought') class Effect6856(EffectDef): """ shipBonusDreadnoughtM1WebRangeBonus Used by: Ship: Chemosh """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', src.getModifiedItemAttr('shipBonusDreadnoughtM1'), skill='Minmatar Dreadnought') class Effect6857(EffectDef): """ shipBonusForceAuxiliaryA1NosferatuRangeBonus Used by: Ship: Dagon """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange', src.getModifiedItemAttr('shipBonusForceAuxiliaryA1'), skill='Amarr Carrier') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusForceAuxiliaryA1'), skill='Amarr Carrier') class Effect6858(EffectDef): """ shipBonusForceAuxiliaryA1NosferatuDrainAmount Used by: Ship: Dagon """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', src.getModifiedItemAttr('shipBonusForceAuxiliaryA1'), skill='Amarr Carrier') class Effect6859(EffectDef): """ shipBonusRole4NosferatuCPUBonus Used by: Ship: Dagon Ship: Rabisu """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'cpu', src.getModifiedItemAttr('shipBonusRole4')) class Effect6860(EffectDef): """ shipBonusRole5RemoteArmorRepairPowergridBonus Used by: Ships from group: Logistics (3 of 7) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'power', src.getModifiedItemAttr('shipBonusRole5')) class Effect6861(EffectDef): """ shipBonusRole5CapitalRemoteArmorRepairPowergridBonus Used by: Ship: Dagon """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Remote Armor Repair Systems'), 'power', src.getModifiedItemAttr('shipBonusRole5')) class Effect6862(EffectDef): """ shipBonusForceAuxiliaryM1RemoteArmorRepairDuration Used by: Ship: Dagon """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'duration', src.getModifiedItemAttr('shipBonusForceAuxiliaryM1'), skill='Minmatar Carrier') class Effect6865(EffectDef): """ eliteBonusCoverOpsWarpVelocity1 Used by: Ship: Pacifier """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('eliteBonusCovertOps1'), skill='Covert Ops') class Effect6866(EffectDef): """ shipBonusSmallMissileFlightTimeCF1 Used by: Ship: Pacifier """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'explosionDelay', src.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate') fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'explosionDelay', src.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate') class Effect6867(EffectDef): """ shipBonusSPTRoFMF Used by: Ship: Pacifier """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'speed', src.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate') class Effect6871(EffectDef): """ concordSecStatusTankBonus Used by: Ship: Enforcer Ship: Marshal Ship: Pacifier """ type = 'passive' @staticmethod def handler(fit, src, context): # 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: bonus = max(0, min(50.0, (src.parent.character.secStatus * 10))) except: bonus = None if bonus is not None: fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', bonus, stackingPenalties=True) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', bonus, stackingPenalties=True) class Effect6872(EffectDef): """ eliteReconStasisWebBonus1 Used by: Ship: Enforcer """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', src.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships') class Effect6873(EffectDef): """ eliteBonusReconWarpVelocity3 Used by: Ship: Enforcer """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('eliteBonusReconShip3'), skill='Recon Ships') class Effect6874(EffectDef): """ shipBonusMedMissileFlightTimeCC2 Used by: Ship: Enforcer """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'explosionDelay', src.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser') fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'explosionDelay', src.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser') class Effect6877(EffectDef): """ eliteBonusBlackOpsWarpVelocity1 Used by: Ship: Marshal """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('eliteBonusBlackOps1'), stackingPenalties=True, skill='Black Ops') class Effect6878(EffectDef): """ eliteBonusBlackOpsScramblerRange4 Used by: Ship: Marshal """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', src.getModifiedItemAttr('eliteBonusBlackOps4'), stackingPenalties=True, skill='Black Ops') class Effect6879(EffectDef): """ eliteBonusBlackOpsWebRange3 Used by: Ship: Marshal """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', src.getModifiedItemAttr('eliteBonusBlackOps3'), stackingPenalties=True, skill='Black Ops') class Effect6880(EffectDef): """ shipBonusLauncherRoF2CB Used by: Ship: Marshal """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Cruise', 'speed', src.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Torpedo', 'speed', src.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rapid Heavy', 'speed', src.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship') class Effect6881(EffectDef): """ shipBonusLargeMissileFlightTimeCB1 Used by: Ship: Marshal """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'explosionDelay', src.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship') fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'explosionDelay', src.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship') class Effect6883(EffectDef): """ shipBonusForceAuxiliaryM2LocalRepairAmount Used by: Ship: Dagon """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusForceAuxiliaryM2'), skill='Minmatar Carrier') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusForceAuxiliaryM2'), skill='Minmatar Carrier') class Effect6894(EffectDef): """ subsystemEnergyNeutFittingReduction Used by: Subsystem: Legion Core - Energy Parasitic Complex """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Energy Nosferatu', 'Energy Neutralizer'), 'cpu', src.getModifiedItemAttr('subsystemEnergyNeutFittingReduction')) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Energy Nosferatu', 'Energy Neutralizer'), 'power', src.getModifiedItemAttr('subsystemEnergyNeutFittingReduction')) class Effect6895(EffectDef): """ subsystemMETFittingReduction Used by: Subsystem: Legion Offensive - Liquid Crystal Magnifiers """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'cpu', src.getModifiedItemAttr('subsystemMETFittingReduction')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'power', src.getModifiedItemAttr('subsystemMETFittingReduction')) class Effect6896(EffectDef): """ 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): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'cpu', src.getModifiedItemAttr('subsystemMHTFittingReduction')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'power', src.getModifiedItemAttr('subsystemMHTFittingReduction')) class Effect6897(EffectDef): """ subsystemMPTFittingReduction Used by: Subsystem: Loki Offensive - Projectile Scoping Array """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'power', src.getModifiedItemAttr('subsystemMPTFittingReduction')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'cpu', src.getModifiedItemAttr('subsystemMPTFittingReduction')) class Effect6898(EffectDef): """ subsystemMRARFittingReduction Used by: Subsystems named like: Offensive Support Processor (3 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems') and mod.getModifiedItemAttr('mediumRemoteRepFittingMultiplier', 0) == 1, 'cpu', src.getModifiedItemAttr('subsystemMRARFittingReduction')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems') and mod.getModifiedItemAttr('mediumRemoteRepFittingMultiplier', 0) == 1, 'power', src.getModifiedItemAttr('subsystemMRARFittingReduction')) class Effect6899(EffectDef): """ subsystemMRSBFittingReduction Used by: Subsystem: Loki Offensive - Support Processor Subsystem: Tengu Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems') and mod.getModifiedItemAttr('mediumRemoteRepFittingMultiplier', 0) == 1, 'cpu', src.getModifiedItemAttr('subsystemMRSBFittingReduction')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems') and mod.getModifiedItemAttr('mediumRemoteRepFittingMultiplier', 0) == 1, 'power', src.getModifiedItemAttr('subsystemMRSBFittingReduction')) class Effect6900(EffectDef): """ 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): 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')) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'power', src.getModifiedItemAttr('subsystemMMissileFittingReduction')) class Effect6908(EffectDef): """ shipBonusStrategicCruiserCaldariNaniteRepairTime2 Used by: Ship: Tengu """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: True, 'moduleRepairRate', ship.getModifiedItemAttr('shipBonusStrategicCruiserCaldari2'), skill='Caldari Strategic Cruiser') class Effect6909(EffectDef): """ shipBonusStrategicCruiserAmarrNaniteRepairTime2 Used by: Ship: Legion """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: True, 'moduleRepairRate', ship.getModifiedItemAttr('shipBonusStrategicCruiserAmarr2'), skill='Amarr Strategic Cruiser') class Effect6910(EffectDef): """ shipBonusStrategicCruiserGallenteNaniteRepairTime2 Used by: Ship: Proteus """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: True, 'moduleRepairRate', ship.getModifiedItemAttr('shipBonusStrategicCruiserGallente2'), skill='Gallente Strategic Cruiser') class Effect6911(EffectDef): """ shipBonusStrategicCruiserMinmatarNaniteRepairTime2 Used by: Ship: Loki """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: True, 'moduleRepairRate', ship.getModifiedItemAttr('shipBonusStrategicCruiserMinmatar2'), skill='Minmatar Strategic Cruiser') class Effect6920(EffectDef): """ 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): fit.ship.increaseItemAttr('hp', module.getModifiedItemAttr('structureHPBonusAdd') or 0) class Effect6921(EffectDef): """ subSystemBonusAmarrDefensive2ScanProbeStrength Used by: Subsystem: Legion Defensive - Covert Reconfiguration """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength', src.getModifiedItemAttr('subsystemBonusAmarrDefensive2'), skill='Amarr Defensive Systems') class Effect6923(EffectDef): """ subsystemBonusMinmatarOffensive1HMLHAMVelo Used by: Subsystem: Loki Offensive - Launcher Efficiency Configuration """ type = 'passive' @staticmethod def handler(fit, container, context): 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') class Effect6924(EffectDef): """ subsystemBonusMinmatarOffensive3MissileExpVelo Used by: Subsystem: Loki Offensive - Launcher Efficiency Configuration """ type = 'passive' @staticmethod def handler(fit, container, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeVelocity', container.getModifiedItemAttr('subsystemBonusMinmatarOffensive3'), skill='Minmatar Offensive Systems') class Effect6925(EffectDef): """ subsystemBonusGallenteOffensive2DroneVeloTracking Used by: Subsystem: Proteus Offensive - Drone Synthesis Projector """ type = 'passive' @staticmethod def handler(fit, src, context): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'maxVelocity', src.getModifiedItemAttr('subsystemBonusGallenteOffensive2'), skill='Gallente Offensive Systems') fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'trackingSpeed', src.getModifiedItemAttr('subsystemBonusGallenteOffensive2'), skill='Gallente Offensive Systems') class Effect6926(EffectDef): """ subsystemBonusAmarrPropulsionWarpCapacitor Used by: Subsystem: Legion Propulsion - Interdiction Nullifier """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('warpCapacitorNeed', src.getModifiedItemAttr('subsystemBonusAmarrPropulsion'), skill='Amarr Propulsion Systems') class Effect6927(EffectDef): """ subsystemBonusMinmatarPropulsionWarpCapacitor Used by: Subsystem: Loki Propulsion - Interdiction Nullifier """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('warpCapacitorNeed', src.getModifiedItemAttr('subsystemBonusMinmatarPropulsion'), skill='Minmatar Propulsion Systems') class Effect6928(EffectDef): """ subsystemBonusCaldariPropulsion2PropModHeatBenefit Used by: Subsystem: Tengu Propulsion - Fuel Catalyst """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner') or mod.item.requiresSkill('High Speed Maneuvering'), 'overloadSpeedFactorBonus', src.getModifiedItemAttr('subsystemBonusCaldariPropulsion2'), skill='Caldari Propulsion Systems') class Effect6929(EffectDef): """ subsystemBonusGallentePropulsion2PropModHeatBenefit Used by: Subsystem: Proteus Propulsion - Localized Injectors """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner') or mod.item.requiresSkill('High Speed Maneuvering'), 'overloadSpeedFactorBonus', src.getModifiedItemAttr('subsystemBonusGallentePropulsion2'), skill='Gallente Propulsion Systems') class Effect6930(EffectDef): """ subsystemBonusAmarrCore2EnergyResistance Used by: Subsystem: Legion Core - Augmented Antimatter Reactor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('energyWarfareResistance', src.getModifiedItemAttr('subsystemBonusAmarrCore2'), skill='Amarr Core Systems') class Effect6931(EffectDef): """ subsystemBonusMinmatarCore2EnergyResistance Used by: Subsystem: Loki Core - Augmented Nuclear Reactor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('energyWarfareResistance', src.getModifiedItemAttr('subsystemBonusMinmatarCore2'), skill='Minmatar Core Systems') class Effect6932(EffectDef): """ subsystemBonusGallenteCore2EnergyResistance Used by: Subsystem: Proteus Core - Augmented Fusion Reactor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('energyWarfareResistance', src.getModifiedItemAttr('subsystemBonusGallenteCore2'), skill='Gallente Core Systems') class Effect6933(EffectDef): """ subsystemBonusCaldariCore2EnergyResistance Used by: Subsystem: Tengu Core - Augmented Graviton Reactor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('energyWarfareResistance', src.getModifiedItemAttr('subsystemBonusCaldariCore2'), skill='Caldari Core Systems') class Effect6934(EffectDef): """ 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): fit.ship.increaseItemAttr('maxLockedTargets', src.getModifiedItemAttr('maxLockedTargetsBonus')) class Effect6935(EffectDef): """ subsystemBonusAmarrCore3EnergyWarHeatBonus Used by: Subsystem: Legion Core - Energy Parasitic Complex """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Energy Nosferatu', 'Energy Neutralizer'), 'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusAmarrCore3'), skill='Amarr Core Systems') class Effect6936(EffectDef): """ subsystemBonusMinmatarCore3StasisWebHeatBonus Used by: Subsystem: Loki Core - Immobility Drivers """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'overloadRangeBonus', src.getModifiedItemAttr('subsystemBonusMinmatarCore3'), skill='Minmatar Core Systems') class Effect6937(EffectDef): """ subsystemBonusGallenteCore3WarpScramHeatBonus Used by: Subsystem: Proteus Core - Friction Extension Processor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'overloadRangeBonus', src.getModifiedItemAttr('subsystemBonusGallenteCore3'), skill='Gallente Core Systems') class Effect6938(EffectDef): """ subsystemBonusCaldariCore3ECMHeatBonus Used by: Subsystem: Tengu Core - Obfuscation Manifold """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'overloadECMStrengthBonus', src.getModifiedItemAttr('subsystemBonusCaldariCore3'), skill='Caldari Core Systems') class Effect6939(EffectDef): """ subsystemBonusAmarrDefensive2HardenerHeat Used by: Subsystem: Legion Defensive - Augmented Plating """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusAmarrDefensive2'), skill='Amarr Defensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'overloadHardeningBonus', src.getModifiedItemAttr('subsystemBonusAmarrDefensive2'), skill='Amarr Defensive Systems') class Effect6940(EffectDef): """ subsystemBonusGallenteDefensive2HardenerHeat Used by: Subsystem: Proteus Defensive - Augmented Plating """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'overloadHardeningBonus', src.getModifiedItemAttr('subsystemBonusGallenteDefensive2'), skill='Gallente Defensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusGallenteDefensive2'), skill='Gallente Defensive Systems') class Effect6941(EffectDef): """ subsystemBonusCaldariDefensive2HardenerHeat Used by: Subsystem: Tengu Defensive - Supplemental Screening """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Tactical Shield Manipulation'), 'overloadHardeningBonus', src.getModifiedItemAttr('subsystemBonusCaldariDefensive2'), skill='Caldari Defensive Systems') class Effect6942(EffectDef): """ subsystemBonusMinmatarDefensive2HardenerHeat Used by: Subsystem: Loki Defensive - Augmented Durability """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive2'), skill='Minmatar Defensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'overloadHardeningBonus', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive2'), skill='Minmatar Defensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Tactical Shield Manipulation'), 'overloadHardeningBonus', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive2'), skill='Minmatar Defensive Systems') class Effect6943(EffectDef): """ subsystemBonusAmarrDefensive3ArmorRepHeat Used by: Subsystem: Legion Defensive - Covert Reconfiguration Subsystem: Legion Defensive - Nanobot Injector """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusAmarrDefensive3'), skill='Amarr Defensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'overloadArmorDamageAmount', src.getModifiedItemAttr('subsystemBonusAmarrDefensive3'), skill='Amarr Defensive Systems') class Effect6944(EffectDef): """ subsystemBonusGallenteDefensive3ArmorRepHeat Used by: Subsystem: Proteus Defensive - Covert Reconfiguration Subsystem: Proteus Defensive - Nanobot Injector """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusGallenteDefensive3'), skill='Gallente Defensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'overloadArmorDamageAmount', src.getModifiedItemAttr('subsystemBonusGallenteDefensive3'), skill='Gallente Defensive Systems') class Effect6945(EffectDef): """ subsystemBonusCaldariDefensive3ShieldBoostHeat Used by: Subsystem: Tengu Defensive - Amplification Node Subsystem: Tengu Defensive - Covert Reconfiguration """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'overloadShieldBonus', src.getModifiedItemAttr('subsystemBonusCaldariDefensive3'), skill='Caldari Defensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusCaldariDefensive3'), skill='Caldari Defensive Systems') class Effect6946(EffectDef): """ subsystemBonusMinmatarDefensive3LocalRepHeat Used by: Subsystem: Loki Defensive - Adaptive Defense Node Subsystem: Loki Defensive - Covert Reconfiguration """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems') or mod.item.requiresSkill('Shield Operation'), 'overloadArmorDamageAmount', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive3'), skill='Minmatar Defensive Systems') fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems') or mod.item.requiresSkill('Shield Operation'), 'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive3'), skill='Minmatar Defensive Systems') class Effect6947(EffectDef): """ subSystemBonusCaldariDefensive2ScanProbeStrength Used by: Subsystem: Tengu Defensive - Covert Reconfiguration """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength', src.getModifiedItemAttr('subsystemBonusCaldariDefensive2'), skill='Caldari Defensive Systems') class Effect6949(EffectDef): """ subSystemBonusGallenteDefensive2ScanProbeStrength Used by: Subsystem: Proteus Defensive - Covert Reconfiguration """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength', src.getModifiedItemAttr('subsystemBonusGallenteDefensive2'), skill='Gallente Defensive Systems') class Effect6951(EffectDef): """ subSystemBonusMinmatarDefensive2ScanProbeStrength Used by: Subsystem: Loki Defensive - Covert Reconfiguration """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive2'), skill='Minmatar Defensive Systems') class Effect6953(EffectDef): """ mediumRemoteRepFittingAdjustment Used by: Variations of module: Medium Remote Armor Repairer I (12 of 12) Variations of module: Medium Remote Shield Booster I (11 of 11) Module: Medium Ancillary Remote Armor Repairer Module: Medium Ancillary Remote Shield Booster """ type = 'passive' @staticmethod def handler(fit, module, context): module.multiplyItemAttr('power', module.getModifiedItemAttr('mediumRemoteRepFittingMultiplier')) module.multiplyItemAttr('cpu', module.getModifiedItemAttr('mediumRemoteRepFittingMultiplier')) class Effect6954(EffectDef): """ subsystemBonusCommandBurstFittingReduction Used by: Subsystems named like: Offensive Support Processor (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'power', src.getModifiedItemAttr('subsystemCommandBurstFittingReduction')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'cpu', src.getModifiedItemAttr('subsystemCommandBurstFittingReduction')) class Effect6955(EffectDef): """ subsystemRemoteShieldBoostFalloffBonus Used by: Subsystem: Loki Offensive - Support Processor Subsystem: Tengu Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Remote Shield Booster', 'Ancillary Remote Shield Booster'), 'falloffEffectiveness', src.getModifiedItemAttr('remoteShieldBoosterFalloffBonus')) class Effect6956(EffectDef): """ subsystemRemoteArmorRepairerOptimalBonus Used by: Subsystems named like: Offensive Support Processor (3 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Remote Armor Repairer', 'Ancillary Remote Armor Repairer'), 'maxRange', src.getModifiedItemAttr('remoteArmorRepairerOptimalBonus')) class Effect6957(EffectDef): """ subsystemRemoteArmorRepairerFalloffBonus Used by: Subsystems named like: Offensive Support Processor (3 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Remote Armor Repairer', 'Ancillary Remote Armor Repairer'), 'falloffEffectiveness', src.getModifiedItemAttr('remoteArmorRepairerFalloffBonus')) class Effect6958(EffectDef): """ subsystemBonusAmarrOffensive3RemoteArmorRepairHeat Used by: Subsystem: Legion Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusAmarrOffensive3'), skill='Amarr Offensive Systems') class Effect6959(EffectDef): """ subsystemBonusGallenteOffensive3RemoteArmorRepairHeat Used by: Subsystem: Proteus Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusGallenteOffensive3'), skill='Gallente Offensive Systems') class Effect6960(EffectDef): """ subsystemBonusCaldariOffensive3RemoteShieldBoosterHeat Used by: Subsystem: Tengu Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusCaldariOffensive3'), skill='Caldari Offensive Systems') class Effect6961(EffectDef): """ subsystemBonusMinmatarOffensive3RemoteRepHeat Used by: Subsystem: Loki Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context): 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') class Effect6962(EffectDef): """ subsystemBonusAmarrPropulsion2WarpSpeed Used by: Subsystem: Legion Propulsion - Interdiction Nullifier """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('subsystemBonusAmarrPropulsion2'), skill='Amarr Propulsion Systems') class Effect6963(EffectDef): """ subsystemBonusMinmatarPropulsion2WarpSpeed Used by: Subsystem: Loki Propulsion - Interdiction Nullifier """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('subsystemBonusMinmatarPropulsion2'), skill='Minmatar Propulsion Systems') class Effect6964(EffectDef): """ subsystemBonusGallentePropulsionWarpSpeed Used by: Subsystem: Proteus Propulsion - Hyperspatial Optimization """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.boostItemAttr('baseWarpSpeed', module.getModifiedItemAttr('subsystemBonusGallentePropulsion'), skill='Gallente Propulsion Systems') class Effect6981(EffectDef): """ shipBonusTitanG1KinThermDamageBonus Used by: Ship: Komodo """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Torpedoes'), 'thermalDamage', src.getModifiedItemAttr('shipBonusTitanG1'), skill='Gallente Titan') fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Torpedoes'), 'kineticDamage', src.getModifiedItemAttr('shipBonusTitanG1'), skill='Gallente Titan') fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Torpedoes'), 'thermalDamage', src.getModifiedItemAttr('shipBonusTitanG1'), skill='Gallente Titan') fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Torpedoes'), 'kineticDamage', src.getModifiedItemAttr('shipBonusTitanG1'), skill='Gallente Titan') fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Cruise Missiles'), 'thermalDamage', src.getModifiedItemAttr('shipBonusTitanG1'), skill='Gallente Titan') fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Cruise Missiles'), 'kineticDamage', src.getModifiedItemAttr('shipBonusTitanG1'), skill='Gallente Titan') class Effect6982(EffectDef): """ shipBonusTitanG2EMExplosiveDamageBonus Used by: Ship: Komodo """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Torpedoes'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusTitanG2'), skill='Gallente Titan') fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Torpedoes'), 'emDamage', src.getModifiedItemAttr('shipBonusTitanG2'), skill='Gallente Titan') fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Torpedoes'), 'emDamage', src.getModifiedItemAttr('shipBonusTitanG2'), skill='Gallente Titan') fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Torpedoes'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusTitanG2'), skill='Gallente Titan') fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Cruise Missiles'), 'emDamage', src.getModifiedItemAttr('shipBonusTitanG2'), skill='Gallente Titan') fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Cruise Missiles'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusTitanG2'), skill='Gallente Titan') class Effect6983(EffectDef): """ shipBonusTitanC1ShieldResists Used by: Ship: Komodo """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('shipBonusTitanC1'), skill='Caldari Titan') fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('shipBonusTitanC1'), skill='Caldari Titan') fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusTitanC1'), skill='Caldari Titan') fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('shipBonusTitanC1'), skill='Caldari Titan') class Effect6984(EffectDef): """ shipBonusRole4FighterDamageAndHitpoints Used by: Ship: Caiman Ship: Komodo """ type = 'passive' @staticmethod def handler(fit, src, context): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'shieldCapacity', src.getModifiedItemAttr('shipBonusRole4')) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('shipBonusRole4')) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('shipBonusRole4')) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('shipBonusRole4')) class Effect6985(EffectDef): """ shipBonusDreadnoughtG1KinThermDamageBonus Used by: Ship: Caiman """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Torpedoes'), 'kineticDamage', src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought') fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Torpedoes'), 'thermalDamage', src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought') fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Torpedoes'), 'kineticDamage', src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought') fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Torpedoes'), 'thermalDamage', src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought') fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Cruise Missiles'), 'thermalDamage', src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought') fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Cruise Missiles'), 'kineticDamage', src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought') class Effect6986(EffectDef): """ shipBonusForceAuxiliaryG1RemoteShieldBoostAmount Used by: Ship: Loggerhead """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Emission Systems'), 'shieldBonus', src.getModifiedItemAttr('shipBonusForceAuxiliaryG1'), skill='Gallente Carrier') class Effect6987(EffectDef): """ shipBonusRole2LogisticDroneRepAmountAndHitpointBonus Used by: Ship: Loggerhead """ type = 'passive' @staticmethod def handler(fit, src, context): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'), 'structureDamageAmount', src.getModifiedItemAttr('shipBonusRole2')) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'), 'shieldBonus', src.getModifiedItemAttr('shipBonusRole2')) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusRole2')) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'), 'armorHP', src.getModifiedItemAttr('shipBonusRole2')) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'), 'shieldCapacity', src.getModifiedItemAttr('shipBonusRole2')) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'), 'hp', src.getModifiedItemAttr('shipBonusRole2')) class Effect6992(EffectDef): """ roleBonusMHTDamage1 Used by: Ship: Victor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusRole1')) class Effect6993(EffectDef): """ roleBonus2BoosterPenaltyReduction Used by: Ship: Victor Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, src, context): fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterMissileAOECloudPenalty', src.getModifiedItemAttr('shipBonusRole2')) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterCapacitorCapacityPenalty', src.getModifiedItemAttr('shipBonusRole2')) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterAOEVelocityPenalty', src.getModifiedItemAttr('shipBonusRole2')) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterArmorRepairAmountPenalty', src.getModifiedItemAttr('shipBonusRole2')) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterMissileVelocityPenalty', src.getModifiedItemAttr('shipBonusRole2')) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterTurretTrackingPenalty', src.getModifiedItemAttr('shipBonusRole2')) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterShieldCapacityPenalty', src.getModifiedItemAttr('shipBonusRole2')) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterTurretOptimalRangePenalty', src.getModifiedItemAttr('shipBonusRole2')) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterShieldBoostAmountPenalty', src.getModifiedItemAttr('shipBonusRole2')) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterTurretFalloffPenalty', src.getModifiedItemAttr('shipBonusRole2')) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterArmorHPPenalty', src.getModifiedItemAttr('shipBonusRole2')) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterMaxVelocityPenalty', src.getModifiedItemAttr('shipBonusRole2')) class Effect6994(EffectDef): """ eliteReconBonusMHTDamage1 Used by: Ship: Victor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', src.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships') class Effect6995(EffectDef): """ targetABCAttack Used by: Modules from group: Precursor Weapon (15 of 15) """ type = 'active' @staticmethod def handler(fit, module, context): # Set reload time to 1 second module.reloadTime = 1000 class Effect6996(EffectDef): """ eliteReconBonusArmorRepAmount3 Used by: Ship: Victor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('eliteBonusReconShip3'), skill='Recon Ships') class Effect6997(EffectDef): """ eliteCovertOpsBonusArmorRepAmount4 Used by: Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('eliteBonusCovertOps4'), skill='Covert Ops') class Effect6999(EffectDef): """ covertOpsStealthBomberSiegeMissileLauncherCPUNeedBonus Used by: Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Missile Launcher Torpedo', 'cpu', ship.getModifiedItemAttr('stealthBomberLauncherCPU')) class Effect7000(EffectDef): """ shipBonusSHTFalloffGF1 Used by: Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'falloff', src.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate') class Effect7001(EffectDef): """ roleBonusTorpRoF1 Used by: Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Torpedo', 'speed', src.getModifiedItemAttr('shipBonusRole1')) class Effect7002(EffectDef): """ roleBonusBombLauncherPWGCPU3 Used by: Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Bomb Deployment'), 'power', src.getModifiedItemAttr('shipBonusRole3')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Bomb Deployment'), 'cpu', src.getModifiedItemAttr('shipBonusRole3')) class Effect7003(EffectDef): """ eliteBonusCovertOpsSHTDamage3 Used by: Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', src.getModifiedItemAttr('eliteBonusCovertOps3'), skill='Covert Ops') class Effect7008(EffectDef): """ structureFullPowerStateHitpointModifier Used by: Items from category: Structure (17 of 17) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.multiplyItemAttr('shieldCapacity', src.getModifiedItemAttr('structureFullPowerStateHitpointMultiplier') or 0) fit.ship.multiplyItemAttr('armorHP', src.getModifiedItemAttr('structureFullPowerStateHitpointMultiplier') or 0) class Effect7009(EffectDef): """ 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 Navigation Service Module (3 of 3) 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): fit.ship.forceItemAttr('structureFullPowerStateHitpointMultiplier', src.getModifiedItemAttr('serviceModuleFullPowerStateHitpointMultiplier')) class Effect7012(EffectDef): """ moduleBonusAssaultDamageControl Used by: Variations of module: Assault Damage Control I (5 of 5) """ runTime = 'early' type = 'active' @staticmethod def handler(fit, src, context): 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) src.forceItemAttr(booster, src.getModifiedItemAttr('resistanceMultiplier')) class Effect7013(EffectDef): """ eliteBonusGunshipKineticMissileDamage1 Used by: Ship: Jaguar """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', src.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates') class Effect7014(EffectDef): """ eliteBonusGunshipThermalMissileDamage1 Used by: Ship: Jaguar """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', src.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates') class Effect7015(EffectDef): """ eliteBonusGunshipEMMissileDamage1 Used by: Ship: Jaguar """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'emDamage', src.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates') class Effect7016(EffectDef): """ eliteBonusGunshipExplosiveMissileDamage1 Used by: Ship: Jaguar """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosiveDamage', src.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates') class Effect7017(EffectDef): """ eliteBonusGunshipExplosionVelocity2 Used by: Ship: Jaguar """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeVelocity', src.getModifiedItemAttr('eliteBonusGunship2'), stackingPenalties=True, skill='Assault Frigates') class Effect7018(EffectDef): """ shipSETROFAF Used by: Ship: Retribution """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'speed', src.getModifiedItemAttr('shipBonusAF'), stackingPenalties=False, skill='Amarr Frigate') class Effect7020(EffectDef): """ 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): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', src.getModifiedItemAttr('stasisWebRangeBonus'), stackingPenalties=False) class Effect7021(EffectDef): """ 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): fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('structureRigMaxTargetRangeBonus')) class Effect7024(EffectDef): """ shipBonusDroneTrackingEliteGunship2 Used by: Ship: Ishkur """ type = 'passive' @staticmethod def handler(fit, src, context): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'trackingSpeed', src.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates') class Effect7026(EffectDef): """ scriptStandupWarpScram Used by: Charge: Standup Focused Warp Scrambling Script """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context, *args, **kwargs): src.boostItemAttr('maxRange', src.getModifiedChargeAttr('warpScrambleRangeBonus')) class Effect7027(EffectDef): """ structureCapacitorCapacityBonus Used by: Structure Modules from group: Structure Capacitor Battery (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.increaseItemAttr('capacitorCapacity', ship.getModifiedItemAttr('capacitorBonus')) class Effect7028(EffectDef): """ structureModifyPowerRechargeRate Used by: Structure Modules from group: Structure Capacitor Power Relay (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.ship.multiplyItemAttr('rechargeRate', module.getModifiedItemAttr('capacitorRechargeRateMultiplier')) class Effect7029(EffectDef): """ structureArmorHPBonus Used by: Structure Modules from group: Structure Armor Reinforcer (2 of 2) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('hiddenArmorHPMultiplier', src.getModifiedItemAttr('armorHpBonus'), stackingPenalties=True) class Effect7030(EffectDef): """ structureAoERoFRoleBonus Used by: Items from category: Structure (11 of 17) Structures from group: Citadel (8 of 9) """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Guided Bomb Launcher', 'speed', ship.getModifiedItemAttr('structureAoERoFRoleBonus')) 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')) class Effect7031(EffectDef): """ shipBonusHeavyMissileKineticDamageCBC2 Used by: Ship: Drake Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage', src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser') class Effect7032(EffectDef): """ shipBonusHeavyMissileThermalDamageCBC2 Used by: Ship: Drake Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'thermalDamage', src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser') class Effect7033(EffectDef): """ shipBonusHeavyMissileEMDamageCBC2 Used by: Ship: Drake Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'emDamage', src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser') class Effect7034(EffectDef): """ shipBonusHeavyMissileExplosiveDamageCBC2 Used by: Ship: Drake Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser') class Effect7035(EffectDef): """ shipBonusHeavyAssaultMissileExplosiveDamageCBC2 Used by: Ship: Drake Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser') class Effect7036(EffectDef): """ shipBonusHeavyAssaultMissileEMDamageCBC2 Used by: Ship: Drake Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'emDamage', src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser') class Effect7037(EffectDef): """ shipBonusHeavyAssaultMissileThermalDamageCBC2 Used by: Ship: Drake Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'thermalDamage', src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser') class Effect7038(EffectDef): """ shipBonusHeavyAssaultMissileKineticDamageCBC2 Used by: Ship: Drake Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'kineticDamage', src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser') class Effect7039(EffectDef): """ structureHiddenMissileDamageMultiplier Used by: Items from category: Structure (14 of 17) """ type = 'passive' @staticmethod def handler(fit, src, context): 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')) class Effect7040(EffectDef): """ structureHiddenArmorHPMultiplier Used by: Items from category: Structure (17 of 17) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.multiplyItemAttr('armorHP', src.getModifiedItemAttr('hiddenArmorHPMultiplier') or 0) class Effect7042(EffectDef): """ shipArmorHitPointsAC1 Used by: Ship: Monitor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('armorHP', src.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser') class Effect7043(EffectDef): """ shipShieldHitpointsCC1 Used by: Ship: Monitor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('shieldCapacity', src.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser') class Effect7044(EffectDef): """ shipAgilityBonusGC1 Used by: Ship: Monitor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('agility', src.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser') class Effect7045(EffectDef): """ shipSignatureRadiusMC1 Used by: Ship: Monitor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('signatureRadius', src.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser') class Effect7046(EffectDef): """ eliteBonusFlagCruiserAllResistances1 Used by: Ship: Monitor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('explosiveDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers') fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers') fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers') fit.ship.boostItemAttr('armorThermalDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers') fit.ship.boostItemAttr('thermalDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers') fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers') fit.ship.boostItemAttr('armorExplosiveDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers') fit.ship.boostItemAttr('armorEmDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers') fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers') fit.ship.boostItemAttr('kineticDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers') fit.ship.boostItemAttr('armorKineticDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers') fit.ship.boostItemAttr('emDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers') class Effect7047(EffectDef): """ roleBonusFlagCruiserModuleFittingReduction Used by: Ship: Monitor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Propulsion Module', 'Micro Jump Drive'), 'power', src.getModifiedItemAttr('flagCruiserFittingBonusPropMods')) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Propulsion Module', 'Micro Jump Drive'), 'cpu', src.getModifiedItemAttr('flagCruiserFittingBonusPropMods')) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Target Painter', 'Scan Probe Launcher'), 'cpu', src.getModifiedItemAttr('flagCruiserFittingBonusPainterProbes')) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Target Painter', 'Scan Probe Launcher'), 'power', src.getModifiedItemAttr('flagCruiserFittingBonusPainterProbes')) class Effect7050(EffectDef): """ 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, **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(EffectDef): """ 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, **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(EffectDef): """ roleBonusFlagCruiserTargetPainterModifications Used by: Ship: Monitor """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'signatureRadiusBonus', src.getModifiedItemAttr('targetPainterStrengthModifierFlagCruisers')) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'maxRange', src.getModifiedItemAttr('targetPainterRangeModifierFlagCruisers')) class Effect7055(EffectDef): """ shipLargeWeaponsDamageBonus Used by: Ship: Praxis """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusRole7')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusRole7')) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusRole7')) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'thermalDamage', src.getModifiedItemAttr('shipBonusRole7')) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'emDamage', src.getModifiedItemAttr('shipBonusRole7')) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage', src.getModifiedItemAttr('shipBonusRole7')) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusRole7')) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'emDamage', src.getModifiedItemAttr('shipBonusRole7')) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'kineticDamage', src.getModifiedItemAttr('shipBonusRole7')) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusRole7')) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'thermalDamage', src.getModifiedItemAttr('shipBonusRole7')) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'thermalDamage', src.getModifiedItemAttr('shipBonusRole7')) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusRole7')) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'kineticDamage', src.getModifiedItemAttr('shipBonusRole7')) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'emDamage', src.getModifiedItemAttr('shipBonusRole7')) class Effect7058(EffectDef): """ 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, **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(EffectDef): """ 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, **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(EffectDef): """ 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, **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(EffectDef): """ 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, **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(EffectDef): """ 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, **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(EffectDef): """ 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, **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(EffectDef): """ weather_basic Used by: Celestial: basic_weather """ runTime = 'early' type = ('projected', 'passive') class Effect7071(EffectDef): """ smallPrecursorTurretDmgBonusRequiredSkill Used by: Skill: Small Precursor Weapon """ type = 'passive' @staticmethod def handler(fit, container, context): 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) class Effect7072(EffectDef): """ mediumPrecursorTurretDmgBonusRequiredSkill Used by: Skill: Medium Precursor Weapon """ type = 'passive' @staticmethod def handler(fit, container, context): 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) class Effect7073(EffectDef): """ largePrecursorTurretDmgBonusRequiredSkill Used by: Skill: Large Precursor Weapon """ type = 'passive' @staticmethod def handler(fit, container, context): 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) class Effect7074(EffectDef): """ smallDisintegratorSkillDmgBonus Used by: Skill: Small Disintegrator Specialization """ type = 'passive' @staticmethod def handler(fit, container, context): 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) class Effect7075(EffectDef): """ mediumDisintegratorSkillDmgBonus Used by: Skill: Medium Disintegrator Specialization """ type = 'passive' @staticmethod def handler(fit, container, context): 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) class Effect7076(EffectDef): """ largeDisintegratorSkillDmgBonus Used by: Skill: Large Disintegrator Specialization """ type = 'passive' @staticmethod def handler(fit, container, context): 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) class Effect7077(EffectDef): """ disintegratorWeaponDamageMultiply Used by: Modules from group: Entropic Radiation Sink (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Precursor Weapon', 'damageMultiplier', module.getModifiedItemAttr('damageMultiplier'), stackingPenalties=True) class Effect7078(EffectDef): """ disintegratorWeaponSpeedMultiply Used by: Modules from group: Entropic Radiation Sink (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Precursor Weapon', 'speed', module.getModifiedItemAttr('speedMultiplier'), stackingPenalties=True) class Effect7079(EffectDef): """ shipPCBSSPeedBonusPCBS1 Used by: Ship: Leshak """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Precursor Weapon'), 'speed', ship.getModifiedItemAttr('shipBonusPBS1'), skill='Precursor Battleship') class Effect7080(EffectDef): """ shipPCBSDmgBonusPCBS2 Used by: Ship: Leshak """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Precursor Weapon'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusPBS2'), skill='Precursor Battleship') class Effect7085(EffectDef): """ shipbonusPCTDamagePC1 Used by: Ship: Tiamat Ship: Vedmak """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusPC1'), skill='Precursor Cruiser') class Effect7086(EffectDef): """ shipbonusPCTTrackingPC2 Used by: Ship: Tiamat Ship: Vedmak """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusPC2'), skill='Precursor Cruiser') class Effect7087(EffectDef): """ shipbonusPCTOptimalPF2 Used by: Ship: Damavik Ship: Hydra """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'), 'maxRange', ship.getModifiedItemAttr('shipBonusPF2'), skill='Precursor Frigate') class Effect7088(EffectDef): """ shipbonusPCTDamagePF1 Used by: Ship: Damavik Ship: Hydra """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusPF1'), skill='Precursor Frigate') class Effect7091(EffectDef): """ shipBonusNosNeutCapNeedRoleBonus2 Used by: Variations of ship: Rodiva (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capacitor Emission Systems'), 'capacitorNeed', src.getModifiedItemAttr('shipBonusRole2')) class Effect7092(EffectDef): """ shipBonusRemoteRepCapNeedRoleBonus2 Used by: Ship: Damavik Ship: Drekavac Ship: Hydra Ship: Kikimora Ship: Leshak Ship: Tiamat Ship: Vedmak """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusRole2')) class Effect7093(EffectDef): """ shipBonusSmartbombCapNeedRoleBonus2 Used by: Variations of ship: Rodiva (2 of 2) Ship: Damavik Ship: Drekavac Ship: Hydra Ship: Kikimora Ship: Leshak Ship: Tiamat Ship: Vedmak """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Energy Pulse Weapons'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusRole2')) class Effect7094(EffectDef): """ shipBonusRemoteRepMaxRangeRoleBonus1 Used by: Ship: Damavik Ship: Drekavac Ship: Hydra Ship: Kikimora Ship: Leshak Ship: Tiamat Ship: Vedmak """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'maxRange', ship.getModifiedItemAttr('shipBonusRole1')) class Effect7097(EffectDef): """ surgicalStrikeDamageMultiplierBonusPostPercentDamageMultiplierLocationShipGroupPrecursorTurret Used by: Skill: Surgical Strike """ type = 'passive' @staticmethod def handler(fit, skill, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Precursor Weapon', 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level) class Effect7111(EffectDef): """ systemSmallPrecursorTurretDamage Used by: Celestials named like: Wolf Rayet Effect Beacon Class (5 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'), 'damageMultiplier', module.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True) class Effect7112(EffectDef): """ shipBonusNeutCapNeedRoleBonus2 Used by: Ship: Damavik Ship: Drekavac Ship: Hydra Ship: Kikimora Ship: Leshak Ship: Tiamat Ship: Vedmak """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'capacitorNeed', src.getModifiedItemAttr('shipBonusRole2')) class Effect7116(EffectDef): """ eliteBonusReconScanProbeStrength2 Used by: Ship: Tiamat """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength', src.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships') class Effect7117(EffectDef): """ roleBonusWarpSpeed Used by: Ship: Cynabal Ship: Dramiel Ship: Leopard Ship: Machariel Ship: Victorieux Luxury Yacht """ type = 'passive' @staticmethod def handler(fit, src, context): fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('shipRoleBonusWarpSpeed')) class Effect7118(EffectDef): """ eliteBonusCovertOps3PCTdamagePerCycle Used by: Ship: Hydra """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'), 'damageMultiplierBonusPerCycle', src.getModifiedItemAttr('eliteBonusCovertOps3'), skill='Covert Ops') class Effect7119(EffectDef): """ eliteBonusReconShip3PCTdamagePerCycle Used by: Ship: Tiamat """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'), 'damageMultiplierBonusPerCycle', src.getModifiedItemAttr('eliteBonusReconShip3'), skill='Recon Ships') class Effect7142(EffectDef): """ massEntanglerEffect5 Used by: Module: Zero-Point Mass Entangler """ type = 'active' @staticmethod def handler(fit, src, context): fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('warpScrambleStrength')) fit.ship.boostItemAttr('mass', src.getModifiedItemAttr('massBonusPercentage'), stackingPenalties=True) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'speedFactor', src.getModifiedItemAttr('speedFactorBonus'), stackingPenalties=True) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'speedBoostFactor', src.getModifiedItemAttr('speedBoostFactorBonus')) fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'activationBlocked', src.getModifiedItemAttr('activationBlockedStrenght')) fit.ship.boostItemAttr('maxVelocity', src.getModifiedItemAttr('maxVelocityBonus'), stackingPenalties=True) class Effect7154(EffectDef): """ shipBonusPD1DisintegratorDamage Used by: Ship: Kikimora """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusPD1'), skill='Precursor Destroyer') class Effect7155(EffectDef): """ shipBonusPBC1DisintegratorDamage Used by: Ship: Drekavac """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusPBC1'), skill='Precursor Battlecruiser') class Effect7156(EffectDef): """ smallDisintegratorMaxRangeBonus Used by: Ship: Kikimora """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'), 'maxRange', ship.getModifiedItemAttr('maxRangeBonus')) class Effect7157(EffectDef): """ shipBonusPD2DisintegratorMaxRange Used by: Ship: Kikimora """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'), 'maxRange', ship.getModifiedItemAttr('shipBonusPD2'), skill='Precursor Destroyer') class Effect7158(EffectDef): """ shipArmorKineticResistancePBC2 Used by: Ship: Drekavac """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('armorKineticDamageResonance', ship.getModifiedItemAttr('shipBonusPBC2'), skill='Precursor Battlecruiser') class Effect7159(EffectDef): """ shipArmorThermalResistancePBC2 Used by: Ship: Drekavac """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('armorThermalDamageResonance', ship.getModifiedItemAttr('shipBonusPBC2'), skill='Precursor Battlecruiser') class Effect7160(EffectDef): """ shipArmorEMResistancePBC2 Used by: Ship: Drekavac """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('armorEmDamageResonance', ship.getModifiedItemAttr('shipBonusPBC2'), skill='Precursor Battlecruiser') class Effect7161(EffectDef): """ shipArmorExplosiveResistancePBC2 Used by: Ship: Drekavac """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.ship.boostItemAttr('armorExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusPBC2'), skill='Precursor Battlecruiser') class Effect7162(EffectDef): """ shipRoleDisintegratorMaxRangeCBC Used by: Ship: Drekavac """ type = 'passive' @staticmethod def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'), 'maxRange', ship.getModifiedItemAttr('roleBonusCBC')) class Effect7166(EffectDef): """ ShipModuleRemoteArmorMutadaptiveRepairer Used by: Modules from group: Mutadaptive Remote Armor Repairer (5 of 5) """ runTime = 'late' type = 'projected', 'active' @staticmethod def handler(fit, container, context, **kwargs): if 'projected' in context: repAmountBase = container.getModifiedItemAttr('armorDamageAmount') cycleTime = container.getModifiedItemAttr('duration') / 1000.0 repSpoolMax = container.getModifiedItemAttr('repairMultiplierBonusMax') repSpoolPerCycle = container.getModifiedItemAttr('repairMultiplierBonusPerCycle') defaultSpoolValue = eos.config.settings['globalDefaultSpoolupPercentage'] spoolType, spoolAmount = resolveSpoolOptions(SpoolOptions(SpoolType.SCALE, defaultSpoolValue, False), container) rps = repAmountBase * (1 + calculateSpoolup(repSpoolMax, repSpoolPerCycle, cycleTime, spoolType, spoolAmount)[0]) / cycleTime rpsPreSpool = repAmountBase * (1 + calculateSpoolup(repSpoolMax, repSpoolPerCycle, cycleTime, SpoolType.SCALE, 0)[0]) / cycleTime rpsFullSpool = repAmountBase * (1 + calculateSpoolup(repSpoolMax, repSpoolPerCycle, cycleTime, SpoolType.SCALE, 1)[0]) / cycleTime fit.extraAttributes.increase('armorRepair', rps, **kwargs) fit.extraAttributes.increase('armorRepairPreSpool', rpsPreSpool, **kwargs) fit.extraAttributes.increase('armorRepairFullSpool', rpsFullSpool, **kwargs) class Effect7167(EffectDef): """ shipBonusRemoteCapacitorTransferRangeRole1 Used by: Variations of ship: Rodiva (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter', 'maxRange', src.getModifiedItemAttr('shipBonusRole1')) class Effect7168(EffectDef): """ shipBonusMutadaptiveRemoteRepairRangeRole3 Used by: Ship: Rodiva """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Mutadaptive Remote Armor Repairer', 'maxRange', src.getModifiedItemAttr('shipBonusRole3')) class Effect7169(EffectDef): """ shipBonusMutadaptiveRepAmountPC1 Used by: Ship: Rodiva """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Mutadaptive Remote Armor Repairer', 'armorDamageAmount', src.getModifiedItemAttr('shipBonusPC1'), skill='Precursor Cruiser') class Effect7170(EffectDef): """ shipBonusMutadaptiveRepCapNeedPC2 Used by: Ship: Rodiva """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Mutadaptive Remote Armor Repairer', 'capacitorNeed', src.getModifiedItemAttr('shipBonusPC2'), skill='Precursor Cruiser') class Effect7171(EffectDef): """ shipBonusMutadaptiveRemoteRepRangePC1 Used by: Ship: Zarmazd """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Mutadaptive Remote Armor Repairer', 'maxRange', src.getModifiedItemAttr('shipBonusPC1'), skill='Precursor Cruiser') class Effect7172(EffectDef): """ shipBonusMutadaptiveRemoteRepCapNeedeliteBonusLogisitics1 Used by: Ship: Zarmazd """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Mutadaptive Remote Armor Repairer', 'capacitorNeed', src.getModifiedItemAttr('eliteBonusLogistics1'), skill='Logistics Cruisers') class Effect7173(EffectDef): """ shipBonusMutadaptiveRemoteRepAmounteliteBonusLogisitics2 Used by: Ship: Zarmazd """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Mutadaptive Remote Armor Repairer', 'armorDamageAmount', src.getModifiedItemAttr('eliteBonusLogistics2'), skill='Logistics Cruisers') class Effect7176(EffectDef): """ skillBonusDroneInterfacingNotFighters Used by: Implant: CreoDron 'Bumblebee' Drone Tuner T10-5D Implant: CreoDron 'Yellowjacket' Drone Tuner D5-10T """ type = 'passive' @staticmethod def handler(fit, src, context): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus')) class Effect7177(EffectDef): """ skillBonusDroneDurabilityNotFighters Used by: Implants from group: Cyber Drones (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context): 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')) class Effect7179(EffectDef): """ stripMinerDurationMultiplier Used by: Module: Frostline 'Omnivore' Harvester Upgrade """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Strip Miner', 'duration', module.getModifiedItemAttr('miningDurationMultiplier')) class Effect7180(EffectDef): """ miningDurationMultiplierOnline Used by: Module: Frostline 'Omnivore' Harvester Upgrade """ type = 'passive' @staticmethod def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Mining Laser', 'duration', module.getModifiedItemAttr('miningDurationMultiplier')) class Effect7183(EffectDef): """ implantWarpScrambleRangeBonus Used by: Implants named like: Inquest 'Hedone' Entanglement Optimizer WS (3 of 3) """ type = 'passive' @staticmethod def handler(fit, src, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', src.getModifiedItemAttr('warpScrambleRangeBonus'), stackingPenalties=False)