Files
pyfa/eos/effects.py
2025-12-11 18:03:32 +01:00

42735 lines
1.3 MiB

# ===============================================================================
# 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 <http://www.gnu.org/licenses/>.
# ===============================================================================
import eos.config
from eos.calc import calculateRangeFactor
from eos.const import FittingModuleState, FitSystemSecurity
from eos.utils.spoolSupport import SpoolType, SpoolOptions, calculateSpoolup, resolveSpoolOptions
class BaseEffect:
dealsDamage = False
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
pass
class DummyEffect(BaseEffect):
pass
class Effect100000(BaseEffect):
"""
pyfaCustomSuppressionTackleRange
Used by:
Celestial: Insurgency Suppression Interdiction Range Beacon
"""
runTime = 'early'
type = ('projected', 'passive', 'gang')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
if id := beacon.getModifiedItemAttr('warfareBuff1ID'):
value = beacon.getModifiedItemAttr('warfareBuff1Value')
if id:
fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early')
class Effect100001(BaseEffect):
"""
pyfaCustomSovUpgradeBuffEffect
Used by:
Infrastructure Upgradess from group: Sovereignty Hub System Effect Generator Upgrades (4 of 4)
"""
runTime = 'early'
type = ('projected', 'passive', 'gang')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
for i in range(1, 4):
if id := beacon.getModifiedItemAttr(f'warfareBuff{i}ID'):
value = beacon.getModifiedItemAttr(f'warfareBuff{i}Value')
fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early')
class Effect4(BaseEffect):
"""
shieldBoosting
Used by:
Modules from group: Shield Booster (94 of 94)
"""
runTime = 'late'
type = 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
amount = module.getModifiedItemAttr('shieldBonus')
speed = module.getModifiedItemAttr('duration') / 1000.0
fit.extraAttributes.increase('shieldRepair', amount / speed, **kwargs)
class Effect10(BaseEffect):
"""
targetAttack
Used by:
Celestials from group: Destructible Effect Beacon (6 of 6)
Drones from group: Combat Drone (80 of 80)
Modules from group: Energy Weapon (216 of 220)
Celestial: BH Sentry Gun
Celestial: EDENCOM Stockpile Non-Interactable (Do not translate)
Celestial: Liberation Games Firework Sentry ( DO NOT TRANSLATE)
Celestial: Minmatar Sentry Gun (DO NOT TRANSLATE)
"""
dealsDamage = True
type = 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
# Set reload time to 1 second
module.reloadTime = 1000
class Effect17(BaseEffect):
"""
mining
Used by:
Drones from group: Mining Drone (14 of 14)
"""
grouped = True
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
miningDroneAmountPercent = container.getModifiedItemAttr('miningDroneAmountPercent')
if (miningDroneAmountPercent is None) or (miningDroneAmountPercent == 0):
pass
else:
container.multiplyItemAttr('miningAmount', miningDroneAmountPercent / 100, **kwargs)
class Effect21(BaseEffect):
"""
shieldCapacityBonusOnline
Used by:
Modules from group: Shield Extender (36 of 36)
Modules from group: Shield Resistance Amplifier (84 of 84)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('shieldCapacity', module.getModifiedItemAttr('capacityBonus'), **kwargs)
class Effect25(BaseEffect):
"""
capacitorCapacityBonus
Used by:
Modules from group: Capacitor Battery (30 of 30)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('capacitorCapacity', ship.getModifiedItemAttr('capacitorBonus'), **kwargs)
class Effect26(BaseEffect):
"""
structureRepair
Used by:
Modules from group: Hull Repair Unit (25 of 25)
"""
runTime = 'late'
type = 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
amount = module.getModifiedItemAttr('structureDamageAmount')
speed = module.getModifiedItemAttr('duration') / 1000.0
fit.extraAttributes.increase('hullRepair', amount / speed, **kwargs)
class Effect27(BaseEffect):
"""
armorRepair
Used by:
Modules from group: Armor Repair Unit (105 of 105)
"""
runTime = 'late'
type = 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
amount = module.getModifiedItemAttr('armorDamageAmount')
speed = module.getModifiedItemAttr('duration') / 1000.0
rps = amount / speed
fit.extraAttributes.increase('armorRepair', rps, **kwargs)
fit.extraAttributes.increase('armorRepairPreSpool', rps, **kwargs)
fit.extraAttributes.increase('armorRepairFullSpool', rps, **kwargs)
class Effect34(BaseEffect):
"""
projectileFired
Used by:
Modules from group: Hybrid Weapon (223 of 223)
Modules from group: Projectile Weapon (167 of 167)
"""
dealsDamage = True
type = 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
rt = module.getModifiedItemAttr('reloadTime')
if not rt:
# Set reload time to 10 seconds
module.reloadTime = 10000
else:
module.reloadTime = rt
class Effect38(BaseEffect):
"""
empWave
Used by:
Modules from group: Smart Bomb (137 of 137)
"""
dealsDamage = True
type = 'active'
class Effect39(BaseEffect):
"""
warpDisrupt
Used by:
Modules named like: Warp Disruptor (29 of 29)
"""
type = 'projected', 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'):
return
if module.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0):
return
fit.ship.increaseItemAttr('warpScrambleStatus', module.getModifiedItemAttr('warpScrambleStrength'), **kwargs)
class Effect46(BaseEffect):
"""
shipScan
Used by:
Modules from group: Ship Scanner (3 of 3)
"""
type = 'active'
class Effect47(BaseEffect):
"""
cargoScan
Used by:
Modules from group: Cargo Scanner (4 of 4)
"""
type = 'active'
class Effect48(BaseEffect):
"""
powerBooster
Used by:
Modules from group: Capacitor Booster (43 of 43)
"""
type = 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
# Set reload time to 10 seconds
module.reloadTime = 10000
# Make so that reloads are always taken into account during clculations
module.forceReload = True
if module.charge is None:
return
capAmount = module.getModifiedChargeAttr('capacitorBonus') or 0
module.itemModifiedAttributes['capacitorNeed'] = -capAmount
class Effect50(BaseEffect):
"""
modifyShieldRechargeRate
Used by:
Modules from group: Capacitor Power Relay (20 of 20)
Modules from group: Power Diagnostic System (23 of 23)
Modules from group: Reactor Control Unit (22 of 22)
Modules from group: Shield Recharger (4 of 4)
Modules named like: Flux Coil (12 of 12)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr('shieldRechargeRate', module.getModifiedItemAttr('shieldRechargeRateMultiplier') or 1, **kwargs)
class Effect51(BaseEffect):
"""
modifyPowerRechargeRate
Used by:
Modules from group: Capacitor Flux Coil (6 of 6)
Modules from group: Capacitor Power Relay (20 of 20)
Modules from group: Capacitor Recharger (18 of 18)
Modules from group: Power Diagnostic System (23 of 23)
Modules from group: Reactor Control Unit (22 of 22)
Modules from group: Shield Power Relay (6 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr('rechargeRate', module.getModifiedItemAttr('capacitorRechargeRateMultiplier'), **kwargs)
class Effect54(BaseEffect):
"""
targetPassively
Used by:
Modules from group: Passive Targeting System (6 of 6)
"""
type = 'active'
class Effect55(BaseEffect):
"""
targetHostiles
Used by:
Modules from group: Automated Targeting System (6 of 6)
"""
type = 'active'
class Effect56(BaseEffect):
"""
powerOutputMultiply
Used by:
Modules from group: Capacitor Flux Coil (6 of 6)
Modules from group: Capacitor Power Relay (20 of 20)
Modules from group: Power Diagnostic System (23 of 23)
Modules from group: Reactor Control Unit (22 of 22)
Variations of structure module: Standup Reactor Control Unit I (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
# We default this to None as there are times when the source attribute doesn't exist (for example, Cap Power Relay).
# It will return 0 as it doesn't exist, which would nullify whatever the target attribute is
fit.ship.multiplyItemAttr('powerOutput', module.getModifiedItemAttr('powerOutputMultiplier', None), **kwargs)
class Effect57(BaseEffect):
"""
shieldCapacityMultiply
Used by:
Modules from group: Capacitor Power Relay (20 of 20)
Modules from group: Power Diagnostic System (23 of 23)
Modules from group: Reactor Control Unit (22 of 22)
Modules named like: Flux Coil (12 of 12)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
# We default this to None as there are times when the source attribute doesn't exist (for example, Cap Power Relay).
# It will return 0 as it doesn't exist, which would nullify whatever the target attribute is
fit.ship.multiplyItemAttr('shieldCapacity', module.getModifiedItemAttr('shieldCapacityMultiplier', None), **kwargs)
class Effect58(BaseEffect):
"""
capacitorCapacityMultiply
Used by:
Modules from group: Capacitor Flux Coil (6 of 6)
Modules from group: Capacitor Power Relay (20 of 20)
Modules from group: Power Diagnostic System (23 of 23)
Modules from group: Propulsion Module (73 of 147)
Modules from group: Reactor Control Unit (22 of 22)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
# We default this to None as there are times when the source attribute doesn't exist (for example, Cap Power Relay).
# It will return 0 as it doesn't exist, which would nullify whatever the target attribute is
fit.ship.multiplyItemAttr('capacitorCapacity', module.getModifiedItemAttr('capacitorCapacityMultiplier', None), **kwargs)
class Effect59(BaseEffect):
"""
cargoCapacityMultiply
Used by:
Modules from group: Expanded Cargohold (7 of 7)
Modules from group: Overdrive Injector System (7 of 7)
Modules from group: Reinforced Bulkhead (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr('capacity', module.getModifiedItemAttr('cargoCapacityMultiplier'), **kwargs)
class Effect60(BaseEffect):
"""
structureHPMultiply
Used by:
Modules from group: Nanofiber Internal Structure (7 of 7)
Modules from group: Reinforced Bulkhead (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr('hp', module.getModifiedItemAttr('structureHPMultiplier'), **kwargs)
class Effect61(BaseEffect):
"""
agilityBonus
Used by:
Subsystems named like: Propulsion Interdiction Nullifier (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('agility', src.getModifiedItemAttr('agilityBonusAdd'), **kwargs)
class Effect63(BaseEffect):
"""
armorHPMultiply
Used by:
Modules from group: Armor Coating (184 of 184)
Modules from group: Energized Armor Membrane (169 of 169)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr('armorHP', module.getModifiedItemAttr('armorHPMultiplier'), **kwargs)
class Effect67(BaseEffect):
"""
miningLaser
Used by:
Modules from group: Frequency Mining Laser (6 of 6)
Modules from group: Mining Laser (18 of 18)
Modules from group: Strip Miner (9 of 9)
Module: Citizen Miner
"""
type = 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
# Set reload time to 1 second
module.reloadTime = 1000
class Effect89(BaseEffect):
"""
projectileWeaponSpeedMultiply
Used by:
Modules from group: Gyrostabilizer (14 of 14)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Projectile Weapon',
'speed', module.getModifiedItemAttr('speedMultiplier'),
stackingPenalties=True, **kwargs)
class Effect91(BaseEffect):
"""
energyWeaponDamageMultiply
Used by:
Modules from group: Heat Sink (20 of 20)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Energy Weapon',
'damageMultiplier', module.getModifiedItemAttr('damageMultiplier'),
stackingPenalties=True, **kwargs)
class Effect92(BaseEffect):
"""
projectileWeaponDamageMultiply
Used by:
Modules from group: Gyrostabilizer (14 of 14)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Projectile Weapon',
'damageMultiplier', module.getModifiedItemAttr('damageMultiplier'),
stackingPenalties=True, **kwargs)
class Effect93(BaseEffect):
"""
hybridWeaponDamageMultiply
Used by:
Modules from group: Magnetic Field Stabilizer (15 of 15)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Hybrid Weapon',
'damageMultiplier', module.getModifiedItemAttr('damageMultiplier'),
stackingPenalties=True, **kwargs)
class Effect95(BaseEffect):
"""
energyWeaponSpeedMultiply
Used by:
Modules from group: Heat Sink (20 of 20)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Energy Weapon',
'speed', module.getModifiedItemAttr('speedMultiplier'),
stackingPenalties=True, **kwargs)
class Effect96(BaseEffect):
"""
hybridWeaponSpeedMultiply
Used by:
Modules from group: Magnetic Field Stabilizer (15 of 15)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Hybrid Weapon',
'speed', module.getModifiedItemAttr('speedMultiplier'),
stackingPenalties=True, **kwargs)
class Effect101(BaseEffect):
"""
useMissiles
Used by:
Modules from group: Missile Launcher Heavy (12 of 12)
Modules from group: Missile Launcher Rocket (16 of 16)
Modules named like: Launcher (158 of 158)
Structure Modules named like: Standup Launcher (7 of 7)
"""
dealsDamage = True
type = 'active', 'projected'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
# Set reload time to 10 seconds
src.reloadTime = 10000
if 'projected' not in context:
return
if src.item.group.name == 'Missile Launcher Bomb':
# Bomb Launcher Cooldown Timer
moduleReactivationDelay = src.getModifiedItemAttr('moduleReactivationDelay')
speed = src.getModifiedItemAttr('speed')
# Void and Focused Void Bombs
neutAmount = src.getModifiedChargeAttr('energyNeutralizerAmount')
if moduleReactivationDelay and neutAmount and speed:
fit.addDrain(src, speed + moduleReactivationDelay, neutAmount, 0)
# Lockbreaker Bombs
ecmStrengthBonus = src.getModifiedChargeAttr('scan{0}StrengthBonus'.format(fit.scanType))
if ecmStrengthBonus:
fit.addProjectedEcm(ecmStrengthBonus)
elif src.item.group.name == 'Interdiction Sphere Launcher':
speedFactor = src.getModifiedChargeAttr('speedFactor')
if speedFactor:
fit.ship.boostItemAttr('maxVelocity', speedFactor, **kwargs)
class Effect118(BaseEffect):
"""
electronicAttributeModifyOnline
Used by:
Modules from group: Automated Targeting System (6 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('maxLockedTargets', module.getModifiedItemAttr('maxLockedTargetsBonus'), **kwargs)
class Effect157(BaseEffect):
"""
largeHybridTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringLargeHybridTurret
Used by:
Implants named like: Zainou 'Deadeye' Large Hybrid Turret LH (6 of 6)
Implant: Festival-only 'Longbow' HD4 Dose
Implant: Festival-only 'Longbow' HD6 Dose
Skill: Large Hybrid Turret
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'),
'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs)
class Effect159(BaseEffect):
"""
mediumEnergyTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringMediumEnergyTurret
Used by:
Implants named like: Inherent Implants 'Lancer' Medium Energy Turret ME (6 of 6)
Implant: Festival-only 'Longbow' ED3 Dose
Implant: Festival-only 'Longbow' ED6 Dose
Skill: Medium Energy Turret
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'),
'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs)
class Effect160(BaseEffect):
"""
mediumHybridTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringMediumHybridTurret
Used by:
Implants named like: Zainou 'Deadeye' Medium Hybrid Turret MH (6 of 6)
Implant: Festival-only 'Longbow' HD3 Dose
Implant: Festival-only 'Longbow' HD6 Dose
Skill: Medium Hybrid Turret
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs)
class Effect161(BaseEffect):
"""
mediumProjectileTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringMediumProjectileTurret
Used by:
Implants named like: Eifyr and Co. 'Gunslinger' Medium Projectile Turret MP (6 of 6)
Implant: Festival-only 'Longbow' PD3 Dose
Implant: Festival-only 'Longbow' PD6 Dose
Skill: Medium Projectile Turret
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'),
'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs)
class Effect162(BaseEffect):
"""
largeEnergyTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringLargeEnergyTurret
Used by:
Implants named like: Inherent Implants 'Lancer' Large Energy Turret LE (6 of 6)
Implant: Festival-only 'Longbow' ED4 Dose
Implant: Festival-only 'Longbow' ED6 Dose
Implant: Pashan's Turret Handling Mindlink
Skill: Large Energy Turret
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'),
'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs)
class Effect172(BaseEffect):
"""
smallEnergyTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringSmallEnergyTurret
Used by:
Implants named like: Inherent Implants 'Lancer' Small Energy Turret SE (6 of 6)
Implant: Festival-only 'Longbow' ED2 Dose
Implant: Festival-only 'Longbow' ED6 Dose
Skill: Small Energy Turret
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'),
'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs)
class Effect173(BaseEffect):
"""
smallHybridTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringSmallHybridTurret
Used by:
Implants named like: Zainou 'Deadeye' Small Hybrid Turret SH (6 of 6)
Implant: Festival-only 'Longbow' HD2 Dose
Implant: Festival-only 'Longbow' HD6 Dose
Skill: Small Hybrid Turret
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'),
'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs)
class Effect174(BaseEffect):
"""
smallProjectileTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringSmallProjectileTurret
Used by:
Implants named like: Eifyr and Co. 'Gunslinger' Small Projectile Turret SP (6 of 6)
Implant: Festival-only 'Longbow' PD2 Dose
Implant: Festival-only 'Longbow' PD6 Dose
Skill: Small Projectile Turret
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'),
'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs)
class Effect212(BaseEffect):
"""
sensorUpgradesCpuNeedBonusPostPercentCpuLocationShipModulesRequiringSensorUpgrades
Used by:
Implants named like: Zainou 'Gypsy' Electronics Upgrades EU (6 of 6)
Modules named like: Liquid Cooled Electronics (8 of 8)
Skill: Electronics Upgrades
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Electronics Upgrades'),
'cpu', container.getModifiedItemAttr('cpuNeedBonus') * level, **kwargs)
class Effect214(BaseEffect):
"""
targetingMaxTargetBonusModAddMaxLockedTargetsLocationChar
Used by:
Skills named like: Target Management (2 of 2)
"""
type = 'passive', 'structure'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
amount = skill.getModifiedItemAttr('maxTargetBonus') * skill.level
fit.extraAttributes.increase('maxTargetsLockedFromSkills', amount, **kwargs)
class Effect223(BaseEffect):
"""
navigationVelocityBonusPostPercentMaxVelocityLocationShip
Used by:
Implant: Low-grade Snake Alpha
Implant: Mid-grade Snake Alpha
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', implant.getModifiedItemAttr('velocityBonus'), **kwargs)
class Effect227(BaseEffect):
"""
accerationControlCapNeedBonusPostPercentCapacitorNeedLocationShipGroupAfterburner
Used by:
Modules named like: Dynamic Fuel Valve (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Propulsion Module',
'capacitorNeed', container.getModifiedItemAttr('capNeedBonus'), **kwargs)
class Effect230(BaseEffect):
"""
afterburnerDurationBonusPostPercentDurationLocationShipModulesRequiringAfterburner
Used by:
Implants named like: Eifyr and Co. 'Rogue' Afterburner AB (6 of 6)
Implants named like: Eifyr and Co. 'Rogue' Agility (2 of 2)
Implants named like: Serenity Limited 'Overclocker' Dose (3 of 3)
Implant: Zor's Custom Navigation Link
Skill: Afterburner
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'),
'duration', container.getModifiedItemAttr('durationBonus') * level, **kwargs)
class Effect235(BaseEffect):
"""
warpdriveoperationWarpCapacitorNeedBonusPostPercentWarpCapacitorNeedLocationShip
Used by:
Implants named like: Eifyr and Co. 'Rogue' Warp Drive Operation WD (6 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('warpCapacitorNeed', implant.getModifiedItemAttr('warpCapacitorNeedBonus'), **kwargs)
class Effect242(BaseEffect):
"""
accerationControlSpeedFBonusPostPercentSpeedFactorLocationShipGroupAfterburner
Used by:
Implants named like: Eifyr and Co. 'Rogue' Acceleration Control AC (6 of 6)
Implants named like: Eifyr and Co. 'Rogue' Agility (2 of 2)
Implants named like: Serenity Limited 'Overclocker' Dose (3 of 3)
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Propulsion Module',
'speedFactor', implant.getModifiedItemAttr('speedFBonus'), **kwargs)
class Effect244(BaseEffect):
"""
highSpeedManuveringCapacitorNeedMultiplierPostPercentCapacitorNeedLocationShipModulesRequiringHighSpeedManuvering
Used by:
Implants named like: Eifyr and Co. 'Rogue' High Speed Maneuvering HS (6 of 6)
Skill: High Speed Maneuvering
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'),
'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs)
class Effect271(BaseEffect):
"""
hullUpgradesArmorHpBonusPostPercentHpLocationShip
Used by:
Implants named like: Halcyon G Booster (5 of 5)
Implants named like: grade Amulet (15 of 18)
Modules named like: Trimark Armor Pump (8 of 8)
Implant: Low-grade Snake Epsilon
Implant: Mid-grade Snake Epsilon
Skill: Hull Upgrades
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.ship.boostItemAttr('armorHP', (container.getModifiedItemAttr('armorHpBonus') or 0) * level, **kwargs)
class Effect272(BaseEffect):
"""
repairSystemsDurationBonusPostPercentDurationLocationShipModulesRequiringRepairSystems
Used by:
Implants named like: Chemal Tech Repair Booster (3 of 3)
Implants named like: Inherent Implants 'Noble' Repair Systems RS (6 of 6)
Modules named like: Nanobot Accelerator (8 of 8)
Implant: AIR Repairer Booster III
Implant: Numon Family Heirloom
Skill: Repair Systems
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Repair Systems'), 'duration',
container.getModifiedItemAttr('durationSkillBonus') * level, **kwargs)
class Effect273(BaseEffect):
"""
shieldUpgradesPowerNeedBonusPostPercentPowerLocationShipModulesRequiringShieldUpgrades
Used by:
Implants named like: Zainou 'Gnome' Shield Upgrades SU (6 of 6)
Modules named like: Core Defense Charge Economizer (8 of 8)
Skill: Shield Upgrades
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Upgrades'),
'power', container.getModifiedItemAttr('powerNeedBonus') * level, **kwargs)
class Effect277(BaseEffect):
"""
tacticalshieldManipulationSkillBoostUniformityBonus
Used by:
Skill: Tactical Shield Manipulation
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('shieldUniformity', skill.getModifiedItemAttr('uniformityBonus') * skill.level, **kwargs)
class Effect279(BaseEffect):
"""
shieldEmmisionSystemsCapNeedBonusPostPercentCapacitorNeedLocationShipModulesRequiringShieldEmmisionSystems
Used by:
Implants named like: Zainou 'Gnome' Shield Emission Systems SE (6 of 6)
Skill: Shield Emission Systems
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Emission Systems') or mod.item.requiresSkill('Capital Shield Emission Systems'),
'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs)
class Effect287(BaseEffect):
"""
controlledBurstsCapNeedBonusPostPercentCapacitorNeedLocationShipModulesRequiringGunnery
Used by:
Implants named like: Inherent Implants 'Lancer' Controlled Bursts CB (6 of 6)
Skill: Controlled Bursts
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'),
'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs)
class Effect290(BaseEffect):
"""
sharpshooterRangeSkillBonusPostPercentMaxRangeLocationShipModulesRequiringGunnery
Used by:
Implants named like: Frentix Booster (4 of 4)
Implants named like: Halcyon B Booster (5 of 5)
Implants named like: Zainou 'Deadeye' Sharpshooter ST (6 of 6)
Skill: Sharpshooter
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'),
'maxRange', container.getModifiedItemAttr('rangeSkillBonus') * level, **kwargs)
class Effect298(BaseEffect):
"""
surgicalStrikeFalloffBonusPostPercentFalloffLocationShipModulesRequiringGunnery
Used by:
Implants named like: Halcyon B Booster (5 of 5)
Implants named like: Sooth Sayer Booster (4 of 4)
Implants named like: Zainou 'Deadeye' Trajectory Analysis TA (6 of 6)
Skill: Trajectory Analysis
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'),
'falloff', container.getModifiedItemAttr('falloffBonus') * level, **kwargs)
class Effect315(BaseEffect):
"""
dronesSkillBoostMaxActiveDroneBonus
Used by:
Skill: Drones
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
amount = skill.getModifiedItemAttr('maxActiveDroneBonus') * skill.level
fit.extraAttributes.increase('maxActiveDrones', amount, **kwargs)
class Effect391(BaseEffect):
"""
astrogeologyMiningAmountBonusPostPercentMiningAmountLocationShipModulesRequiringMining
Used by:
Implants named like: Inherent Implants 'Highwall' Mining MX (3 of 3)
Implants named like: Mining Booster (6 of 8)
Implants named like: ORE 'Harvester' Efficiency (2 of 2)
Implants named like: Serenity Limited 'Efficiency' Dose (3 of 3)
Implants named like: Serenity Poteque 'Prospector' Harvesting MC (3 of 3)
Implant: Michi's Excavation Augmentor
Skill: Astrogeology
Skill: Mining
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining'),
'miningAmount', container.getModifiedItemAttr('miningAmountBonus') * level, **kwargs)
class Effect392(BaseEffect):
"""
mechanicHullHpBonusPostPercentHpShip
Used by:
Implants named like: Capsuleer Defense Augmentation Chip (3 of 3)
Implants named like: Festival only 'Rock' HH Dose (4 of 4)
Implants named like: Halcyon G Booster (5 of 5)
Implants named like: Inherent Implants 'Noble' Mechanic MC (6 of 6)
Implants named like: Serenity Limited 'Hardshell' Dose (3 of 3)
Modules named like: Transverse Bulkhead (8 of 8)
Skill: Mechanics
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.ship.boostItemAttr('hp', container.getModifiedItemAttr('hullHpBonus') * level, **kwargs)
class Effect394(BaseEffect):
"""
navigationVelocityBonusPostPercentMaxVelocityShip
Used by:
Modules from group: Rig Anchor (4 of 4)
Implants named like: Agency 'Overclocker' SB Dose (4 of 4)
Implants named like: Grand Prix Booster (5 of 6)
Implants named like: Halcyon R Booster (5 of 5)
Implants named like: grade Snake (16 of 18)
Modules named like: Auxiliary Thrusters (8 of 8)
Implant: AIR Overclocker Booster II
Implant: Quafe Zero Classic
Implant: Serenity YC122.9 Season Booster - Max Velocity
Implant: Starsi Blast! Classic
Implant: Wisdom of Gheinok
Skill: Navigation
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
amount = container.getModifiedItemAttr('velocityBonus') or 0
penalties = 'skill' not in context and 'implant' not in context and 'booster' not in context
fit.ship.boostItemAttr('maxVelocity', amount * level,
stackingPenalties=penalties, **kwargs)
class Effect395(BaseEffect):
"""
evasiveManeuveringAgilityBonusPostPercentAgilityShip
Used by:
Modules from group: Rig Anchor (4 of 4)
Implants named like: Eifyr and Co. 'Rogue' Evasive Maneuvering EM (6 of 6)
Implants named like: Grand Prix Booster (4 of 6)
Implants named like: Halcyon G Booster (5 of 5)
Implants named like: Halcyon Y Booster (5 of 5)
Implants named like: grade Nomad (10 of 12)
Modules named like: Low Friction Nozzle Joints (8 of 8)
Implant: AIR Agility Booster II
Implant: AIR Overclocker Booster III
Implant: Genolution Core Augmentation CA-4
Implant: Quafe Zero Green Apple
Implant: Serenity YC122.9 Season Booster - Agility
Implant: Starsi Blast! Classic
Skill: Evasive Maneuvering
Skill: Spaceship Command
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
penalties = 'skill' not in context and 'implant' not in context and 'booster' not in context
fit.ship.boostItemAttr('agility', container.getModifiedItemAttr('agilityBonus') * level,
stackingPenalties=penalties, **kwargs)
class Effect396(BaseEffect):
"""
energyGridUpgradesCpuNeedBonusPostPercentCpuLocationShipModulesRequiringEnergyGridUpgrades
Used by:
Implants named like: Inherent Implants 'Squire' Energy Grid Upgrades EU (6 of 6)
Modules named like: Powergrid Subroutine Maximizer (8 of 8)
Skill: Energy Grid Upgrades
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Energy Grid Upgrades'),
'cpu', container.getModifiedItemAttr('cpuNeedBonus') * level, **kwargs)
class Effect397(BaseEffect):
"""
electronicsCpuOutputBonusPostPercentCpuOutputLocationShipGroupComputer
Used by:
Implants named like: Zainou 'Gypsy' CPU Management EE (6 of 6)
Modules named like: Processor Overclocking Unit (8 of 8)
Subsystems named like: Core Electronic Efficiency Gate (2 of 2)
Implant: Basic Capsuleer Engineering Augmentation Chip
Implant: Genolution Core Augmentation CA-2
Skill: CPU Management
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.ship.boostItemAttr('cpuOutput', container.getModifiedItemAttr('cpuOutputBonus2') * level, **kwargs)
class Effect408(BaseEffect):
"""
largeProjectileTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringLargeProjectileTurret
Used by:
Implants named like: Eifyr and Co. 'Gunslinger' Large Projectile Turret LP (6 of 6)
Implant: Festival-only 'Longbow' PD4 Dose
Implant: Festival-only 'Longbow' PD6 Dose
Skill: Large Projectile Turret
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'),
'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs)
class Effect414(BaseEffect):
"""
gunneryTurretSpeeBonusPostPercentSpeedLocationShipModulesRequiringGunnery
Used by:
Implants named like: Halcyon R Booster (5 of 5)
Implants named like: Inherent Implants 'Lancer' Gunnery RF (6 of 6)
Implant: Pashan's Turret Customization Mindlink
Skill: Gunnery
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'),
'speed', container.getModifiedItemAttr('turretSpeeBonus') * level, **kwargs)
class Effect446(BaseEffect):
"""
shieldManagementShieldCapacityBonusPostPercentCapacityLocationShipGroupShield
Used by:
Implants named like: Capsuleer Defense Augmentation Chip (3 of 3)
Implants named like: Festival only 'Rock' SH Dose (4 of 4)
Implants named like: Halcyon G Booster (5 of 5)
Implants named like: Nirvana Booster (5 of 5)
Implants named like: Serenity Limited 'Hardshell' Dose (3 of 3)
Implants named like: Zainou 'Gnome' Shield Management SM (6 of 6)
Modules named like: Core Defense Field Extender (8 of 8)
Implant: Genolution Core Augmentation CA-3
Implant: Sansha Modified 'Gnome' Implant
Skill: Shield Management
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.ship.boostItemAttr('shieldCapacity', container.getModifiedItemAttr('shieldCapacityBonus') * level, **kwargs)
class Effect485(BaseEffect):
"""
capacitorRechargeTimeBonusPostPercentPassive
Used by:
Implants named like: Halcyon G Booster (5 of 5)
Implants named like: Halcyon R Booster (5 of 5)
Implants named like: Inherent Implants 'Squire' Capacitor Systems Operation EO (6 of 6)
Implants named like: Wightstorm Rapture Booster (4 of 4)
Implants named like: grade Rapture (15 of 18)
Modules named like: Capacitor Control Circuit (8 of 8)
Implant: AIR Overclocker Booster III
Implant: AIR Rapture Booster II
Implant: Basic Capsuleer Engineering Augmentation Chip
Implant: Genolution Core Augmentation CA-2
Implant: Quafe Zero Green Apple
Implant: Starsi Blast! Orange
Skill: Capacitor Systems Operation
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.ship.boostItemAttr('rechargeRate', container.getModifiedItemAttr('capRechargeBonus') * level, **kwargs)
class Effect486(BaseEffect):
"""
shieldOperationRechargeratebonusPostPercentRechargeRateLocationShipGroupShield
Used by:
Implants named like: Zainou 'Gnome' Shield Operation SP (6 of 6)
Modules named like: Core Defense Field Purger (8 of 8)
Implant: Sansha Modified 'Gnome' Implant
Skill: Shield Operation
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.ship.boostItemAttr('shieldRechargeRate', container.getModifiedItemAttr('rechargeratebonus') * level, **kwargs)
class Effect490(BaseEffect):
"""
engineeringPowerEngineeringOutputBonusPostPercentPowerOutputLocationShipGroupPowerCore
Used by:
Implants named like: Inherent Implants 'Squire' Power Grid Management EG (6 of 6)
Modules named like: Ancillary Current Router (8 of 8)
Subsystems named like: Core Augmented Reactor (4 of 4)
Implant: Basic Capsuleer Engineering Augmentation Chip
Implant: Genolution Core Augmentation CA-1
Skill: Power Grid Management
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.ship.boostItemAttr('powerOutput', container.getModifiedItemAttr('powerEngineeringOutputBonus') * level, **kwargs)
class Effect494(BaseEffect):
"""
warpDriveOperationWarpCapacitorNeedBonusPostPercentWarpCapacitorNeedLocationShipGroupPropulsion
Used by:
Modules named like: Warp Core Optimizer (8 of 8)
Skill: Warp Drive Operation
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.ship.boostItemAttr('warpCapacitorNeed', container.getModifiedItemAttr('warpCapacitorNeedBonus') * level,
stackingPenalties='skill' not in context, **kwargs)
class Effect504(BaseEffect):
"""
scoutDroneOperationDroneRangeBonusModAddDroneControlDistanceChar
Used by:
Implants named like: Halcyon Y Booster (5 of 5)
Modules named like: Drone Control Range Augmentor (8 of 8)
Skills named like: Drone Avionics (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
amount = container.getModifiedItemAttr('droneRangeBonus') * level
fit.extraAttributes.increase('droneControlRange', amount, **kwargs)
class Effect506(BaseEffect):
"""
fuelConservationCapNeedBonusPostPercentCapacitorNeedLocationShipModulesRequiringAfterburner
Used by:
Skill: Afterburner
Skill: Fuel Conservation
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'),
'capacitorNeed', skill.getModifiedItemAttr('capNeedBonus') * skill.level, **kwargs)
class Effect507(BaseEffect):
"""
longRangeTargetingMaxTargetRangeBonusPostPercentMaxTargetRangeLocationShipGroupElectronic
Used by:
Implants named like: Halcyon G Booster (5 of 5)
Implants named like: Halcyon Y Booster (5 of 5)
Implants named like: Zainou 'Gypsy' Long Range Targeting LT (6 of 6)
Skill: Long Range Targeting
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.ship.boostItemAttr('maxTargetRange', container.getModifiedItemAttr('maxTargetRangeBonus') * level, **kwargs)
class Effect508(BaseEffect):
"""
shipPDmgBonusMF
Used by:
Ship: Freki
Ship: Republic Fleet Firetail
Ship: Slasher
Ship: Stiletto
Ship: Wolf
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs)
class Effect511(BaseEffect):
"""
shipEnergyTCapNeedBonusAF
Used by:
Ship: Crusader
Ship: Executioner
Ship: Gold Magnate
Ship: Punisher
Ship: Retribution
Ship: Silver Magnate
Ship: Tormentor
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'),
'capacitorNeed', ship.getModifiedItemAttr('shipBonus2AF'),
skill='Amarr Frigate', **kwargs)
class Effect512(BaseEffect):
"""
shipSHTDmgBonusGF
Used by:
Variations of ship: Incursus (3 of 3)
Ship: Atron
Ship: Federation Navy Comet
Ship: Pacifier
Ship: Shapash
Ship: Taranis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusGF'),
skill='Gallente Frigate', **kwargs)
class Effect514(BaseEffect):
"""
shipSETDmgBonusAF
Used by:
Variations of ship: Magnate (3 of 5)
Ship: Executioner
Ship: Tormentor
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusAF'),
skill='Amarr Frigate', **kwargs)
class Effect516(BaseEffect):
"""
shipTCapNeedBonusAC
Used by:
Ship: Devoter
Ship: Omen
Ship: Zealot
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'),
'capacitorNeed', ship.getModifiedItemAttr('shipBonusAC'),
skill='Amarr Cruiser', **kwargs)
class Effect521(BaseEffect):
"""
shipHRangeBonusCC
Used by:
Ship: Eagle
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'maxRange', ship.getModifiedItemAttr('shipBonusCC'),
skill='Caldari Cruiser', **kwargs)
class Effect527(BaseEffect):
"""
shipVelocityBonusMI
Used by:
Variations of ship: Mammoth (2 of 2)
Ship: Hoarder
Ship: Prowler
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('shipBonusMI'),
skill='Minmatar Hauler', **kwargs)
class Effect529(BaseEffect):
"""
shipCargoBonusAI
Used by:
Variations of ship: Sigil (2 of 2)
Ship: Bestower
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('capacity', ship.getModifiedItemAttr('shipBonusAI'),
skill='Amarr Hauler', **kwargs)
class Effect536(BaseEffect):
"""
cpuMultiplierPostMulCpuOutputShip
Used by:
Modules from group: CPU Enhancer (19 of 19)
Variations of structure module: Standup Co-Processor Array I (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr('cpuOutput', module.getModifiedItemAttr('cpuMultiplier'), **kwargs)
class Effect542(BaseEffect):
"""
shipCapNeedBonusAB
Used by:
Ships named like: Imperial Issue (2 of 2)
Ship: Redeemer
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'),
'capacitorNeed', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs)
class Effect549(BaseEffect):
"""
shipPTDmgBonusMB
Used by:
Variations of ship: Tempest (3 of 4)
Ship: Machariel
Ship: Panther
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusMB'),
skill='Minmatar Battleship', **kwargs)
class Effect550(BaseEffect):
"""
shipHTDmgBonusGB
Used by:
Ships from group: Black Ops (3 of 6)
Ship: Dominix Navy Issue
Ship: Hyperion
Ship: Kronos
Ship: Megathron Federate Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusGB'),
skill='Gallente Battleship', **kwargs)
class Effect553(BaseEffect):
"""
shipHTTrackingBonusGB
Used by:
Ship: Vindicator
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'),
'trackingSpeed', ship.getModifiedItemAttr('shipBonusGB'),
skill='Gallente Battleship', **kwargs)
class Effect562(BaseEffect):
"""
shipHTDmgBonusfixedGC
Used by:
Variations of ship: Vexor (3 of 4)
Ship: Adrestia
Ship: Arazu
Ship: Cobra
Ship: Cybele
Ship: Deimos
Ship: Enforcer
Ship: Exequror Navy Issue
Ship: Thorax
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusGC'),
skill='Gallente Cruiser', **kwargs)
class Effect581(BaseEffect):
"""
weaponUpgradesCpuNeedBonusPostPercentCpuLocationShipModulesRequiringGunnery
Used by:
Implants named like: Zainou 'Gnome' Weapon Upgrades WU (6 of 6)
Skill: Weapon Upgrades
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery') or mod.item.requiresSkill('Vorton Projector Operation'),
'cpu', container.getModifiedItemAttr('cpuNeedBonus') * level, **kwargs)
class Effect582(BaseEffect):
"""
rapidFiringRofBonusPostPercentSpeedLocationShipModulesRequiringGunnery
Used by:
Skill: Rapid Firing
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'),
'speed', skill.getModifiedItemAttr('rofBonus') * skill.level, **kwargs)
class Effect584(BaseEffect):
"""
surgicalStrikeDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringGunnery
Used by:
Implants named like: 'Pyrolancea' Dose (7 of 7)
Implants named like: Chemal Tech Turret Booster (3 of 3)
Implants named like: Eifyr and Co. 'Gunslinger' Surgical Strike SS (6 of 6)
Implants named like: Halcyon Y Booster (5 of 5)
Implant: AIR Pyrolancea Booster II
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'),
'damageMultiplier', implant.getModifiedItemAttr('damageMultiplierBonus'), **kwargs)
class Effect587(BaseEffect):
"""
surgicalStrikeDamageMultiplierBonusPostPercentDamageMultiplierLocationShipGroupEnergyWeapon
Used by:
Skill: Surgical Strike
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Weapon',
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect588(BaseEffect):
"""
surgicalStrikeDamageMultiplierBonusPostPercentDamageMultiplierLocationShipGroupProjectileWeapon
Used by:
Skill: Surgical Strike
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Projectile Weapon',
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect589(BaseEffect):
"""
surgicalStrikeDamageMultiplierBonusPostPercentDamageMultiplierLocationShipGroupHybridWeapon
Used by:
Skill: Surgical Strike
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Hybrid Weapon',
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect590(BaseEffect):
"""
energyPulseWeaponsDurationBonusPostPercentDurationLocationShipModulesRequiringEnergyPulseWeapons
Used by:
Implants named like: Inherent Implants 'Squire' Energy Pulse Weapons EP (6 of 6)
Skill: Energy Pulse Weapons
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Energy Pulse Weapons'),
'duration', container.getModifiedItemAttr('durationBonus') * level, **kwargs)
class Effect596(BaseEffect):
"""
ammoInfluenceRange
Used by:
Items from category: Charge (608 of 1023)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.multiplyItemAttr('maxRange', module.getModifiedChargeAttr('weaponRangeMultiplier'), **kwargs)
class Effect598(BaseEffect):
"""
ammoSpeedMultiplier
Used by:
Charges from group: Festival Charges (40 of 40)
Charges from group: Interdiction Probe (2 of 2)
Charges from group: Structure Festival Charges (2 of 2)
Special Edition Assetss from group: Festival Charges Expired (4 of 4)
Charge: Stasis Webification Probe
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.multiplyItemAttr('speed', module.getModifiedChargeAttr('speedMultiplier') or 1, **kwargs)
class Effect599(BaseEffect):
"""
ammoFallofMultiplier
Used by:
Charges from group: Advanced Artillery Ammo (8 of 8)
Charges from group: Advanced Autocannon Ammo (8 of 8)
Charges from group: Advanced Beam Laser Crystal (8 of 8)
Charges from group: Advanced Blaster Charge (8 of 8)
Charges from group: Advanced Pulse Laser Crystal (8 of 8)
Charges from group: Advanced Railgun Charge (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.multiplyItemAttr('falloff', module.getModifiedChargeAttr('fallofMultiplier') or 1, **kwargs)
class Effect600(BaseEffect):
"""
ammoTrackingMultiplier
Used by:
Charges from group: Advanced Artillery Ammo (8 of 8)
Charges from group: Advanced Autocannon Ammo (8 of 8)
Charges from group: Advanced Beam Laser Crystal (8 of 8)
Charges from group: Advanced Blaster Charge (8 of 8)
Charges from group: Advanced Exotic Plasma Charge (6 of 6)
Charges from group: Advanced Pulse Laser Crystal (8 of 8)
Charges from group: Advanced Railgun Charge (8 of 8)
Charges from group: Projectile Ammo (128 of 128)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.multiplyItemAttr('trackingSpeed', module.getModifiedChargeAttr('trackingSpeedMultiplier'), **kwargs)
class Effect602(BaseEffect):
"""
shipPTurretSpeedBonusMC
Used by:
Variations of ship: Stabber (3 of 3)
Ship: Broadsword
Ship: Cobra
Ship: Enforcer
Ship: Huginn
Ship: Scythe Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'),
'speed', ship.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs)
class Effect604(BaseEffect):
"""
shipPTspeedBonusMB2
Used by:
Ships from group: Black Ops (3 of 6)
Variations of ship: Tempest (3 of 4)
Ship: Typhoon Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'),
'speed', ship.getModifiedItemAttr('shipBonusMB2'), skill='Minmatar Battleship', **kwargs)
class Effect607(BaseEffect):
"""
cloaking
Used by:
Modules from group: Cloaking Device (10 of 14)
"""
runTime = 'early'
type = 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
# Set flag which is used to determine if ship is cloaked or not
# This is used to apply cloak-only bonuses, like Black Ops' speed bonus
fit.extraAttributes['cloaked'] = True
# Apply speed penalty
fit.ship.multiplyItemAttr('maxVelocity', module.getModifiedItemAttr('maxVelocityModifier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect623(BaseEffect):
"""
miningDroneOperationMiningAmountBonusPostPercentMiningDroneAmountPercentChar
Used by:
Modules named like: Drone Mining Augmentor (8 of 8)
Skill: Mining Drone Operation
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Mining Drone Operation'),
'miningAmount',
container.getModifiedItemAttr('miningAmountBonus') * level, **kwargs)
class Effect627(BaseEffect):
"""
powerIncrease
Used by:
Modules from group: Auxiliary Power Core (6 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('powerOutput', module.getModifiedItemAttr('powerIncrease'), **kwargs)
class Effect657(BaseEffect):
"""
agilityMultiplierEffect
Used by:
Modules from group: Inertial Stabilizer (7 of 7)
Modules from group: Nanofiber Internal Structure (7 of 7)
Modules from group: Reinforced Bulkhead (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('agility',
module.getModifiedItemAttr('agilityMultiplier'),
stackingPenalties=True, **kwargs)
class Effect660(BaseEffect):
"""
missileEMDmgBonus
Used by:
Skills named like: Missiles (5 of 7)
Skill: Rockets
Skill: Torpedoes
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill(skill),
'emDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect661(BaseEffect):
"""
missileExplosiveDmgBonus
Used by:
Skills named like: Missiles (5 of 7)
Skill: Rockets
Skill: Torpedoes
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill(skill),
'explosiveDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect662(BaseEffect):
"""
missileThermalDmgBonus
Used by:
Skills named like: Missiles (5 of 7)
Skill: Rockets
Skill: Torpedoes
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill(skill),
'thermalDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect668(BaseEffect):
"""
missileKineticDmgBonus2
Used by:
Skills named like: Missiles (5 of 7)
Skill: Rockets
Skill: Torpedoes
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill(skill),
'kineticDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect675(BaseEffect):
"""
weaponUpgradesCpuNeedBonusPostPercentCpuLocationShipModulesRequiringEnergyPulseWeapons
Used by:
Skill: Weapon Upgrades
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Energy Pulse Weapons'),
'cpu', skill.getModifiedItemAttr('cpuNeedBonus') * skill.level, **kwargs)
class Effect677(BaseEffect):
"""
weaponUpgradesCpuNeedBonusPostPercentCpuLocationShipModulesRequiringMissileLauncherOperation
Used by:
Implants named like: Zainou 'Gnome' Launcher CPU Efficiency LE (6 of 6)
Skill: Weapon Upgrades
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'),
'cpu', container.getModifiedItemAttr('cpuNeedBonus') * level, **kwargs)
class Effect699(BaseEffect):
"""
signatureAnalysisScanResolutionBonusPostPercentScanResolutionShip
Used by:
Implants named like: Halcyon B Booster (5 of 5)
Implants named like: Halcyon R Booster (5 of 5)
Implants named like: Zainou 'Gypsy' Signature Analysis SA (6 of 6)
Modules named like: Targeting System Subcontroller (8 of 8)
Implant: Quafe Zero Classic
Implant: Starsi Blast! Orange
Skill: Signature Analysis
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
penalized = False if 'skill' in context or 'implant' in context or 'booster' in context else True
fit.ship.boostItemAttr('scanResolution', container.getModifiedItemAttr('scanResolutionBonus') * level,
stackingPenalties=penalized, **kwargs)
class Effect706(BaseEffect):
"""
covertOpsWarpResistance
Used by:
Ships from group: Covert Ops (5 of 9)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('warpFactor', src.getModifiedItemAttr('eliteBonusCovertOps1'), skill='Covert Ops', **kwargs)
class Effect726(BaseEffect):
"""
shipBonusCargo2GI
Used by:
Variations of ship: Miasmos (3 of 4)
Variations of ship: Nereus (2 of 2)
Ship: Iteron Mark V
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
# TODO: investigate if we can live without such ifs or hardcoding
# Viator doesn't have GI bonus
if 'shipBonusGI' in fit.ship.item.attributes:
bonusAttr = 'shipBonusGI'
else:
bonusAttr = 'shipBonusGI2'
fit.ship.boostItemAttr('capacity', ship.getModifiedItemAttr(bonusAttr), skill='Gallente Hauler', **kwargs)
class Effect727(BaseEffect):
"""
shipBonusCargoCI
Used by:
Variations of ship: Badger (2 of 2)
Ship: Tayra
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('capacity', ship.getModifiedItemAttr('shipBonusCI'), skill='Caldari Hauler', **kwargs)
class Effect728(BaseEffect):
"""
shipBonusCargoMI
Used by:
Variations of ship: Wreathe (2 of 2)
Ship: Mammoth
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('capacity', ship.getModifiedItemAttr('shipBonusMI'), skill='Minmatar Hauler', **kwargs)
class Effect729(BaseEffect):
"""
shipBonusVelocityGI
Used by:
Variations of ship: Epithal (2 of 2)
Variations of ship: Miasmos (4 of 4)
Ship: Iteron Mark V
Ship: Kryos
Ship: Viator
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
# TODO: investigate if we can live without such ifs or hardcoding
# Viator doesn't have GI bonus
if 'shipBonusGI' in fit.ship.item.attributes:
bonusAttr = 'shipBonusGI'
else:
bonusAttr = 'shipBonusGI2'
fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr(bonusAttr), skill='Gallente Hauler', **kwargs)
class Effect730(BaseEffect):
"""
shipBonusVelocityCI
Used by:
Variations of ship: Tayra (2 of 2)
Ship: Crane
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('shipBonusCI'), skill='Caldari Hauler', **kwargs)
class Effect732(BaseEffect):
"""
shipVelocityBonusAI
Used by:
Variations of ship: Bestower (2 of 2)
Ship: Prorator
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('shipBonusAI'), skill='Amarr Hauler', **kwargs)
class Effect736(BaseEffect):
"""
shipBonusCapCapAB
Used by:
Ship: Apocalypse Imperial Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('capacitorCapacity', ship.getModifiedItemAttr('shipBonusAB2'), skill='Amarr Battleship', **kwargs)
class Effect744(BaseEffect):
"""
surveyScanspeedBonusPostPercentDurationLocationShipModulesRequiringElectronics
Used by:
Modules named like: Signal Focusing Kit (8 of 8)
Skill: Survey
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('CPU Management'),
'duration', container.getModifiedItemAttr('scanspeedBonus') * level, **kwargs)
class Effect754(BaseEffect):
"""
shipHybridDamageBonusCF
Used by:
Ship: Raptor
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs)
class Effect757(BaseEffect):
"""
shipETDamageAF
Used by:
Ship: Crucifier Navy Issue
Ship: Crusader
Ship: Imperial Navy Slicer
Ship: Pacifier
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier',
src.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs)
class Effect760(BaseEffect):
"""
shipBonusSmallMissileRoFCF2
Used by:
Ship: Hawk
Ship: Pacifier
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'),
'speed', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs)
class Effect763(BaseEffect):
"""
missileDMGBonus
Used by:
Modules from group: Ballistic Control System (22 of 22)
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
for dmgType in ('em', 'kinetic', 'explosive', 'thermal'):
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation') or
mod.charge.requiresSkill('Defender Missiles'),
'%sDamage' % dmgType,
container.getModifiedItemAttr('missileDamageMultiplierBonus'),
stackingPenalties=True, **kwargs)
class Effect784(BaseEffect):
"""
missileBombardmentMaxFlightTimeBonusPostPercentExplosionDelayOwnerCharModulesRequiringMissileLauncherOperation
Used by:
Implants named like: Halcyon B Booster (5 of 5)
Implants named like: Zainou 'Deadeye' Missile Bombardment MB (6 of 6)
Modules named like: Rocket Fuel Cache Partition (8 of 8)
Implant: Antipharmakon Toxot
Skill: Missile Bombardment
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
penalized = False if 'skill' in context or 'implant' in context or 'booster' in context else True
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'explosionDelay', container.getModifiedItemAttr('maxFlightTimeBonus') * level,
stackingPenalties=penalized, **kwargs)
class Effect804(BaseEffect):
"""
ammoInfluenceCapNeed
Used by:
Items from category: Charge (544 of 1023)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
# Dirty hack to work around cap charges setting cap booster
# injection amount to zero
rawAttr = module.item.getAttribute('capacitorNeed')
if rawAttr is not None and rawAttr >= 0:
module.boostItemAttr('capacitorNeed', module.getModifiedChargeAttr('capNeedBonus') or 0, **kwargs)
class Effect836(BaseEffect):
"""
skillFreightBonus
Used by:
Modules named like: Cargohold Optimization (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('capacity', module.getModifiedItemAttr('cargoCapacityBonus'), **kwargs)
class Effect848(BaseEffect):
"""
cloakingTargetingDelayBonusPostPercentCloakingTargetingDelayBonusForShipModulesRequiringCloaking
Used by:
Skill: Cloaking
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Cloaking'),
'cloakingTargetingDelay',
skill.getModifiedItemAttr('cloakingTargetingDelayBonus') * skill.level, **kwargs)
class Effect854(BaseEffect):
"""
cloakingScanResolutionMultiplier
Used by:
Modules from group: Cloaking Device (12 of 14)
"""
type = 'offline'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr('scanResolution',
module.getModifiedItemAttr('scanResolutionMultiplier'),
stackingPenalties=True, penaltyGroup='cloakingScanResolutionMultiplier', **kwargs)
class Effect856(BaseEffect):
"""
warpSkillSpeed
Used by:
Implants named like: Eifyr and Co. 'Rogue' Agility (2 of 2)
Implants named like: Eifyr and Co. 'Rogue' Warp Drive Speed WS (6 of 6)
Implants named like: Grand Prix Booster (5 of 6)
Implants named like: Halcyon B Booster (5 of 5)
Implants named like: Serenity Limited 'Overclocker' Dose (3 of 3)
Implants named like: grade Ascendancy (10 of 12)
Modules named like: Hyperspatial Velocity Optimizer (8 of 8)
Implant: Serenity YC122.9 Season Booster - Warp Speed
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
penalized = False if 'skill' in context or 'implant' in context or 'booster' in context else True
fit.ship.boostItemAttr('warpSpeedMultiplier', container.getModifiedItemAttr('WarpSBonus'),
stackingPenalties=penalized, **kwargs)
class Effect882(BaseEffect):
"""
shipHybridRangeBonusCF2
Used by:
Ship: Harpy
Ship: Raptor
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'),
'maxRange', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs)
class Effect887(BaseEffect):
"""
shipETspeedBonusAB2
Used by:
Ship: Armageddon Imperial Issue
Ship: Redeemer
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'),
'speed', ship.getModifiedItemAttr('shipBonusAB2'), skill='Amarr Battleship', **kwargs)
class Effect889(BaseEffect):
"""
missileLauncherSpeedMultiplier
Used by:
Modules from group: Ballistic Control System (22 of 22)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'),
'speed', module.getModifiedItemAttr('speedMultiplier'),
stackingPenalties=True, **kwargs)
class Effect891(BaseEffect):
"""
shipCruiseMissileVelocityBonusCB3
Used by:
Variations of ship: Raven (3 of 4)
Module: Anhinga Tertiary Mode
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
if 'ship' in context:
skill = 'Caldari Battleship'
penalties = False
else:
skill = None
penalties = True
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'maxVelocity',
ship.getModifiedItemAttr('shipBonusCB3'), skill=skill, stackingPenalties=penalties, **kwargs)
class Effect892(BaseEffect):
"""
shipTorpedosVelocityBonusCB3
Used by:
Variations of ship: Raven (3 of 4)
Module: Anhinga Tertiary Mode
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
if 'ship' in context:
skill = 'Caldari Battleship'
penalties = False
else:
skill = None
penalties = True
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Torpedoes'), 'maxVelocity',
ship.getModifiedItemAttr('shipBonusCB3'), skill=skill, stackingPenalties=penalties, **kwargs)
class Effect896(BaseEffect):
"""
covertOpsCpuBonus1
Used by:
Ships from group: Stealth Bomber (4 of 5)
Subsystems named like: Defensive Covert Reconfiguration (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cloaking Device',
'cpu', container.getModifiedItemAttr('cloakingCpuNeedBonus'), **kwargs)
class Effect898(BaseEffect):
"""
shipMissileKineticDamageCF
Used by:
Ship: Condor
Ship: Hawk
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'kineticDamage', ship.getModifiedItemAttr('shipBonusCF'),
skill='Caldari Frigate', **kwargs)
class Effect899(BaseEffect):
"""
shipMissileKineticDamageCC
Used by:
Ship: Cerberus
Ship: Laelaps
Ship: Onyx
Ship: Orthrus
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'kineticDamage', ship.getModifiedItemAttr('shipBonusCC'),
skill='Caldari Cruiser', **kwargs)
class Effect907(BaseEffect):
"""
shipLaserRofAC2
Used by:
Ship: Omen
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'),
'speed', ship.getModifiedItemAttr('shipBonusAC2'),
skill='Amarr Cruiser', **kwargs)
class Effect909(BaseEffect):
"""
shipArmorHpAC2
Used by:
Ship: Augoror Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorHP', ship.getModifiedItemAttr('shipBonusAC2'),
skill='Amarr Cruiser', **kwargs)
class Effect912(BaseEffect):
"""
shipMissileLauncherRofCC2
Used by:
Ship: Laelaps
Ship: Onyx
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'),
'speed', ship.getModifiedItemAttr('shipBonusCC2'),
skill='Caldari Cruiser', **kwargs)
class Effect918(BaseEffect):
"""
shipDronesMaxGC2
Used by:
Ship: Guardian-Vexor
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.extraAttributes.increase('maxActiveDrones', ship.getModifiedItemAttr('shipBonusGC2'),
skill='Gallente Cruiser', **kwargs)
class Effect919(BaseEffect):
"""
shipHybridTrackingGC2
Used by:
Ship: Cobra
Ship: Enforcer
Ship: Thorax
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'trackingSpeed', ship.getModifiedItemAttr('shipBonusGC2'),
skill='Gallente Cruiser', **kwargs)
class Effect958(BaseEffect):
"""
shipArmorEmResistanceAC2
Used by:
Ship: Maller
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorEmDamageResonance', ship.getModifiedItemAttr('shipBonusAC2'),
skill='Amarr Cruiser', **kwargs)
class Effect959(BaseEffect):
"""
shipArmorExplosiveResistanceAC2
Used by:
Ship: Maller
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusAC2'),
skill='Amarr Cruiser', **kwargs)
class Effect960(BaseEffect):
"""
shipArmorKineticResistanceAC2
Used by:
Ship: Maller
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorKineticDamageResonance', ship.getModifiedItemAttr('shipBonusAC2'),
skill='Amarr Cruiser', **kwargs)
class Effect961(BaseEffect):
"""
shipArmorThermalResistanceAC2
Used by:
Ship: Maller
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorThermalDamageResonance', ship.getModifiedItemAttr('shipBonusAC2'),
skill='Amarr Cruiser', **kwargs)
class Effect968(BaseEffect):
"""
shipProjectileDmgMC2
Used by:
Ship: Broadsword
Ship: Cynabal
Ship: Moracha
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusMC2'),
skill='Minmatar Cruiser', **kwargs)
class Effect980(BaseEffect):
"""
cloakingWarpSafe
Used by:
Modules named like: Covert Ops Cloaking Device II (2 of 2)
"""
runTime = 'early'
type = 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.extraAttributes['cloaked'] = True
fit.ship.multiplyItemAttr('maxVelocity', module.getModifiedItemAttr('maxVelocityModifier'), **kwargs)
class Effect989(BaseEffect):
"""
eliteBonusGunshipHybridOptimal1
Used by:
Ship: Enyo
Ship: Harpy
Ship: Ishkur
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'),
'maxRange', ship.getModifiedItemAttr('eliteBonusGunship1'),
skill='Assault Frigates', **kwargs)
class Effect991(BaseEffect):
"""
eliteBonusGunshipLaserOptimal1
Used by:
Ship: Retribution
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'),
'maxRange', ship.getModifiedItemAttr('eliteBonusGunship1'),
skill='Assault Frigates', **kwargs)
class Effect996(BaseEffect):
"""
eliteBonusGunshipHybridTracking2
Used by:
Ship: Enyo
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'),
'trackingSpeed', ship.getModifiedItemAttr('eliteBonusGunship2'),
skill='Assault Frigates', **kwargs)
class Effect998(BaseEffect):
"""
eliteBonusGunshipProjectileFalloff2
Used by:
Ship: Wolf
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'),
'falloff', ship.getModifiedItemAttr('eliteBonusGunship2'),
skill='Assault Frigates', **kwargs)
class Effect999(BaseEffect):
"""
eliteBonusGunshipShieldBoost2
Used by:
Ship: Hawk
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'),
'shieldBonus', ship.getModifiedItemAttr('eliteBonusGunship2'),
skill='Assault Frigates', **kwargs)
class Effect1001(BaseEffect):
"""
eliteBonusGunshipCapRecharge2
Used by:
Ship: Vengeance
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('rechargeRate', ship.getModifiedItemAttr('eliteBonusGunship2'),
skill='Assault Frigates', **kwargs)
class Effect1003(BaseEffect):
"""
selfT2SmallLaserPulseDamageBonus
Used by:
Skill: Small Pulse Laser Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Pulse Laser Specialization'),
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect1004(BaseEffect):
"""
selfT2SmallLaserBeamDamageBonus
Used by:
Skill: Small Beam Laser Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Beam Laser Specialization'),
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect1005(BaseEffect):
"""
selfT2SmallHybridBlasterDamageBonus
Used by:
Skill: Small Blaster Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Blaster Specialization'),
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect1006(BaseEffect):
"""
selfT2SmallHybridRailDamageBonus
Used by:
Skill: Small Railgun Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Railgun Specialization'),
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect1007(BaseEffect):
"""
selfT2SmallProjectileACDamageBonus
Used by:
Skill: Small Autocannon Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Autocannon Specialization'),
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect1008(BaseEffect):
"""
selfT2SmallProjectileArtyDamageBonus
Used by:
Skill: Small Artillery Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Artillery Specialization'),
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect1009(BaseEffect):
"""
selfT2MediumLaserPulseDamageBonus
Used by:
Skill: Medium Pulse Laser Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Pulse Laser Specialization'),
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect1010(BaseEffect):
"""
selfT2MediumLaserBeamDamageBonus
Used by:
Skill: Medium Beam Laser Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Beam Laser Specialization'),
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect1011(BaseEffect):
"""
selfT2MediumHybridBlasterDamageBonus
Used by:
Skill: Medium Blaster Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Blaster Specialization'),
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect1012(BaseEffect):
"""
selfT2MediumHybridRailDamageBonus
Used by:
Skill: Medium Railgun Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Railgun Specialization'),
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect1013(BaseEffect):
"""
selfT2MediumProjectileACDamageBonus
Used by:
Skill: Medium Autocannon Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Autocannon Specialization'),
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect1014(BaseEffect):
"""
selfT2MediumProjectileArtyDamageBonus
Used by:
Skill: Medium Artillery Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Artillery Specialization'),
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect1015(BaseEffect):
"""
selfT2LargeLaserPulseDamageBonus
Used by:
Skill: Large Pulse Laser Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Pulse Laser Specialization'),
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect1016(BaseEffect):
"""
selfT2LargeLaserBeamDamageBonus
Used by:
Skill: Large Beam Laser Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Beam Laser Specialization'),
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect1017(BaseEffect):
"""
selfT2LargeHybridBlasterDamageBonus
Used by:
Skill: Large Blaster Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Blaster Specialization'),
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect1018(BaseEffect):
"""
selfT2LargeHybridRailDamageBonus
Used by:
Skill: Large Railgun Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Railgun Specialization'),
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect1019(BaseEffect):
"""
selfT2LargeProjectileACDamageBonus
Used by:
Skill: Large Autocannon Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Autocannon Specialization'),
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect1020(BaseEffect):
"""
selfT2LargeProjectileArtyDamageBonus
Used by:
Skill: Large Artillery Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Artillery Specialization'),
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect1021(BaseEffect):
"""
eliteBonusGunshipHybridDmg2
Used by:
Ship: Harpy
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'),
'damageMultiplier', ship.getModifiedItemAttr('eliteBonusGunship2'),
skill='Assault Frigates', **kwargs)
class Effect1024(BaseEffect):
"""
shipMissileHeavyVelocityBonusCC2
Used by:
Module: Anhinga Tertiary Mode
Ship: Caracal
Ship: Osprey Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
if 'ship' in context:
skill = 'Caldari Cruiser'
penalties = False
else:
skill = None
penalties = True
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'maxVelocity',
ship.getModifiedItemAttr('shipBonusCC2'), skill=skill, stackingPenalties=penalties, **kwargs)
class Effect1030(BaseEffect):
"""
remoteArmorSystemsCapNeedBonusPostPercentCapacitorNeedLocationShipModulesRequiringRemoteArmorSystems
Used by:
Implants named like: Inherent Implants 'Noble' Remote Armor Repair Systems RA (6 of 6)
Modules named like: Remote Repair Augmentor (6 of 8)
Skill: Remote Armor Repair Systems
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems') or mod.item.requiresSkill('Capital Remote Armor Repair Systems'),
'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs)
class Effect1033(BaseEffect):
"""
eliteBonusLogisticRemoteArmorRepairCapNeed1
Used by:
Ship: Oneiros
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed',
src.getModifiedItemAttr('eliteBonusLogistics1'), skill='Logistics Cruisers', **kwargs)
class Effect1034(BaseEffect):
"""
eliteBonusLogisticRemoteArmorRepairCapNeed2
Used by:
Ship: Guardian
Ship: Rabisu
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed',
src.getModifiedItemAttr('eliteBonusLogistics2'), skill='Logistics Cruisers', **kwargs)
class Effect1035(BaseEffect):
"""
eliteBonusLogisticShieldTransferCapNeed2
Used by:
Ship: Scimitar
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed',
src.getModifiedItemAttr('eliteBonusLogistics2'), skill='Logistics Cruisers', **kwargs)
class Effect1036(BaseEffect):
"""
eliteBonusLogisticShieldTransferCapNeed1
Used by:
Ship: Basilisk
Ship: Etana
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed',
src.getModifiedItemAttr('eliteBonusLogistics1'), skill='Logistics Cruisers', **kwargs)
class Effect1046(BaseEffect):
"""
shipRemoteArmorRangeGC1
Used by:
Ship: Oneiros
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'maxRange',
src.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs)
class Effect1047(BaseEffect):
"""
shipRemoteArmorRangeAC2
Used by:
Ship: Guardian
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'maxRange',
src.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs)
class Effect1048(BaseEffect):
"""
shipShieldTransferRangeCC1
Used by:
Ship: Basilisk
Ship: Etana
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'maxRange',
src.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs)
class Effect1049(BaseEffect):
"""
shipShieldTransferRangeMC2
Used by:
Ship: Scimitar
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'maxRange',
src.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs)
class Effect1058(BaseEffect):
"""
eliteBonusHeavyGunshipLaserOptimal1
Used by:
Ship: Zealot
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'),
'maxRange', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'),
skill='Heavy Assault Cruisers', **kwargs)
class Effect1060(BaseEffect):
"""
eliteBonusHeavyGunshipProjectileFallOff1
Used by:
Ship: Vagabond
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'),
'falloff', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'),
skill='Heavy Assault Cruisers', **kwargs)
class Effect1061(BaseEffect):
"""
eliteBonusHeavyGunshipHybridDmg2
Used by:
Ship: Deimos
Ship: Eagle
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'damageMultiplier', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'),
skill='Heavy Assault Cruisers', **kwargs)
class Effect1062(BaseEffect):
"""
eliteBonusHeavyGunshipLaserDmg2
Used by:
Ship: Zealot
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'),
'damageMultiplier', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'),
skill='Heavy Assault Cruisers', **kwargs)
class Effect1080(BaseEffect):
"""
eliteBonusHeavyGunshipHybridFallOff1
Used by:
Ship: Deimos
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'falloff', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'),
skill='Heavy Assault Cruisers', **kwargs)
class Effect1084(BaseEffect):
"""
eliteBonusHeavyGunshipDroneControlRange1
Used by:
Ship: Ishtar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.extraAttributes.increase('droneControlRange', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'),
skill='Heavy Assault Cruisers', **kwargs)
class Effect1087(BaseEffect):
"""
eliteBonusHeavyGunshipProjectileDmg2
Used by:
Ship: Vagabond
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'),
'damageMultiplier', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'),
skill='Heavy Assault Cruisers', **kwargs)
class Effect1099(BaseEffect):
"""
shipProjectileTrackingMF2
Used by:
Variations of ship: Slasher (3 of 3)
Ship: Republic Fleet Firetail
Ship: Wolf
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'),
'trackingSpeed', ship.getModifiedItemAttr('shipBonusMF2'),
skill='Minmatar Frigate', **kwargs)
class Effect1176(BaseEffect):
"""
accerationControlSkillAb&MwdSpeedBoost
Used by:
Implant: Zor's Custom Navigation Hyper-Link
Skill: Acceleration Control
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Propulsion Module',
'speedFactor', container.getModifiedItemAttr('speedFBonus') * level, **kwargs)
class Effect1179(BaseEffect):
"""
eliteBonusGunshipLaserDamage2
Used by:
Ship: Retribution
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'),
'damageMultiplier', ship.getModifiedItemAttr('eliteBonusGunship2'),
skill='Assault Frigates', **kwargs)
class Effect1181(BaseEffect):
"""
eliteBonusLogisticEnergyTransferCapNeed1
Used by:
Ship: Guardian
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter',
'capacitorNeed', ship.getModifiedItemAttr('eliteBonusLogistics1'),
skill='Logistics Cruisers', **kwargs)
class Effect1182(BaseEffect):
"""
shipEnergyTransferRange1
Used by:
Ship: Guardian
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter',
'maxRange', ship.getModifiedItemAttr('shipBonusAC'),
skill='Amarr Cruiser', **kwargs)
class Effect1183(BaseEffect):
"""
eliteBonusLogisticEnergyTransferCapNeed2
Used by:
Ship: Basilisk
Ship: Etana
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter',
'capacitorNeed', ship.getModifiedItemAttr('eliteBonusLogistics2'),
skill='Logistics Cruisers', **kwargs)
class Effect1184(BaseEffect):
"""
shipEnergyTransferRange2
Used by:
Ship: Basilisk
Ship: Etana
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter',
'maxRange', ship.getModifiedItemAttr('shipBonusCC2'),
skill='Caldari Cruiser', **kwargs)
class Effect1185(BaseEffect):
"""
structureStealthEmitterArraySigDecrease
Used by:
Implants named like: Halcyon R Booster (5 of 5)
Implants named like: X Instinct Booster (4 of 4)
Implants named like: grade Halo (15 of 18)
Implant: Serenity YC122.9 Season Booster - Signature Radius
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('signatureRadius', implant.getModifiedItemAttr('signatureRadiusBonus'), **kwargs)
class Effect1190(BaseEffect):
"""
iceHarvestCycleTimeModulesRequiringIceHarvesting
Used by:
Implants named like: Inherent Implants 'Yeti' Ice Harvesting IH (3 of 3)
Implants named like: ORE 'Harvester' Efficiency (2 of 2)
Implants named like: Serenity Limited 'Efficiency' Dose (3 of 3)
Implants named like: Serenity Poteque 'Prospector' Harvesting MC (3 of 3)
Module: Medium Ice Harvester Accelerator I
Skill: Ice Harvesting
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Ice Harvesting'),
'duration', container.getModifiedItemAttr('iceHarvestCycleBonus') * level, **kwargs)
class Effect1200(BaseEffect):
"""
miningCrystalsMiningAtributesAdjustments
Used by:
Charges from group: Mercoxit Mining Crystal (6 of 6)
Charges from group: Mining Crystal (66 of 66)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.multiplyItemAttr(
'miningAmount',
module.getModifiedChargeAttr('specializationAsteroidYieldMultiplier'),
**kwargs)
module.increaseItemAttr(
'miningWastedVolumeMultiplier',
module.getModifiedChargeAttr('specializationCrystalMiningWastedVolumeMultiplierBonus'),
**kwargs)
module.increaseItemAttr(
'miningWasteProbability',
module.getModifiedChargeAttr('specializationCrystalMiningWasteProbabilityBonus'),
**kwargs)
class Effect1212(BaseEffect):
"""
crystalMiningamountInfo2
Used by:
Modules from group: Frequency Mining Laser (6 of 6)
"""
runTime = 'late'
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.preAssignItemAttr('specialtyMiningAmount', module.getModifiedItemAttr('miningAmount'), **kwargs)
class Effect1215(BaseEffect):
"""
shipEnergyDrainAmountAF1
Used by:
Ship: Caedes
Ship: Cruor
Ship: Sentinel
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu',
'powerTransferAmount', ship.getModifiedItemAttr('shipBonusAF'),
skill='Amarr Frigate', **kwargs)
class Effect1218(BaseEffect):
"""
shipBonusPirateSmallHybridDmg
Used by:
Ship: Daredevil
Ship: Hecate
Ship: Metamorphosis
Ship: Sunesis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect1219(BaseEffect):
"""
shipEnergyVampireTransferAmountBonusAB
Used by:
Ship: Bhaalgorn
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu',
'powerTransferAmount', ship.getModifiedItemAttr('shipBonusAB'),
skill='Amarr Battleship', **kwargs)
class Effect1220(BaseEffect):
"""
shipEnergyVampireTransferAmountBonusAc
Used by:
Ship: Ashimmu
Ship: Rabisu
Ship: Vangel
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu',
'powerTransferAmount', ship.getModifiedItemAttr('shipBonusAC'),
skill='Amarr Cruiser', **kwargs)
class Effect1221(BaseEffect):
"""
shipStasisWebRangeBonusMB
Used by:
Ship: Bhaalgorn
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web',
'maxRange', ship.getModifiedItemAttr('shipBonusMB'),
skill='Minmatar Battleship', **kwargs)
class Effect1222(BaseEffect):
"""
shipStasisWebRangeBonusMC2
Used by:
Ship: Ashimmu
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web',
'maxRange', ship.getModifiedItemAttr('shipBonusMC2'),
skill='Minmatar Cruiser', **kwargs)
class Effect1228(BaseEffect):
"""
shipProjectileTrackingGF
Used by:
Ship: Chremoas
Ship: Dramiel
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'),
'trackingSpeed', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs)
class Effect1230(BaseEffect):
"""
shipMissileVelocityPirateFactionFrigate
Used by:
Module: Anhinga Primary Mode
Ship: Barghest
Ship: Garmur
Ship: Laelaps
Ship: Orthrus
Ship: Raiju
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
penalties = 'ship' not in context
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity',
ship.getModifiedItemAttr('shipBonusRole7'), stackingPenalties=penalties, **kwargs)
class Effect1232(BaseEffect):
"""
shipProjectileRofPirateCruiser
Used by:
Ship: Cynabal
Ship: Moracha
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'),
'speed', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect1233(BaseEffect):
"""
shipHybridDmgPirateCruiser
Used by:
Ship: Gnosis
Ship: Vigilant
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect1234(BaseEffect):
"""
shipMissileVelocityPirateFactionLight
Used by:
Ship: Corax
Ship: Talwar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'),
'maxVelocity', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect1239(BaseEffect):
"""
shipProjectileRofPirateBattleship
Used by:
Ship: Machariel
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'),
'speed', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect1240(BaseEffect):
"""
shipHybridDmgPirateBattleship
Used by:
Ship: Vindicator
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect1255(BaseEffect):
"""
setBonusBloodraider
Used by:
Implants named like: grade Talisman (18 of 18)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant',
'durationBonus', implant.getModifiedItemAttr('implantSetBloodraider'), **kwargs)
class Effect1256(BaseEffect):
"""
setBonusBloodraiderNosferatu
Used by:
Implants named like: grade Talisman (15 of 18)
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capacitor Emission Systems'),
'duration', implant.getModifiedItemAttr('durationBonus'), **kwargs)
class Effect1261(BaseEffect):
"""
setBonusSerpentis
Used by:
Implants named like: grade Snake (18 of 18)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant',
'velocityBonus', implant.getModifiedItemAttr('implantSetSerpentis'), **kwargs)
class Effect1264(BaseEffect):
"""
interceptor2HybridTracking
Used by:
Ship: Taranis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'),
'trackingSpeed', ship.getModifiedItemAttr('eliteBonusInterceptor2'),
skill='Interceptors', **kwargs)
class Effect1268(BaseEffect):
"""
interceptor2LaserTracking
Used by:
Ship: Crusader
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'),
'trackingSpeed', ship.getModifiedItemAttr('eliteBonusInterceptor2'),
skill='Interceptors', **kwargs)
class Effect1281(BaseEffect):
"""
structuralAnalysisEffect
Used by:
Implants named like: Inherent Implants 'Noble' Repair Proficiency RP (6 of 6)
Modules named like: Auxiliary Nano Pump (8 of 8)
Implant: Imperial Navy Modified 'Noble' Implant
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
penalized = 'implant' not in context
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'),
'armorDamageAmount', container.getModifiedItemAttr('repairBonus'),
stackingPenalties=penalized, **kwargs)
class Effect1318(BaseEffect):
"""
ewSkillScanStrengthBonus
Used by:
Modules named like: Particle Dispersion Augmentor (8 of 8)
Skill: Signal Dispersion
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
groups = ('ECM', 'Burst Jammer')
level = container.level if 'skill' in context else 1
for scanType in ('Gravimetric', 'Ladar', 'Magnetometric', 'Radar'):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups,
'scan{0}StrengthBonus'.format(scanType),
container.getModifiedItemAttr('scanSkillEwStrengthBonus') * level,
stackingPenalties=False if 'skill' in context else True, **kwargs)
class Effect1360(BaseEffect):
"""
ewSkillRsdCapNeedBonusSkillLevel
Used by:
Implants named like: Zainou 'Gypsy' Sensor Linking SL (6 of 6)
Skill: Sensor Linking
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Sensor Linking'),
'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs)
class Effect1361(BaseEffect):
"""
ewSkillTdCapNeedBonusSkillLevel
Used by:
Implants named like: Zainou 'Gypsy' Weapon Disruption WD (6 of 6)
Skill: Weapon Disruption
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'),
'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs)
class Effect1370(BaseEffect):
"""
ewSkillTpCapNeedBonusSkillLevel
Used by:
Implants named like: Zainou 'Gypsy' Target Painting TG (6 of 6)
Skill: Target Painting
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Target Painting'),
'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs)
class Effect1372(BaseEffect):
"""
ewSkillEwCapNeedSkillLevel
Used by:
Implants named like: Zainou 'Gypsy' Electronic Warfare EW (6 of 6)
Modules named like: Signal Disruption Amplifier (8 of 8)
Skill: Electronic Warfare
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM',
'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs)
class Effect1395(BaseEffect):
"""
shieldBoostAmplifierPassive
Used by:
Implants named like: grade Crystal (15 of 18)
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'),
'shieldBonus', container.getModifiedItemAttr('shieldBoostMultiplier'), **kwargs)
class Effect1397(BaseEffect):
"""
setBonusGuristas
Used by:
Implants named like: grade Crystal (18 of 18)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant',
'shieldBoostMultiplier', implant.getModifiedItemAttr('implantSetGuristas'), **kwargs)
class Effect1409(BaseEffect):
"""
systemScanDurationSkillAstrometrics
Used by:
Implants named like: Halcyon R Booster (5 of 5)
Implants named like: Poteque 'Prospector' Astrometric Acquisition AQ (3 of 3)
Implants named like: Poteque 'Prospector' Sharpeye (2 of 2)
Implants named like: Serenity Limited 'Sharpeye' Dose (3 of 3)
Implant: AIR Astro-Acquisition II Booster
Skill: Astrometric Acquisition
Skill: Astrometrics
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Astrometrics'),
'duration', container.getModifiedItemAttr('durationBonus') * level, **kwargs)
class Effect1410(BaseEffect):
"""
propulsionSkillCapNeedBonusSkillLevel
Used by:
Implants named like: Zainou 'Gypsy' Propulsion Jamming PJ (6 of 6)
Skill: Propulsion Jamming
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Propulsion Jamming'),
'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs)
class Effect1412(BaseEffect):
"""
shipBonusHybridOptimalCB
Used by:
Ship: Rokh
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'),
'maxRange', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs)
class Effect1434(BaseEffect):
"""
caldariShipEwStrengthCB
Used by:
Ship: Scorpion
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for sensorType in ('Gravimetric', 'Ladar', 'Magnetometric', 'Radar'):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Electronic Warfare'),
'scan{0}StrengthBonus'.format(sensorType),
ship.getModifiedItemAttr('shipBonusCB'),
skill='Caldari Battleship', **kwargs)
class Effect1441(BaseEffect):
"""
caldariShipEwOptimalRangeCB3
Used by:
Ship: Scorpion
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM',
'maxRange', ship.getModifiedItemAttr('shipBonusCB3'),
skill='Caldari Battleship', **kwargs)
class Effect1442(BaseEffect):
"""
caldariShipEwOptimalRangeCC2
Used by:
Ship: Blackbird
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM',
'maxRange', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs)
class Effect1443(BaseEffect):
"""
caldariShipEwCapacitorNeedCC
Used by:
Ship: Chameleon
Ship: Falcon
Ship: Rook
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM',
'capacitorNeed', ship.getModifiedItemAttr('shipBonusCC'),
skill='Caldari Cruiser', **kwargs)
class Effect1445(BaseEffect):
"""
ewSkillRsdMaxRangeBonus
Used by:
Modules named like: Particle Dispersion Projector (8 of 8)
Skill: Long Distance Jamming
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
penalize = False if 'skill' in context or 'booster' in context else True
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Sensor Linking'),
'maxRange', container.getModifiedItemAttr('rangeSkillBonus') * level,
stackingPenalties=penalize, **kwargs)
class Effect1446(BaseEffect):
"""
ewSkillTpMaxRangeBonus
Used by:
Modules named like: Particle Dispersion Projector (8 of 8)
Skill: Long Distance Jamming
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
penalize = False if 'skill' in context or 'booster' in context else True
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter',
'maxRange', container.getModifiedItemAttr('rangeSkillBonus') * level,
stackingPenalties=penalize, **kwargs)
class Effect1448(BaseEffect):
"""
ewSkillTdMaxRangeBonus
Used by:
Modules named like: Particle Dispersion Projector (8 of 8)
Skill: Long Distance Jamming
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
penalize = False if 'skill' in context or 'booster' in context else True
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Weapon Disruptor',
'maxRange', container.getModifiedItemAttr('rangeSkillBonus') * level,
stackingPenalties=penalize, **kwargs)
class Effect1449(BaseEffect):
"""
ewSkillRsdFallOffBonus
Used by:
Skill: Frequency Modulation
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Sensor Linking'),
'falloffEffectiveness', container.getModifiedItemAttr('falloffBonus') * level, **kwargs)
class Effect1450(BaseEffect):
"""
ewSkillTpFallOffBonus
Used by:
Skill: Frequency Modulation
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter',
'falloffEffectiveness', container.getModifiedItemAttr('falloffBonus') * level, **kwargs)
class Effect1451(BaseEffect):
"""
ewSkillTdFallOffBonus
Used by:
Skill: Frequency Modulation
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Weapon Disruptor',
'falloffEffectiveness', container.getModifiedItemAttr('falloffBonus') * level, **kwargs)
class Effect1452(BaseEffect):
"""
ewSkillEwMaxRangeBonus
Used by:
Implants named like: grade Centurion (10 of 12)
Modules named like: Particle Dispersion Projector (8 of 8)
Implant: Serenity YC122.9 Season Booster - EW Range
Skill: Long Distance Jamming
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM',
'maxRange', container.getModifiedItemAttr('rangeSkillBonus') * level,
stackingPenalties='skill' not in context and 'implant' not in context, **kwargs)
class Effect1453(BaseEffect):
"""
ewSkillEwFallOffBonus
Used by:
Skill: Frequency Modulation
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM',
'falloffEffectiveness', container.getModifiedItemAttr('falloffBonus') * level, **kwargs)
class Effect1472(BaseEffect):
"""
missileSkillAoeCloudSizeBonus
Used by:
Implants named like: Zainou 'Deadeye' Guided Missile Precision GP (6 of 6)
Modules named like: Warhead Rigor Catalyst (8 of 8)
Skill: Guided Missile Precision
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
penalize = False if 'skill' in context or 'implant' in context or 'booster' in context else True
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'aoeCloudSize', container.getModifiedItemAttr('aoeCloudSizeBonus') * level,
stackingPenalties=penalize, **kwargs)
class Effect1500(BaseEffect):
"""
shieldOperationSkillBoostCapacitorNeedBonus
Used by:
Modules named like: Core Defense Capacitor Safeguard (8 of 8)
Skill: Shield Compensation
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'),
'capacitorNeed', container.getModifiedItemAttr('shieldBoostCapacitorBonus') * level, **kwargs)
class Effect1550(BaseEffect):
"""
ewSkillTargetPaintingStrengthBonus
Used by:
Skill: Signature Focusing
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
level = skill.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter',
'signatureRadiusBonus',
skill.getModifiedItemAttr('scanSkillTargetPaintStrengthBonus') * level, **kwargs)
class Effect1551(BaseEffect):
"""
minmatarShipEwTargetPainterMF2
Used by:
Ship: Hyena
Ship: Vigil
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter',
'signatureRadiusBonus', ship.getModifiedItemAttr('shipBonusMF2'),
skill='Minmatar Frigate', **kwargs)
class Effect1577(BaseEffect):
"""
haloSetBonus
Used by:
Implants named like: grade Halo (18 of 18)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(
lambda implant: implant.item.requiresSkill('Cybernetics'),
'signatureRadiusBonus', implant.getModifiedItemAttr('implantSetHalo'), **kwargs)
class Effect1579(BaseEffect):
"""
setBonusSansha
Used by:
Implants named like: grade Amulet (18 of 18)
Implant: High-grade Halo Omega
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'),
'armorHpBonus', implant.getModifiedItemAttr('implantSetAmulet') or 1, **kwargs)
class Effect1581(BaseEffect):
"""
jumpDriveSkillsRangeBonus
Used by:
Skill: Jump Drive Calibration
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('jumpDriveRange', skill.getModifiedItemAttr('jumpDriveRangeBonus') * skill.level, **kwargs)
class Effect1585(BaseEffect):
"""
capitalTurretSkillLaserDamage
Used by:
Skill: Capital Energy Turret
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Energy Turret'),
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect1586(BaseEffect):
"""
capitalTurretSkillProjectileDamage
Used by:
Skill: Capital Projectile Turret
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Projectile Turret'),
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect1587(BaseEffect):
"""
capitalTurretSkillHybridDamage
Used by:
Skill: Capital Hybrid Turret
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'),
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect1588(BaseEffect):
"""
capitalLauncherSkillCitadelKineticDamage
Used by:
Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6)
Skill: XL Torpedoes
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'),
'kineticDamage', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs)
class Effect1590(BaseEffect):
"""
missileSkillAoeVelocityBonus
Used by:
Implants named like: Halcyon G Booster (5 of 5)
Implants named like: Zainou 'Deadeye' Target Navigation Prediction TN (6 of 6)
Modules named like: Warhead Flare Catalyst (8 of 8)
Skill: Target Navigation Prediction
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
penalize = False if 'skill' in context or 'implant' in context or 'booster' in context else True
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'aoeVelocity', container.getModifiedItemAttr('aoeVelocityBonus') * level,
stackingPenalties=penalize, **kwargs)
class Effect1592(BaseEffect):
"""
capitalLauncherSkillCitadelEmDamage
Used by:
Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6)
Skill: XL Torpedoes
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'),
'emDamage', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs)
class Effect1593(BaseEffect):
"""
capitalLauncherSkillCitadelExplosiveDamage
Used by:
Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6)
Skill: XL Torpedoes
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'),
'explosiveDamage', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs)
class Effect1594(BaseEffect):
"""
capitalLauncherSkillCitadelThermalDamage
Used by:
Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6)
Skill: XL Torpedoes
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'),
'thermalDamage', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs)
class Effect1595(BaseEffect):
"""
missileSkillWarheadUpgradesEmDamageBonus
Used by:
Implants named like: 'Pyrolancea' Dose (7 of 7)
Implants named like: Halcyon Y Booster (5 of 5)
Implant: AIR Pyrolancea Booster II
Skill: Warhead Upgrades
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
mod = src.level if 'skill' in context else 1
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'emDamage', src.getModifiedItemAttr('damageMultiplierBonus') * mod, **kwargs)
class Effect1596(BaseEffect):
"""
missileSkillWarheadUpgradesExplosiveDamageBonus
Used by:
Implants named like: 'Pyrolancea' Dose (7 of 7)
Implants named like: Halcyon Y Booster (5 of 5)
Implant: AIR Pyrolancea Booster II
Skill: Warhead Upgrades
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
mod = src.level if 'skill' in context else 1
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'explosiveDamage', src.getModifiedItemAttr('damageMultiplierBonus') * mod, **kwargs)
class Effect1597(BaseEffect):
"""
missileSkillWarheadUpgradesKineticDamageBonus
Used by:
Implants named like: 'Pyrolancea' Dose (7 of 7)
Implants named like: Halcyon Y Booster (5 of 5)
Implant: AIR Pyrolancea Booster II
Skill: Warhead Upgrades
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
mod = src.level if 'skill' in context else 1
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'kineticDamage', src.getModifiedItemAttr('damageMultiplierBonus') * mod, **kwargs)
class Effect1615(BaseEffect):
"""
shipAdvancedSpaceshipCommandAgilityBonus
Used by:
Items from market group: Ships > Capital Ships (52 of 52)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
skillName = 'Advanced Spaceship Command'
skill = fit.character.getSkill(skillName)
fit.ship.boostItemAttr('agility', skill.getModifiedItemAttr('agilityBonus'), skill=skillName, **kwargs)
class Effect1616(BaseEffect):
"""
skillCapitalShipsAdvancedAgility
Used by:
Skill: Capital Ships
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
if fit.ship.item.requiresSkill('Capital Ships'):
fit.ship.boostItemAttr('agility', skill.getModifiedItemAttr('agilityBonus') * skill.level, **kwargs)
class Effect1617(BaseEffect):
"""
shipCapitalAgilityBonus
Used by:
Ships from group: Carrier (4 of 4)
Ships from group: Dreadnought (13 of 13)
Ships from group: Force Auxiliary (6 of 6)
Ships from group: Lancer Dreadnought (4 of 4)
Ships from group: Supercarrier (6 of 6)
Ships from group: Titan (8 of 8)
Ship: Rorqual
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr('agility', src.getModifiedItemAttr('advancedCapitalAgility'),
stackingPenalties=True, **kwargs)
class Effect1634(BaseEffect):
"""
capitalShieldOperationSkillCapacitorNeedBonus
Used by:
Modules named like: Core Defense Capacitor Safeguard (8 of 8)
Skill: Capital Shield Operation
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Operation'),
'capacitorNeed', container.getModifiedItemAttr('shieldBoostCapacitorBonus') * level, **kwargs)
class Effect1635(BaseEffect):
"""
capitalRepairSystemsSkillDurationBonus
Used by:
Implants named like: Chemal Tech Repair Booster (3 of 3)
Modules named like: Nanobot Accelerator (8 of 8)
Implant: AIR Repairer Booster III
Skill: Capital Repair Systems
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Capital Repair Systems'), 'duration',
container.getModifiedItemAttr('durationSkillBonus') * level, **kwargs)
class Effect1638(BaseEffect):
"""
skillAdvancedWeaponUpgradesPowerNeedBonus
Used by:
Skill: Advanced Weapon Upgrades
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: (mod.item.requiresSkill('Gunnery') or
mod.item.requiresSkill('Missile Launcher Operation') or
mod.item.requiresSkill('Vorton Projector Operation')),
'power', skill.getModifiedItemAttr('powerNeedBonus') * skill.level, **kwargs)
class Effect1643(BaseEffect):
"""
armoredCommandMindlink
Used by:
Implants from group: Cyber Leadership (4 of 13)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff2Multiplier',
src.getModifiedItemAttr('mindlinkBonus'), **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff1Multiplier',
src.getModifiedItemAttr('mindlinkBonus'), **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff4Multiplier',
src.getModifiedItemAttr('mindlinkBonus'), **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff3Multiplier',
src.getModifiedItemAttr('mindlinkBonus'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'buffDuration',
src.getModifiedItemAttr('mindlinkBonus'), **kwargs)
class Effect1644(BaseEffect):
"""
skirmishCommandMindlink
Used by:
Implants from group: Cyber Leadership (4 of 13)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff3Multiplier',
src.getModifiedItemAttr('mindlinkBonus'), **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff4Multiplier',
src.getModifiedItemAttr('mindlinkBonus'), **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff2Multiplier',
src.getModifiedItemAttr('mindlinkBonus'), **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff1Multiplier',
src.getModifiedItemAttr('mindlinkBonus'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'buffDuration',
src.getModifiedItemAttr('mindlinkBonus'), **kwargs)
class Effect1645(BaseEffect):
"""
shieldCommandMindlink
Used by:
Implants from group: Cyber Leadership (4 of 13)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff4Multiplier',
src.getModifiedItemAttr('mindlinkBonus'), **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff3Multiplier',
src.getModifiedItemAttr('mindlinkBonus'), **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff2Multiplier',
src.getModifiedItemAttr('mindlinkBonus'), **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff1Multiplier',
src.getModifiedItemAttr('mindlinkBonus'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'buffDuration',
src.getModifiedItemAttr('mindlinkBonus'), **kwargs)
class Effect1646(BaseEffect):
"""
informationCommandMindlink
Used by:
Implants from group: Cyber Leadership (4 of 13)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff4Multiplier',
src.getModifiedItemAttr('mindlinkBonus'), **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff3Multiplier',
src.getModifiedItemAttr('mindlinkBonus'), **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff1Multiplier',
src.getModifiedItemAttr('mindlinkBonus'), **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff2Multiplier',
src.getModifiedItemAttr('mindlinkBonus'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'buffDuration',
src.getModifiedItemAttr('mindlinkBonus'), **kwargs)
class Effect1650(BaseEffect):
"""
skillSiegeModuleConsumptionQuantityBonus
Used by:
Skill: Tactical Weapon Reconfiguration
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
amount = -skill.getModifiedItemAttr('consumptionQuantityBonus')
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill(skill),
'consumptionQuantity', amount * skill.level, **kwargs)
class Effect1657(BaseEffect):
"""
missileSkillWarheadUpgradesThermalDamageBonus
Used by:
Implants named like: 'Pyrolancea' Dose (7 of 7)
Implants named like: Halcyon Y Booster (5 of 5)
Implant: AIR Pyrolancea Booster II
Skill: Warhead Upgrades
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
mod = src.level if 'skill' in context else 1
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'thermalDamage', src.getModifiedItemAttr('damageMultiplierBonus') * mod, **kwargs)
class Effect1668(BaseEffect):
"""
freighterCargoBonusA2
Used by:
Variations of ship: Providence (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('capacity', ship.getModifiedItemAttr('freighterBonusA2'), skill='Amarr Freighter', **kwargs)
class Effect1669(BaseEffect):
"""
freighterCargoBonusC2
Used by:
Variations of ship: Charon (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('capacity', ship.getModifiedItemAttr('freighterBonusC2'), skill='Caldari Freighter', **kwargs)
class Effect1670(BaseEffect):
"""
freighterCargoBonusG2
Used by:
Variations of ship: Obelisk (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('capacity', ship.getModifiedItemAttr('freighterBonusG2'), skill='Gallente Freighter', **kwargs)
class Effect1671(BaseEffect):
"""
freighterCargoBonusM2
Used by:
Variations of ship: Fenrir (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('capacity', ship.getModifiedItemAttr('freighterBonusM2'), skill='Minmatar Freighter', **kwargs)
class Effect1672(BaseEffect):
"""
freighterMaxVelocityBonusA1
Used by:
Ship: Providence
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('freighterBonusA1'), skill='Amarr Freighter', **kwargs)
class Effect1673(BaseEffect):
"""
freighterMaxVelocityBonusC1
Used by:
Ship: Charon
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('freighterBonusC1'), skill='Caldari Freighter', **kwargs)
class Effect1674(BaseEffect):
"""
freighterMaxVelocityBonusG1
Used by:
Ship: Obelisk
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('freighterBonusG1'), skill='Gallente Freighter', **kwargs)
class Effect1675(BaseEffect):
"""
freighterMaxVelocityBonusM1
Used by:
Ship: Fenrir
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('freighterBonusM1'), skill='Minmatar Freighter', **kwargs)
class Effect1720(BaseEffect):
"""
shieldBoostAmplifier
Used by:
Modules from group: Capacitor Power Relay (20 of 20)
Modules from group: Shield Boost Amplifier (23 of 23)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Operation') or mod.item.requiresSkill('Capital Shield Operation'),
'shieldBonus', module.getModifiedItemAttr('shieldBoostMultiplier'),
stackingPenalties=True, **kwargs)
class Effect1722(BaseEffect):
"""
jumpDriveSkillsCapacitorNeedBonus
Used by:
Skill: Jump Drive Operation
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('jumpDriveCapacitorNeed',
skill.getModifiedItemAttr('jumpDriveCapacitorNeedBonus') * skill.level, **kwargs)
class Effect1730(BaseEffect):
"""
droneDmgBonus
Used by:
Skills from group: Drones (9 of 28)
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill(skill),
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect1738(BaseEffect):
"""
doHacking
Used by:
Modules from group: Data Miners (11 of 11)
"""
type = 'active'
class Effect1763(BaseEffect):
"""
missileSkillRapidLauncherRoF
Used by:
Implants named like: Halcyon R Booster (5 of 5)
Implants named like: Zainou 'Deadeye' Rapid Launch RL (6 of 6)
Implant: Whelan Machorin's Ballistic Smartlink
Skill: Missile Launcher Operation
Skill: Rapid Launch
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'),
'speed', container.getModifiedItemAttr('rofBonus') * level, **kwargs)
class Effect1764(BaseEffect):
"""
missileSkillMissileProjectileVelocityBonus
Used by:
Implants named like: Zainou 'Deadeye' Missile Projection MP (6 of 6)
Modules named like: Hydraulic Bay Thrusters (8 of 8)
Skill: Missile Projection
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
penalized = False if 'skill' in context or 'implant' in context or 'booster' in context else True
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'maxVelocity', container.getModifiedItemAttr('speedFactor') * level,
stackingPenalties=penalized, **kwargs)
class Effect1773(BaseEffect):
"""
shipBonusSHTFalloffGF2
Used by:
Ship: Atron
Ship: Daredevil
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'),
'falloff', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs)
class Effect1804(BaseEffect):
"""
shipArmorEMResistanceAF1
Used by:
Ship: Astero
Ship: Malice
Ship: Punisher
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorEmDamageResonance', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs)
class Effect1805(BaseEffect):
"""
shipArmorTHResistanceAF1
Used by:
Ship: Astero
Ship: Malice
Ship: Punisher
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorThermalDamageResonance', ship.getModifiedItemAttr('shipBonusAF'),
skill='Amarr Frigate', **kwargs)
class Effect1806(BaseEffect):
"""
shipArmorKNResistanceAF1
Used by:
Ship: Astero
Ship: Malice
Ship: Punisher
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorKineticDamageResonance', ship.getModifiedItemAttr('shipBonusAF'),
skill='Amarr Frigate', **kwargs)
class Effect1807(BaseEffect):
"""
shipArmorEXResistanceAF1
Used by:
Ship: Astero
Ship: Malice
Ship: Punisher
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusAF'),
skill='Amarr Frigate', **kwargs)
class Effect1812(BaseEffect):
"""
shipShieldEMResistanceCC2
Used by:
Variations of ship: Moa (3 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldEmDamageResonance', ship.getModifiedItemAttr('shipBonusCC2'),
skill='Caldari Cruiser', **kwargs)
class Effect1813(BaseEffect):
"""
shipShieldThermalResistanceCC2
Used by:
Variations of ship: Moa (3 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldThermalDamageResonance', ship.getModifiedItemAttr('shipBonusCC2'),
skill='Caldari Cruiser', **kwargs)
class Effect1814(BaseEffect):
"""
shipShieldKineticResistanceCC2
Used by:
Variations of ship: Moa (3 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldKineticDamageResonance', ship.getModifiedItemAttr('shipBonusCC2'),
skill='Caldari Cruiser', **kwargs)
class Effect1815(BaseEffect):
"""
shipShieldExplosiveResistanceCC2
Used by:
Variations of ship: Moa (3 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusCC2'),
skill='Caldari Cruiser', **kwargs)
class Effect1816(BaseEffect):
"""
shipShieldEMResistanceCF2
Used by:
Variations of ship: Merlin (3 of 4)
Ship: Cambion
Ship: Whiptail
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldEmDamageResonance', ship.getModifiedItemAttr('shipBonusCF'),
skill='Caldari Frigate', **kwargs)
class Effect1817(BaseEffect):
"""
shipShieldThermalResistanceCF2
Used by:
Variations of ship: Merlin (3 of 4)
Ship: Cambion
Ship: Whiptail
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldThermalDamageResonance', ship.getModifiedItemAttr('shipBonusCF'),
skill='Caldari Frigate', **kwargs)
class Effect1819(BaseEffect):
"""
shipShieldKineticResistanceCF2
Used by:
Variations of ship: Merlin (3 of 4)
Ship: Cambion
Ship: Whiptail
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldKineticDamageResonance', ship.getModifiedItemAttr('shipBonusCF'),
skill='Caldari Frigate', **kwargs)
class Effect1820(BaseEffect):
"""
shipShieldExplosiveResistanceCF2
Used by:
Variations of ship: Merlin (3 of 4)
Ship: Cambion
Ship: Whiptail
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusCF'),
skill='Caldari Frigate', **kwargs)
class Effect1848(BaseEffect):
"""
miningForemanMindlink
Used by:
Implant: Mining Foreman Mindlink
Implant: ORE Mining Director Mindlink
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff4Multiplier',
src.getModifiedItemAttr('mindlinkBonus'), **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff2Multiplier',
src.getModifiedItemAttr('mindlinkBonus'), **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff1Multiplier',
src.getModifiedItemAttr('mindlinkBonus'), **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff3Multiplier',
src.getModifiedItemAttr('mindlinkBonus'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'buffDuration',
src.getModifiedItemAttr('mindlinkBonus'), **kwargs)
class Effect1851(BaseEffect):
"""
selfRof
Used by:
Skills named like: Missile Specialization (4 of 5)
Skill: Rocket Specialization
Skill: Torpedo Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill),
'speed', skill.getModifiedItemAttr('rofBonus') * skill.level, **kwargs)
class Effect1862(BaseEffect):
"""
shipMissileEMDamageCF2
Used by:
Ship: Garmur
Ship: Raiju
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'emDamage', ship.getModifiedItemAttr('shipBonusCF2'),
skill='Caldari Frigate', **kwargs)
class Effect1863(BaseEffect):
"""
shipMissileThermalDamageCF2
Used by:
Ship: Garmur
Ship: Raiju
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'thermalDamage', ship.getModifiedItemAttr('shipBonusCF2'),
skill='Caldari Frigate', **kwargs)
class Effect1864(BaseEffect):
"""
shipMissileExplosiveDamageCF2
Used by:
Ship: Garmur
Ship: Raiju
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'explosiveDamage', ship.getModifiedItemAttr('shipBonusCF2'),
skill='Caldari Frigate', **kwargs)
class Effect1882(BaseEffect):
"""
miningYieldMultiplyPercent
Used by:
Modules from group: Mining Upgrade (7 of 12)
Variations of module: Mining Laser Upgrade I (5 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining'),
'miningAmount', module.getModifiedItemAttr('miningAmountBonus'), **kwargs)
class Effect1885(BaseEffect):
"""
shipCruiseLauncherROFBonus2CB
Used by:
Modules named like: Anhinga Mode (3 of 3)
Ship: Raven
Ship: Raven State Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
if 'ship' in context:
skill = 'Caldari Battleship'
penalties = False
penaltyGroup = None
else:
skill = None
penalties = True
penaltyGroup = 'postPerc'
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Missile Launcher Cruise', 'speed',
ship.getModifiedItemAttr('shipBonus2CB'), skill=skill,
stackingPenalties=penalties, penaltyGroup=penaltyGroup, **kwargs)
class Effect1886(BaseEffect):
"""
shipSiegeLauncherROFBonus2CB
Used by:
Modules named like: Anhinga Mode (3 of 3)
Ship: Raven
Ship: Raven State Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
if 'ship' in context:
skill = 'Caldari Battleship'
penalties = False
penaltyGroup = None
else:
skill = None
penalties = True
penaltyGroup = 'postPerc'
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Missile Launcher Torpedo', 'speed',
ship.getModifiedItemAttr('shipBonus2CB'), skill=skill,
stackingPenalties=penalties, penaltyGroup=penaltyGroup, **kwargs)
class Effect1910(BaseEffect):
"""
eliteBonusVampireDrainAmount2
Used by:
Ship: Curse
Ship: Pilgrim
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu',
'powerTransferAmount', ship.getModifiedItemAttr('eliteBonusReconShip2'),
skill='Recon Ships', **kwargs)
class Effect1911(BaseEffect):
"""
eliteReconBonusGravimetricStrength2
Used by:
Ship: Chameleon
Ship: Falcon
Ship: Rook
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM',
'scanGravimetricStrengthBonus', ship.getModifiedItemAttr('eliteBonusReconShip2'),
skill='Recon Ships', **kwargs)
class Effect1912(BaseEffect):
"""
eliteReconBonusMagnetometricStrength2
Used by:
Ship: Chameleon
Ship: Falcon
Ship: Rook
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM',
'scanMagnetometricStrengthBonus', ship.getModifiedItemAttr('eliteBonusReconShip2'),
skill='Recon Ships', **kwargs)
class Effect1913(BaseEffect):
"""
eliteReconBonusRadarStrength2
Used by:
Ship: Chameleon
Ship: Falcon
Ship: Rook
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM',
'scanRadarStrengthBonus', ship.getModifiedItemAttr('eliteBonusReconShip2'),
skill='Recon Ships', **kwargs)
class Effect1914(BaseEffect):
"""
eliteReconBonusLadarStrength2
Used by:
Ship: Chameleon
Ship: Falcon
Ship: Rook
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM',
'scanLadarStrengthBonus', ship.getModifiedItemAttr('eliteBonusReconShip2'),
skill='Recon Ships', **kwargs)
class Effect1921(BaseEffect):
"""
eliteReconStasisWebBonus2
Used by:
Ship: Huginn
Ship: Moracha
Ship: Rapier
Ship: Victor
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web',
'maxRange', ship.getModifiedItemAttr('eliteBonusReconShip2'),
skill='Recon Ships', **kwargs)
class Effect1922(BaseEffect):
"""
eliteReconScramblerRangeBonus2
Used by:
Ship: Arazu
Ship: Enforcer
Ship: Lachesis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler',
'maxRange', ship.getModifiedItemAttr('eliteBonusReconShip2'),
skill='Recon Ships', **kwargs)
class Effect1959(BaseEffect):
"""
armorReinforcerMassAdd
Used by:
Modules from group: Armor Plate (51 of 51)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('mass', module.getModifiedItemAttr('massAddition'), **kwargs)
class Effect1964(BaseEffect):
"""
shipBonusShieldTransferCapneed1
Used by:
Ship: Osprey
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed',
src.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs)
class Effect1969(BaseEffect):
"""
shipBonusRemoteArmorRepairCapNeedGC1
Used by:
Ship: Exequror
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed',
src.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs)
class Effect1996(BaseEffect):
"""
caldariShipEwCapacitorNeedCF2
Used by:
Ship: Griffin
Ship: Kitsune
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM',
'capacitorNeed', ship.getModifiedItemAttr('shipBonusCF2'),
skill='Caldari Frigate', **kwargs)
class Effect2000(BaseEffect):
"""
droneRangeBonusAdd
Used by:
Modules from group: Drone Control Range Module (7 of 7)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
amount = module.getModifiedItemAttr('droneRangeBonus')
fit.extraAttributes.increase('droneControlRange', amount, **kwargs)
class Effect2008(BaseEffect):
"""
cynosuralDurationBonus
Used by:
Ships from group: Black Ops (6 of 6)
Ships from group: Force Recon Ship (9 of 10)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Cynosural Field Theory'),
'duration', ship.getModifiedItemAttr('durationBonus'), **kwargs)
class Effect2013(BaseEffect):
"""
droneMaxVelocityBonus
Used by:
Implants named like: Halcyon R Booster (5 of 5)
Modules named like: Drone Speed Augmentor (6 of 8)
Implant: Overmind 'Goliath' Drone Tuner T25-10S
Implant: Overmind 'Hawkmoth' Drone Tuner S10-25T
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
penalties = False if 'implant' in context or 'booster' in context else True
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'maxVelocity', container.getModifiedItemAttr('droneMaxVelocityBonus') * level,
stackingPenalties=penalties, **kwargs)
class Effect2014(BaseEffect):
"""
droneMaxRangeBonus
Used by:
Modules named like: Drone Scope Chip (6 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
penalized = False if 'skill' in context else True
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'maxRange',
container.getModifiedItemAttr('rangeSkillBonus') * level,
stackingPenalties=penalized, **kwargs)
class Effect2015(BaseEffect):
"""
droneDurabilityShieldCapBonus
Used by:
Modules named like: Drone Durability Enhancer (6 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'shieldCapacity', module.getModifiedItemAttr('hullHpBonus'), **kwargs)
class Effect2016(BaseEffect):
"""
droneDurabilityArmorHPBonus
Used by:
Modules named like: Drone Durability Enhancer (6 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'armorHP', module.getModifiedItemAttr('hullHpBonus'), **kwargs)
class Effect2017(BaseEffect):
"""
droneDurabilityHPBonus
Used by:
Modules named like: Drone Durability Enhancer (6 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'hp', container.getModifiedItemAttr('hullHpBonus') * level, **kwargs)
class Effect2019(BaseEffect):
"""
repairDroneShieldBonusBonus
Used by:
Implants named like: Black Market 'Valdimar' Repair Drone Operation DR (3 of 3)
Modules named like: Drone Repair Augmentor (8 of 8)
Skill: Repair Drone Operation
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
penalized = False if 'skill' in context or 'implant' in context else True
fit.drones.filteredItemBoost(lambda drone: drone.item.group.name == 'Logistic Drone',
'shieldBonus', container.getModifiedItemAttr('damageHP') * level,
stackingPenalties=penalized, **kwargs)
class Effect2020(BaseEffect):
"""
repairDroneArmorDamageAmountBonus
Used by:
Implants named like: Black Market 'Valdimar' Repair Drone Operation DR (3 of 3)
Modules named like: Drone Repair Augmentor (8 of 8)
Skill: Repair Drone Operation
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
penalized = False if 'skill' in context or 'implant' in context else True
fit.drones.filteredItemBoost(lambda drone: drone.item.group.name == 'Logistic Drone',
'armorDamageAmount', container.getModifiedItemAttr('damageHP') * level,
stackingPenalties=penalized, **kwargs)
class Effect2029(BaseEffect):
"""
addToSignatureRadius2
Used by:
Modules from group: Missile Launcher Bomb (2 of 2)
Modules from group: Shield Extender (36 of 36)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('signatureRadius', module.getModifiedItemAttr('signatureRadiusAdd'), **kwargs)
class Effect2041(BaseEffect):
"""
modifyArmorResonancePostPercent
Used by:
Modules from group: Armor Coating (184 of 184)
Modules from group: Energized Armor Membrane (169 of 169)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
for type in ('kinetic', 'thermal', 'explosive', 'em'):
fit.ship.boostItemAttr('armor%sDamageResonance' % type.capitalize(),
module.getModifiedItemAttr('%sDamageResistanceBonus' % type),
stackingPenalties=True, **kwargs)
class Effect2052(BaseEffect):
"""
modifyShieldResonancePostPercent
Used by:
Modules from group: Shield Resistance Amplifier (84 of 84)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
for type in ('kinetic', 'thermal', 'explosive', 'em'):
fit.ship.boostItemAttr('shield%sDamageResonance' % type.capitalize(),
module.getModifiedItemAttr('%sDamageResistanceBonus' % type),
stackingPenalties=True, **kwargs)
class Effect2053(BaseEffect):
"""
emShieldCompensationHardeningBonusGroupShieldAmp
Used by:
Skill: EM Shield Compensation
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Shield Resistance Amplifier',
'emDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs)
class Effect2054(BaseEffect):
"""
explosiveShieldCompensationHardeningBonusGroupShieldAmp
Used by:
Skill: Explosive Shield Compensation
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Shield Resistance Amplifier',
'explosiveDamageResistanceBonus',
skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs)
class Effect2055(BaseEffect):
"""
kineticShieldCompensationHardeningBonusGroupShieldAmp
Used by:
Skill: Kinetic Shield Compensation
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Shield Resistance Amplifier',
'kineticDamageResistanceBonus',
skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs)
class Effect2056(BaseEffect):
"""
thermalShieldCompensationHardeningBonusGroupShieldAmp
Used by:
Skill: Thermal Shield Compensation
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Shield Resistance Amplifier',
'thermalDamageResistanceBonus',
skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs)
class Effect2105(BaseEffect):
"""
emArmorCompensationHardeningBonusGroupArmorCoating
Used by:
Skill: EM Armor Compensation
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Coating',
'emDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs)
class Effect2106(BaseEffect):
"""
explosiveArmorCompensationHardeningBonusGroupArmorCoating
Used by:
Skill: Explosive Armor Compensation
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Coating',
'explosiveDamageResistanceBonus',
skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs)
class Effect2107(BaseEffect):
"""
kineticArmorCompensationHardeningBonusGroupArmorCoating
Used by:
Skill: Kinetic Armor Compensation
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Coating',
'kineticDamageResistanceBonus',
skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs)
class Effect2108(BaseEffect):
"""
thermicArmorCompensationHardeningBonusGroupArmorCoating
Used by:
Skill: Thermal Armor Compensation
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Coating',
'thermalDamageResistanceBonus',
skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs)
class Effect2109(BaseEffect):
"""
emArmorCompensationHardeningBonusGroupEnergized
Used by:
Skill: EM Armor Compensation
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energized Armor Membrane',
'emDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs)
class Effect2110(BaseEffect):
"""
explosiveArmorCompensationHardeningBonusGroupEnergized
Used by:
Skill: Explosive Armor Compensation
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energized Armor Membrane',
'explosiveDamageResistanceBonus',
skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs)
class Effect2111(BaseEffect):
"""
kineticArmorCompensationHardeningBonusGroupEnergized
Used by:
Skill: Kinetic Armor Compensation
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energized Armor Membrane',
'kineticDamageResistanceBonus',
skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs)
class Effect2112(BaseEffect):
"""
thermicArmorCompensationHardeningBonusGroupEnergized
Used by:
Skill: Thermal Armor Compensation
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energized Armor Membrane',
'thermalDamageResistanceBonus',
skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs)
class Effect2130(BaseEffect):
"""
smallHybridMaxRangeBonus
Used by:
Ship: Catalyst
Ship: Cormorant
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'),
'maxRange', ship.getModifiedItemAttr('maxRangeBonus'), **kwargs)
class Effect2131(BaseEffect):
"""
smallEnergyMaxRangeBonus
Used by:
Ship: Coercer
Ship: Gold Magnate
Ship: Silver Magnate
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'),
'maxRange', ship.getModifiedItemAttr('maxRangeBonus'), **kwargs)
class Effect2132(BaseEffect):
"""
smallProjectileMaxRangeBonus
Used by:
Ship: Thrasher
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'),
'maxRange', ship.getModifiedItemAttr('maxRangeBonus'), **kwargs)
class Effect2133(BaseEffect):
"""
energyTransferArrayMaxRangeBonus
Used by:
Ship: Augoror
Ship: Osprey
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter',
'maxRange', ship.getModifiedItemAttr('maxRangeBonus2'), **kwargs)
class Effect2134(BaseEffect):
"""
shieldTransporterMaxRangeBonus
Used by:
Ships from group: Industrial Command Ship (2 of 2)
Ship: Osprey
Ship: Rorqual
Ship: Scythe
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Shield Booster', 'maxRange',
ship.getModifiedItemAttr('maxRangeBonus'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Ancillary Remote Shield Booster', 'maxRange',
ship.getModifiedItemAttr('maxRangeBonus'), **kwargs)
class Effect2135(BaseEffect):
"""
armorRepairProjectorMaxRangeBonus
Used by:
Variations of ship: Navitas (2 of 2)
Ship: Augoror
Ship: Deacon
Ship: Exequror
Ship: Inquisitor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Armor Repairer', 'maxRange',
src.getModifiedItemAttr('maxRangeBonus'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Ancillary Remote Armor Repairer', 'maxRange',
src.getModifiedItemAttr('maxRangeBonus'), **kwargs)
class Effect2143(BaseEffect):
"""
minmatarShipEwTargetPainterMC2
Used by:
Ship: Huginn
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter',
'signatureRadiusBonus', ship.getModifiedItemAttr('shipBonusMC2'),
skill='Minmatar Cruiser', **kwargs)
class Effect2152(BaseEffect):
"""
jumpPortalGeneration
Used by:
Module: Industrial Jump Portal Generator I
Module: Jump Portal Generator I
"""
type = 'active'
@staticmethod
def handler(fit, mod, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs)
fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs)
class Effect2155(BaseEffect):
"""
eliteBonusCommandShipProjectileDamageCS1
Used by:
Ship: Sleipnir
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'),
'damageMultiplier', ship.getModifiedItemAttr('eliteBonusCommandShips1'),
skill='Command Ships', **kwargs)
class Effect2156(BaseEffect):
"""
eliteBonusCommandShipProjectileFalloffCS2
Used by:
Ship: Sleipnir
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'),
'falloff', ship.getModifiedItemAttr('eliteBonusCommandShips2'),
skill='Command Ships', **kwargs)
class Effect2157(BaseEffect):
"""
eliteBonusCommandShipLaserDamageCS1
Used by:
Ship: Absolution
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'),
'damageMultiplier', ship.getModifiedItemAttr('eliteBonusCommandShips1'),
skill='Command Ships', **kwargs)
class Effect2160(BaseEffect):
"""
eliteBonusCommandShipHybridFalloffCS2
Used by:
Ship: Astarte
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'falloff', ship.getModifiedItemAttr('eliteBonusCommandShips2'),
skill='Command Ships', **kwargs)
class Effect2179(BaseEffect):
"""
shipBonusDroneHitpointsGC2
Used by:
Ships named like: Stratios (2 of 2)
Ship: Vexor
Ship: Vexor Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for type in ('shieldCapacity', 'armorHP', 'hp'):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
type, ship.getModifiedItemAttr('shipBonusGC2'),
skill='Gallente Cruiser', **kwargs)
class Effect2181(BaseEffect):
"""
shipBonusDroneHitpointsFixedAC2
Used by:
Variations of ship: Arbitrator (3 of 3)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for type in ('shieldCapacity', 'armorHP', 'hp'):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
type, ship.getModifiedItemAttr('shipBonusAC2'),
skill='Amarr Cruiser', **kwargs)
class Effect2186(BaseEffect):
"""
shipBonusDroneHitpointsGB2
Used by:
Variations of ship: Dominix (3 of 3)
Ship: Nestor
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for type in ('shieldCapacity', 'armorHP', 'hp'):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
type, ship.getModifiedItemAttr('shipBonusGB2'),
skill='Gallente Battleship', **kwargs)
class Effect2187(BaseEffect):
"""
shipBonusDroneDamageMultiplierGB2
Used by:
Variations of ship: Dominix (3 of 3)
Ship: Nestor
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusGB2'),
skill='Gallente Battleship', **kwargs)
class Effect2188(BaseEffect):
"""
shipBonusDroneDamageMultiplierGC2
Used by:
Ships named like: Stratios (2 of 2)
Ship: Vexor
Ship: Vexor Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusGC2'),
skill='Gallente Cruiser', **kwargs)
class Effect2189(BaseEffect):
"""
shipBonusDroneDamageMultiplierAC2
Used by:
Variations of ship: Arbitrator (3 of 3)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusAC2'),
skill='Amarr Cruiser', **kwargs)
class Effect2201(BaseEffect):
"""
eliteBonusInterdictorsProjectileFalloff1
Used by:
Ship: Sabre
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'),
'falloff', ship.getModifiedItemAttr('eliteBonusInterdictors1'),
skill='Interdictors', **kwargs)
class Effect2215(BaseEffect):
"""
shipBonusPirateFrigateProjDamage
Used by:
Ship: Chremoas
Ship: Dramiel
Ship: Mekubal
Ship: Metamorphosis
Ship: Sunesis
Ship: Svipul
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect2232(BaseEffect):
"""
scanStrengthBonusPercentOnline
Used by:
Modules from group: Signal Amplifier (7 of 7)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
for type in ('Gravimetric', 'Magnetometric', 'Radar', 'Ladar'):
fit.ship.boostItemAttr('scan%sStrength' % type,
module.getModifiedItemAttr('scan%sStrengthPercent' % type),
stackingPenalties=True, **kwargs)
class Effect2249(BaseEffect):
"""
shipBonusDroneMiningAmountAC2
Used by:
Ship: Arbitrator
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'miningAmount', ship.getModifiedItemAttr('shipBonusAC2'),
skill='Amarr Cruiser', **kwargs)
class Effect2250(BaseEffect):
"""
shipBonusDroneMiningAmountGC2
Used by:
Ship: Vexor
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Mining Drone Operation'),
'miningAmount', ship.getModifiedItemAttr('shipBonusGC2'),
skill='Gallente Cruiser', **kwargs)
class Effect2251(BaseEffect):
"""
commandshipMultiRelayEffect
Used by:
Ships from group: Command Ship (8 of 8)
Ships from group: Industrial Command Ship (2 of 2)
Ship: Odysseus
Ship: Rorqual
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupOnline',
src.getModifiedItemAttr('maxGangModules'), **kwargs)
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupActive',
src.getModifiedItemAttr('maxGangModules'), **kwargs)
class Effect2252(BaseEffect):
"""
covertOpsAndReconOpsCloakModuleDelayBonus
Used by:
Ships from group: Black Ops (6 of 6)
Ships from group: Blockade Runner (5 of 5)
Ships from group: Covert Ops (9 of 9)
Ships from group: Expedition Frigate (2 of 2)
Ships from group: Force Recon Ship (10 of 10)
Ships from group: Stealth Bomber (5 of 5)
Ships named like: Stratios (2 of 2)
Subsystems named like: Defensive Covert Reconfiguration (4 of 4)
Ship: Astero
Ship: Cenotaph
Ship: Metamorphosis
Ship: Odysseus
Ship: Rabisu
Ship: Tholos
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredItemForce(lambda mod: mod.item.requiresSkill('Cloaking'),
'moduleReactivationDelay',
container.getModifiedItemAttr('covertOpsAndReconOpsCloakModuleDelay'), **kwargs)
class Effect2253(BaseEffect):
"""
covertOpsStealthBomberTargettingDelayBonus
Used by:
Ships from group: Black Ops (6 of 6)
Ships from group: Stealth Bomber (5 of 5)
Ship: Caedes
Ship: Chremoas
Ship: Endurance
Ship: Etana
Ship: Rabisu
Ship: Sidewinder
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemForce(lambda mod: mod.item.group.name == 'Cloaking Device',
'cloakingTargetingDelay',
ship.getModifiedItemAttr('covertOpsStealthBomberTargettingDelay'), **kwargs)
class Effect2255(BaseEffect):
"""
tractorBeamCan
Used by:
Deployables from group: Mobile Tractor Unit (5 of 5)
Modules from group: Tractor Beam (6 of 6)
"""
type = 'active'
class Effect2296(BaseEffect):
"""
modifyArmorResonancePassivePostPercentPassive
Used by:
Implants named like: Halcyon Y Booster (5 of 5)
Implants named like: Tetrimon Resistance Booster (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, booster, context, projectionRange, **kwargs):
for srcResType, tgtResType in (
('Em', 'Em'),
('Explosive', 'Explosive'),
('Kinetic', 'Kinetic'),
('Thermic', 'Thermal')
):
fit.ship.boostItemAttr(f'armor{tgtResType}DamageResonance',
booster.getModifiedItemAttr(f'passive{srcResType}DamageResistanceBonus'), **kwargs)
class Effect2297(BaseEffect):
"""
modifyShieldResonancePassivePostPercentPassive
Used by:
Implants named like: Halcyon B Booster (5 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for srcResType, tgtResType in (
('Em', 'Em'),
('Explosive', 'Explosive'),
('Kinetic', 'Kinetic'),
('Thermic', 'Thermal')
):
fit.ship.boostItemAttr(f'shield{tgtResType}DamageResonance',
ship.getModifiedItemAttr(f'passive{srcResType}DamageResistanceBonus'), **kwargs)
class Effect2298(BaseEffect):
"""
scanStrengthBonusPercentPassive
Used by:
Implants named like: Halcyon B Booster (5 of 5)
Implants named like: Halcyon G Booster (5 of 5)
Implants named like: High grade Grail (5 of 6)
Implants named like: High grade Jackal (5 of 6)
Implants named like: High grade Spur (5 of 6)
Implants named like: High grade Talon (5 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
for type in ('Gravimetric', 'Magnetometric', 'Radar', 'Ladar'):
sensorType = 'scan{0}Strength'.format(type)
sensorBoost = 'scan{0}StrengthPercent'.format(type)
if sensorBoost in implant.item.attributes:
fit.ship.boostItemAttr(sensorType, implant.getModifiedItemAttr(sensorBoost), **kwargs)
class Effect2302(BaseEffect):
"""
damageControl
Used by:
Modules from group: Damage Control (25 of 30)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
for layer, attrPrefix in (('shield', 'shield'), ('armor', 'armor'), ('hull', '')):
for damageType in ('Kinetic', 'Thermal', 'Explosive', 'Em'):
bonus = '%s%sDamageResonance' % (attrPrefix, damageType)
bonus = '%s%s' % (bonus[0].lower(), bonus[1:])
booster = '%s%sDamageResonance' % (layer, damageType)
fit.ship.multiplyItemAttr(bonus, module.getModifiedItemAttr(booster),
stackingPenalties=True, penaltyGroup='preMul', **kwargs)
class Effect2305(BaseEffect):
"""
eliteReconBonusEnergyNeutAmount2
Used by:
Ship: Curse
Ship: Pilgrim
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer',
'energyNeutralizerAmount', ship.getModifiedItemAttr('eliteBonusReconShip2'),
skill='Recon Ships', **kwargs)
class Effect2354(BaseEffect):
"""
capitalRemoteArmorRepairerCapNeedBonusSkill
Used by:
Variations of module: Capital Remote Repair Augmentor I (2 of 2)
Skill: Capital Remote Armor Repair Systems
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Remote Armor Repair Systems'),
'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs)
class Effect2355(BaseEffect):
"""
capitalRemoteShieldTransferCapNeedBonusSkill
Used by:
Skill: Capital Shield Emission Systems
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Emission Systems'),
'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs)
class Effect2356(BaseEffect):
"""
capitalRemoteEnergyTransferCapNeedBonusSkill
Used by:
Skill: Capital Capacitor Emission Systems
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Capacitor Emission Systems'),
'capacitorNeed', skill.getModifiedItemAttr('capNeedBonus') * skill.level, **kwargs)
class Effect2402(BaseEffect):
"""
skillSuperWeaponDmgBonus
Used by:
Skill: Advanced Doomsday Operation
Skill: Doomsday Operation
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
damageTypes = ('em', 'explosive', 'kinetic', 'thermal')
for dmgType in damageTypes:
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Doomsday Operation'), f'{dmgType}Damage',
skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect2422(BaseEffect):
"""
implantVelocityBonus
Used by:
Implants named like: Eifyr and Co. 'Rogue' Navigation NN (6 of 6)
Implant: Genolution Core Augmentation CA-3
Implant: Shaqil's Speed Enhancer
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', implant.getModifiedItemAttr('implantBonusVelocity'), **kwargs)
class Effect2432(BaseEffect):
"""
energyManagementCapacitorCapacityBonusPostPercentPassive
Used by:
Implants named like: Halcyon B Booster (5 of 5)
Implants named like: Halcyon Y Booster (5 of 5)
Implants named like: Inherent Implants 'Squire' Capacitor Management EM (6 of 6)
Implants named like: Mindflood Booster (4 of 4)
Implants named like: Tetrimon Capacitor Booster (4 of 4)
Modules named like: Semiconductor Memory Cell (8 of 8)
Implant: Antipharmakon Aeolis
Implant: Basic Capsuleer Engineering Augmentation Chip
Implant: Genolution Core Augmentation CA-1
Skill: Capacitor Management
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.ship.boostItemAttr('capacitorCapacity', container.getModifiedItemAttr('capacitorCapacityBonus') * level, **kwargs)
class Effect2444(BaseEffect):
"""
minerCpuUsageMultiplyPercent2
Used by:
Modules from group: Mining Upgrade (7 of 12)
Variations of module: Mining Laser Upgrade I (5 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining'),
'cpu', module.getModifiedItemAttr('cpuPenaltyPercent'), **kwargs)
class Effect2445(BaseEffect):
"""
iceMinerCpuUsagePercent
Used by:
Variations of module: Ice Harvester Upgrade I (5 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Ice Harvesting'),
'cpu', module.getModifiedItemAttr('cpuPenaltyPercent'), **kwargs)
class Effect2456(BaseEffect):
"""
miningUpgradeCPUPenaltyReductionModulesRequiringMiningUpgradePercent
Used by:
Implants named like: Inherent Implants 'Highwall' Mining Upgrades MU (3 of 3)
Skill: Mining Upgrades
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Upgrades'),
'cpuPenaltyPercent',
container.getModifiedItemAttr('miningUpgradeCPUReductionBonus') * level, **kwargs)
class Effect2465(BaseEffect):
"""
shipBonusArmorResistAB
Used by:
Ship: Abaddon
Ship: Nestor
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for type in ('Em', 'Explosive', 'Kinetic', 'Thermal'):
fit.ship.boostItemAttr('armor{0}DamageResonance'.format(type), ship.getModifiedItemAttr('shipBonusAB'),
skill='Amarr Battleship', **kwargs)
class Effect2479(BaseEffect):
"""
iceHarvestCycleTimeModulesRequiringIceHarvestingOnline
Used by:
Variations of module: Ice Harvester Upgrade I (5 of 5)
Module: Frostline 'Omnivore' Harvester Upgrade
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Ice Harvesting'),
'duration', module.getModifiedItemAttr('iceHarvestCycleBonus'), **kwargs)
class Effect2485(BaseEffect):
"""
implantArmorHpBonus2
Used by:
Implants named like: Capsuleer Defense Augmentation Chip (3 of 3)
Implants named like: Festival only 'Rock' AH Dose (4 of 4)
Implants named like: Inherent Implants 'Noble' Hull Upgrades HG (7 of 7)
Implants named like: Serenity Limited 'Hardshell' Dose (3 of 3)
Implant: Genolution Core Augmentation CA-4
Implant: Imperial Navy Modified 'Noble' Implant
Implant: Imperial Special Ops Field Enhancer - Standard
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorHP', implant.getModifiedItemAttr('armorHpBonus2'), **kwargs)
class Effect2488(BaseEffect):
"""
implantVelocityBonus2
Used by:
Implant: Republic Special Ops Field Enhancer - Gamma
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', implant.getModifiedItemAttr('velocityBonus2'), **kwargs)
class Effect2489(BaseEffect):
"""
shipBonusRemoteTrackingComputerFalloffMC
Used by:
Ship: Scimitar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer',
'falloffEffectiveness', ship.getModifiedItemAttr('shipBonusMC'),
skill='Minmatar Cruiser', **kwargs)
class Effect2490(BaseEffect):
"""
shipBonusRemoteTrackingComputerFalloffGC2
Used by:
Ship: Oneiros
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer',
'falloffEffectiveness', ship.getModifiedItemAttr('shipBonusGC2'),
skill='Gallente Cruiser', **kwargs)
class Effect2491(BaseEffect):
"""
ewSkillEcmBurstRangeBonus
Used by:
Modules named like: Particle Dispersion Projector (8 of 8)
Skill: Long Distance Jamming
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Burst Jammer',
'ecmBurstRange', container.getModifiedItemAttr('rangeSkillBonus') * level, **kwargs)
class Effect2492(BaseEffect):
"""
ewSkillEcmBurstCapNeedBonus
Used by:
Implants named like: Zainou 'Gypsy' Electronic Warfare EW (6 of 6)
Modules named like: Signal Disruption Amplifier (8 of 8)
Skill: Electronic Warfare
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Burst Jammer',
'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs)
class Effect2503(BaseEffect):
"""
shipHTTrackingBonusGB2
Used by:
Ships named like: Megathron (3 of 3)
Ship: Marshal
Ship: Python
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'),
'trackingSpeed', ship.getModifiedItemAttr('shipBonusGB2'),
skill='Gallente Battleship', **kwargs)
class Effect2504(BaseEffect):
"""
shipBonusHybridTrackingGF2
Used by:
Ship: Ares
Ship: Federation Navy Comet
Ship: Pacifier
Ship: Sidewinder
Ship: Tristan
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'),
'trackingSpeed', ship.getModifiedItemAttr('shipBonusGF2'),
skill='Gallente Frigate', **kwargs)
class Effect2561(BaseEffect):
"""
eliteBonusAssaultShipMissileVelocity1
Used by:
Ship: Hawk
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'maxVelocity', ship.getModifiedItemAttr('eliteBonusGunship1'),
skill='Assault Frigates', **kwargs)
class Effect2589(BaseEffect):
"""
modifyBoosterEffectChanceWithBoosterChanceBonusPostPercent
Used by:
Implants named like: Eifyr and Co. 'Alchemist' Neurotoxin Recovery NR (2 of 2)
Skill: Neurotoxin Recovery
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
for i in range(5):
attr = 'boosterEffectChance{0}'.format(i + 1)
fit.boosters.filteredItemBoost(lambda booster: attr in booster.itemModifiedAttributes,
attr, container.getModifiedItemAttr('boosterChanceBonus') * level, **kwargs)
class Effect2602(BaseEffect):
"""
shipBonusEmShieldResistanceCB2
Used by:
Ship: Rattlesnake
Ship: Rokh
Ship: Scorpion Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldEmDamageResonance', ship.getModifiedItemAttr('shipBonus2CB'),
skill='Caldari Battleship', **kwargs)
class Effect2603(BaseEffect):
"""
shipBonusExplosiveShieldResistanceCB2
Used by:
Ship: Rattlesnake
Ship: Rokh
Ship: Scorpion Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonus2CB'),
skill='Caldari Battleship', **kwargs)
class Effect2604(BaseEffect):
"""
shipBonusKineticShieldResistanceCB2
Used by:
Ship: Rattlesnake
Ship: Rokh
Ship: Scorpion Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldKineticDamageResonance', ship.getModifiedItemAttr('shipBonus2CB'),
skill='Caldari Battleship', **kwargs)
class Effect2605(BaseEffect):
"""
shipBonusThermicShieldResistanceCB2
Used by:
Ship: Rattlesnake
Ship: Rokh
Ship: Scorpion Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldThermalDamageResonance', ship.getModifiedItemAttr('shipBonus2CB'),
skill='Caldari Battleship', **kwargs)
class Effect2611(BaseEffect):
"""
eliteBonusGunshipProjectileDamage1
Used by:
Ship: Wolf
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'),
'damageMultiplier', ship.getModifiedItemAttr('eliteBonusGunship1'),
skill='Assault Frigates', **kwargs)
class Effect2644(BaseEffect):
"""
increaseSignatureRadiusOnline
Used by:
Modules from group: Inertial Stabilizer (7 of 7)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('signatureRadius', module.getModifiedItemAttr('signatureRadiusBonus'),
stackingPenalties=True, **kwargs)
class Effect2645(BaseEffect):
"""
scanResolutionMultiplierOnline
Used by:
Modules from group: Interdiction Nullifier (4 of 4)
Modules from group: Warp Core Stabilizer (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr('scanResolution', module.getModifiedItemAttr('scanResolutionMultiplier'),
stackingPenalties=True, **kwargs)
class Effect2646(BaseEffect):
"""
maxTargetRangeBonus
Used by:
Modules from group: Interdiction Nullifier (4 of 4)
Modules from group: Warp Core Stabilizer (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRangeBonus'),
stackingPenalties=True, **kwargs)
class Effect2647(BaseEffect):
"""
eliteBonusHeavyGunshipHeavyMissileLauncherRof2
Used by:
Ship: Cerberus
Ship: Muninn
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy',
'speed', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'),
skill='Heavy Assault Cruisers', **kwargs)
class Effect2648(BaseEffect):
"""
eliteBonusHeavyGunshipHeavyAssaultMissileLauncherRof2
Used by:
Ship: Cerberus
Ship: Muninn
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy Assault',
'speed', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'),
skill='Heavy Assault Cruisers', **kwargs)
class Effect2649(BaseEffect):
"""
eliteBonusHeavyGunshipAssaultMissileLauncherRof2
Used by:
Ship: Cerberus
Ship: Muninn
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rapid Light',
'speed', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'),
skill='Heavy Assault Cruisers', **kwargs)
class Effect2670(BaseEffect):
"""
sensorBoosterActivePercentage
Used by:
Modules from group: Sensor Booster (16 of 16)
"""
type = 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRangeBonus'),
stackingPenalties=True, **kwargs)
fit.ship.boostItemAttr('scanResolution', module.getModifiedItemAttr('scanResolutionBonus'),
stackingPenalties=True, **kwargs)
for scanType in ('Gravimetric', 'Magnetometric', 'Radar', 'Ladar'):
fit.ship.boostItemAttr(
'scan{}Strength'.format(scanType),
module.getModifiedItemAttr('scan{}StrengthPercent'.format(scanType)),
stackingPenalties=True, **kwargs)
class Effect2688(BaseEffect):
"""
capNeedBonusEffectLasers
Used by:
Modules named like: Energy Discharge Elutriation (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Weapon',
'capacitorNeed', module.getModifiedItemAttr('capNeedBonus'), **kwargs)
class Effect2689(BaseEffect):
"""
capNeedBonusEffectHybrids
Used by:
Modules named like: Hybrid Discharge Elutriation (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Hybrid Weapon',
'capacitorNeed', module.getModifiedItemAttr('capNeedBonus'), **kwargs)
class Effect2690(BaseEffect):
"""
cpuNeedBonusEffectLasers
Used by:
Modules named like: Algid Energy Administrations Unit (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Weapon',
'cpu', module.getModifiedItemAttr('cpuNeedBonus'), **kwargs)
class Effect2691(BaseEffect):
"""
cpuNeedBonusEffectHybrid
Used by:
Modules named like: Algid Hybrid Administrations Unit (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Hybrid Weapon',
'cpu', module.getModifiedItemAttr('cpuNeedBonus'), **kwargs)
class Effect2693(BaseEffect):
"""
falloffBonusEffectLasers
Used by:
Modules named like: Energy Ambit Extension (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
penalize = False if 'booster' in context else True
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Weapon',
'falloff', module.getModifiedItemAttr('falloffBonus'),
stackingPenalties=penalize, **kwargs)
class Effect2694(BaseEffect):
"""
falloffBonusEffectHybrids
Used by:
Modules named like: Hybrid Ambit Extension (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
penalize = 'booster' not in context
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Hybrid Weapon',
'falloff', module.getModifiedItemAttr('falloffBonus'),
stackingPenalties=penalize, **kwargs)
class Effect2695(BaseEffect):
"""
falloffBonusEffectProjectiles
Used by:
Modules named like: Projectile Ambit Extension (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
penalize = 'booster' not in context
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Projectile Weapon',
'falloff', module.getModifiedItemAttr('falloffBonus'),
stackingPenalties=penalize, **kwargs)
class Effect2696(BaseEffect):
"""
maxRangeBonusEffectLasers
Used by:
Implants named like: Tetrimon Precision Booster (4 of 4)
Modules named like: Energy Locus Coordinator (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
penalties = 'booster' not in context
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Weapon',
'maxRange', module.getModifiedItemAttr('maxRangeBonus'),
stackingPenalties=penalties, **kwargs)
class Effect2697(BaseEffect):
"""
maxRangeBonusEffectHybrids
Used by:
Modules named like: Hybrid Locus Coordinator (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
penalties = 'booster' not in context
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Hybrid Weapon',
'maxRange', module.getModifiedItemAttr('maxRangeBonus'),
stackingPenalties=penalties, **kwargs)
class Effect2698(BaseEffect):
"""
maxRangeBonusEffectProjectiles
Used by:
Modules named like: Projectile Locus Coordinator (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
penalize = False if 'booster' in context else True
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Projectile Weapon',
'maxRange', module.getModifiedItemAttr('maxRangeBonus'),
stackingPenalties=penalize, **kwargs)
class Effect2706(BaseEffect):
"""
drawbackPowerNeedLasers
Used by:
Modules from group: Rig Energy Weapon (56 of 56)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Weapon',
'power', module.getModifiedItemAttr('drawback'), **kwargs)
class Effect2707(BaseEffect):
"""
drawbackPowerNeedHybrids
Used by:
Modules from group: Rig Hybrid Weapon (56 of 56)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Hybrid Weapon',
'power', module.getModifiedItemAttr('drawback'), **kwargs)
class Effect2708(BaseEffect):
"""
drawbackPowerNeedProjectiles
Used by:
Modules from group: Rig Projectile Weapon (40 of 40)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Projectile Weapon',
'power', module.getModifiedItemAttr('drawback'), **kwargs)
class Effect2712(BaseEffect):
"""
drawbackArmorHP
Used by:
Modules from group: Rig Navigation (48 of 64)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorHP', module.getModifiedItemAttr('drawback'), **kwargs)
class Effect2713(BaseEffect):
"""
drawbackCPUOutput
Used by:
Modules from group: Rig Drones (58 of 64)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('cpuOutput', module.getModifiedItemAttr('drawback'), **kwargs)
class Effect2714(BaseEffect):
"""
drawbackCPUNeedLaunchers
Used by:
Modules from group: Rig Launcher (48 of 48)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'),
'cpu', module.getModifiedItemAttr('drawback'), **kwargs)
class Effect2716(BaseEffect):
"""
drawbackSigRad
Used by:
Modules from group: Rig Shield (72 of 72)
Modules named like: Optimizer (16 of 16)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('signatureRadius', module.getModifiedItemAttr('drawback'),
stackingPenalties=True, **kwargs)
class Effect2717(BaseEffect):
"""
drawbackAgility
Used by:
Modules from group: Rig Armor (48 of 72)
Modules from group: Rig Resource Processing (8 of 10)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('agility', module.getModifiedItemAttr('drawback'),
stackingPenalties=True, **kwargs)
class Effect2718(BaseEffect):
"""
drawbackShieldCapacity
Used by:
Modules from group: Rig Electronic Systems (40 of 48)
Modules from group: Rig Targeting (16 of 16)
Modules named like: Signal Focusing Kit (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldCapacity', module.getModifiedItemAttr('drawback'), **kwargs)
class Effect2726(BaseEffect):
"""
miningClouds
Used by:
Modules named like: Gas Cloud (10 of 10)
"""
type = 'active'
class Effect2727(BaseEffect):
"""
gasCloudHarvestingMaxGroupSkillLevel
Used by:
Skill: Gas Cloud Harvesting
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemIncrease(lambda mod: mod.item.group.name == 'Gas Cloud Scoops',
'maxGroupActive', skill.level, **kwargs)
class Effect2734(BaseEffect):
"""
shipECMScanStrengthBonusCF
Used by:
Ship: Griffin
Ship: Kitsune
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for type in ('Gravimetric', 'Ladar', 'Radar', 'Magnetometric'):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM',
'scan{0}StrengthBonus'.format(type),
ship.getModifiedItemAttr('shipBonusCF'),
skill='Caldari Frigate', **kwargs)
class Effect2735(BaseEffect):
"""
boosterArmorHpPenalty
Used by:
Implants named like: Crash Booster (3 of 4)
Implants named like: Exile Booster (3 of 4)
Implants named like: Frentix Booster (3 of 4)
Implants named like: X Instinct Booster (3 of 4)
"""
runTime = 'late'
attr = 'boosterArmorHPPenalty'
displayName = 'Armor Capacity'
type = 'boosterSideEffect'
@classmethod
def handler(cls, fit, booster, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorHP', booster.getModifiedItemAttr(cls.attr), **kwargs)
class Effect2736(BaseEffect):
"""
boosterArmorRepairAmountPenalty
Used by:
Implants named like: Drop Booster (3 of 4)
Implants named like: Mindflood Booster (3 of 4)
Implants named like: Sooth Sayer Booster (3 of 4)
"""
runTime = 'late'
attr = 'boosterArmorRepairAmountPenalty'
displayName = 'Armor Repair Amount'
type = 'boosterSideEffect'
@classmethod
def handler(cls, fit, booster, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Armor Repair Unit', 'Ancillary Armor Repairer'),
'armorDamageAmount', booster.getModifiedItemAttr(cls.attr), **kwargs)
class Effect2737(BaseEffect):
"""
boosterShieldCapacityPenalty
Used by:
Implants named like: Blue Pill Booster (3 of 5)
Implants named like: Drop Booster (3 of 4)
Implants named like: Sooth Sayer Booster (3 of 4)
Implants named like: X Instinct Booster (3 of 4)
"""
runTime = 'late'
attr = 'boosterShieldCapacityPenalty'
displayName = 'Shield Capacity'
type = 'boosterSideEffect'
@classmethod
def handler(cls, fit, booster, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldCapacity', booster.getModifiedItemAttr(cls.attr), **kwargs)
class Effect2739(BaseEffect):
"""
boosterTurretOptimalRangePenalty
Used by:
Implants named like: Blue Pill Booster (3 of 5)
Implants named like: Mindflood Booster (3 of 4)
Implants named like: Sooth Sayer Booster (3 of 4)
"""
runTime = 'late'
attr = 'boosterTurretOptimalRangePenalty'
displayName = 'Turret Optimal Range'
type = 'boosterSideEffect'
@classmethod
def handler(cls, fit, booster, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'),
'maxRange', booster.getModifiedItemAttr(cls.attr), **kwargs)
class Effect2741(BaseEffect):
"""
boosterTurretFalloffPenalty
Used by:
Implants named like: Drop Booster (3 of 4)
Implants named like: X Instinct Booster (3 of 4)
"""
runTime = 'late'
attr = 'boosterTurretFalloffPenalty'
displayName = 'Turret Falloff'
type = 'boosterSideEffect'
@classmethod
def handler(cls, fit, booster, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'),
'falloff', booster.getModifiedItemAttr(cls.attr), **kwargs)
class Effect2745(BaseEffect):
"""
boosterCapacitorCapacityPenalty
Used by:
Implants named like: Blue Pill Booster (3 of 5)
Implants named like: Exile Booster (3 of 4)
"""
runTime = 'late'
attr = 'boosterCapacitorCapacityPenalty'
displayName = 'Cap Capacity'
type = 'boosterSideEffect'
@classmethod
def handler(cls, fit, booster, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('capacitorCapacity', booster.getModifiedItemAttr(cls.attr), **kwargs)
class Effect2746(BaseEffect):
"""
boosterMaxVelocityPenalty
Used by:
Implants named like: Crash Booster (3 of 4)
Items from market group: Implants & Boosters > Booster > Booster Slot 02 (9 of 13)
"""
runTime = 'late'
attr = 'boosterMaxVelocityPenalty'
displayName = 'Velocity'
type = 'boosterSideEffect'
@classmethod
def handler(cls, fit, booster, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', booster.getModifiedItemAttr(cls.attr), **kwargs)
class Effect2747(BaseEffect):
"""
boosterTurretTrackingPenalty
Used by:
Implants named like: Exile Booster (3 of 4)
Implants named like: Frentix Booster (3 of 4)
"""
runTime = 'late'
attr = 'boosterTurretTrackingPenalty'
displayName = 'Turret Tracking'
type = 'boosterSideEffect'
@classmethod
def handler(cls, fit, booster, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'),
'trackingSpeed', booster.getModifiedItemAttr(cls.attr), **kwargs)
class Effect2748(BaseEffect):
"""
boosterMissileVelocityPenalty
Used by:
Implants named like: Crash Booster (3 of 4)
Implants named like: X Instinct Booster (3 of 4)
"""
runTime = 'late'
attr = 'boosterMissileVelocityPenalty'
displayName = 'Missile Velocity'
type = 'boosterSideEffect'
@classmethod
def handler(cls, fit, booster, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'maxVelocity', booster.getModifiedItemAttr(cls.attr), **kwargs)
class Effect2749(BaseEffect):
"""
boosterMissileExplosionVelocityPenalty
Used by:
Implants named like: Blue Pill Booster (3 of 5)
"""
runTime = 'late'
attr = 'boosterAOEVelocityPenalty'
displayName = 'Missile Explosion Velocity'
type = 'boosterSideEffect'
@classmethod
def handler(cls, fit, booster, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'aoeVelocity', booster.getModifiedItemAttr(cls.attr), **kwargs)
class Effect2756(BaseEffect):
"""
shipBonusECMStrengthBonusCC
Used by:
Ship: Blackbird
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for type in ('Gravimetric', 'Magnetometric', 'Ladar', 'Radar'):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM',
'scan{0}StrengthBonus'.format(type), ship.getModifiedItemAttr('shipBonusCC'),
skill='Caldari Cruiser', **kwargs)
class Effect2757(BaseEffect):
"""
salvaging
Used by:
Modules from group: Salvager (3 of 3)
"""
type = 'active'
class Effect2760(BaseEffect):
"""
boosterModifyBoosterArmorPenalties
Used by:
Implants named like: Eifyr and Co. 'Alchemist' Neurotoxin Control NC (2 of 2)
Implants named like: grade Edge (10 of 12)
Skill: Neurotoxin Control
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
attrs = ('boosterArmorHPPenalty', 'boosterArmorRepairAmountPenalty')
for attr in attrs:
fit.boosters.filteredItemBoost(lambda booster: True, attr,
container.getModifiedItemAttr('boosterAttributeModifier') * level, **kwargs)
class Effect2763(BaseEffect):
"""
boosterModifyBoosterShieldPenalty
Used by:
Implants named like: Eifyr and Co. 'Alchemist' Neurotoxin Control NC (2 of 2)
Implants named like: grade Edge (10 of 12)
Skill: Neurotoxin Control
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
attrs = ('boosterShieldBoostAmountPenalty', 'boosterShieldCapacityPenalty', 'shieldBoostMultiplier')
for attr in attrs:
# shieldBoostMultiplier can be positive (Blue Pill) and negative value (other boosters)
# We're interested in decreasing only side-effects
fit.boosters.filteredItemBoost(lambda booster: booster.getModifiedItemAttr(attr) < 0,
attr, container.getModifiedItemAttr('boosterAttributeModifier') * level, **kwargs)
class Effect2766(BaseEffect):
"""
boosterModifyBoosterMaxVelocityAndCapacitorPenalty
Used by:
Implants named like: Eifyr and Co. 'Alchemist' Neurotoxin Control NC (2 of 2)
Implants named like: grade Edge (10 of 12)
Skill: Neurotoxin Control
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
attrs = ('boosterCapacitorCapacityPenalty', 'boosterMaxVelocityPenalty')
for attr in attrs:
fit.boosters.filteredItemBoost(lambda booster: True, attr,
container.getModifiedItemAttr('boosterAttributeModifier') * level, **kwargs)
class Effect2776(BaseEffect):
"""
boosterModifyBoosterMissilePenalty
Used by:
Implants named like: Eifyr and Co. 'Alchemist' Neurotoxin Control NC (2 of 2)
Implants named like: grade Edge (10 of 12)
Skill: Neurotoxin Control
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
attrs = ('boosterAOEVelocityPenalty', 'boosterMissileAOECloudPenalty', 'boosterMissileVelocityPenalty')
for attr in attrs:
fit.boosters.filteredItemBoost(lambda booster: True, attr,
container.getModifiedItemAttr('boosterAttributeModifier') * level, **kwargs)
class Effect2778(BaseEffect):
"""
boosterModifyBoosterTurretPenalty
Used by:
Implants named like: Eifyr and Co. 'Alchemist' Neurotoxin Control NC (2 of 2)
Implants named like: grade Edge (10 of 12)
Skill: Neurotoxin Control
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
attrs = ('boosterTurretFalloffPenalty', 'boosterTurretOptimalRangePenalty', 'boosterTurretTrackingPenalty')
for attr in attrs:
fit.boosters.filteredItemBoost(lambda booster: True, attr,
container.getModifiedItemAttr('boosterAttributeModifier') * level, **kwargs)
class Effect2791(BaseEffect):
"""
boosterMissileExplosionCloudPenaltyFixed
Used by:
Implants named like: Exile Booster (3 of 4)
Implants named like: Mindflood Booster (3 of 4)
"""
attr = 'boosterMissileAOECloudPenalty'
displayName = 'Missile Explosion Radius'
type = 'boosterSideEffect'
@classmethod
def handler(cls, fit, booster, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'aoeCloudSize', booster.getModifiedItemAttr(cls.attr), **kwargs)
class Effect2792(BaseEffect):
"""
modifyArmorResonancePostPercentPassive
Used by:
Modules named like: Armor Reinforcer (32 of 32)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
for type in ('kinetic', 'thermal', 'explosive', 'em'):
fit.ship.boostItemAttr('armor' + type.capitalize() + 'DamageResonance',
module.getModifiedItemAttr(type + 'DamageResistanceBonus') or 0,
stackingPenalties=True, **kwargs)
class Effect2794(BaseEffect):
"""
salvagingAccessDifficultyBonusEffectPassive
Used by:
Modules from group: Rig Resource Processing (8 of 10)
Implant: Poteque 'Prospector' Salvaging SV-905
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Salvaging'),
'accessDifficultyBonus', container.getModifiedItemAttr('accessDifficultyBonus'),
position='post', **kwargs)
class Effect2795(BaseEffect):
"""
modifyShieldResonancePostPercentPassive
Used by:
Modules named like: Shield Reinforcer (32 of 32)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
for type in ('kinetic', 'thermal', 'explosive', 'em'):
fit.ship.boostItemAttr('shield' + type.capitalize() + 'DamageResonance',
module.getModifiedItemAttr(type + 'DamageResistanceBonus') or 0,
stackingPenalties=True, **kwargs)
class Effect2796(BaseEffect):
"""
massReductionBonusPassive
Used by:
Modules from group: Rig Anchor (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('mass', module.getModifiedItemAttr('massBonusPercentage'),
stackingPenalties=True, **kwargs)
class Effect2797(BaseEffect):
"""
projectileWeaponSpeedMultiplyPassive
Used by:
Modules named like: Projectile Burst Aerator (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Projectile Weapon',
'speed', module.getModifiedItemAttr('speedMultiplier'),
stackingPenalties=True, **kwargs)
class Effect2798(BaseEffect):
"""
projectileWeaponDamageMultiplyPassive
Used by:
Modules named like: Projectile Collision Accelerator (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
penalize = 'booster' not in context
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Projectile Weapon',
'damageMultiplier', module.getModifiedItemAttr('damageMultiplier'),
stackingPenalties=penalize, **kwargs)
class Effect2799(BaseEffect):
"""
missileLauncherSpeedMultiplierPassive
Used by:
Modules named like: Bay Loading Accelerator (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'),
'speed', module.getModifiedItemAttr('speedMultiplier'),
stackingPenalties=True, **kwargs)
class Effect2801(BaseEffect):
"""
energyWeaponSpeedMultiplyPassive
Used by:
Modules named like: Energy Burst Aerator (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Energy Weapon',
'speed', module.getModifiedItemAttr('speedMultiplier'),
stackingPenalties=True, **kwargs)
class Effect2802(BaseEffect):
"""
hybridWeaponDamageMultiplyPassive
Used by:
Modules named like: Hybrid Collision Accelerator (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
penalize = 'booster' not in context
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Hybrid Weapon',
'damageMultiplier', module.getModifiedItemAttr('damageMultiplier'),
stackingPenalties=penalize, **kwargs)
class Effect2803(BaseEffect):
"""
energyWeaponDamageMultiplyPassive
Used by:
Implants named like: Harvest Damage Booster (4 of 4)
Implants named like: Wightstorm Vitarka Booster (4 of 4)
Modules named like: Energy Collision Accelerator (8 of 8)
Implant: Wisdom of Gheinok
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
penalties = 'booster' not in context
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Energy Weapon',
'damageMultiplier', module.getModifiedItemAttr('damageMultiplier'),
stackingPenalties=penalties, **kwargs)
class Effect2804(BaseEffect):
"""
hybridWeaponSpeedMultiplyPassive
Used by:
Modules named like: Hybrid Burst Aerator (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Hybrid Weapon',
'speed', module.getModifiedItemAttr('speedMultiplier'),
stackingPenalties=True, **kwargs)
class Effect2805(BaseEffect):
"""
shipBonusLargeEnergyWeaponDamageAB2
Used by:
Ship: Abaddon
Ship: Marshal
Ship: Python
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusAB2'),
skill='Amarr Battleship', **kwargs)
class Effect2809(BaseEffect):
"""
shipMissileAssaultMissileVelocityBonusCC2
Used by:
Ship: Caracal
Ship: Osprey Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'),
'maxVelocity', ship.getModifiedItemAttr('shipBonusCC2'),
skill='Caldari Cruiser', **kwargs)
class Effect2812(BaseEffect):
"""
caldariShipECMBurstOptimalRangeCB3
Used by:
Ship: Scorpion
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Burst Jammer',
'ecmBurstRange', ship.getModifiedItemAttr('shipBonusCB3'),
skill='Caldari Battleship', **kwargs)
class Effect2837(BaseEffect):
"""
armorHPBonusAdd
Used by:
Modules from group: Armor Plate (51 of 51)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('armorHP', module.getModifiedItemAttr('armorHPBonusAdd'), **kwargs)
class Effect2847(BaseEffect):
"""
trackingSpeedBonusPassiveRequiringGunneryTrackingSpeedBonus
Used by:
Implants named like: Chemal Tech Turret Booster (3 of 3)
Implants named like: Drop Booster (4 of 4)
Implants named like: Eifyr and Co. 'Gunslinger' Motion Prediction MR (6 of 6)
Implants named like: Halcyon G Booster (5 of 5)
Implant: Antipharmakon Iokira
Implant: Ogdin's Eye Coordination Enhancer
Skill: Motion Prediction
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'),
'trackingSpeed', container.getModifiedItemAttr('trackingSpeedBonus') * level, **kwargs)
class Effect2848(BaseEffect):
"""
accessDifficultyBonusModifierRequiringArchaelogy
Used by:
Modules named like: Emission Scope Sharpener (8 of 8)
Implant: Poteque 'Prospector' Archaeology AC-905
Implant: Poteque 'Prospector' Environmental Analysis EY-1005
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda module: module.item.requiresSkill('Archaeology'), 'accessDifficultyBonus',
container.getModifiedItemAttr('accessDifficultyBonusModifier'), **kwargs)
class Effect2849(BaseEffect):
"""
accessDifficultyBonusModifierRequiringHacking
Used by:
Modules named like: Memetic Algorithm Bank (8 of 8)
Implant: Neural Lace 'Blackglass' Net Intrusion 920-40
Implant: Neural Lace 'Bluefire' Net Ablation 960-10
Implant: Poteque 'Prospector' Environmental Analysis EY-1005
Implant: Poteque 'Prospector' Hacking HC-905
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda c: c.item.requiresSkill('Hacking'), 'accessDifficultyBonus',
container.getModifiedItemAttr('accessDifficultyBonusModifier'), **kwargs)
class Effect2850(BaseEffect):
"""
durationBonusForGroupAfterburner
Used by:
Modules named like: Engine Thermal Shielding (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Propulsion Module',
'duration', module.getModifiedItemAttr('durationBonus'), **kwargs)
class Effect2851(BaseEffect):
"""
missileDMGBonusPassive
Used by:
Modules named like: Warhead Calefaction Catalyst (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
penalize = False if 'booster' in context else True
for dmgType in ('em', 'kinetic', 'explosive', 'thermal'):
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'%sDamage' % dmgType,
container.getModifiedItemAttr('missileDamageMultiplierBonus'),
stackingPenalties=penalize, **kwargs)
class Effect2853(BaseEffect):
"""
cloakingTargetingDelayBonusLRSMCloakingPassive
Used by:
Modules named like: Targeting Systems Stabilizer (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda module: module.item.requiresSkill('Cloaking'),
'cloakingTargetingDelay', module.getModifiedItemAttr('cloakingTargetingDelayBonus'), **kwargs)
class Effect2857(BaseEffect):
"""
cynosuralGeneration
Used by:
Modules from group: Cynosural Field Generator (3 of 3)
"""
type = 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', module.getModifiedItemAttr('speedFactor'), **kwargs)
class Effect2858(BaseEffect):
"""
cloneJumpAccepting
Used by:
Module: Clone Vat Bay I
"""
type = 'active'
@staticmethod
def handler(fit, mod, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs)
fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs)
fit.ship.forceItemAttr('canCloak', mod.getModifiedChargeAttr('canCloak'), **kwargs)
class Effect2865(BaseEffect):
"""
velocityBonusOnline
Used by:
Modules from group: Entosis Link (6 of 6)
Modules from group: Nanofiber Internal Structure (7 of 7)
Modules from group: Overdrive Injector System (7 of 7)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', module.getModifiedItemAttr('implantBonusVelocity'),
stackingPenalties=True, **kwargs)
class Effect2866(BaseEffect):
"""
biologyTimeBonusFixed
Used by:
Implants named like: Eifyr and Co. 'Alchemist' Biology BY (2 of 2)
Skill: Biology
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.boosters.filteredItemBoost(lambda bst: True, 'boosterDuration',
container.getModifiedItemAttr('durationBonus') * level, **kwargs)
class Effect2867(BaseEffect):
"""
sentryDroneDamageBonus
Used by:
Modules named like: Sentry Damage Augmentor (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'),
'damageMultiplier', module.getModifiedItemAttr('damageMultiplierBonus'),
stackingPenalties=True, **kwargs)
class Effect2868(BaseEffect):
"""
armorDamageAmountBonusCapitalArmorRepairers
Used by:
Modules named like: Auxiliary Nano Pump (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Repair Systems'),
'armorDamageAmount', implant.getModifiedItemAttr('repairBonus'),
stackingPenalties=True, **kwargs)
class Effect2872(BaseEffect):
"""
missileVelocityBonusDefender
Used by:
Implants named like: Zainou 'Snapshot' Defender Missiles DM (6 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Defender Missiles'),
'maxVelocity', container.getModifiedItemAttr('missileVelocityBonus'), **kwargs)
class Effect2881(BaseEffect):
"""
missileEMDmgBonusCruise3
Used by:
Implants named like: Zainou 'Snapshot' Cruise Missiles CM (6 of 6)
Implant: Festival-only 'Longbow' CM3 Dose
Implant: Festival-only 'Longbow' MD6 Dose
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'),
'emDamage', implant.getModifiedItemAttr('damageMultiplierBonus'), **kwargs)
class Effect2882(BaseEffect):
"""
missileExplosiveDmgBonusCruise3
Used by:
Implants named like: Zainou 'Snapshot' Cruise Missiles CM (6 of 6)
Implant: Festival-only 'Longbow' CM3 Dose
Implant: Festival-only 'Longbow' MD6 Dose
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'),
'explosiveDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs)
class Effect2883(BaseEffect):
"""
missileKineticDmgBonusCruise3
Used by:
Implants named like: Zainou 'Snapshot' Cruise Missiles CM (6 of 6)
Implant: Festival-only 'Longbow' CM3 Dose
Implant: Festival-only 'Longbow' MD6 Dose
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'),
'kineticDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs)
class Effect2884(BaseEffect):
"""
missileThermalDmgBonusCruise3
Used by:
Implants named like: Zainou 'Snapshot' Cruise Missiles CM (6 of 6)
Implant: Festival-only 'Longbow' CM3 Dose
Implant: Festival-only 'Longbow' MD6 Dose
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'),
'thermalDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs)
class Effect2885(BaseEffect):
"""
gasHarvestingCycleTimeModulesRequiringGasCloudHarvesting
Used by:
Implants named like: Eifyr and Co. 'Alchemist' Gas Harvesting GH (3 of 3)
Implants named like: ORE 'Harvester' Efficiency (2 of 2)
Implants named like: Serenity Limited 'Efficiency' Dose (3 of 3)
Implants named like: Serenity Poteque 'Prospector' Harvesting MC (3 of 3)
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gas Cloud Harvesting'),
'duration', implant.getModifiedItemAttr('durationBonus'), **kwargs)
class Effect2887(BaseEffect):
"""
missileEMDmgBonusRocket
Used by:
Implants named like: Zainou 'Snapshot' Rockets RD (6 of 6)
Implant: Festival-only 'Longbow' MD6 Dose
Implant: Festival-only 'Longbow' RD2 Dose
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'),
'emDamage', implant.getModifiedItemAttr('damageMultiplierBonus'), **kwargs)
class Effect2888(BaseEffect):
"""
missileExplosiveDmgBonusRocket
Used by:
Implants named like: Zainou 'Snapshot' Rockets RD (6 of 6)
Implant: Festival-only 'Longbow' MD6 Dose
Implant: Festival-only 'Longbow' RD2 Dose
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'),
'explosiveDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs)
class Effect2889(BaseEffect):
"""
missileKineticDmgBonusRocket
Used by:
Implants named like: Zainou 'Snapshot' Rockets RD (6 of 6)
Implant: Festival-only 'Longbow' MD6 Dose
Implant: Festival-only 'Longbow' RD2 Dose
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'),
'kineticDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs)
class Effect2890(BaseEffect):
"""
missileThermalDmgBonusRocket
Used by:
Implants named like: Zainou 'Snapshot' Rockets RD (6 of 6)
Implant: Festival-only 'Longbow' MD6 Dose
Implant: Festival-only 'Longbow' RD2 Dose
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'),
'thermalDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs)
class Effect2891(BaseEffect):
"""
missileEMDmgBonusStandard
Used by:
Implants named like: Festival only 'Longbow' MD Dose (2 of 2)
Implants named like: Zainou 'Snapshot' Light Missiles LM (6 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'),
'emDamage', implant.getModifiedItemAttr('damageMultiplierBonus'), **kwargs)
class Effect2892(BaseEffect):
"""
missileExplosiveDmgBonusStandard
Used by:
Implants named like: Festival only 'Longbow' MD Dose (2 of 2)
Implants named like: Zainou 'Snapshot' Light Missiles LM (6 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'),
'explosiveDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs)
class Effect2893(BaseEffect):
"""
missileKineticDmgBonusStandard
Used by:
Implants named like: Festival only 'Longbow' MD Dose (2 of 2)
Implants named like: Zainou 'Snapshot' Light Missiles LM (6 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'),
'kineticDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs)
class Effect2894(BaseEffect):
"""
missileThermalDmgBonusStandard
Used by:
Implants named like: Festival only 'Longbow' MD Dose (2 of 2)
Implants named like: Zainou 'Snapshot' Light Missiles LM (6 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'),
'thermalDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs)
class Effect2899(BaseEffect):
"""
missileEMDmgBonusHeavy
Used by:
Implants named like: Zainou 'Snapshot' Heavy Missiles HM (6 of 6)
Implant: Festival-only 'Longbow' HM4 Dose
Implant: Festival-only 'Longbow' MD6 Dose
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'emDamage', implant.getModifiedItemAttr('damageMultiplierBonus'), **kwargs)
class Effect2900(BaseEffect):
"""
missileExplosiveDmgBonusHeavy
Used by:
Implants named like: Zainou 'Snapshot' Heavy Missiles HM (6 of 6)
Implant: Festival-only 'Longbow' HM4 Dose
Implant: Festival-only 'Longbow' MD6 Dose
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'explosiveDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs)
class Effect2901(BaseEffect):
"""
missileKineticDmgBonusHeavy
Used by:
Implants named like: Zainou 'Snapshot' Heavy Missiles HM (6 of 6)
Implant: Festival-only 'Longbow' HM4 Dose
Implant: Festival-only 'Longbow' MD6 Dose
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'kineticDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs)
class Effect2902(BaseEffect):
"""
missileThermalDmgBonusHeavy
Used by:
Implants named like: Zainou 'Snapshot' Heavy Missiles HM (6 of 6)
Implant: Festival-only 'Longbow' HM4 Dose
Implant: Festival-only 'Longbow' MD6 Dose
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'thermalDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs)
class Effect2903(BaseEffect):
"""
missileEMDmgBonusHAM
Used by:
Implants named like: Zainou 'Snapshot' Heavy Assault Missiles AM (6 of 6)
Implant: Festival-only 'Longbow' HAM4 Dose
Implant: Festival-only 'Longbow' MD6 Dose
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'),
'emDamage', implant.getModifiedItemAttr('damageMultiplierBonus'), **kwargs)
class Effect2904(BaseEffect):
"""
missileExplosiveDmgBonusHAM
Used by:
Implants named like: Zainou 'Snapshot' Heavy Assault Missiles AM (6 of 6)
Implant: Festival-only 'Longbow' HAM4 Dose
Implant: Festival-only 'Longbow' MD6 Dose
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'),
'explosiveDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs)
class Effect2905(BaseEffect):
"""
missileKineticDmgBonusHAM
Used by:
Implants named like: Zainou 'Snapshot' Heavy Assault Missiles AM (6 of 6)
Implant: Festival-only 'Longbow' HAM4 Dose
Implant: Festival-only 'Longbow' MD6 Dose
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'),
'kineticDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs)
class Effect2906(BaseEffect):
"""
missileThermalDmgBonusHAM
Used by:
Implants named like: Zainou 'Snapshot' Heavy Assault Missiles AM (6 of 6)
Implant: Festival-only 'Longbow' HAM4 Dose
Implant: Festival-only 'Longbow' MD6 Dose
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'),
'thermalDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs)
class Effect2907(BaseEffect):
"""
missileEMDmgBonusTorpedo
Used by:
Implants named like: Zainou 'Snapshot' Torpedoes TD (6 of 6)
Implant: Festival-only 'Longbow' MD6 Dose
Implant: Festival-only 'Longbow' TP3 Dose
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'),
'emDamage', implant.getModifiedItemAttr('damageMultiplierBonus'), **kwargs)
class Effect2908(BaseEffect):
"""
missileExplosiveDmgBonusTorpedo
Used by:
Implants named like: Zainou 'Snapshot' Torpedoes TD (6 of 6)
Implant: Festival-only 'Longbow' MD6 Dose
Implant: Festival-only 'Longbow' TP3 Dose
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'),
'explosiveDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs)
class Effect2909(BaseEffect):
"""
missileKineticDmgBonusTorpedo
Used by:
Implants named like: Zainou 'Snapshot' Torpedoes TD (6 of 6)
Implant: Festival-only 'Longbow' MD6 Dose
Implant: Festival-only 'Longbow' TP3 Dose
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'),
'kineticDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs)
class Effect2910(BaseEffect):
"""
missileThermalDmgBonusTorpedo
Used by:
Implants named like: Zainou 'Snapshot' Torpedoes TD (6 of 6)
Implant: Festival-only 'Longbow' MD6 Dose
Implant: Festival-only 'Longbow' TP3 Dose
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'),
'thermalDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs)
class Effect2911(BaseEffect):
"""
dataminerModuleDurationReduction
Used by:
Implant: Poteque 'Prospector' Environmental Analysis EY-1005
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Data Miners',
'duration', implant.getModifiedItemAttr('durationBonus'), **kwargs)
class Effect2967(BaseEffect):
"""
skillTriageModuleConsumptionQuantityBonus
Used by:
Skill: Tactical Logistics Reconfiguration
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
amount = -skill.getModifiedItemAttr('consumptionQuantityBonus')
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill(skill),
'consumptionQuantity', amount * skill.level, **kwargs)
class Effect2979(BaseEffect):
"""
skillRemoteHullRepairSystemsCapNeedBonus
Used by:
Skill: Remote Hull Repair Systems
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Hull Repair Systems'),
'capacitorNeed', skill.getModifiedItemAttr('capNeedBonus') * skill.level, **kwargs)
class Effect2980(BaseEffect):
"""
skillCapitalRemoteHullRepairSystemsCapNeedBonus
Used by:
Skill: Capital Remote Hull Repair Systems
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Remote Hull Repair Systems'),
'capacitorNeed', skill.getModifiedItemAttr('capNeedBonus') * skill.level, **kwargs)
class Effect2982(BaseEffect):
"""
skillRemoteECMDurationBonus
Used by:
Skill: Burst Projector Operation
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
# We need to make sure that the attribute exists, otherwise we add attributes that don't belong. See #927
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation') and
mod.item.getAttribute('duration'),
'duration',
skill.getModifiedItemAttr('projECMDurationBonus') * skill.level, **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation') and
mod.item.getAttribute('durationECMJammerBurstProjector'),
'durationECMJammerBurstProjector',
skill.getModifiedItemAttr('projECMDurationBonus') * skill.level, **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation') and
mod.item.getAttribute('durationTargetIlluminationBurstProjector'),
'durationTargetIlluminationBurstProjector',
skill.getModifiedItemAttr('projECMDurationBonus') * skill.level, **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation') and
mod.item.getAttribute('durationSensorDampeningBurstProjector'),
'durationSensorDampeningBurstProjector',
skill.getModifiedItemAttr('projECMDurationBonus') * skill.level, **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation') and
mod.item.getAttribute('durationWeaponDisruptionBurstProjector'),
'durationWeaponDisruptionBurstProjector',
skill.getModifiedItemAttr('projECMDurationBonus') * skill.level, **kwargs)
class Effect3001(BaseEffect):
"""
overloadRofBonus
Used by:
Modules from group: Missile Launcher Torpedo (22 of 22)
Items from market group: Ship Equipment > Turrets & Launchers (446 of 930)
Module: Interdiction Sphere Launcher I
"""
type = 'overheat'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.boostItemAttr('speed', module.getModifiedItemAttr('overloadRofBonus'),
stackingPenalties=True, penaltyGroup='postPerc', **kwargs)
class Effect3002(BaseEffect):
"""
overloadSelfDurationBonus
Used by:
Modules from group: Armor Resistance Shift Hardener (2 of 2)
Modules from group: Capacitor Booster (43 of 43)
Modules from group: Energy Neutralizer (57 of 57)
Modules from group: Energy Nosferatu (58 of 58)
Modules from group: Hull Repair Unit (25 of 25)
Modules from group: Remote Capacitor Transmitter (37 of 37)
Modules from group: Remote Hull Repairer (8 of 8)
Modules from group: Smart Bomb (137 of 137)
Modules from group: Warp Disrupt Field Generator (8 of 8)
"""
type = 'overheat'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.boostItemAttr('duration', module.getModifiedItemAttr('overloadSelfDurationBonus') or 0, **kwargs)
class Effect3024(BaseEffect):
"""
eliteBonusCoverOpsBombExplosiveDmg1
Used by:
Ship: Hound
Ship: Virtuoso
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Bomb Deployment'),
'explosiveDamage', ship.getModifiedItemAttr('eliteBonusCovertOps1'),
skill='Covert Ops', **kwargs)
class Effect3025(BaseEffect):
"""
overloadSelfDamageBonus
Used by:
Modules from group: Energy Weapon (105 of 220)
Modules from group: Hybrid Weapon (107 of 223)
Modules from group: Precursor Weapon (19 of 19)
Modules from group: Projectile Weapon (101 of 167)
Modules named like: Pulse Laser (89 of 90)
"""
type = 'overheat'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.boostItemAttr('damageMultiplier', module.getModifiedItemAttr('overloadDamageModifier'), **kwargs)
class Effect3026(BaseEffect):
"""
eliteBonusCoverOpsBombKineticDmg1
Used by:
Ship: Manticore
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Bomb Deployment'),
'kineticDamage', ship.getModifiedItemAttr('eliteBonusCovertOps1'),
skill='Covert Ops', **kwargs)
class Effect3027(BaseEffect):
"""
eliteBonusCoverOpsBombThermalDmg1
Used by:
Ship: Nemesis
Ship: Virtuoso
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Bomb Deployment'),
'thermalDamage', ship.getModifiedItemAttr('eliteBonusCovertOps1'),
skill='Covert Ops', **kwargs)
class Effect3028(BaseEffect):
"""
eliteBonusCoverOpsBombEmDmg1
Used by:
Ship: Purifier
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Bomb Deployment'),
'emDamage', ship.getModifiedItemAttr('eliteBonusCovertOps1'),
skill='Covert Ops', **kwargs)
class Effect3029(BaseEffect):
"""
overloadSelfEmHardeningBonus
Used by:
Variations of module: EM Armor Hardener I (37 of 37)
Variations of module: EM Shield Hardener I (20 of 20)
Module: Civilian EM Shield Hardener
"""
type = 'overheat'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.boostItemAttr('emDamageResistanceBonus', module.getModifiedItemAttr('overloadHardeningBonus'), **kwargs)
class Effect3030(BaseEffect):
"""
overloadSelfThermalHardeningBonus
Used by:
Variations of module: Thermal Armor Hardener I (37 of 37)
Variations of module: Thermal Shield Hardener I (20 of 20)
Module: Civilian Thermal Shield Hardener
"""
type = 'overheat'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.boostItemAttr('thermalDamageResistanceBonus', module.getModifiedItemAttr('overloadHardeningBonus'), **kwargs)
class Effect3031(BaseEffect):
"""
overloadSelfExplosiveHardeningBonus
Used by:
Variations of module: Explosive Armor Hardener I (37 of 37)
Variations of module: Explosive Shield Hardener I (20 of 20)
Module: Civilian Explosive Shield Hardener
"""
type = 'overheat'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.boostItemAttr('explosiveDamageResistanceBonus', module.getModifiedItemAttr('overloadHardeningBonus'), **kwargs)
class Effect3032(BaseEffect):
"""
overloadSelfKineticHardeningBonus
Used by:
Variations of module: Kinetic Armor Hardener I (37 of 37)
Variations of module: Kinetic Shield Hardener I (20 of 20)
Module: Civilian Kinetic Shield Hardener
"""
type = 'overheat'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.boostItemAttr('kineticDamageResistanceBonus', module.getModifiedItemAttr('overloadHardeningBonus'), **kwargs)
class Effect3035(BaseEffect):
"""
overloadSelfHardeningInvulnerabilityBonus
Used by:
Modules named like: Capital Flex Hardener (9 of 9)
Variations of module: Multispectrum Shield Hardener I (19 of 19)
"""
type = 'overheat'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
for type in ('kinetic', 'thermal', 'explosive', 'em'):
module.boostItemAttr('%sDamageResistanceBonus' % type,
module.getModifiedItemAttr('overloadHardeningBonus'), **kwargs)
class Effect3036(BaseEffect):
"""
skillBombDeploymentModuleReactivationDelayBonus
Used by:
Skill: Bomb Deployment
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Bomb',
'moduleReactivationDelay', skill.getModifiedItemAttr('reactivationDelayBonus') * skill.level, **kwargs)
class Effect3046(BaseEffect):
"""
modifyMaxVelocityOfShipPassive
Used by:
Modules from group: Expanded Cargohold (7 of 7)
"""
type = 'offline'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr('maxVelocity', module.getModifiedItemAttr('maxVelocityModifier'), stackingPenalties=True, **kwargs)
class Effect3047(BaseEffect):
"""
structureHPMultiplyPassive
Used by:
Modules from group: Expanded Cargohold (7 of 7)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr('hp', module.getModifiedItemAttr('structureHPMultiplier'), **kwargs)
class Effect3061(BaseEffect):
"""
heatDamageBonus
Used by:
Modules from group: Shield Boost Amplifier (23 of 23)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'),
'heatDamage', module.getModifiedItemAttr('heatDamageBonus'), **kwargs)
class Effect3169(BaseEffect):
"""
shieldTransportCpuNeedBonusEffect
Used by:
Ships from group: Logistics (3 of 7)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'cpu',
src.getModifiedItemAttr('shieldTransportCpuNeedBonus'), **kwargs)
class Effect3172(BaseEffect):
"""
droneArmorDamageBonusEffect
Used by:
Ships from group: Logistics (6 of 7)
Ship: Exequror
Ship: Scythe
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
# This is actually level-less bonus, anyway you have to train cruisers 5
# and will get 100% (20%/lvl as stated by description)
fit.drones.filteredItemBoost(lambda drone: drone.item.group.name == 'Logistic Drone',
'armorDamageAmount', ship.getModifiedItemAttr('droneArmorDamageAmountBonus'), **kwargs)
class Effect3173(BaseEffect):
"""
droneShieldBonusBonusEffect
Used by:
Ships from group: Logistics (6 of 7)
Ship: Exequror
Ship: Scythe
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
# This is actually level-less bonus, anyway you have to train cruisers 5
# and will get 100% (20%/lvl as stated by description)
fit.drones.filteredItemBoost(lambda drone: drone.item.group.name == 'Logistic Drone',
'shieldBonus', ship.getModifiedItemAttr('droneShieldBonusBonus'), **kwargs)
class Effect3174(BaseEffect):
"""
overloadSelfRangeBonus
Used by:
Modules from group: Stasis Grappler (8 of 8)
Modules from group: Stasis Web (19 of 19)
Modules from group: Warp Scrambler (56 of 57)
"""
type = 'overheat'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.boostItemAttr('maxRange', module.getModifiedItemAttr('overloadRangeBonus'),
stackingPenalties=True, **kwargs)
class Effect3175(BaseEffect):
"""
overloadSelfSpeedBonus
Used by:
Modules from group: Propulsion Module (147 of 147)
"""
type = 'overheat'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.boostItemAttr('speedFactor', module.getModifiedItemAttr('overloadSpeedFactorBonus'),
stackingPenalties=True, **kwargs)
class Effect3182(BaseEffect):
"""
overloadSelfECMStrenghtBonus
Used by:
Modules from group: Burst Jammer (11 of 11)
Modules from group: ECM (43 of 43)
"""
type = 'overheat'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
for scanType in ('Gravimetric', 'Magnetometric', 'Radar', 'Ladar'):
module.boostItemAttr('scan{0}StrengthBonus'.format(scanType),
module.getModifiedItemAttr('overloadECMStrengthBonus'),
stackingPenalties=True, **kwargs)
class Effect3196(BaseEffect):
"""
thermodynamicsSkillDamageBonus
Used by:
Implants named like: Wightstorm Sunyata Booster (4 of 4)
Skill: Thermodynamics
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(
lambda mod: 'heatDamage' in mod.item.attributes, 'heatDamage',
container.getModifiedItemAttr('thermodynamicsHeatDamage') * level, **kwargs)
class Effect3200(BaseEffect):
"""
overloadSelfArmorDamageAmountDurationBonus
Used by:
Modules from group: Ancillary Armor Repairer (12 of 12)
Modules from group: Armor Repair Unit (105 of 105)
Modules from group: Remote Armor Repairer (43 of 43)
Modules named like: Remote Armor Repairer (52 of 52)
"""
type = 'overheat'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.boostItemAttr('duration', module.getModifiedItemAttr('overloadSelfDurationBonus'))
module.boostItemAttr('armorDamageAmount', module.getModifiedItemAttr('overloadArmorDamageAmount'),
stackingPenalties=True, **kwargs)
class Effect3201(BaseEffect):
"""
overloadSelfShieldBonusDurationBonus
Used by:
Modules from group: Ancillary Remote Shield Booster (4 of 4)
Modules from group: Ancillary Shield Booster (14 of 14)
Modules from group: Remote Shield Booster (42 of 42)
Modules from group: Shield Booster (94 of 94)
"""
type = 'overheat'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.boostItemAttr('duration', module.getModifiedItemAttr('overloadSelfDurationBonus'))
module.boostItemAttr('shieldBonus', module.getModifiedItemAttr('overloadShieldBonus'), stackingPenalties=True, **kwargs)
class Effect3212(BaseEffect):
"""
missileSkillFoFAoeCloudSizeBonus
Used by:
Implants named like: Zainou 'Snapshot' Auto Targeting Explosion Radius FR (6 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Auto-Targeting Missiles'),
'aoeCloudSize', container.getModifiedItemAttr('aoeCloudSizeBonus') * level, **kwargs)
class Effect3234(BaseEffect):
"""
shipRocketExplosiveDmgAF
Used by:
Ship: Vengeance
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'),
'explosiveDamage', ship.getModifiedItemAttr('shipBonusAF'),
skill='Amarr Frigate', **kwargs)
class Effect3235(BaseEffect):
"""
shipRocketKineticDmgAF
Used by:
Ship: Vengeance
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'),
'kineticDamage', ship.getModifiedItemAttr('shipBonusAF'),
skill='Amarr Frigate', **kwargs)
class Effect3236(BaseEffect):
"""
shipRocketThermalDmgAF
Used by:
Ship: Vengeance
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'),
'thermalDamage', ship.getModifiedItemAttr('shipBonusAF'),
skill='Amarr Frigate', **kwargs)
class Effect3237(BaseEffect):
"""
shipRocketEmDmgAF
Used by:
Ship: Vengeance
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'),
'emDamage', ship.getModifiedItemAttr('shipBonusAF'),
skill='Amarr Frigate', **kwargs)
class Effect3241(BaseEffect):
"""
eliteBonusGunshipArmorEmResistance1
Used by:
Ship: Vengeance
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorEmDamageResonance', ship.getModifiedItemAttr('eliteBonusGunship1'),
skill='Assault Frigates', **kwargs)
class Effect3242(BaseEffect):
"""
eliteBonusGunshipArmorThermalResistance1
Used by:
Ship: Vengeance
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorThermalDamageResonance', ship.getModifiedItemAttr('eliteBonusGunship1'),
skill='Assault Frigates', **kwargs)
class Effect3243(BaseEffect):
"""
eliteBonusGunshipArmorKineticResistance1
Used by:
Ship: Vengeance
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorKineticDamageResonance', ship.getModifiedItemAttr('eliteBonusGunship1'),
skill='Assault Frigates', **kwargs)
class Effect3244(BaseEffect):
"""
eliteBonusGunshipArmorExplosiveResistance1
Used by:
Ship: Vengeance
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorExplosiveDamageResonance', ship.getModifiedItemAttr('eliteBonusGunship1'),
skill='Assault Frigates', **kwargs)
class Effect3264(BaseEffect):
"""
skillCapitalIndustrialReconfigurationConsumptionQuantityBonus
Used by:
Skill: Capital Industrial Reconfiguration
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
amount = -skill.getModifiedItemAttr('consumptionQuantityBonus')
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill(skill),
'consumptionQuantity', amount * skill.level, **kwargs)
class Effect3267(BaseEffect):
"""
shipConsumptionQuantityBonusIndustrialReconfigurationORECapital1
Used by:
Ship: Rorqual
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Industrial Reconfiguration'),
'consumptionQuantity', ship.getModifiedItemAttr('shipBonusORECapital1'),
skill='Capital Industrial Ships', **kwargs)
class Effect3297(BaseEffect):
"""
shipEnergyNeutralizerTransferAmountBonusAB
Used by:
Ship: Bhaalgorn
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer',
'energyNeutralizerAmount', ship.getModifiedItemAttr('shipBonusAB'),
skill='Amarr Battleship', **kwargs)
class Effect3298(BaseEffect):
"""
shipEnergyNeutralizerTransferAmountBonusAC
Used by:
Ship: Ashimmu
Ship: Vangel
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer',
'energyNeutralizerAmount', ship.getModifiedItemAttr('shipBonusAC'),
skill='Amarr Cruiser', **kwargs)
class Effect3299(BaseEffect):
"""
shipEnergyNeutralizerTransferAmountBonusAF
Used by:
Ship: Caedes
Ship: Cruor
Ship: Sentinel
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer',
'energyNeutralizerAmount', ship.getModifiedItemAttr('shipBonusAF'),
skill='Amarr Frigate', **kwargs)
class Effect3313(BaseEffect):
"""
cloneVatMaxJumpCloneBonusSkillNew
Used by:
Skill: Cloning Facility Operation
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxJumpClones', skill.getModifiedItemAttr('maxJumpClonesBonus') * skill.level, **kwargs)
class Effect3331(BaseEffect):
"""
eliteBonusCommandShipArmorHP1
Used by:
Ship: Damnation
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorHP', ship.getModifiedItemAttr('eliteBonusCommandShips1'), skill='Command Ships', **kwargs)
class Effect3335(BaseEffect):
"""
shipArmorEmResistanceMC2
Used by:
Ship: Mimir
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorEmDamageResonance', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs)
class Effect3336(BaseEffect):
"""
shipArmorExplosiveResistanceMC2
Used by:
Ship: Mimir
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusMC2'),
skill='Minmatar Cruiser', **kwargs)
class Effect3339(BaseEffect):
"""
shipArmorKineticResistanceMC2
Used by:
Ship: Mimir
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorKineticDamageResonance', ship.getModifiedItemAttr('shipBonusMC2'),
skill='Minmatar Cruiser', **kwargs)
class Effect3340(BaseEffect):
"""
shipArmorThermalResistanceMC2
Used by:
Ship: Mimir
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorThermalDamageResonance', ship.getModifiedItemAttr('shipBonusMC2'),
skill='Minmatar Cruiser', **kwargs)
class Effect3343(BaseEffect):
"""
eliteBonusHeavyInterdictorsProjectileFalloff1
Used by:
Ship: Broadsword
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'),
'falloff', ship.getModifiedItemAttr('eliteBonusHeavyInterdictors1'),
skill='Heavy Interdiction Cruisers', **kwargs)
class Effect3355(BaseEffect):
"""
eliteBonusHeavyInterdictorHeavyMissileVelocityBonus1
Used by:
Ship: Onyx
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'maxVelocity', ship.getModifiedItemAttr('eliteBonusHeavyInterdictors1'),
skill='Heavy Interdiction Cruisers', **kwargs)
class Effect3356(BaseEffect):
"""
eliteBonusHeavyInterdictorHeavyAssaultMissileVelocityBonus
Used by:
Ship: Onyx
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'),
'maxVelocity', ship.getModifiedItemAttr('eliteBonusHeavyInterdictors1'),
skill='Heavy Interdiction Cruisers', **kwargs)
class Effect3366(BaseEffect):
"""
shipRemoteSensorDampenerCapNeedGF
Used by:
Ship: Keres
Ship: Maulus
Ship: Raiju
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener',
'capacitorNeed', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs)
class Effect3367(BaseEffect):
"""
eliteBonusElectronicAttackShipWarpScramblerMaxRange1
Used by:
Ship: Keres
Ship: Raiju
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler',
'maxRange', ship.getModifiedItemAttr('eliteBonusElectronicAttackShip1'),
skill='Electronic Attack Ships', **kwargs)
class Effect3369(BaseEffect):
"""
eliteBonusElectronicAttackShipECMOptimalRange1
Used by:
Ship: Kitsune
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM',
'maxRange', ship.getModifiedItemAttr('eliteBonusElectronicAttackShip1'),
skill='Electronic Attack Ships', **kwargs)
class Effect3370(BaseEffect):
"""
eliteBonusElectronicAttackShipStasisWebMaxRange1
Used by:
Ship: Hyena
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web',
'maxRange', ship.getModifiedItemAttr('eliteBonusElectronicAttackShip1'),
skill='Electronic Attack Ships', **kwargs)
class Effect3371(BaseEffect):
"""
eliteBonusElectronicAttackShipWarpScramblerCapNeed2
Used by:
Ship: Keres
Ship: Raiju
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler',
'capacitorNeed', ship.getModifiedItemAttr('eliteBonusElectronicAttackShip2'),
skill='Electronic Attack Ships', **kwargs)
class Effect3374(BaseEffect):
"""
eliteBonusElectronicAttackShipSignatureRadius2
Used by:
Ship: Hyena
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('signatureRadius', ship.getModifiedItemAttr('eliteBonusElectronicAttackShip2'),
skill='Electronic Attack Ships', **kwargs)
class Effect3379(BaseEffect):
"""
implantHardwiringABcapacitorNeed
Used by:
Implants named like: Eifyr and Co. 'Rogue' Fuel Conservation FC (6 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'),
'capacitorNeed', implant.getModifiedItemAttr('capNeedBonus'), **kwargs)
class Effect3380(BaseEffect):
"""
warpDisruptSphere
Used by:
Modules from group: Warp Disrupt Field Generator (8 of 8)
"""
runTime = 'early'
type = 'projected', 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
if 'projected' in context:
if module.charge is None:
return
if module.getModifiedItemAttr('warpScrambleRange', 0) < (projectionRange or 0):
return
if module.charge.ID in (29003, 45010):
fit.ship.increaseItemAttr('warpScrambleStatus', module.getModifiedItemAttr('warpScrambleStrength'), **kwargs)
if module.charge.ID == 45010:
fit.modules.filteredItemIncrease(
lambda mod: mod.item.requiresSkill('High Speed Maneuvering') or mod.item.requiresSkill('Micro Jump Drive Operation'),
'activationBlocked', 1, **kwargs)
else:
fit.ship.forceItemAttr('disallowAssistance', 1, **kwargs)
if module.charge is not None:
return
fit.ship.boostItemAttr('mass', module.getModifiedItemAttr('massBonusPercentage'), **kwargs)
fit.ship.boostItemAttr('signatureRadius', module.getModifiedItemAttr('signatureRadiusBonus'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Propulsion Module',
'speedBoostFactor', module.getModifiedItemAttr('speedBoostFactorBonus'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Propulsion Module',
'speedFactor', module.getModifiedItemAttr('speedFactorBonus'), **kwargs)
class Effect3392(BaseEffect):
"""
eliteBonusBlackOpsLargeEnergyTurretTracking1
Used by:
Ship: Redeemer
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'),
'trackingSpeed', ship.getModifiedItemAttr('eliteBonusBlackOps1'), skill='Black Ops', **kwargs)
class Effect3415(BaseEffect):
"""
eliteBonusViolatorsLargeEnergyTurretDamageRole1
Used by:
Ship: Paladin
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'),
'damageMultiplier', ship.getModifiedItemAttr('eliteBonusViolatorsRole1'), **kwargs)
class Effect3416(BaseEffect):
"""
eliteBonusViolatorsLargeHybridTurretDamageRole1
Used by:
Ship: Kronos
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'),
'damageMultiplier', ship.getModifiedItemAttr('eliteBonusViolatorsRole1'), **kwargs)
class Effect3417(BaseEffect):
"""
eliteBonusViolatorsLargeProjectileTurretDamageRole1
Used by:
Ship: Vargur
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'),
'damageMultiplier', ship.getModifiedItemAttr('eliteBonusViolatorsRole1'), **kwargs)
class Effect3424(BaseEffect):
"""
eliteBonusViolatorsLargeHybridTurretTracking1
Used by:
Ship: Kronos
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'),
'trackingSpeed', ship.getModifiedItemAttr('eliteBonusViolators1'), skill='Marauders', **kwargs)
class Effect3425(BaseEffect):
"""
eliteBonusViolatorsLargeProjectileTurretTracking1
Used by:
Ship: Vargur
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'),
'trackingSpeed', ship.getModifiedItemAttr('eliteBonusViolators1'), skill='Marauders', **kwargs)
class Effect3427(BaseEffect):
"""
eliteBonusViolatorsTractorBeamMaxRangeRole2
Used by:
Ships from group: Marauder (5 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Tractor Beam',
'maxRange', ship.getModifiedItemAttr('eliteBonusViolatorsRole2'), **kwargs)
class Effect3439(BaseEffect):
"""
eliteBonusViolatorsEwTargetPainting1
Used by:
Ship: Golem
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter',
'signatureRadiusBonus', ship.getModifiedItemAttr('eliteBonusViolators1'),
skill='Marauders', **kwargs)
class Effect3447(BaseEffect):
"""
shipBonusPTFalloffMB1
Used by:
Ship: Marshal
Ship: Python
Ship: Vargur
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'),
'falloff', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs)
class Effect3466(BaseEffect):
"""
eliteBonusElectronicAttackShipRechargeRate2
Used by:
Ship: Sentinel
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('rechargeRate', ship.getModifiedItemAttr('eliteBonusElectronicAttackShip2'),
skill='Electronic Attack Ships', **kwargs)
class Effect3467(BaseEffect):
"""
eliteBonusElectronicAttackShipCapacitorCapacity2
Used by:
Ship: Kitsune
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('capacitorCapacity', ship.getModifiedItemAttr('eliteBonusElectronicAttackShip2'),
skill='Electronic Attack Ships', **kwargs)
class Effect3468(BaseEffect):
"""
eliteBonusHeavyInterdictorsWarpDisruptFieldGeneratorWarpScrambleRange2
Used by:
Ships from group: Heavy Interdiction Cruiser (6 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Disrupt Field Generator',
'warpScrambleRange', ship.getModifiedItemAttr('eliteBonusHeavyInterdictors2'),
skill='Heavy Interdiction Cruisers', **kwargs)
class Effect3473(BaseEffect):
"""
eliteBonusViolatorsTractorBeamMaxTractorVelocityRole3
Used by:
Ships from group: Marauder (5 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Tractor Beam',
'maxTractorVelocity', ship.getModifiedItemAttr('eliteBonusViolatorsRole3'), **kwargs)
class Effect3478(BaseEffect):
"""
shipLaserDamagePirateBattleship
Used by:
Ship: Bhaalgorn
Ship: Nightmare
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect3480(BaseEffect):
"""
shipTrackingBonusAB
Used by:
Ship: Nightmare
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'),
'trackingSpeed', ship.getModifiedItemAttr('shipBonusAB2'), skill='Amarr Battleship', **kwargs)
class Effect3483(BaseEffect):
"""
shipBonusMediumEnergyTurretDamagePirateFaction
Used by:
Ships named like: Stratios (2 of 2)
Ship: Ashimmu
Ship: Fiend
Ship: Gnosis
Ship: Phantasm
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect3484(BaseEffect):
"""
shipBonusMediumEnergyTurretTrackingAC2
Used by:
Ship: Fiend
Ship: Phantasm
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'),
'trackingSpeed', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs)
class Effect3487(BaseEffect):
"""
shipBonusSmallEnergyTurretDamagePirateFaction
Used by:
Ship: Caedes
Ship: Confessor
Ship: Cruor
Ship: Imp
Ship: Metamorphosis
Ship: Succubus
Ship: Sunesis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect3489(BaseEffect):
"""
shipBonusSmallEnergyTurretTracking2AF
Used by:
Ship: Imp
Ship: Succubus
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'),
'trackingSpeed', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs)
class Effect3493(BaseEffect):
"""
rorqualCargoScanRangeBonus
Used by:
Ship: Rorqual
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Cargo Scanner',
'cargoScanRange', ship.getModifiedItemAttr('cargoScannerRangeBonus'), **kwargs)
class Effect3495(BaseEffect):
"""
shipCapPropulsionJamming
Used by:
Ships from group: Interceptor (10 of 10)
Ship: Atron
Ship: Condor
Ship: Executioner
Ship: Slasher
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
groups = ('Stasis Web', 'Warp Scrambler')
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups,
'capacitorNeed', ship.getModifiedItemAttr('eliteBonusInterceptorRole'), **kwargs)
class Effect3496(BaseEffect):
"""
setBonusThukker
Used by:
Implants named like: grade Nomad (12 of 12)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant',
'agilityBonus', implant.getModifiedItemAttr('implantSetThukker'), **kwargs)
class Effect3498(BaseEffect):
"""
setBonusSisters
Used by:
Implants named like: grade Virtue (12 of 12)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant',
'scanStrengthBonus', implant.getModifiedItemAttr('implantSetSisters'), **kwargs)
class Effect3499(BaseEffect):
"""
setBonusSyndicate
Used by:
Implants named like: grade Edge (12 of 12)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant',
'boosterAttributeModifier',
implant.getModifiedItemAttr('implantSetSyndicate'), **kwargs)
class Effect3513(BaseEffect):
"""
setBonusMordus
Used by:
Implants named like: grade Centurion (12 of 12)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant',
'rangeSkillBonus', implant.getModifiedItemAttr('implantSetMordus'), **kwargs)
class Effect3514(BaseEffect):
"""
Interceptor2WarpScrambleRange
Used by:
Ships from group: Interceptor (6 of 10)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler',
'maxRange', ship.getModifiedItemAttr('eliteBonusInterceptor2'), skill='Interceptors', **kwargs)
class Effect3519(BaseEffect):
"""
weaponUpgradesCpuNeedBonusPostPercentCpuLocationShipModulesRequiringBombLauncher
Used by:
Skill: Weapon Upgrades
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Bomb Deployment'),
'cpu', skill.getModifiedItemAttr('cpuNeedBonus') * skill.level, **kwargs)
class Effect3520(BaseEffect):
"""
skillAdvancedWeaponUpgradesPowerNeedBonusBombLaunchers
Used by:
Skill: Advanced Weapon Upgrades
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Bomb Deployment'),
'power', skill.getModifiedItemAttr('powerNeedBonus') * skill.level, **kwargs)
class Effect3526(BaseEffect):
"""
cynosuralTheoryConsumptionBonus
Used by:
Ships from group: Force Recon Ship (9 of 10)
Ships named like: Venture (2 of 2)
Skill: Cynosural Field Theory
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Cynosural Field Generator',
'consumptionQuantity',
container.getModifiedItemAttr('consumptionQuantityBonusPercentage') * level, **kwargs)
class Effect3532(BaseEffect):
"""
skillJumpDriveConsumptionAmountBonusPercentage
Used by:
Skill: Jump Fuel Conservation
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('jumpDriveConsumptionAmount',
skill.getModifiedItemAttr('consumptionQuantityBonusPercentage') * skill.level, **kwargs)
class Effect3561(BaseEffect):
"""
ewSkillTrackingDisruptionTrackingSpeedBonus
Used by:
Modules named like: Tracking Diagnostic Subroutines (8 of 8)
Skill: Weapon Destabilization
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Weapon Disruptor',
'trackingSpeedBonus',
container.getModifiedItemAttr('scanSkillEwStrengthBonus') * level, **kwargs)
class Effect3568(BaseEffect):
"""
eliteBonusLogisticsTrackingLinkMaxRangeBonus1
Used by:
Ship: Scimitar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer',
'maxRangeBonus', ship.getModifiedItemAttr('eliteBonusLogistics1'),
skill='Logistics Cruisers', **kwargs)
class Effect3569(BaseEffect):
"""
eliteBonusLogisticsTrackingLinkMaxRangeBonus2
Used by:
Ship: Oneiros
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer',
'maxRangeBonus', ship.getModifiedItemAttr('eliteBonusLogistics2'),
skill='Logistics Cruisers', **kwargs)
class Effect3570(BaseEffect):
"""
eliteBonusLogisticsTrackingLinkTrackingSpeedBonus2
Used by:
Ship: Oneiros
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer',
'trackingSpeedBonus', ship.getModifiedItemAttr('eliteBonusLogistics2'),
skill='Logistics Cruisers', **kwargs)
class Effect3571(BaseEffect):
"""
eliteBonusLogisticsTrackingLinkTrackingSpeedBonus1
Used by:
Ship: Scimitar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer',
'trackingSpeedBonus', ship.getModifiedItemAttr('eliteBonusLogistics1'),
skill='Logistics Cruisers', **kwargs)
class Effect3586(BaseEffect):
"""
ewSkillSignalSuppressionScanResolutionBonus
Used by:
Modules named like: Inverted Signal Field Projector (8 of 8)
Skill: Signal Suppression
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
penalized = False if 'skill' in context else True
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener',
'scanResolutionBonus',
container.getModifiedItemAttr('scanSkillEwStrengthBonus') * level,
stackingPenalties=penalized, **kwargs)
class Effect3587(BaseEffect):
"""
shipBonusEwRemoteSensorDampenerMaxTargetRangeBonusGC2
Used by:
Variations of ship: Celestis (3 of 3)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener',
'maxTargetRangeBonus', ship.getModifiedItemAttr('shipBonusGC2'),
skill='Gallente Cruiser', **kwargs)
class Effect3588(BaseEffect):
"""
shipBonusEwRemoteSensorDampenerMaxTargetRangeBonusGF2
Used by:
Ship: Keres
Ship: Maulus
Ship: Raiju
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener',
'maxTargetRangeBonus', ship.getModifiedItemAttr('shipBonusGF2'),
skill='Gallente Frigate', **kwargs)
class Effect3589(BaseEffect):
"""
shipBonusEwRemoteSensorDampenerScanResolutionBonusGF2
Used by:
Ship: Keres
Ship: Maulus
Ship: Raiju
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener',
'scanResolutionBonus', ship.getModifiedItemAttr('shipBonusGF2'),
skill='Gallente Frigate', **kwargs)
class Effect3590(BaseEffect):
"""
shipBonusEwRemoteSensorDampenerScanResolutionBonusGC2
Used by:
Variations of ship: Celestis (3 of 3)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener',
'scanResolutionBonus', ship.getModifiedItemAttr('shipBonusGC2'),
skill='Gallente Cruiser', **kwargs)
class Effect3591(BaseEffect):
"""
ewSkillSignalSuppressionMaxTargetRangeBonus
Used by:
Modules named like: Inverted Signal Field Projector (8 of 8)
Skill: Signal Suppression
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener',
'maxTargetRangeBonus',
container.getModifiedItemAttr('scanSkillEwStrengthBonus') * level, **kwargs)
class Effect3592(BaseEffect):
"""
eliteBonusJumpFreighterHullHP1
Used by:
Ships from group: Jump Freighter (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('hp', ship.getModifiedItemAttr('eliteBonusJumpFreighter1'), skill='Jump Freighters', **kwargs)
class Effect3593(BaseEffect):
"""
eliteBonusJumpFreighterJumpDriveConsumptionAmount2
Used by:
Ships from group: Jump Freighter (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('jumpDriveConsumptionAmount', ship.getModifiedItemAttr('eliteBonusJumpFreighter2'),
skill='Jump Freighters', **kwargs)
class Effect3597(BaseEffect):
"""
scriptSensorBoosterScanResolutionBonusBonus
Used by:
Charges from group: Sensor Booster Script (3 of 3)
Charges from group: Sensor Dampener Script (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.boostItemAttr('scanResolutionBonus', module.getModifiedChargeAttr('scanResolutionBonusBonus'), **kwargs)
class Effect3598(BaseEffect):
"""
scriptSensorBoosterMaxTargetRangeBonusBonus
Used by:
Charges from group: Sensor Booster Script (3 of 3)
Charges from group: Sensor Dampener Script (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.boostItemAttr('maxTargetRangeBonus', module.getModifiedChargeAttr('maxTargetRangeBonusBonus'), **kwargs)
class Effect3599(BaseEffect):
"""
scriptTrackingComputerTrackingSpeedBonusBonus
Used by:
Charges from group: Tracking Disruption Script (2 of 2)
Charges from group: Tracking Script (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.boostItemAttr('trackingSpeedBonus', module.getModifiedChargeAttr('trackingSpeedBonusBonus'), **kwargs)
class Effect3600(BaseEffect):
"""
scriptTrackingComputerMaxRangeBonusBonus
Used by:
Charges from group: Tracking Disruption Script (2 of 2)
Charges from group: Tracking Script (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.boostItemAttr('maxRangeBonus', module.getModifiedChargeAttr('maxRangeBonusBonus'), **kwargs)
class Effect3601(BaseEffect):
"""
scriptWarpDisruptionFieldGeneratorSetDisallowInEmpireandHazardSpace
Used by:
Charges from group: Warp Disruption Script (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.forceItemAttr('disallowInEmpireSpace', module.getModifiedChargeAttr('disallowInEmpireSpace'), **kwargs)
module.forceItemAttr('disallowInHazardSystem', module.getModifiedChargeAttr('disallowInHazardSystem'), **kwargs)
class Effect3602(BaseEffect):
"""
scriptDurationBonus
Used by:
Charges from group: Warp Disruption Script (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.boostItemAttr('duration', module.getModifiedChargeAttr('durationBonus'), **kwargs)
class Effect3617(BaseEffect):
"""
scriptSignatureRadiusBonusBonus
Used by:
Charges from group: Warp Disruption Script (2 of 2)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.boostItemAttr('signatureRadiusBonus', module.getModifiedChargeAttr('signatureRadiusBonusBonus'), **kwargs)
class Effect3648(BaseEffect):
"""
scriptWarpScrambleRangeBonus
Used by:
Charges from group: Warp Disruption Script (2 of 2)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.boostItemAttr('warpScrambleRange', module.getModifiedChargeAttr('warpScrambleRangeBonus'), **kwargs)
class Effect3649(BaseEffect):
"""
eliteBonusViolatorsLargeEnergyTurretDamage1
Used by:
Ship: Paladin
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'),
'damageMultiplier', ship.getModifiedItemAttr('eliteBonusViolators1'),
skill='Marauders', **kwargs)
class Effect3650(BaseEffect):
"""
ewGroupRsdMaxRangeBonus
Used by:
Implants named like: grade Centurion (10 of 12)
Implant: Serenity YC122.9 Season Booster - EW Range
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener',
'maxRange', implant.getModifiedItemAttr('rangeSkillBonus'), **kwargs)
class Effect3651(BaseEffect):
"""
ewGroupTpMaxRangeBonus
Used by:
Implants named like: grade Centurion (10 of 12)
Implant: Serenity YC122.9 Season Booster - EW Range
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter',
'maxRange', implant.getModifiedItemAttr('rangeSkillBonus'), **kwargs)
class Effect3652(BaseEffect):
"""
ewGroupTdMaxRangeBonus
Used by:
Implants named like: grade Centurion (10 of 12)
Implant: Serenity YC122.9 Season Booster - EW Range
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Weapon Disruptor',
'maxRange', implant.getModifiedItemAttr('rangeSkillBonus'), **kwargs)
class Effect3653(BaseEffect):
"""
ewGroupEcmBurstMaxRangeBonus
Used by:
Implants named like: grade Centurion (10 of 12)
Implant: Serenity YC122.9 Season Booster - EW Range
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Burst Projectors',
'maxRange', implant.getModifiedItemAttr('rangeSkillBonus'), **kwargs)
class Effect3655(BaseEffect):
"""
gunneryMaxRangeBonusOnline
Used by:
Modules from group: Tracking Enhancer (10 of 10)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'),
'maxRange', module.getModifiedItemAttr('maxRangeBonus'),
stackingPenalties=True, **kwargs)
class Effect3656(BaseEffect):
"""
gunneryTrackingSpeedBonusOnline
Used by:
Modules from group: Tracking Enhancer (10 of 10)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'),
'trackingSpeed', module.getModifiedItemAttr('trackingSpeedBonus'),
stackingPenalties=True, **kwargs)
class Effect3657(BaseEffect):
"""
shipScanResolutionBonusOnline
Used by:
Modules from group: Signal Amplifier (7 of 7)
Structure Modules from group: Structure Signal Amplifier (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('scanResolution', module.getModifiedItemAttr('scanResolutionBonus'),
stackingPenalties=True, **kwargs)
class Effect3659(BaseEffect):
"""
shipMaxTargetRangeBonusOnline
Used by:
Modules from group: Signal Amplifier (7 of 7)
Structure Modules from group: Structure Signal Amplifier (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRangeBonus'),
stackingPenalties=True, **kwargs)
class Effect3660(BaseEffect):
"""
shipMaxLockedTargetsBonusAddOnline
Used by:
Modules from group: Signal Amplifier (7 of 7)
Structure Modules from group: Structure Signal Amplifier (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('maxLockedTargets', module.getModifiedItemAttr('maxLockedTargetsBonus'), **kwargs)
class Effect3668(BaseEffect):
"""
miningLaserRangeBonus
Used by:
Implants named like: Halcyon R Booster (5 of 5)
Implants named like: Halcyon Y Booster (5 of 5)
Implants named like: grade Harvest (10 of 12)
Implant: Serenity YC122.9 Season Booster - Mining Range
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Mining Laser',
'maxRange', implant.getModifiedItemAttr('maxRangeBonus'), **kwargs)
class Effect3669(BaseEffect):
"""
frequencyMiningLaserMaxRangeBonus
Used by:
Implants named like: Halcyon R Booster (5 of 5)
Implants named like: Halcyon Y Booster (5 of 5)
Implants named like: grade Harvest (10 of 12)
Implant: Serenity YC122.9 Season Booster - Mining Range
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Frequency Mining Laser',
'maxRange', implant.getModifiedItemAttr('maxRangeBonus'), **kwargs)
class Effect3670(BaseEffect):
"""
stripMinerMaxRangeBonus
Used by:
Implants named like: Halcyon R Booster (5 of 5)
Implants named like: Halcyon Y Booster (5 of 5)
Implants named like: grade Harvest (10 of 12)
Implant: Serenity YC122.9 Season Booster - Mining Range
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Strip Miner',
'maxRange', implant.getModifiedItemAttr('maxRangeBonus'), **kwargs)
class Effect3671(BaseEffect):
"""
gasHarvesterMaxRangeBonus
Used by:
Implants named like: grade Harvest (10 of 12)
Implant: Serenity YC122.9 Season Booster - Mining Range
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Gas Cloud Scoops',
'maxRange', implant.getModifiedItemAttr('maxRangeBonus'), **kwargs)
class Effect3672(BaseEffect):
"""
setBonusOre
Used by:
Implants named like: grade Harvest (12 of 12)
Implant: Serenity YC122.9 Season Booster - Mining Range
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant',
'maxRangeBonus', implant.getModifiedItemAttr('implantSetORE'), **kwargs)
class Effect3674(BaseEffect):
"""
jumpPortalGenerationBO
Used by:
Module: Covert Jump Portal Generator I
"""
type = 'active'
@staticmethod
def handler(fit, mod, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs)
fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs)
class Effect3677(BaseEffect):
"""
shipBonusLargeEnergyTurretMaxRangeAB2
Used by:
Ship: Apocalypse
Ship: Apocalypse Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'),
'maxRange', ship.getModifiedItemAttr('shipBonusAB2'), skill='Amarr Battleship', **kwargs)
class Effect3678(BaseEffect):
"""
eliteBonusJumpFreighterShieldHP1
Used by:
Ship: Nomad
Ship: Rhea
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldCapacity', ship.getModifiedItemAttr('eliteBonusJumpFreighter1'),
skill='Jump Freighters', **kwargs)
class Effect3679(BaseEffect):
"""
eliteBonusJumpFreighterArmorHP1
Used by:
Ship: Anshar
Ship: Ark
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorHP', ship.getModifiedItemAttr('eliteBonusJumpFreighter1'), skill='Jump Freighters', **kwargs)
class Effect3680(BaseEffect):
"""
freighterAgilityBonusC1
Used by:
Ship: Rhea
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('freighterBonusC1'), skill='Caldari Freighter', **kwargs)
class Effect3681(BaseEffect):
"""
freighterAgilityBonusM1
Used by:
Ship: Nomad
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('freighterBonusM1'), skill='Minmatar Freighter', **kwargs)
class Effect3682(BaseEffect):
"""
freighterAgilityBonusG1
Used by:
Ship: Anshar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('freighterBonusG1'), skill='Gallente Freighter', **kwargs)
class Effect3683(BaseEffect):
"""
freighterAgilityBonusA1
Used by:
Ship: Ark
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('freighterBonusA1'), skill='Amarr Freighter', **kwargs)
class Effect3686(BaseEffect):
"""
scriptTrackingComputerFalloffBonusBonus
Used by:
Charges from group: Tracking Disruption Script (2 of 2)
Charges from group: Tracking Script (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.boostItemAttr('falloffBonus', module.getModifiedChargeAttr('falloffBonusBonus'), **kwargs)
class Effect3703(BaseEffect):
"""
shipMissileLauncherSpeedBonusMC2
Used by:
Ship: Bellicose
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
groups = ('Missile Launcher Rapid Light', 'Missile Launcher Heavy', 'Missile Launcher Heavy Assault')
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups,
'speed', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs)
class Effect3705(BaseEffect):
"""
shipHybridTurretROFBonusGC2
Used by:
Ship: Phobos
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'speed', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs)
class Effect3706(BaseEffect):
"""
shipBonusProjectileTrackingMC2
Used by:
Ship: Rupture
Ship: Stabber Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'),
'trackingSpeed', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs)
class Effect3726(BaseEffect):
"""
agilityMultiplierEffectPassive
Used by:
Modules named like: Polycarbon Engine Housing (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('agility', module.getModifiedItemAttr('agilityBonus'), stackingPenalties=True, **kwargs)
class Effect3727(BaseEffect):
"""
velocityBonusPassive
Used by:
Modules named like: Polycarbon Engine Housing (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', module.getModifiedItemAttr('implantBonusVelocity'),
stackingPenalties=True, **kwargs)
class Effect3739(BaseEffect):
"""
zColinOrcaTractorRangeBonus
Used by:
Ships from group: Industrial Command Ship (2 of 2)
Ship: Outrider
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Tractor Beam', 'maxRange',
src.getModifiedItemAttr('roleBonusTractorBeamRange'), **kwargs)
class Effect3740(BaseEffect):
"""
zColinOrcaTractorVelocityBonus
Used by:
Ships from group: Industrial Command Ship (2 of 2)
Ship: Outrider
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Tractor Beam', 'maxTractorVelocity',
ship.getModifiedItemAttr('roleBonusTractorBeamVelocity'), **kwargs)
class Effect3744(BaseEffect):
"""
miningForemanBurstBonusICS2
Used by:
Ships from group: Industrial Command Ship (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff4Value',
src.getModifiedItemAttr('shipBonusICS2'), skill='Industrial Command Ships', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff1Value',
src.getModifiedItemAttr('shipBonusICS2'), skill='Industrial Command Ships', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'buffDuration',
src.getModifiedItemAttr('shipBonusICS2'), skill='Industrial Command Ships', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff3Value',
src.getModifiedItemAttr('shipBonusICS2'), skill='Industrial Command Ships', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff2Value',
src.getModifiedItemAttr('shipBonusICS2'), skill='Industrial Command Ships', **kwargs)
class Effect3765(BaseEffect):
"""
covertOpsStealthBomberSiegeMissileLauncherPowerNeedBonus
Used by:
Ships from group: Stealth Bomber (5 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Missile Launcher Torpedo',
'power', ship.getModifiedItemAttr('stealthBomberLauncherPower'), **kwargs)
class Effect3766(BaseEffect):
"""
interceptorMWDSignatureRadiusBonus
Used by:
Ships from group: Interceptor (10 of 10)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'),
'signatureRadiusBonus', ship.getModifiedItemAttr('eliteBonusInterceptor'),
skill='Interceptors', **kwargs)
class Effect3771(BaseEffect):
"""
armorHPBonusAddPassive
Used by:
Subsystems from group: Defensive Subsystem (9 of 12)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('armorHP', module.getModifiedItemAttr('armorHPBonusAdd') or 0, **kwargs)
class Effect3773(BaseEffect):
"""
hardPointModifierEffect
Used by:
Subsystems from group: Offensive Subsystem (12 of 12)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('turretSlotsLeft', module.getModifiedItemAttr('turretHardPointModifier'), **kwargs)
fit.ship.increaseItemAttr('launcherSlotsLeft', module.getModifiedItemAttr('launcherHardPointModifier'), **kwargs)
class Effect3774(BaseEffect):
"""
slotModifier
Used by:
Items from category: Subsystem (48 of 48)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('hiSlots', module.getModifiedItemAttr('hiSlotModifier'), **kwargs)
fit.ship.increaseItemAttr('medSlots', module.getModifiedItemAttr('medSlotModifier'), **kwargs)
fit.ship.increaseItemAttr('lowSlots', module.getModifiedItemAttr('lowSlotModifier'), **kwargs)
class Effect3782(BaseEffect):
"""
powerOutputAddPassive
Used by:
Subsystems from group: Offensive Subsystem (12 of 12)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('powerOutput', module.getModifiedItemAttr('powerOutput'), **kwargs)
class Effect3783(BaseEffect):
"""
cpuOutputAddCpuOutputPassive
Used by:
Subsystems from group: Offensive Subsystem (8 of 12)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('cpuOutput', module.getModifiedItemAttr('cpuOutput'), **kwargs)
class Effect3797(BaseEffect):
"""
droneBandwidthAddPassive
Used by:
Subsystems from group: Offensive Subsystem (12 of 12)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('droneBandwidth', module.getModifiedItemAttr('droneBandwidth'), **kwargs)
class Effect3799(BaseEffect):
"""
droneCapacityAdddroneCapacityPassive
Used by:
Subsystems from group: Offensive Subsystem (12 of 12)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('droneCapacity', module.getModifiedItemAttr('droneCapacity'), **kwargs)
class Effect3807(BaseEffect):
"""
maxTargetRangeAddPassive
Used by:
Subsystems named like: Propulsion Interdiction Nullifier (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRange'), **kwargs)
class Effect3808(BaseEffect):
"""
signatureRadiusAddPassive
Used by:
Subsystems from group: Defensive Subsystem (8 of 12)
Subsystems named like: Propulsion Interdiction Nullifier (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('signatureRadius', module.getModifiedItemAttr('signatureRadius'), **kwargs)
class Effect3810(BaseEffect):
"""
capacityAddPassive
Used by:
Subsystems named like: Defensive Covert Reconfiguration (4 of 4)
Subsystem: Legion Defensive - Nanobot Injector
"""
type = 'passive'
@staticmethod
def handler(fit, subsystem, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('capacity', subsystem.getModifiedItemAttr('cargoCapacityAdd') or 0, **kwargs)
class Effect3811(BaseEffect):
"""
capacitorCapacityAddPassive
Used by:
Items from category: Subsystem (20 of 48)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('capacitorCapacity', module.getModifiedItemAttr('capacitorCapacity') or 0, **kwargs)
class Effect3831(BaseEffect):
"""
shieldCapacityAddPassive
Used by:
Subsystems from group: Defensive Subsystem (8 of 12)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('shieldCapacity', module.getModifiedItemAttr('shieldCapacity'), **kwargs)
class Effect3857(BaseEffect):
"""
subsystemBonusAmarrPropulsionMaxVelocity
Used by:
Subsystem: Legion Propulsion - Intercalated Nanofibers
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', module.getModifiedItemAttr('subsystemBonusAmarrPropulsion'),
skill='Amarr Propulsion Systems', **kwargs)
class Effect3859(BaseEffect):
"""
subsystemBonusCaldariPropulsionMaxVelocity
Used by:
Subsystem: Tengu Propulsion - Chassis Optimization
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', src.getModifiedItemAttr('subsystemBonusCaldariPropulsion'),
skill='Caldari Propulsion Systems', **kwargs)
class Effect3860(BaseEffect):
"""
subsystemBonusMinmatarPropulsionMaxVelocity
Used by:
Subsystem: Loki Propulsion - Intercalated Nanofibers
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', module.getModifiedItemAttr('subsystemBonusMinmatarPropulsion'),
skill='Minmatar Propulsion Systems', **kwargs)
class Effect3861(BaseEffect):
"""
subsystemBonusMinmatarPropulsionAfterburnerSpeedFactor
Used by:
Subsystem: Loki Propulsion - Wake Limiter
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'),
'speedFactor', module.getModifiedItemAttr('subsystemBonusMinmatarPropulsion'),
skill='Minmatar Propulsion Systems', **kwargs)
class Effect3863(BaseEffect):
"""
subsystemBonusCaldariPropulsionAfterburnerSpeedFactor
Used by:
Subsystem: Tengu Propulsion - Fuel Catalyst
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'),
'speedFactor', module.getModifiedItemAttr('subsystemBonusCaldariPropulsion'),
skill='Caldari Propulsion Systems', **kwargs)
class Effect3864(BaseEffect):
"""
subsystemBonusAmarrPropulsionAfterburnerSpeedFactor
Used by:
Subsystem: Legion Propulsion - Wake Limiter
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'),
'speedFactor', module.getModifiedItemAttr('subsystemBonusAmarrPropulsion'),
skill='Amarr Propulsion Systems', **kwargs)
class Effect3865(BaseEffect):
"""
subsystemBonusAmarrPropulsion2Agility
Used by:
Subsystem: Legion Propulsion - Intercalated Nanofibers
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('agility', src.getModifiedItemAttr('subsystemBonusAmarrPropulsion2'),
skill='Amarr Propulsion Systems', **kwargs)
class Effect3866(BaseEffect):
"""
subsystemBonusCaldariPropulsion2Agility
Used by:
Subsystem: Tengu Propulsion - Chassis Optimization
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('agility', src.getModifiedItemAttr('subsystemBonusCaldariPropulsion2'),
skill='Caldari Propulsion Systems', **kwargs)
class Effect3867(BaseEffect):
"""
subsystemBonusGallentePropulsion2Agility
Used by:
Subsystem: Proteus Propulsion - Hyperspatial Optimization
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('agility', src.getModifiedItemAttr('subsystemBonusGallentePropulsion2'),
skill='Gallente Propulsion Systems', **kwargs)
class Effect3868(BaseEffect):
"""
subsystemBonusMinmatarPropulsion2Agility
Used by:
Subsystem: Loki Propulsion - Intercalated Nanofibers
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('agility', src.getModifiedItemAttr('subsystemBonusMinmatarPropulsion2'),
skill='Minmatar Propulsion Systems', **kwargs)
class Effect3869(BaseEffect):
"""
subsystemBonusMinmatarPropulsion2MWDPenalty
Used by:
Subsystem: Loki Propulsion - Wake Limiter
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'),
'signatureRadiusBonus', src.getModifiedItemAttr('subsystemBonusMinmatarPropulsion2'),
skill='Minmatar Propulsion Systems', **kwargs)
class Effect3872(BaseEffect):
"""
subsystemBonusAmarrPropulsion2MWDPenalty
Used by:
Subsystem: Legion Propulsion - Wake Limiter
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'),
'signatureRadiusBonus', src.getModifiedItemAttr('subsystemBonusAmarrPropulsion2'),
skill='Amarr Propulsion Systems', **kwargs)
class Effect3875(BaseEffect):
"""
subsystemBonusGallentePropulsionABMWDCapNeed
Used by:
Subsystem: Proteus Propulsion - Localized Injectors
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Propulsion Module',
'capacitorNeed', module.getModifiedItemAttr('subsystemBonusGallentePropulsion'),
skill='Gallente Propulsion Systems', **kwargs)
class Effect3893(BaseEffect):
"""
subsystemBonusMinmatarCoreScanStrengthLADAR
Used by:
Subsystem: Loki Core - Dissolution Sequencer
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('scanLadarStrength', src.getModifiedItemAttr('subsystemBonusMinmatarCore'),
skill='Minmatar Core Systems', **kwargs)
class Effect3895(BaseEffect):
"""
subsystemBonusGallenteCoreScanStrengthMagnetometric
Used by:
Subsystem: Proteus Core - Electronic Efficiency Gate
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('scanMagnetometricStrength', src.getModifiedItemAttr('subsystemBonusGallenteCore'),
skill='Gallente Core Systems', **kwargs)
class Effect3897(BaseEffect):
"""
subsystemBonusCaldariCoreScanStrengthGravimetric
Used by:
Subsystem: Tengu Core - Electronic Efficiency Gate
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('scanGravimetricStrength', src.getModifiedItemAttr('subsystemBonusCaldariCore'), skill='Caldari Core Systems', **kwargs)
class Effect3900(BaseEffect):
"""
subsystemBonusAmarrCoreScanStrengthRADAR
Used by:
Subsystem: Legion Core - Dissolution Sequencer
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('scanRadarStrength', src.getModifiedItemAttr('subsystemBonusAmarrCore'),
skill='Amarr Core Systems', **kwargs)
class Effect3959(BaseEffect):
"""
subsystemBonusAmarrDefensiveArmorRepairAmount
Used by:
Subsystem: Legion Defensive - Covert Reconfiguration
Subsystem: Legion Defensive - Nanobot Injector
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'),
'armorDamageAmount', module.getModifiedItemAttr('subsystemBonusAmarrDefensive'),
skill='Amarr Defensive Systems', **kwargs)
class Effect3961(BaseEffect):
"""
subsystemBonusGallenteDefensiveArmorRepairAmount
Used by:
Subsystem: Proteus Defensive - Covert Reconfiguration
Subsystem: Proteus Defensive - Nanobot Injector
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'),
'armorDamageAmount', module.getModifiedItemAttr('subsystemBonusGallenteDefensive'),
skill='Gallente Defensive Systems', **kwargs)
class Effect3962(BaseEffect):
"""
subsystemBonusMinmatarDefensiveShieldArmorRepairAmount
Used by:
Subsystem: Loki Defensive - Adaptive Defense Node
Subsystem: Loki Defensive - Covert Reconfiguration
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'),
'armorDamageAmount', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive'),
skill='Minmatar Defensive Systems', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'),
'shieldBonus', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive'),
skill='Minmatar Defensive Systems', **kwargs)
class Effect3964(BaseEffect):
"""
subsystemBonusCaldariDefensiveShieldBoostAmount
Used by:
Subsystem: Tengu Defensive - Amplification Node
Subsystem: Tengu Defensive - Covert Reconfiguration
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'),
'shieldBonus', module.getModifiedItemAttr('subsystemBonusCaldariDefensive'),
skill='Caldari Defensive Systems', **kwargs)
class Effect3976(BaseEffect):
"""
subsystemBonusCaldariDefensiveShieldHP
Used by:
Subsystem: Tengu Defensive - Supplemental Screening
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldCapacity', module.getModifiedItemAttr('subsystemBonusCaldariDefensive'),
skill='Caldari Defensive Systems', **kwargs)
class Effect3979(BaseEffect):
"""
subsystemBonusMinmatarDefensiveShieldArmorHP
Used by:
Subsystem: Loki Defensive - Augmented Durability
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldCapacity', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive'),
skill='Minmatar Defensive Systems', **kwargs)
fit.ship.boostItemAttr('armorHP', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive'),
skill='Minmatar Defensive Systems', **kwargs)
class Effect3980(BaseEffect):
"""
subsystemBonusGallenteDefensiveArmorHP
Used by:
Subsystem: Proteus Defensive - Augmented Plating
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorHP', module.getModifiedItemAttr('subsystemBonusGallenteDefensive'),
skill='Gallente Defensive Systems', **kwargs)
class Effect3982(BaseEffect):
"""
subsystemBonusAmarrDefensiveArmorHP
Used by:
Subsystem: Legion Defensive - Augmented Plating
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorHP', module.getModifiedItemAttr('subsystemBonusAmarrDefensive'),
skill='Amarr Defensive Systems', **kwargs)
class Effect3992(BaseEffect):
"""
systemShieldHP
Used by:
Celestials named like: Class Pulsar Effects (6 of 6)
Celestial: Republic Stellar Observatory
Celestial: State Stellar Observatory
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr('shieldCapacity', beacon.getModifiedItemAttr('shieldCapacityMultiplier'), **kwargs)
class Effect3993(BaseEffect):
"""
systemTargetingRange
Used by:
Celestials named like: Class Black Hole Effects (6 of 6)
Celestials named like: Class Magnetar Effects (6 of 6)
Celestial: Turnur Aftermath
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr('maxTargetRange', beacon.getModifiedItemAttr('maxTargetRangeMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect3995(BaseEffect):
"""
systemSignatureRadius
Used by:
Celestials named like: Class Pulsar Effects (6 of 6)
Celestials named like: Class Wolf Rayet Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr('signatureRadius', beacon.getModifiedItemAttr('signatureRadiusMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect3996(BaseEffect):
"""
systemArmorEmResistance
Used by:
Celestials named like: Class Pulsar Effects (6 of 6)
Celestials named like: Incursion Effect (2 of 2)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorEmDamageResonance', beacon.getModifiedItemAttr('armorEmDamageResistanceBonus'),
stackingPenalties=True, **kwargs)
class Effect3997(BaseEffect):
"""
systemArmorExplosiveResistance
Used by:
Celestials named like: Class Pulsar Effects (6 of 6)
Celestials named like: Incursion Effect (2 of 2)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorExplosiveDamageResonance',
beacon.getModifiedItemAttr('armorExplosiveDamageResistanceBonus'),
stackingPenalties=True, **kwargs)
class Effect3998(BaseEffect):
"""
systemArmorKineticResistance
Used by:
Celestials named like: Class Pulsar Effects (6 of 6)
Celestials named like: Incursion Effect (2 of 2)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorKineticDamageResonance',
beacon.getModifiedItemAttr('armorKineticDamageResistanceBonus'),
stackingPenalties=True, **kwargs)
class Effect3999(BaseEffect):
"""
systemArmorThermalResistance
Used by:
Celestials named like: Class Pulsar Effects (6 of 6)
Celestials named like: Incursion Effect (2 of 2)
Celestials named like: Volatile Ice Storm (2 of 2)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorThermalDamageResonance',
beacon.getModifiedItemAttr('armorThermalDamageResistanceBonus'),
stackingPenalties=True, **kwargs)
class Effect4002(BaseEffect):
"""
systemMissileVelocity
Used by:
Celestials named like: Class Black Hole Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'maxVelocity', beacon.getModifiedItemAttr('missileVelocityMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect4003(BaseEffect):
"""
systemMaxVelocity
Used by:
Celestials named like: Class Black Hole Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr('maxVelocity', beacon.getModifiedItemAttr('maxVelocityMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect4016(BaseEffect):
"""
systemDamageMultiplierGunnery
Used by:
Celestials named like: Class Magnetar Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Gunnery'),
'damageMultiplier', beacon.getModifiedItemAttr('damageMultiplierMultiplier'),
stackingPenalties=True, **kwargs)
class Effect4017(BaseEffect):
"""
systemDamageThermalMissiles
Used by:
Celestials named like: Class Magnetar Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'thermalDamage', beacon.getModifiedItemAttr('damageMultiplierMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect4018(BaseEffect):
"""
systemDamageEmMissiles
Used by:
Celestials named like: Class Magnetar Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'emDamage', beacon.getModifiedItemAttr('damageMultiplierMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect4019(BaseEffect):
"""
systemDamageExplosiveMissiles
Used by:
Celestials named like: Class Magnetar Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'explosiveDamage', beacon.getModifiedItemAttr('damageMultiplierMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect4020(BaseEffect):
"""
systemDamageKineticMissiles
Used by:
Celestials named like: Class Magnetar Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'kineticDamage', beacon.getModifiedItemAttr('damageMultiplierMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect4021(BaseEffect):
"""
systemDamageDrones
Used by:
Celestials named like: Class Magnetar Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.drones.filteredItemMultiply(lambda drone: drone.item.requiresSkill('Drones'),
'damageMultiplier', beacon.getModifiedItemAttr('damageMultiplierMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect4022(BaseEffect):
"""
systemTracking
Used by:
Celestials named like: Class Magnetar Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Gunnery'),
'trackingSpeed', module.getModifiedItemAttr('trackingSpeedMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect4023(BaseEffect):
"""
systemAoeVelocity
Used by:
Celestials named like: Class Black Hole Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredChargeMultiply(
lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'aoeVelocity', beacon.getModifiedItemAttr('aoeVelocityMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect4033(BaseEffect):
"""
systemHeatDamage
Used by:
Celestials named like: Class Red Giant Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: 'heatDamage' in mod.itemModifiedAttributes,
'heatDamage', module.getModifiedItemAttr('heatDamageMultiplier'), **kwargs)
class Effect4034(BaseEffect):
"""
systemOverloadArmor
Used by:
Celestials named like: Class Red Giant Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: 'overloadArmorDamageAmount' in mod.itemModifiedAttributes,
'overloadArmorDamageAmount', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs)
class Effect4035(BaseEffect):
"""
systemOverloadDamageModifier
Used by:
Celestials named like: Class Red Giant Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: 'overloadDamageModifier' in mod.itemModifiedAttributes,
'overloadDamageModifier', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs)
class Effect4036(BaseEffect):
"""
systemOverloadDurationBonus
Used by:
Celestials named like: Class Red Giant Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: 'overloadDurationBonus' in mod.itemModifiedAttributes,
'overloadDurationBonus', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs)
class Effect4037(BaseEffect):
"""
systemOverloadEccmStrength
Used by:
Celestials named like: Class Red Giant Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: 'overloadECCMStrenghtBonus' in mod.itemModifiedAttributes,
'overloadECCMStrenghtBonus', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs)
class Effect4038(BaseEffect):
"""
systemOverloadEcmStrength
Used by:
Celestials named like: Class Red Giant Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: 'overloadECMStrengthBonus' in mod.itemModifiedAttributes,
'overloadECMStrengthBonus', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs)
class Effect4039(BaseEffect):
"""
systemOverloadHardening
Used by:
Celestials named like: Class Red Giant Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: 'overloadHardeningBonus' in mod.itemModifiedAttributes,
'overloadHardeningBonus', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs)
class Effect4040(BaseEffect):
"""
systemOverloadRange
Used by:
Celestials named like: Class Red Giant Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: 'overloadRangeBonus' in mod.itemModifiedAttributes,
'overloadRangeBonus', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs)
class Effect4041(BaseEffect):
"""
systemOverloadRof
Used by:
Celestials named like: Class Red Giant Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: 'overloadRofBonus' in mod.itemModifiedAttributes,
'overloadRofBonus', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs)
class Effect4042(BaseEffect):
"""
systemOverloadSelfDuration
Used by:
Celestials named like: Class Red Giant Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: 'overloadSelfDurationBonus' in mod.itemModifiedAttributes,
'overloadSelfDurationBonus', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs)
class Effect4043(BaseEffect):
"""
systemOverloadShieldBonus
Used by:
Celestials named like: Class Red Giant Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: 'overloadShieldBonus' in mod.itemModifiedAttributes,
'overloadShieldBonus', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs)
class Effect4044(BaseEffect):
"""
systemOverloadSpeedFactor
Used by:
Celestials named like: Class Red Giant Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: 'overloadSpeedFactorBonus' in mod.itemModifiedAttributes,
'overloadSpeedFactorBonus', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs)
class Effect4045(BaseEffect):
"""
systemSmartBombRange
Used by:
Celestials named like: Class Red Giant Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Smart Bomb',
'empFieldRange', module.getModifiedItemAttr('empFieldRangeMultiplier'), **kwargs)
class Effect4046(BaseEffect):
"""
systemSmartBombEmDamage
Used by:
Celestials named like: Class Red Giant Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Smart Bomb',
'emDamage', module.getModifiedItemAttr('smartbombDamageMultiplier'), **kwargs)
class Effect4047(BaseEffect):
"""
systemSmartBombThermalDamage
Used by:
Celestials named like: Class Red Giant Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Smart Bomb',
'thermalDamage', module.getModifiedItemAttr('smartbombDamageMultiplier'), **kwargs)
class Effect4048(BaseEffect):
"""
systemSmartBombKineticDamage
Used by:
Celestials named like: Class Red Giant Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Smart Bomb',
'kineticDamage', module.getModifiedItemAttr('smartbombDamageMultiplier'), **kwargs)
class Effect4049(BaseEffect):
"""
systemSmartBombExplosiveDamage
Used by:
Celestials named like: Class Red Giant Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Smart Bomb',
'explosiveDamage', module.getModifiedItemAttr('smartbombDamageMultiplier'), **kwargs)
class Effect4054(BaseEffect):
"""
systemSmallEnergyDamage
Used by:
Celestials named like: Class Wolf Rayet Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Small Energy Turret'),
'damageMultiplier', module.getModifiedItemAttr('smallWeaponDamageMultiplier'),
stackingPenalties=True, **kwargs)
class Effect4055(BaseEffect):
"""
systemSmallProjectileDamage
Used by:
Celestials named like: Class Wolf Rayet Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Small Projectile Turret'),
'damageMultiplier', module.getModifiedItemAttr('smallWeaponDamageMultiplier'),
stackingPenalties=True, **kwargs)
class Effect4056(BaseEffect):
"""
systemSmallHybridDamage
Used by:
Celestials named like: Class Wolf Rayet Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'),
'damageMultiplier', module.getModifiedItemAttr('smallWeaponDamageMultiplier'),
stackingPenalties=True, **kwargs)
class Effect4057(BaseEffect):
"""
systemRocketEmDamage
Used by:
Celestials named like: Class Wolf Rayet Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Rockets'),
'emDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect4058(BaseEffect):
"""
systemRocketExplosiveDamage
Used by:
Celestials named like: Class Wolf Rayet Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Rockets'),
'explosiveDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect4059(BaseEffect):
"""
systemRocketKineticDamage
Used by:
Celestials named like: Class Wolf Rayet Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Rockets'),
'kineticDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect4060(BaseEffect):
"""
systemRocketThermalDamage
Used by:
Celestials named like: Class Wolf Rayet Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Rockets'),
'thermalDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect4061(BaseEffect):
"""
systemStandardMissileThermalDamage
Used by:
Celestials named like: Class Wolf Rayet Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Light Missiles'),
'thermalDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect4062(BaseEffect):
"""
systemStandardMissileEmDamage
Used by:
Celestials named like: Class Wolf Rayet Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Light Missiles'),
'emDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect4063(BaseEffect):
"""
systemStandardMissileExplosiveDamage
Used by:
Celestials named like: Class Wolf Rayet Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Light Missiles'),
'explosiveDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect4086(BaseEffect):
"""
systemArmorRepairAmount
Used by:
Celestials named like: Class Cataclysmic Variable Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Repair Systems') or
mod.item.requiresSkill('Capital Repair Systems'),
'armorDamageAmount', module.getModifiedItemAttr('armorDamageAmountMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect4088(BaseEffect):
"""
systemArmorRemoteRepairAmount
Used by:
Celestials named like: Class Cataclysmic Variable Effects (6 of 6)
Celestial: Final Liminality
Celestial: Triglavian Minor Victory
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems') or
mod.item.requiresSkill('Capital Remote Armor Repair Systems'),
'armorDamageAmount', module.getModifiedItemAttr('armorDamageAmountMultiplierRemote'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect4089(BaseEffect):
"""
systemShieldRemoteRepairAmount
Used by:
Celestials named like: Class Cataclysmic Variable Effects (6 of 6)
Celestial: Final Liminality
Celestial: Triglavian Minor Victory
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.requiresSkill('Shield Emission Systems') or
mod.item.requiresSkill('Capital Shield Emission Systems'),
'shieldBonus', module.getModifiedItemAttr('shieldBonusMultiplierRemote'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect4090(BaseEffect):
"""
systemCapacitorCapacity
Used by:
Celestials named like: Class Cataclysmic Variable Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr('capacitorCapacity', beacon.getModifiedItemAttr('capacitorCapacityMultiplierSystem'), **kwargs)
class Effect4091(BaseEffect):
"""
systemCapacitorRecharge
Used by:
Celestials named like: Class Cataclysmic Variable Effects (6 of 6)
Celestials named like: Class Pulsar Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr('rechargeRate', beacon.getModifiedItemAttr('rechargeRateMultiplier'), **kwargs)
class Effect4093(BaseEffect):
"""
subsystemBonusAmarrOffensiveEnergyWeaponDamageMultiplier
Used by:
Subsystem: Legion Offensive - Liquid Crystal Magnifiers
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'),
'damageMultiplier', module.getModifiedItemAttr('subsystemBonusAmarrOffensive'),
skill='Amarr Offensive Systems', **kwargs)
class Effect4104(BaseEffect):
"""
subsystemBonusCaldariOffensiveHybridWeaponMaxRange
Used by:
Subsystem: Tengu Offensive - Magnetic Infusion Basin
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'maxRange', module.getModifiedItemAttr('subsystemBonusCaldariOffensive'),
skill='Caldari Offensive Systems', **kwargs)
class Effect4106(BaseEffect):
"""
subsystemBonusGallenteOffensiveHybridWeaponFalloff
Used by:
Subsystem: Proteus Offensive - Hybrid Encoding Platform
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'falloff', module.getModifiedItemAttr('subsystemBonusGallenteOffensive'),
skill='Gallente Offensive Systems', **kwargs)
class Effect4114(BaseEffect):
"""
subsystemBonusMinmatarOffensiveProjectileWeaponFalloff
Used by:
Subsystem: Loki Offensive - Projectile Scoping Array
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'),
'falloff', module.getModifiedItemAttr('subsystemBonusMinmatarOffensive'),
skill='Minmatar Offensive Systems', **kwargs)
class Effect4115(BaseEffect):
"""
subsystemBonusMinmatarOffensiveProjectileWeaponMaxRange
Used by:
Subsystem: Loki Offensive - Projectile Scoping Array
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'),
'maxRange', module.getModifiedItemAttr('subsystemBonusMinmatarOffensive'),
skill='Minmatar Offensive Systems', **kwargs)
class Effect4122(BaseEffect):
"""
subsystemBonusCaldariOffensive1LauncherROF
Used by:
Subsystem: Tengu Offensive - Accelerated Ejection Bay
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
groups = ('Missile Launcher Heavy', 'Missile Launcher Rapid Light', 'Missile Launcher Heavy Assault')
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups,
'speed', src.getModifiedItemAttr('subsystemBonusCaldariOffensive'), skill='Caldari Offensive Systems', **kwargs)
class Effect4135(BaseEffect):
"""
systemShieldEmResistance
Used by:
Celestials named like: Class Wolf Rayet Effects (6 of 6)
Celestial: Drifter Crisis
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldEmDamageResonance', beacon.getModifiedItemAttr('shieldEmDamageResistanceBonus'),
stackingPenalties=True, **kwargs)
class Effect4136(BaseEffect):
"""
systemShieldExplosiveResistance
Used by:
Celestials named like: Class Wolf Rayet Effects (6 of 6)
Celestial: Drifter Crisis
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldExplosiveDamageResonance',
beacon.getModifiedItemAttr('shieldExplosiveDamageResistanceBonus'),
stackingPenalties=True, **kwargs)
class Effect4137(BaseEffect):
"""
systemShieldKineticResistance
Used by:
Celestials named like: Class Wolf Rayet Effects (6 of 6)
Celestial: Drifter Crisis
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldKineticDamageResonance',
beacon.getModifiedItemAttr('shieldKineticDamageResistanceBonus'),
stackingPenalties=True, **kwargs)
class Effect4138(BaseEffect):
"""
systemShieldThermalResistance
Used by:
Celestials named like: Class Wolf Rayet Effects (6 of 6)
Celestials named like: Volatile Ice Storm (2 of 2)
Celestial: Drifter Crisis
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldThermalDamageResonance',
beacon.getModifiedItemAttr('shieldThermalDamageResistanceBonus'),
stackingPenalties=True, **kwargs)
class Effect4152(BaseEffect):
"""
subsystemBonusAmarrEngineeringHeatDamageReduction
Used by:
Subsystem: Legion Core - Energy Parasitic Complex
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage',
module.getModifiedItemAttr('subsystemBonusAmarrCore'),
skill='Amarr Core Systems', **kwargs)
class Effect4153(BaseEffect):
"""
subsystemBonusCaldariEngineeringHeatDamageReduction
Used by:
Subsystem: Tengu Core - Obfuscation Manifold
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage',
module.getModifiedItemAttr('subsystemBonusCaldariCore'),
skill='Caldari Core Systems', **kwargs)
class Effect4154(BaseEffect):
"""
subsystemBonusGallenteEngineeringHeatDamageReduction
Used by:
Subsystem: Proteus Core - Friction Extension Processor
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage',
module.getModifiedItemAttr('subsystemBonusGallenteCore'),
skill='Gallente Core Systems', **kwargs)
class Effect4155(BaseEffect):
"""
subsystemBonusMinmatarEngineeringHeatDamageReduction
Used by:
Subsystem: Loki Core - Immobility Drivers
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage',
module.getModifiedItemAttr('subsystemBonusMinmatarCore'),
skill='Minmatar Core Systems', **kwargs)
class Effect4158(BaseEffect):
"""
subsystemBonusCaldariCoreCapacitorCapacity
Used by:
Subsystem: Tengu Core - Augmented Graviton Reactor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('capacitorCapacity', src.getModifiedItemAttr('subsystemBonusCaldariCore'),
skill='Caldari Core Systems', **kwargs)
class Effect4159(BaseEffect):
"""
subsystemBonusAmarrCoreCapacitorCapacity
Used by:
Subsystem: Legion Core - Augmented Antimatter Reactor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('capacitorCapacity', src.getModifiedItemAttr('subsystemBonusAmarrCore'), skill='Amarr Core Systems', **kwargs)
class Effect4161(BaseEffect):
"""
baseMaxScanDeviationModifierRequiringAstrometrics
Used by:
Implants named like: Halcyon R Booster (5 of 5)
Implants named like: Poteque 'Prospector' Astrometric Pinpointing AP (3 of 3)
Implants named like: Poteque 'Prospector' Sharpeye (2 of 2)
Implants named like: Serenity Limited 'Sharpeye' Dose (3 of 3)
Implant: AIR Astro-Pinpointing II Booster
Skill: Astrometric Pinpointing
Skill: Astrometrics
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseMaxScanDeviation',
container.getModifiedItemAttr('maxScanDeviationModifier') * level, **kwargs)
class Effect4162(BaseEffect):
"""
baseSensorStrengthModifierRequiringAstrometrics
Used by:
Modules from group: Scan Probe Launcher (4 of 7)
Implants named like: Chemal Tech Exploration Booster (3 of 3)
Implants named like: Halcyon G Booster (5 of 5)
Implants named like: Poteque 'Prospector' Astrometric Rangefinding AR (3 of 3)
Implants named like: Poteque 'Prospector' Sharpeye (2 of 2)
Implants named like: Serenity Limited 'Sharpeye' Dose (3 of 3)
Implants named like: grade Virtue (10 of 12)
Modules named like: Gravity Capacitor Upgrade (8 of 8)
Implant: AIR Astro-Rangefinding II Booster
Implant: Serenity YC122.9 Season Booster - Probe Scanning Strength
Skill: Astrometric Rangefinding
Skill: Astrometrics
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
penalized = False if 'skill' in context or 'implant' in context or 'booster' in context else True
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'),
'baseSensorStrength', container.getModifiedItemAttr('scanStrengthBonus') * level,
stackingPenalties=penalized, **kwargs)
class Effect4165(BaseEffect):
"""
shipBonusScanProbeStrengthCF2
Used by:
Ships named like: Heron (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Scanner Probe',
'baseSensorStrength', ship.getModifiedItemAttr('shipBonusCF2'),
skill='Caldari Frigate', **kwargs)
class Effect4166(BaseEffect):
"""
shipBonusScanProbeStrengthMF2
Used by:
Ships named like: Probe (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Scanner Probe',
'baseSensorStrength', ship.getModifiedItemAttr('shipBonusMF2'),
skill='Minmatar Frigate', **kwargs)
class Effect4167(BaseEffect):
"""
shipBonusScanProbeStrengthGF2
Used by:
Ships named like: Imicus (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Scanner Probe',
'baseSensorStrength', ship.getModifiedItemAttr('shipBonusGF2'),
skill='Gallente Frigate', **kwargs)
class Effect4168(BaseEffect):
"""
eliteBonusCoverOpsScanProbeStrength2
Used by:
Ships from group: Covert Ops (9 of 9)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Scanner Probe',
'baseSensorStrength', ship.getModifiedItemAttr('eliteBonusCovertOps2'),
skill='Covert Ops', **kwargs)
class Effect4187(BaseEffect):
"""
shipBonusStrategicCruiserAmarrHeatDamage
Used by:
Ship: Legion
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage',
ship.getModifiedItemAttr('shipBonusStrategicCruiserAmarr1'),
skill='Amarr Strategic Cruiser', **kwargs)
class Effect4188(BaseEffect):
"""
shipBonusStrategicCruiserCaldariHeatDamage
Used by:
Ship: Tengu
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage',
ship.getModifiedItemAttr('shipBonusStrategicCruiserCaldari1'),
skill='Caldari Strategic Cruiser', **kwargs)
class Effect4189(BaseEffect):
"""
shipBonusStrategicCruiserGallenteHeatDamage
Used by:
Ship: Proteus
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage',
ship.getModifiedItemAttr('shipBonusStrategicCruiserGallente1'),
skill='Gallente Strategic Cruiser', **kwargs)
class Effect4190(BaseEffect):
"""
shipBonusStrategicCruiserMinmatarHeatDamage
Used by:
Ship: Loki
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage',
ship.getModifiedItemAttr('shipBonusStrategicCruiserMinmatar1'),
skill='Minmatar Strategic Cruiser', **kwargs)
class Effect4215(BaseEffect):
"""
subsystemBonusAmarrOffensive2EnergyWeaponCapacitorNeed
Used by:
Subsystem: Legion Offensive - Liquid Crystal Magnifiers
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'),
'capacitorNeed', module.getModifiedItemAttr('subsystemBonusAmarrOffensive2'),
skill='Amarr Offensive Systems', **kwargs)
class Effect4216(BaseEffect):
"""
subsystemBonusAmarrCore2EnergyVampireAmount
Used by:
Subsystem: Legion Core - Energy Parasitic Complex
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount',
src.getModifiedItemAttr('subsystemBonusAmarrCore2'), skill='Amarr Core Systems', **kwargs)
class Effect4217(BaseEffect):
"""
subsystemBonusAmarrCore2EnergyDestabilizerAmount
Used by:
Subsystem: Legion Core - Energy Parasitic Complex
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount',
src.getModifiedItemAttr('subsystemBonusAmarrCore2'), skill='Amarr Core Systems', **kwargs)
class Effect4248(BaseEffect):
"""
subsystemBonusCaldariOffensive2MissileLauncherKineticDamage
Used by:
Subsystem: Tengu Offensive - Accelerated Ejection Bay
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'),
'kineticDamage', src.getModifiedItemAttr('subsystemBonusCaldariOffensive2'),
skill='Caldari Offensive Systems', **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'kineticDamage', src.getModifiedItemAttr('subsystemBonusCaldariOffensive2'),
skill='Caldari Offensive Systems', **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'),
'kineticDamage', src.getModifiedItemAttr('subsystemBonusCaldariOffensive2'),
skill='Caldari Offensive Systems', **kwargs)
class Effect4250(BaseEffect):
"""
subsystemBonusGallenteOffensiveDroneDamageHP
Used by:
Subsystem: Proteus Offensive - Drone Synthesis Projector
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'),
'armorHP', src.getModifiedItemAttr('subsystemBonusGallenteOffensive'),
skill='Gallente Offensive Systems', **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'),
'hp', src.getModifiedItemAttr('subsystemBonusGallenteOffensive'),
skill='Gallente Offensive Systems', **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'),
'damageMultiplier', src.getModifiedItemAttr('subsystemBonusGallenteOffensive'),
skill='Gallente Offensive Systems', **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'),
'shieldCapacity', src.getModifiedItemAttr('subsystemBonusGallenteOffensive'),
skill='Gallente Offensive Systems', **kwargs)
class Effect4251(BaseEffect):
"""
subsystemBonusMinmatarOffensive2ProjectileWeaponDamageMultiplier
Used by:
Subsystem: Loki Offensive - Projectile Scoping Array
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'),
'damageMultiplier', module.getModifiedItemAttr('subsystemBonusMinmatarOffensive2'),
skill='Minmatar Offensive Systems', **kwargs)
class Effect4256(BaseEffect):
"""
subsystemBonusMinmatarOffensive2MissileLauncherROF
Used by:
Subsystem: Loki Offensive - Launcher Efficiency Configuration
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
groups = ('Missile Launcher Heavy', 'Missile Launcher Rapid Light', 'Missile Launcher Heavy Assault')
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups,
'speed', src.getModifiedItemAttr('subsystemBonusMinmatarOffensive2'),
skill='Minmatar Offensive Systems', **kwargs)
class Effect4264(BaseEffect):
"""
subsystemBonusMinmatarCoreCapacitorRecharge
Used by:
Subsystem: Loki Core - Augmented Nuclear Reactor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('rechargeRate', src.getModifiedItemAttr('subsystemBonusMinmatarCore'),
skill='Minmatar Core Systems', **kwargs)
class Effect4265(BaseEffect):
"""
subsystemBonusGallenteCoreCapacitorRecharge
Used by:
Subsystem: Proteus Core - Augmented Fusion Reactor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('rechargeRate', src.getModifiedItemAttr('subsystemBonusGallenteCore'),
skill='Gallente Core Systems', **kwargs)
class Effect4269(BaseEffect):
"""
subsystemBonusAmarrCore3ScanResolution
Used by:
Subsystem: Legion Core - Dissolution Sequencer
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('scanResolution', src.getModifiedItemAttr('subsystemBonusAmarrCore3'),
skill='Amarr Core Systems', **kwargs)
class Effect4270(BaseEffect):
"""
subsystemBonusMinmatarCore3ScanResolution
Used by:
Subsystem: Loki Core - Dissolution Sequencer
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('scanResolution', src.getModifiedItemAttr('subsystemBonusMinmatarCore3'),
skill='Minmatar Core Systems', **kwargs)
class Effect4271(BaseEffect):
"""
subsystemBonusCaldariCore2MaxTargetingRange
Used by:
Subsystem: Tengu Core - Electronic Efficiency Gate
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxTargetRange', src.getModifiedItemAttr('subsystemBonusCaldariCore2'), skill='Caldari Core Systems', **kwargs)
class Effect4272(BaseEffect):
"""
subsystemBonusGallenteCore2MaxTargetingRange
Used by:
Subsystem: Proteus Core - Electronic Efficiency Gate
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxTargetRange', src.getModifiedItemAttr('subsystemBonusGallenteCore2'),
skill='Gallente Core Systems', **kwargs)
class Effect4273(BaseEffect):
"""
subsystemBonusGallenteCore2WarpScrambleRange
Used by:
Subsystem: Proteus Core - Friction Extension Processor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange',
src.getModifiedItemAttr('subsystemBonusGallenteCore2'), skill='Gallente Core Systems', **kwargs)
class Effect4274(BaseEffect):
"""
subsystemBonusMinmatarCore2StasisWebifierRange
Used by:
Subsystem: Loki Core - Immobility Drivers
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web',
'maxRange', src.getModifiedItemAttr('subsystemBonusMinmatarCore2'), skill='Minmatar Core Systems', **kwargs)
class Effect4275(BaseEffect):
"""
subsystemBonusCaldariPropulsion2WarpSpeed
Used by:
Subsystem: Tengu Propulsion - Interdiction Nullifier
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('subsystemBonusCaldariPropulsion2'),
skill='Caldari Propulsion Systems', **kwargs)
class Effect4277(BaseEffect):
"""
subsystemBonusGallentePropulsionWarpCapacitor
Used by:
Subsystem: Proteus Propulsion - Interdiction Nullifier
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('warpCapacitorNeed', src.getModifiedItemAttr('subsystemBonusGallentePropulsion'),
skill='Gallente Propulsion Systems', **kwargs)
class Effect4278(BaseEffect):
"""
subsystemBonusGallentePropulsion2WarpSpeed
Used by:
Subsystem: Proteus Propulsion - Interdiction Nullifier
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('subsystemBonusGallentePropulsion2'),
skill='Gallente Propulsion Systems', **kwargs)
class Effect4280(BaseEffect):
"""
systemAgility
Used by:
Celestials named like: Class Black Hole Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr('agility', beacon.getModifiedItemAttr('agilityMultiplier'), stackingPenalties=True, **kwargs)
class Effect4282(BaseEffect):
"""
subsystemBonusGallenteOffensive2HybridWeaponDamageMultiplier
Used by:
Subsystem: Proteus Offensive - Hybrid Encoding Platform
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'damageMultiplier', module.getModifiedItemAttr('subsystemBonusGallenteOffensive2'),
skill='Gallente Offensive Systems', **kwargs)
class Effect4283(BaseEffect):
"""
subsystemBonusCaldariOffensive2HybridWeaponDamageMultiplier
Used by:
Subsystem: Tengu Offensive - Magnetic Infusion Basin
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'damageMultiplier', module.getModifiedItemAttr('subsystemBonusCaldariOffensive2'),
skill='Caldari Offensive Systems', **kwargs)
class Effect4286(BaseEffect):
"""
subsystemBonusAmarrOffensive2RemoteArmorRepairCapUse
Used by:
Subsystem: Legion Offensive - Support Processor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed',
src.getModifiedItemAttr('subsystemBonusAmarrOffensive2'), skill='Amarr Offensive Systems', **kwargs)
class Effect4288(BaseEffect):
"""
subsystemBonusGallenteOffensive2RemoteArmorRepairCapUse
Used by:
Subsystem: Proteus Offensive - Support Processor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed',
src.getModifiedItemAttr('subsystemBonusGallenteOffensive2'), skill='Gallente Offensive Systems', **kwargs)
class Effect4290(BaseEffect):
"""
subsystemBonusMinmatarOffensive2RemoteRepCapUse
Used by:
Subsystem: Loki Offensive - Support Processor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems') or mod.item.requiresSkill('Remote Armor Repair Systems'),
'capacitorNeed', src.getModifiedItemAttr('subsystemBonusMinmatarOffensive2'),
skill='Minmatar Offensive Systems', **kwargs)
class Effect4292(BaseEffect):
"""
subsystemBonusCaldariOffensive2RemoteShieldBoosterCapUse
Used by:
Subsystem: Tengu Offensive - Support Processor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'),
'capacitorNeed', src.getModifiedItemAttr('subsystemBonusCaldariOffensive2'),
skill='Caldari Offensive Systems', **kwargs)
class Effect4321(BaseEffect):
"""
subsystemBonusCaldariCore2ECMStrengthRange
Used by:
Subsystem: Tengu Core - Obfuscation Manifold
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanLadarStrengthBonus',
src.getModifiedItemAttr('subsystemBonusCaldariCore2'), skill='Caldari Core Systems', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanRadarStrengthBonus',
src.getModifiedItemAttr('subsystemBonusCaldariCore2'), skill='Caldari Core Systems', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'maxRange',
src.getModifiedItemAttr('subsystemBonusCaldariCore2'), skill='Caldari Core Systems', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanGravimetricStrengthBonus',
src.getModifiedItemAttr('subsystemBonusCaldariCore2'), skill='Caldari Core Systems', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanMagnetometricStrengthBonus',
src.getModifiedItemAttr('subsystemBonusCaldariCore2'), skill='Caldari Core Systems', **kwargs)
class Effect4327(BaseEffect):
"""
subsystemBonusAmarrOffensive3DroneDamageHP
Used by:
Subsystem: Legion Offensive - Assault Optimization
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'),
'hp', src.getModifiedItemAttr('subsystemBonusAmarrOffensive3'), skill='Amarr Offensive Systems', **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'),
'armorHP', src.getModifiedItemAttr('subsystemBonusAmarrOffensive3'), skill='Amarr Offensive Systems', **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'),
'shieldCapacity', src.getModifiedItemAttr('subsystemBonusAmarrOffensive3'), skill='Amarr Offensive Systems', **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'),
'damageMultiplier', src.getModifiedItemAttr('subsystemBonusAmarrOffensive3'), skill='Amarr Offensive Systems', **kwargs)
class Effect4330(BaseEffect):
"""
subsystemBonusAmarrOffensive3EnergyWeaponMaxRange
Used by:
Subsystem: Legion Offensive - Liquid Crystal Magnifiers
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'),
'maxRange', module.getModifiedItemAttr('subsystemBonusAmarrOffensive3'),
skill='Amarr Offensive Systems', **kwargs)
class Effect4331(BaseEffect):
"""
subsystemBonusCaldariOffensive3HMLHAMVelocity
Used by:
Subsystem: Tengu Offensive - Accelerated Ejection Bay
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles') or mod.charge.requiresSkill('Heavy Assault Missiles'),
'maxVelocity', src.getModifiedItemAttr('subsystemBonusCaldariOffensive3'),
skill='Caldari Offensive Systems', **kwargs)
class Effect4342(BaseEffect):
"""
subsystemBonusMinmatarCore2MaxTargetingRange
Used by:
Subsystem: Loki Core - Dissolution Sequencer
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxTargetRange', src.getModifiedItemAttr('subsystemBonusMinmatarCore2'),
skill='Minmatar Core Systems', **kwargs)
class Effect4343(BaseEffect):
"""
subsystemBonusAmarrCore2MaxTargetingRange
Used by:
Subsystem: Legion Core - Dissolution Sequencer
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxTargetRange', src.getModifiedItemAttr('subsystemBonusAmarrCore2'),
skill='Amarr Core Systems', **kwargs)
class Effect4347(BaseEffect):
"""
subsystemBonusGallenteOffensive3TurretTracking
Used by:
Subsystem: Proteus Offensive - Drone Synthesis Projector
Subsystem: Proteus Offensive - Hybrid Encoding Platform
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'trackingSpeed', module.getModifiedItemAttr('subsystemBonusGallenteOffensive3'),
skill='Gallente Offensive Systems', **kwargs)
class Effect4351(BaseEffect):
"""
subsystemBonusMinmatarOffensive3TurretTracking
Used by:
Subsystem: Loki Offensive - Projectile Scoping Array
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'),
'trackingSpeed', module.getModifiedItemAttr('subsystemBonusMinmatarOffensive3'),
skill='Minmatar Offensive Systems', **kwargs)
class Effect4358(BaseEffect):
"""
ecmRangeBonusModuleEffect
Used by:
Modules from group: ECM Stabilizer (5 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM',
'maxRange', module.getModifiedItemAttr('ecmRangeBonus'),
stackingPenalties=True, **kwargs)
class Effect4360(BaseEffect):
"""
subsystemBonusAmarrOffensiveMissileLauncherROF
Used by:
Subsystem: Legion Offensive - Assault Optimization
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
groups = ('Missile Launcher Heavy', 'Missile Launcher Rapid Light', 'Missile Launcher Heavy Assault')
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups,
'speed', src.getModifiedItemAttr('subsystemBonusAmarrOffensive'), skill='Amarr Offensive Systems', **kwargs)
class Effect4362(BaseEffect):
"""
subsystemBonusAmarrOffensive2MissileDamage
Used by:
Subsystem: Legion Offensive - Assault Optimization
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'),
'explosiveDamage', src.getModifiedItemAttr('subsystemBonusAmarrOffensive2'), skill='Amarr Offensive Systems', **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'),
'kineticDamage', src.getModifiedItemAttr('subsystemBonusAmarrOffensive2'), skill='Amarr Offensive Systems', **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'),
'emDamage', src.getModifiedItemAttr('subsystemBonusAmarrOffensive2'), skill='Amarr Offensive Systems', **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'),
'thermalDamage', src.getModifiedItemAttr('subsystemBonusAmarrOffensive2'), skill='Amarr Offensive Systems', **kwargs)
class Effect4366(BaseEffect):
"""
shipBonusMediumHybridDmgCC2
Used by:
Ship: Falcon
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs)
class Effect4370(BaseEffect):
"""
caldariShipEwFalloffRangeCC2
Used by:
Ship: Blackbird
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM',
'falloffEffectiveness', ship.getModifiedItemAttr('shipBonusCC2'),
skill='Caldari Cruiser', **kwargs)
class Effect4372(BaseEffect):
"""
caldariShipEwFalloffRangeCB3
Used by:
Ship: Scorpion
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM',
'falloffEffectiveness', ship.getModifiedItemAttr('shipBonusCB3'),
skill='Caldari Battleship', **kwargs)
class Effect4373(BaseEffect):
"""
subSystemBonusAmarrOffensiveCommandBursts
Used by:
Subsystem: Legion Offensive - Support Processor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'):
fit.modules.filteredItemBoost(lambda mod: (mod.item.requiresSkill('Skirmish Command') or
mod.item.requiresSkill('Armored Command') or
mod.item.requiresSkill('Information Command')),
attrName, src.getModifiedItemAttr('subsystemBonusAmarrOffensive'),
skill='Amarr Offensive Systems', **kwargs)
class Effect4377(BaseEffect):
"""
shipBonusTorpedoVelocityGF2
Used by:
Ship: Nemesis
Ship: Virtuoso
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'),
'maxVelocity', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs)
class Effect4378(BaseEffect):
"""
shipBonusTorpedoVelocityMF2
Used by:
Ship: Hound
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'),
'maxVelocity', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs)
class Effect4379(BaseEffect):
"""
shipBonusTorpedoVelocity2AF
Used by:
Ship: Purifier
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'),
'maxVelocity', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs)
class Effect4380(BaseEffect):
"""
shipBonusTorpedoVelocityCF2
Used by:
Ship: Manticore
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'),
'maxVelocity', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs)
class Effect4384(BaseEffect):
"""
eliteReconBonusHeavyMissileVelocity
Used by:
Ship: Rook
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'maxVelocity', ship.getModifiedItemAttr('eliteBonusReconShip1'),
skill='Recon Ships', **kwargs)
class Effect4385(BaseEffect):
"""
eliteReconBonusHeavyAssaultMissileVelocity
Used by:
Ship: Rook
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'),
'maxVelocity', ship.getModifiedItemAttr('eliteBonusReconShip1'),
skill='Recon Ships', **kwargs)
class Effect4393(BaseEffect):
"""
shipBonusEliteCover2TorpedoThermalDamage
Used by:
Ship: Nemesis
Ship: Virtuoso
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'),
'thermalDamage', ship.getModifiedItemAttr('eliteBonusCovertOps2'),
skill='Covert Ops', **kwargs)
class Effect4394(BaseEffect):
"""
shipBonusEliteCover2TorpedoEMDamage
Used by:
Ship: Purifier
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'),
'emDamage', ship.getModifiedItemAttr('eliteBonusCovertOps2'), skill='Covert Ops', **kwargs)
class Effect4395(BaseEffect):
"""
shipBonusEliteCover2TorpedoExplosiveDamage
Used by:
Ship: Hound
Ship: Virtuoso
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'),
'explosiveDamage', ship.getModifiedItemAttr('eliteBonusCovertOps2'),
skill='Covert Ops', **kwargs)
class Effect4396(BaseEffect):
"""
shipBonusEliteCover2TorpedoKineticDamage
Used by:
Ship: Manticore
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'),
'kineticDamage', ship.getModifiedItemAttr('eliteBonusCovertOps2'),
skill='Covert Ops', **kwargs)
class Effect4398(BaseEffect):
"""
shipBonusMF1TorpedoExplosionVelocity
Used by:
Ship: Virtuoso
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'),
'aoeVelocity', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs)
class Effect4413(BaseEffect):
"""
shipBonusGF1TorpedoFlightTime
Used by:
Ship: Nemesis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'),
'explosionDelay', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs)
class Effect4415(BaseEffect):
"""
shipBonusMF1TorpedoFlightTime
Used by:
Ship: Hound
Ship: Virtuoso
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'),
'explosionDelay', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs)
class Effect4416(BaseEffect):
"""
shipBonusCF1TorpedoFlightTime
Used by:
Ship: Manticore
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'),
'explosionDelay', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs)
class Effect4417(BaseEffect):
"""
shipBonusAF1TorpedoFlightTime
Used by:
Ship: Purifier
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'),
'explosionDelay', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs)
class Effect4451(BaseEffect):
"""
ScanRadarStrengthModifierEffect
Used by:
Implants named like: Low grade Grail (5 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('scanRadarStrength', implant.getModifiedItemAttr('scanRadarStrengthModifier'), **kwargs)
class Effect4452(BaseEffect):
"""
ScanLadarStrengthModifierEffect
Used by:
Implants named like: Low grade Jackal (5 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('scanLadarStrength', implant.getModifiedItemAttr('scanLadarStrengthModifier'), **kwargs)
class Effect4453(BaseEffect):
"""
ScanGravimetricStrengthModifierEffect
Used by:
Implants named like: Low grade Talon (5 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('scanGravimetricStrength', implant.getModifiedItemAttr('scanGravimetricStrengthModifier'), **kwargs)
class Effect4454(BaseEffect):
"""
ScanMagnetometricStrengthModifierEffect
Used by:
Implants named like: Low grade Spur (5 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('scanMagnetometricStrength',
implant.getModifiedItemAttr('scanMagnetometricStrengthModifier'), **kwargs)
class Effect4456(BaseEffect):
"""
federationsetbonus3
Used by:
Implants named like: High grade Spur (6 of 6)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'),
'scanMagnetometricStrengthPercent',
implant.getModifiedItemAttr('implantSetFederationNavy'), **kwargs)
class Effect4457(BaseEffect):
"""
imperialsetbonus3
Used by:
Implants named like: High grade Grail (6 of 6)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'),
'scanRadarStrengthPercent',
implant.getModifiedItemAttr('implantSetImperialNavy'), **kwargs)
class Effect4458(BaseEffect):
"""
republicsetbonus3
Used by:
Implants named like: High grade Jackal (6 of 6)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'),
'scanLadarStrengthPercent',
implant.getModifiedItemAttr('implantSetRepublicFleet'), **kwargs)
class Effect4459(BaseEffect):
"""
caldarisetbonus3
Used by:
Implants named like: High grade Talon (6 of 6)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'),
'scanGravimetricStrengthPercent',
implant.getModifiedItemAttr('implantSetCaldariNavy'), **kwargs)
class Effect4460(BaseEffect):
"""
imperialsetLGbonus
Used by:
Implants named like: Low grade Grail (6 of 6)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'),
'scanRadarStrengthModifier',
implant.getModifiedItemAttr('implantSetLGImperialNavy'), **kwargs)
class Effect4461(BaseEffect):
"""
federationsetLGbonus
Used by:
Implants named like: Low grade Spur (6 of 6)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'),
'scanMagnetometricStrengthModifier',
implant.getModifiedItemAttr('implantSetLGFederationNavy'), **kwargs)
class Effect4462(BaseEffect):
"""
caldarisetLGbonus
Used by:
Implants named like: Low grade Talon (6 of 6)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'),
'scanGravimetricStrengthModifier',
implant.getModifiedItemAttr('implantSetLGCaldariNavy'), **kwargs)
class Effect4463(BaseEffect):
"""
republicsetLGbonus
Used by:
Implants named like: Low grade Jackal (6 of 6)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'),
'scanLadarStrengthModifier',
implant.getModifiedItemAttr('implantSetLGRepublicFleet'), **kwargs)
class Effect4464(BaseEffect):
"""
shipProjectileRofMF
Used by:
Ship: Claw
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'speed',
src.getModifiedItemAttr('shipBonusMF'), stackingPenalties=True, skill='Minmatar Frigate', **kwargs)
class Effect4471(BaseEffect):
"""
shipBonusStasisMF2
Used by:
Ship: Caedes
Ship: Cruor
Ship: Freki
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web',
'maxRange', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs)
class Effect4472(BaseEffect):
"""
shipProjectileDmgMC
Used by:
Ship: Mimir
Ship: Rupture
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs)
class Effect4473(BaseEffect):
"""
shipVelocityBonusATC1
Used by:
Ship: Adrestia
Ship: Cybele
Ship: Mimir
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('shipBonusATC1'), **kwargs)
class Effect4474(BaseEffect):
"""
shipMTMaxRangeBonusATC
Used by:
Ship: Mimir
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'),
'maxRange', ship.getModifiedItemAttr('shipBonusATC2'), **kwargs)
class Effect4475(BaseEffect):
"""
shipMTFalloffBonusATC
Used by:
Ship: Mimir
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'),
'falloff', ship.getModifiedItemAttr('shipBonusATC2'), **kwargs)
class Effect4476(BaseEffect):
"""
shipMTFalloffBonusATF
Used by:
Ship: Freki
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'),
'falloff', ship.getModifiedItemAttr('shipBonusATF2'), **kwargs)
class Effect4477(BaseEffect):
"""
shipMTMaxRangeBonusATF
Used by:
Ship: Freki
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'),
'maxRange', ship.getModifiedItemAttr('shipBonusATF2'), **kwargs)
class Effect4478(BaseEffect):
"""
shipBonusAfterburnerCapNeedATF
Used by:
Ship: Freki
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Propulsion Module',
'capacitorNeed', ship.getModifiedItemAttr('shipBonusATF1'), **kwargs)
class Effect4479(BaseEffect):
"""
shipBonusSurveyProbeExplosionDelaySkillSurveyCovertOps3
Used by:
Ships from group: Covert Ops (6 of 9)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Survey Probe',
'explosionDelay', ship.getModifiedItemAttr('eliteBonusCovertOps3'),
skill='Covert Ops', **kwargs)
class Effect4482(BaseEffect):
"""
shipETOptimalRange2AF
Used by:
Ship: Imperial Navy Slicer
Ship: Pacifier
Ship: Sidewinder
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'),
'maxRange', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs)
class Effect4484(BaseEffect):
"""
shipPTurretFalloffBonusGB
Used by:
Ship: Machariel
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'),
'falloff', ship.getModifiedItemAttr('shipBonusGB'), skill='Gallente Battleship', **kwargs)
class Effect4485(BaseEffect):
"""
shipBonusStasisWebSpeedFactorMB
Used by:
Ship: Vindicator
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web',
'speedFactor', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs)
class Effect4489(BaseEffect):
"""
superWeaponAmarr
Used by:
Module: 'Judgment' Electromagnetic Doomsday
"""
dealsDamage = True
type = 'active'
@staticmethod
def handler(fit, mod, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs)
fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs)
class Effect4490(BaseEffect):
"""
superWeaponCaldari
Used by:
Module: 'Oblivion' Kinetic Doomsday
"""
dealsDamage = True
type = 'active'
@staticmethod
def handler(fit, mod, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs)
fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs)
class Effect4491(BaseEffect):
"""
superWeaponGallente
Used by:
Module: 'Aurora Ominae' Thermal Doomsday
"""
dealsDamage = True
type = 'active'
@staticmethod
def handler(fit, mod, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs)
fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs)
class Effect4492(BaseEffect):
"""
superWeaponMinmatar
Used by:
Module: 'Gjallarhorn' Explosive Doomsday
"""
dealsDamage = True
type = 'active'
@staticmethod
def handler(fit, mod, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs)
fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs)
class Effect4510(BaseEffect):
"""
shipStasisWebStrengthBonusMC2
Used by:
Ship: Victor
Ship: Vigilant
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web',
'speedFactor', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs)
class Effect4512(BaseEffect):
"""
shipPTurretFalloffBonusGC
Used by:
Ship: Cynabal
Ship: Moracha
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'),
'falloff', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs)
class Effect4513(BaseEffect):
"""
shipStasisWebStrengthBonusMF2
Used by:
Ship: Daredevil
Ship: Virtuoso
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web',
'speedFactor', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs)
class Effect4515(BaseEffect):
"""
shipFalloffBonusMF
Used by:
Ship: Chremoas
Ship: Dramiel
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'),
'falloff', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs)
class Effect4516(BaseEffect):
"""
shipHTurretFalloffBonusGC
Used by:
Ship: Victor
Ship: Vigilant
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'falloff', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs)
class Effect4527(BaseEffect):
"""
gunneryFalloffBonusOnline
Used by:
Modules from group: Tracking Enhancer (10 of 10)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'),
'falloff', module.getModifiedItemAttr('falloffBonus'),
stackingPenalties=True, **kwargs)
class Effect4555(BaseEffect):
"""
capitalLauncherSkillCruiseCitadelEmDamage1
Used by:
Skill: XL Cruise Missiles
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'),
'emDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect4556(BaseEffect):
"""
capitalLauncherSkillCruiseCitadelExplosiveDamage1
Used by:
Skill: XL Cruise Missiles
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'),
'explosiveDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect4557(BaseEffect):
"""
capitalLauncherSkillCruiseCitadelKineticDamage1
Used by:
Skill: XL Cruise Missiles
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'),
'kineticDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect4558(BaseEffect):
"""
capitalLauncherSkillCruiseCitadelThermalDamage1
Used by:
Skill: XL Cruise Missiles
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'),
'thermalDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect4559(BaseEffect):
"""
gunneryMaxRangeFalloffTrackingSpeedBonus
Used by:
Modules from group: Tracking Computer (11 of 11)
"""
type = 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
for attr in ('maxRange', 'falloff', 'trackingSpeed'):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'),
attr, module.getModifiedItemAttr('%sBonus' % attr),
stackingPenalties=True, **kwargs)
class Effect4575(BaseEffect):
"""
industrialCoreEffect2
Used by:
Variations of module: Capital Industrial Core I (2 of 2)
"""
runTime = 'early'
type = 'active'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', src.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs)
fit.ship.multiplyItemAttr('mass', src.getModifiedItemAttr('siegeMassMultiplier'), **kwargs)
fit.ship.multiplyItemAttr('scanResolution',
src.getModifiedItemAttr('scanResolutionMultiplier'),
stackingPenalties=True, **kwargs)
# Remote Shield Repper Bonuses
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Emission Systems'),
'duration', src.getModifiedItemAttr('industrialCoreRemoteLogisticsDurationBonus'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Emission Systems'),
'maxRange', src.getModifiedItemAttr('industrialCoreRemoteLogisticsRangeBonus'),
stackingPenalties=True, **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Emission Systems'),
'capacitorNeed', src.getModifiedItemAttr('industrialCoreRemoteLogisticsDurationBonus'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Emission Systems'),
'falloffEffectiveness', src.getModifiedItemAttr('industrialCoreRemoteLogisticsRangeBonus'),
stackingPenalties=True, **kwargs)
# Local Shield Repper Bonuses
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Operation'),
'duration', src.getModifiedItemAttr('industrialCoreLocalLogisticsDurationBonus'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Operation'),
'shieldBonus', src.getModifiedItemAttr('industrialCoreLocalLogisticsAmountBonus'),
stackingPenalties=True, **kwargs)
# Mining Burst Bonuses
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'),
'warfareBuff1Value', src.getModifiedItemAttr('industrialCoreBonusMiningBurstStrength'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'),
'warfareBuff2Value', src.getModifiedItemAttr('industrialCoreBonusMiningBurstStrength'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'),
'warfareBuff3Value', src.getModifiedItemAttr('industrialCoreBonusMiningBurstStrength'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'),
'warfareBuff4Value', src.getModifiedItemAttr('industrialCoreBonusMiningBurstStrength'), **kwargs)
# Command Burst Range Bonus
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'),
'maxRange', src.getModifiedItemAttr('industrialCoreBonusCommandBurstRange'),
stackingPenalties=True, **kwargs)
# Drone Bonuses
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Ice Harvesting Drone Operation'),
'duration', src.getModifiedItemAttr('industrialCoreBonusDroneIceHarvesting'), **kwargs)
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Mining Drone Operation'),
'miningAmount', src.getModifiedItemAttr('industrialCoreBonusDroneMining'), **kwargs)
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'maxVelocity', src.getModifiedItemAttr('industrialCoreBonusDroneVelocity'),
stackingPenalties=True, **kwargs)
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'damageMultiplier', src.getModifiedItemAttr('industrialCoreBonusDroneDamageHP'),
stackingPenalties=True, **kwargs)
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'shieldCapacity', src.getModifiedItemAttr('industrialCoreBonusDroneDamageHP'), **kwargs)
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'armorHP', src.getModifiedItemAttr('industrialCoreBonusDroneDamageHP'), **kwargs)
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'hp', src.getModifiedItemAttr('industrialCoreBonusDroneDamageHP'), **kwargs)
# Remote impedance (no reps, etc)
fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs)
fit.ship.boostItemAttr('remoteRepairImpedance', src.getModifiedItemAttr('remoteRepairImpedanceBonus'), **kwargs)
fit.ship.increaseItemAttr('disallowTethering', src.getModifiedItemAttr('disallowTethering'), **kwargs)
fit.ship.boostItemAttr('sensorDampenerResistance', src.getModifiedItemAttr('sensorDampenerResistanceBonus'), **kwargs)
fit.ship.boostItemAttr('remoteAssistanceImpedance', src.getModifiedItemAttr('remoteAssistanceImpedanceBonus'), **kwargs)
fit.ship.increaseItemAttr('disallowDocking', src.getModifiedItemAttr('disallowDocking'), **kwargs)
class Effect4576(BaseEffect):
"""
eliteBonusLogisticsTrackingLinkFalloffBonus1
Used by:
Ship: Scimitar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer',
'falloffBonus', ship.getModifiedItemAttr('eliteBonusLogistics1'),
skill='Logistics Cruisers', **kwargs)
class Effect4577(BaseEffect):
"""
eliteBonusLogisticsTrackingLinkFalloffBonus2
Used by:
Ship: Oneiros
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer',
'falloffBonus', ship.getModifiedItemAttr('eliteBonusLogistics2'),
skill='Logistics Cruisers', **kwargs)
class Effect4579(BaseEffect):
"""
droneRigStasisWebSpeedFactorBonus
Used by:
Modules named like: Stasis Drone Augmentor (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.group.name == 'Stasis Webifying Drone',
'speedFactor', module.getModifiedItemAttr('webSpeedFactorBonus'), **kwargs)
class Effect4619(BaseEffect):
"""
shipBonusDroneDamageGF2
Used by:
Ship: Utu
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs)
class Effect4620(BaseEffect):
"""
shipBonusWarpScramblerMaxRangeGF2
Used by:
Ship: Garmur
Ship: Shapash
Ship: Utu
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler',
'maxRange', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs)
class Effect4621(BaseEffect):
"""
shipBonusHeatDamageATF1
Used by:
Ship: Cambion
Ship: Etana
Ship: Shapash
Ship: Utu
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage',
ship.getModifiedItemAttr('shipBonusATF1'), **kwargs)
class Effect4622(BaseEffect):
"""
shipBonusSmallHybridMaxRangeATF2
Used by:
Ship: Utu
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'),
'maxRange', ship.getModifiedItemAttr('shipBonusATF2'), **kwargs)
class Effect4623(BaseEffect):
"""
shipBonusSmallHybridTrackingSpeedATF2
Used by:
Ship: Utu
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'),
'trackingSpeed', ship.getModifiedItemAttr('shipBonusATF2'), **kwargs)
class Effect4624(BaseEffect):
"""
shipBonusHybridTrackingATC2
Used by:
Ship: Adrestia
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'trackingSpeed', ship.getModifiedItemAttr('shipBonusATC2'), **kwargs)
class Effect4625(BaseEffect):
"""
shipBonusHybridFalloffATC2
Used by:
Ship: Adrestia
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'falloff', ship.getModifiedItemAttr('shipBonusATC2'), **kwargs)
class Effect4626(BaseEffect):
"""
shipBonusWarpScramblerMaxRangeGC2
Used by:
Ship: Adrestia
Ship: Cybele
Ship: Orthrus
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler',
'maxRange', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs)
class Effect4635(BaseEffect):
"""
eliteBonusMaraudersCruiseAndTorpedoDamageRole1
Used by:
Ship: Golem
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
damageTypes = ('em', 'explosive', 'kinetic', 'thermal')
for damageType in damageTypes:
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Cruise Missiles') or mod.charge.requiresSkill('Torpedoes'),
'{0}Damage'.format(damageType), ship.getModifiedItemAttr('eliteBonusViolatorsRole1'), **kwargs)
class Effect4636(BaseEffect):
"""
shipBonusAoeVelocityCruiseAndTorpedoCB2
Used by:
Ship: Golem
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Cruise Missiles') or mod.charge.requiresSkill('Torpedoes'),
'aoeVelocity', ship.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship', **kwargs)
class Effect4637(BaseEffect):
"""
shipCruiseAndTorpedoVelocityBonusCB3
Used by:
Ship: Golem
Ship: Widow
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Cruise Missiles') or mod.charge.requiresSkill('Torpedoes'),
'maxVelocity', ship.getModifiedItemAttr('shipBonusCB3'), skill='Caldari Battleship', **kwargs)
class Effect4640(BaseEffect):
"""
shipArmorEMAndExpAndkinAndThmResistanceAC2
Used by:
Ships named like: Stratios (2 of 2)
Ship: Sacrilege
Ship: Vangel
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
damageTypes = ('Em', 'Explosive', 'Kinetic', 'Thermal')
for damageType in damageTypes:
fit.ship.boostItemAttr('armor{0}DamageResonance'.format(damageType), ship.getModifiedItemAttr('shipBonusAC2'),
skill='Amarr Cruiser', **kwargs)
class Effect4643(BaseEffect):
"""
shipHeavyAssaultMissileEMAndExpAndKinAndThmDmgAC1
Used by:
Ship: Sacrilege
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
damageTypes = ('em', 'explosive', 'kinetic', 'thermal')
for damageType in damageTypes:
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'),
'{0}Damage'.format(damageType), ship.getModifiedItemAttr('shipBonusAC'),
skill='Amarr Cruiser', **kwargs)
class Effect4645(BaseEffect):
"""
eliteBonusHeavyGunshipHeavyAndHeavyAssaultAndAssaultMissileLauncherROF
Used by:
Ship: Bestla
Ship: Sacrilege
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
groups = ('Missile Launcher Rapid Light', 'Missile Launcher Heavy Assault', 'Missile Launcher Heavy')
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups,
'speed', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'),
skill='Heavy Assault Cruisers', **kwargs)
class Effect4648(BaseEffect):
"""
eliteBonusBlackOpsECMGravAndLadarAndMagnetometricAndRadarStrength1
Used by:
Ship: Widow
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
sensorTypes = ('Gravimetric', 'Ladar', 'Magnetometric', 'Radar')
for type in sensorTypes:
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scan{0}StrengthBonus'.format(type),
ship.getModifiedItemAttr('eliteBonusBlackOps1'), skill='Black Ops', **kwargs)
class Effect4649(BaseEffect):
"""
shipCruiseAndSiegeLauncherROFBonus2CB
Used by:
Ship: Widow
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
affectedGroups = ('Missile Launcher Cruise', 'Missile Launcher Torpedo')
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in affectedGroups,
'speed', ship.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship', **kwargs)
class Effect4667(BaseEffect):
"""
shipBonusNoctisSalvageCycle
Used by:
Ship: Noctis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Salvaging'),
'duration', ship.getModifiedItemAttr('shipBonusOreIndustrial1'),
skill='ORE Hauler', **kwargs)
class Effect4668(BaseEffect):
"""
shipBonusNoctisTractorCycle
Used by:
Ship: Noctis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Tractor Beam',
'duration', ship.getModifiedItemAttr('shipBonusOreIndustrial1'),
skill='ORE Hauler', **kwargs)
class Effect4669(BaseEffect):
"""
shipBonusNoctisTractorVelocity
Used by:
Ship: Noctis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Tractor Beam',
'maxTractorVelocity', ship.getModifiedItemAttr('shipBonusOreIndustrial2'),
skill='ORE Hauler', **kwargs)
class Effect4670(BaseEffect):
"""
shipBonusNoctisTractorRange
Used by:
Ship: Noctis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Tractor Beam',
'maxRange', ship.getModifiedItemAttr('shipBonusOreIndustrial2'),
skill='ORE Hauler', **kwargs)
class Effect4728(BaseEffect):
"""
OffensiveDefensiveReduction
Used by:
Celestials named like: Drifter Incursion (6 of 6)
Celestials named like: Sansha Incursion System Effects (3 of 3)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
damages = ('em', 'thermal', 'kinetic', 'explosive')
for damage in damages:
# Nerf missile damage
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'{0}Damage'.format(damage),
beacon.getModifiedItemAttr('systemEffectDamageReduction'), **kwargs)
# Nerf smartbomb damage
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Smart Bomb',
'{0}Damage'.format(damage),
beacon.getModifiedItemAttr('systemEffectDamageReduction'), **kwargs)
# Nerf armor resistances
fit.ship.boostItemAttr('armor{0}DamageResonance'.format(damage.capitalize()),
beacon.getModifiedItemAttr('armor{0}DamageResistanceBonus'.format(damage.capitalize())), **kwargs)
# Nerf shield resistances
fit.ship.boostItemAttr('shield{0}DamageResonance'.format(damage.capitalize()),
beacon.getModifiedItemAttr('shield{0}DamageResistanceBonus'.format(damage.capitalize())), **kwargs)
# Nerf drone damage output
fit.drones.filteredItemBoost(lambda drone: True,
'damageMultiplier', beacon.getModifiedItemAttr('systemEffectDamageReduction'), **kwargs)
# Nerf turret damage output
fit.modules.filteredItemBoost(lambda module: module.item.requiresSkill('Gunnery'),
'damageMultiplier', beacon.getModifiedItemAttr('systemEffectDamageReduction'), **kwargs)
class Effect4760(BaseEffect):
"""
subsystemBonusCaldariPropulsionWarpCapacitor
Used by:
Subsystem: Tengu Propulsion - Interdiction Nullifier
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('warpCapacitorNeed', src.getModifiedItemAttr('subsystemBonusCaldariPropulsion'),
skill='Caldari Propulsion Systems', **kwargs)
class Effect4775(BaseEffect):
"""
shipEnergyNeutralizerTransferAmountBonusAF2
Used by:
Ship: Malice
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer',
'energyNeutralizerAmount', ship.getModifiedItemAttr('shipBonus2AF'),
skill='Amarr Frigate', **kwargs)
class Effect4782(BaseEffect):
"""
shipBonusSmallEnergyWeaponOptimalRangeATF2
Used by:
Ship: Malice
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'),
'maxRange', ship.getModifiedItemAttr('shipBonusATF2'), **kwargs)
class Effect4789(BaseEffect):
"""
shipBonusSmallEnergyTurretDamageATF1
Used by:
Ship: Malice
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusATF1'), **kwargs)
class Effect4793(BaseEffect):
"""
shipBonusMissileLauncherHeavyROFATC1
Used by:
Ship: Vangel
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy',
'speed', ship.getModifiedItemAttr('shipBonusATC1'), **kwargs)
class Effect4794(BaseEffect):
"""
shipBonusMissileLauncherAssaultROFATC1
Used by:
Ship: Vangel
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rapid Light',
'speed', ship.getModifiedItemAttr('shipBonusATC1'), **kwargs)
class Effect4795(BaseEffect):
"""
shipBonusMissileLauncherHeavyAssaultROFATC1
Used by:
Ship: Vangel
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy Assault',
'speed', ship.getModifiedItemAttr('shipBonusATC1'), **kwargs)
class Effect4799(BaseEffect):
"""
eliteBonusBlackOpsECMBurstGravAndLadarAndMagnetoAndRadar
Used by:
Ship: Widow
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
sensorTypes = ('Gravimetric', 'Ladar', 'Magnetometric', 'Radar')
for type in sensorTypes:
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Burst Jammer',
'scan{0}StrengthBonus'.format(type),
ship.getModifiedItemAttr('eliteBonusBlackOps1'), skill='Black Ops', **kwargs)
class Effect4804(BaseEffect):
"""
dataMiningSkillBoostAccessDifficultyBonusAbsolutePercent
Used by:
Skill: Archaeology
Skill: Hacking
Skill: Salvaging
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill(skill), 'accessDifficultyBonus',
skill.getModifiedItemAttr('accessDifficultyBonusAbsolutePercent') * skill.level, **kwargs)
class Effect4809(BaseEffect):
"""
ecmGravimetricStrengthBonusPercent
Used by:
Modules from group: ECM Stabilizer (5 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM',
'scanGravimetricStrengthBonus', module.getModifiedItemAttr('ecmStrengthBonusPercent'),
stackingPenalties=True, **kwargs)
class Effect4810(BaseEffect):
"""
ecmLadarStrengthBonusPercent
Used by:
Modules from group: ECM Stabilizer (5 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM',
'scanLadarStrengthBonus', module.getModifiedItemAttr('ecmStrengthBonusPercent'),
stackingPenalties=True, **kwargs)
class Effect4811(BaseEffect):
"""
ecmMagnetometricStrengthBonusPercent
Used by:
Modules from group: ECM Stabilizer (5 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM',
'scanMagnetometricStrengthBonus',
module.getModifiedItemAttr('ecmStrengthBonusPercent'),
stackingPenalties=True, **kwargs)
class Effect4812(BaseEffect):
"""
ecmRadarStrengthBonusPercent
Used by:
Modules from group: ECM Stabilizer (5 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM',
'scanRadarStrengthBonus', module.getModifiedItemAttr('ecmStrengthBonusPercent'),
stackingPenalties=True, **kwargs)
class Effect4814(BaseEffect):
"""
jumpPortalConsumptionBonusPercentSkill
Used by:
Skill: Jump Portal Generation
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), 'consumptionQuantity',
skill.getModifiedItemAttr('consumptionQuantityBonusPercent') * skill.level, **kwargs)
class Effect4817(BaseEffect):
"""
salvagerModuleDurationReduction
Used by:
Implant: Poteque 'Prospector' Environmental Analysis EY-1005
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Salvager',
'duration', implant.getModifiedItemAttr('durationBonus'), **kwargs)
class Effect4820(BaseEffect):
"""
bcLargeEnergyTurretPowerNeedBonus
Used by:
Ship: Oracle
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Energy Turret'),
'power', ship.getModifiedItemAttr('bcLargeTurretPower'), **kwargs)
class Effect4821(BaseEffect):
"""
bcLargeHybridTurretPowerNeedBonus
Used by:
Ship: Naga
Ship: Talos
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'),
'power', ship.getModifiedItemAttr('bcLargeTurretPower'), **kwargs)
class Effect4822(BaseEffect):
"""
bcLargeProjectileTurretPowerNeedBonus
Used by:
Ship: Tornado
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Projectile Turret'),
'power', ship.getModifiedItemAttr('bcLargeTurretPower'), **kwargs)
class Effect4823(BaseEffect):
"""
bcLargeEnergyTurretCPUNeedBonus
Used by:
Ship: Oracle
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Energy Turret'),
'cpu', ship.getModifiedItemAttr('bcLargeTurretCPU'), **kwargs)
class Effect4824(BaseEffect):
"""
bcLargeHybridTurretCPUNeedBonus
Used by:
Ship: Naga
Ship: Talos
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'),
'cpu', ship.getModifiedItemAttr('bcLargeTurretCPU'), **kwargs)
class Effect4825(BaseEffect):
"""
bcLargeProjectileTurretCPUNeedBonus
Used by:
Ship: Tornado
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Projectile Turret'),
'cpu', ship.getModifiedItemAttr('bcLargeTurretCPU'), **kwargs)
class Effect4826(BaseEffect):
"""
bcLargeEnergyTurretCapacitorNeedBonus
Used by:
Ship: Oracle
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Energy Turret'),
'capacitorNeed', ship.getModifiedItemAttr('bcLargeTurretCap'), **kwargs)
class Effect4827(BaseEffect):
"""
bcLargeHybridTurretCapacitorNeedBonus
Used by:
Ship: Naga
Ship: Talos
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'),
'capacitorNeed', ship.getModifiedItemAttr('bcLargeTurretCap'), **kwargs)
class Effect4867(BaseEffect):
"""
setBonusChristmasPowergrid
Used by:
Implants named like: Genolution Core Augmentation CA (4 of 4)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant',
'powerEngineeringOutputBonus',
implant.getModifiedItemAttr('implantSetChristmas'), **kwargs)
class Effect4868(BaseEffect):
"""
setBonusChristmasCapacitorCapacity
Used by:
Implants named like: Genolution Core Augmentation CA (4 of 4)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant',
'capacitorCapacityBonus',
implant.getModifiedItemAttr('implantSetChristmas'), **kwargs)
class Effect4869(BaseEffect):
"""
setBonusChristmasCPUOutput
Used by:
Implants named like: Genolution Core Augmentation CA (4 of 4)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant',
'cpuOutputBonus2', implant.getModifiedItemAttr('implantSetChristmas'), **kwargs)
class Effect4871(BaseEffect):
"""
setBonusChristmasCapacitorRecharge2
Used by:
Implants named like: Genolution Core Augmentation CA (4 of 4)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant',
'capRechargeBonus', implant.getModifiedItemAttr('implantSetChristmas'), **kwargs)
class Effect4896(BaseEffect):
"""
shipBonusDroneHitpointsGF2
Used by:
Ship: Ishkur
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'hp', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs)
class Effect4897(BaseEffect):
"""
shipBonusDroneArmorHitpointsGF2
Used by:
Ship: Ishkur
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'armorHP', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs)
class Effect4898(BaseEffect):
"""
shipBonusDroneShieldHitpointsGF2
Used by:
Ship: Ishkur
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'shieldCapacity', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs)
class Effect4901(BaseEffect):
"""
shipMissileSpeedBonusAF
Used by:
Ship: Vengeance
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'),
'speed', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs)
class Effect4902(BaseEffect):
"""
MWDSignatureRadiusRoleBonus
Used by:
Ships from group: Assault Frigate (10 of 15)
Ships from group: Command Destroyer (6 of 6)
Ships from group: Heavy Assault Cruiser (9 of 14)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'),
'signatureRadiusBonus', ship.getModifiedItemAttr('MWDSignatureRadiusBonus'), **kwargs)
class Effect4906(BaseEffect):
"""
systemDamageFighters
Used by:
Celestials named like: Class Magnetar Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.fighters.filteredItemMultiply(lambda drone: drone.item.requiresSkill('Fighters'),
'damageMultiplier', beacon.getModifiedItemAttr('damageMultiplierMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect4911(BaseEffect):
"""
modifyShieldRechargeRatePassive
Used by:
Modules named like: Processor Overclocking Unit (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr('shieldRechargeRate', module.getModifiedItemAttr('shieldRechargeRateMultiplier'), **kwargs)
class Effect4921(BaseEffect):
"""
microJumpDrive
Used by:
Modules named like: Micro Jump Drive (6 of 6)
"""
type = 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('signatureRadius', module.getModifiedItemAttr('signatureRadiusBonusPercent'), **kwargs)
class Effect4923(BaseEffect):
"""
skillMJDdurationBonus
Used by:
Skill: Micro Jump Drive Operation
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Micro Jump Drive Operation'),
'duration', skill.getModifiedItemAttr('durationBonus') * skill.level, **kwargs)
class Effect4928(BaseEffect):
"""
adaptiveArmorHardener
Used by:
Modules from group: Armor Resistance Shift Hardener (2 of 2)
"""
runTime = 'late'
type = 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
# pyfalog = Logger(__name__)
damagePattern = module.rahPatternOverride if module.rahPatternOverride is not None else fit.damagePattern
# pyfalog.debug('==============================')
if damagePattern == 'disable':
for attr in ('armorEmDamageResonance', 'armorThermalDamageResonance', 'armorKineticDamageResonance', 'armorExplosiveDamageResonance'):
fit.ship.multiplyItemAttr(attr, module.getModifiedItemAttr(attr), stackingPenalties=True, penaltyGroup='preMul')
return
# Skip if there is no damage pattern. Example: projected ships or fleet boosters
if damagePattern:
# Populate a tuple with the damage profile modified by current armor resists.
baseDamageTaken = (
damagePattern.emAmount * fit.ship.getModifiedItemAttr('armorEmDamageResonance'),
damagePattern.thermalAmount * fit.ship.getModifiedItemAttr('armorThermalDamageResonance'),
damagePattern.kineticAmount * fit.ship.getModifiedItemAttr('armorKineticDamageResonance'),
damagePattern.explosiveAmount * fit.ship.getModifiedItemAttr('armorExplosiveDamageResonance'),
)
# pyfalog.debug('Damage Adjusted for Armor Resists: %f/%f/%f/%f' % (baseDamageTaken[0], baseDamageTaken[1], baseDamageTaken[2], baseDamageTaken[3]))
resistanceShiftAmount = module.getModifiedItemAttr(
'resistanceShiftAmount') / 100 # The attribute is in percent and we want a fraction
RAHResistance = [
module.getModifiedItemAttr('armorEmDamageResonance'),
module.getModifiedItemAttr('armorThermalDamageResonance'),
module.getModifiedItemAttr('armorKineticDamageResonance'),
module.getModifiedItemAttr('armorExplosiveDamageResonance'),
]
# Simulate RAH cycles until the RAH either stops changing or enters a loop.
# The number of iterations is limited to prevent an infinite loop if something goes wrong.
cycleList = []
loopStart = -20
for num in range(50):
# pyfalog.debug('Starting cycle %d.' % num)
# The strange order is to emulate the ingame sorting when different types have taken the same amount of damage.
# This doesn't take into account stacking penalties. In a few cases fitting a Damage Control causes an inaccurate result.
damagePattern_tuples = [
(0, baseDamageTaken[0] * RAHResistance[0], RAHResistance[0]),
(3, baseDamageTaken[3] * RAHResistance[3], RAHResistance[3]),
(2, baseDamageTaken[2] * RAHResistance[2], RAHResistance[2]),
(1, baseDamageTaken[1] * RAHResistance[1], RAHResistance[1]),
]
# Sort the tuple to drop the highest damage value to the bottom
sortedDamagePattern_tuples = sorted(damagePattern_tuples, key=lambda damagePattern: damagePattern[1])
if sortedDamagePattern_tuples[2][1] == 0:
# One damage type: the top damage type takes from the other three
# Since the resistances not taking damage will end up going to the type taking damage we just do the whole thing at once.
change0 = 1 - sortedDamagePattern_tuples[0][2]
change1 = 1 - sortedDamagePattern_tuples[1][2]
change2 = 1 - sortedDamagePattern_tuples[2][2]
change3 = -(change0 + change1 + change2)
elif sortedDamagePattern_tuples[1][1] == 0:
# Two damage types: the top two damage types take from the other two
# Since the resistances not taking damage will end up going equally to the types taking damage we just do the whole thing at once.
change0 = 1 - sortedDamagePattern_tuples[0][2]
change1 = 1 - sortedDamagePattern_tuples[1][2]
change2 = -(change0 + change1) / 2
change3 = -(change0 + change1) / 2
else:
# Three or four damage types: the top two damage types take from the other two
change0 = min(resistanceShiftAmount, 1 - sortedDamagePattern_tuples[0][2])
change1 = min(resistanceShiftAmount, 1 - sortedDamagePattern_tuples[1][2])
change2 = -(change0 + change1) / 2
change3 = -(change0 + change1) / 2
RAHResistance[sortedDamagePattern_tuples[0][0]] = sortedDamagePattern_tuples[0][2] + change0
RAHResistance[sortedDamagePattern_tuples[1][0]] = sortedDamagePattern_tuples[1][2] + change1
RAHResistance[sortedDamagePattern_tuples[2][0]] = sortedDamagePattern_tuples[2][2] + change2
RAHResistance[sortedDamagePattern_tuples[3][0]] = sortedDamagePattern_tuples[3][2] + change3
# pyfalog.debug('Resistances shifted to %f/%f/%f/%f' % ( RAHResistance[0], RAHResistance[1], RAHResistance[2], RAHResistance[3]))
# See if the current RAH profile has been encountered before, indicating a loop.
for i, val in enumerate(cycleList):
tolerance = 1e-06
if abs(RAHResistance[0] - val[0]) <= tolerance and \
abs(RAHResistance[1] - val[1]) <= tolerance and \
abs(RAHResistance[2] - val[2]) <= tolerance and \
abs(RAHResistance[3] - val[3]) <= tolerance:
loopStart = i
# pyfalog.debug('Loop found: %d-%d' % (loopStart, num))
break
if loopStart >= 0:
break
cycleList.append(list(RAHResistance))
# if loopStart < 0:
# pyfalog.error('Reactive Armor Hardener failed to find equilibrium. Damage profile after armor: {0}/{1}/{2}/{3}'.format(
# baseDamageTaken[0], baseDamageTaken[1], baseDamageTaken[2], baseDamageTaken[3]))
# Average the profiles in the RAH loop, or the last 20 if it didn't find a loop.
loopCycles = cycleList[loopStart:]
numCycles = len(loopCycles)
average = [0, 0, 0, 0]
for cycle in loopCycles:
for i in range(4):
average[i] += cycle[i]
for i in range(4):
average[i] = round(average[i] / numCycles, 3)
# Set the new resistances
# pyfalog.debug('Setting new resist profile: %f/%f/%f/%f' % ( average[0], average[1], average[2],average[3]))
for i, attr in enumerate((
'armorEmDamageResonance', 'armorThermalDamageResonance', 'armorKineticDamageResonance',
'armorExplosiveDamageResonance')):
module.increaseItemAttr(attr, average[i] - module.getModifiedItemAttr(attr))
fit.ship.multiplyItemAttr(attr, average[i], stackingPenalties=True, penaltyGroup='preMul', **kwargs)
class Effect4934(BaseEffect):
"""
shipArmorRepairingGF2
Used by:
Ship: Incursus
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'),
'armorDamageAmount', ship.getModifiedItemAttr('shipBonusGF2'),
skill='Gallente Frigate', **kwargs)
class Effect4936(BaseEffect):
"""
fueledShieldBoosting
Used by:
Modules from group: Ancillary Shield Booster (14 of 14)
"""
runTime = 'late'
type = 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
amount = module.getModifiedItemAttr('shieldBonus')
speed = module.getModifiedItemAttr('duration') / 1000.0
fit.extraAttributes.increase('shieldRepair', amount / speed, **kwargs)
class Effect4941(BaseEffect):
"""
shipHybridDamageBonusCF2
Used by:
Ship: Griffin Navy Issue
Ship: Merlin
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs)
class Effect4945(BaseEffect):
"""
skillTargetBreakerDurationBonus2
Used by:
Skill: Signature Masking
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Signature Suppressor',
'durationHighisGood', skill.getModifiedItemAttr('durationBonus') * skill.level, **kwargs)
class Effect4950(BaseEffect):
"""
shipBonusShieldBoosterMB1a
Used by:
Ship: Maelstrom
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'),
'shieldBonus', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs)
class Effect4951(BaseEffect):
"""
shieldBoostAmplifierPassiveBooster
Used by:
Implants named like: Agency 'Hardshell' TB Dose (4 of 4)
Implants named like: Blue Pill Booster (5 of 5)
Implants named like: Halcyon R Booster (5 of 5)
Implant: AIR Hardshell Booster II
Implant: Antipharmakon Thureo
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Operation') or mod.item.requiresSkill('Capital Shield Operation'),
'shieldBonus', container.getModifiedItemAttr('shieldBoostMultiplier'), **kwargs)
class Effect4961(BaseEffect):
"""
systemShieldRepairAmountShieldSkills
Used by:
Celestials named like: Class Cataclysmic Variable Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Shield Operation') or
mod.item.requiresSkill('Capital Shield Operation'),
'shieldBonus', module.getModifiedItemAttr('shieldBonusMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect4967(BaseEffect):
"""
shieldBoosterDurationBonusShieldSkills
Used by:
Implants named like: Chemal Tech Repair Booster (3 of 3)
Modules named like: Core Defense Operational Solidifier (8 of 8)
Implant: AIR Repairer Booster III
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Operation') or mod.item.requiresSkill('Capital Shield Operation'),
'duration', module.getModifiedItemAttr('durationSkillBonus'), **kwargs)
class Effect4970(BaseEffect):
"""
boosterShieldBoostAmountPenaltyShieldSkills
Used by:
Implants named like: Crash Booster (3 of 4)
Implants named like: Frentix Booster (3 of 4)
Implants named like: Mindflood Booster (3 of 4)
"""
attr = 'boosterShieldBoostAmountPenalty'
displayName = 'Shield Boost'
type = 'boosterSideEffect'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation') or mod.item.requiresSkill('Capital Shield Operation'),
'shieldBonus', src.getModifiedItemAttr('boosterShieldBoostAmountPenalty'), **kwargs)
class Effect4972(BaseEffect):
"""
eliteBonusAssaultShipLightMissileROF
Used by:
Ship: Cambion
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Light',
'speed', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs)
class Effect4973(BaseEffect):
"""
eliteBonusAssaultShipRocketROF
Used by:
Ship: Cambion
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rocket',
'speed', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs)
class Effect4974(BaseEffect):
"""
eliteBonusMarauderShieldBonus2a
Used by:
Ship: Golem
Ship: Vargur
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'),
'shieldBonus', ship.getModifiedItemAttr('eliteBonusViolators2'), skill='Marauders', **kwargs)
class Effect4975(BaseEffect):
"""
shipBonusMissileKineticlATF2
Used by:
Ship: Cambion
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'kineticDamage', ship.getModifiedItemAttr('shipBonusATF2'), **kwargs)
class Effect4976(BaseEffect):
"""
skillReactiveArmorHardenerDurationBonus
Used by:
Skill: Resistance Phasing
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Resistance Shift Hardener', 'duration',
src.getModifiedItemAttr('durationBonus') * lvl, **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Resistance Phasing'), 'duration',
src.getModifiedItemAttr('durationBonus') * lvl, **kwargs)
class Effect4989(BaseEffect):
"""
missileSkillAoeCloudSizeBonusAllIncludingCapitals
Used by:
Implants named like: Crash Booster (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'aoeCloudSize', implant.getModifiedItemAttr('aoeCloudSizeBonus'), **kwargs)
class Effect4990(BaseEffect):
"""
shipEnergyTCapNeedBonusRookie
Used by:
Ship: Hematos
Ship: Impairor
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'),
'capacitorNeed', ship.getModifiedItemAttr('rookieSETCapBonus'), **kwargs)
class Effect4991(BaseEffect):
"""
shipSETDmgBonusRookie
Used by:
Ship: Hematos
Ship: Immolator
Ship: Impairor
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'),
'damageMultiplier', ship.getModifiedItemAttr('rookieSETDamageBonus'), **kwargs)
class Effect4994(BaseEffect):
"""
shipArmorEMResistanceRookie
Used by:
Ship: Devoter
Ship: Gold Magnate
Ship: Impairor
Ship: Phobos
Ship: Silver Magnate
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorEmDamageResonance', ship.getModifiedItemAttr('rookieArmorResistanceBonus'), **kwargs)
class Effect4995(BaseEffect):
"""
shipArmorEXResistanceRookie
Used by:
Ship: Devoter
Ship: Gold Magnate
Ship: Impairor
Ship: Phobos
Ship: Silver Magnate
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorExplosiveDamageResonance', ship.getModifiedItemAttr('rookieArmorResistanceBonus'), **kwargs)
class Effect4996(BaseEffect):
"""
shipArmorKNResistanceRookie
Used by:
Ship: Devoter
Ship: Gold Magnate
Ship: Impairor
Ship: Phobos
Ship: Silver Magnate
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorKineticDamageResonance', ship.getModifiedItemAttr('rookieArmorResistanceBonus'), **kwargs)
class Effect4997(BaseEffect):
"""
shipArmorTHResistanceRookie
Used by:
Ship: Devoter
Ship: Gold Magnate
Ship: Impairor
Ship: Phobos
Ship: Silver Magnate
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorThermalDamageResonance', ship.getModifiedItemAttr('rookieArmorResistanceBonus'), **kwargs)
class Effect4999(BaseEffect):
"""
shipHybridRangeBonusRookie
Used by:
Ship: Ibis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'),
'maxRange', ship.getModifiedItemAttr('rookieSHTOptimalBonus'), **kwargs)
class Effect5000(BaseEffect):
"""
shipMissileKineticDamageRookie
Used by:
Ship: Ibis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'kineticDamage', ship.getModifiedItemAttr('rookieMissileKinDamageBonus'), **kwargs)
class Effect5008(BaseEffect):
"""
shipShieldEMResistanceRookie
Used by:
Ships from group: Heavy Interdiction Cruiser (4 of 6)
Ship: Ibis
Ship: Taipan
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldEmDamageResonance', ship.getModifiedItemAttr('rookieShieldResistBonus'), **kwargs)
class Effect5009(BaseEffect):
"""
shipShieldExplosiveResistanceRookie
Used by:
Ships from group: Heavy Interdiction Cruiser (4 of 6)
Ship: Ibis
Ship: Taipan
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldExplosiveDamageResonance', ship.getModifiedItemAttr('rookieShieldResistBonus'), **kwargs)
class Effect5011(BaseEffect):
"""
shipShieldKineticResistanceRookie
Used by:
Ships from group: Heavy Interdiction Cruiser (4 of 6)
Ship: Ibis
Ship: Taipan
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldKineticDamageResonance', ship.getModifiedItemAttr('rookieShieldResistBonus'), **kwargs)
class Effect5012(BaseEffect):
"""
shipShieldThermalResistanceRookie
Used by:
Ships from group: Heavy Interdiction Cruiser (4 of 6)
Ship: Ibis
Ship: Taipan
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldThermalDamageResonance', ship.getModifiedItemAttr('rookieShieldResistBonus'), **kwargs)
class Effect5013(BaseEffect):
"""
shipSHTDmgBonusRookie
Used by:
Ship: Velator
Ship: Violator
Ship: Virtuoso
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'),
'damageMultiplier', ship.getModifiedItemAttr('rookieSHTDamageBonus'), **kwargs)
class Effect5014(BaseEffect):
"""
shipBonusDroneDamageMultiplierRookie
Used by:
Ship: Gnosis
Ship: Praxis
Ship: Sunesis
Ship: Taipan
Ship: Velator
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'damageMultiplier', ship.getModifiedItemAttr('rookieDroneBonus'), **kwargs)
class Effect5015(BaseEffect):
"""
shipBonusEwRemoteSensorDampenerMaxTargetRangeBonusRookie
Used by:
Ship: Velator
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener',
'maxTargetRangeBonus', ship.getModifiedItemAttr('rookieDampStrengthBonus'), **kwargs)
class Effect5016(BaseEffect):
"""
shipBonusEwRemoteSensorDampenerScanResolutionBonusRookie
Used by:
Ship: Velator
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener',
'scanResolutionBonus', ship.getModifiedItemAttr('rookieDampStrengthBonus'), **kwargs)
class Effect5017(BaseEffect):
"""
shipArmorRepairingRookie
Used by:
Ship: Velator
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'),
'armorDamageAmount', ship.getModifiedItemAttr('rookieArmorRepBonus'), **kwargs)
class Effect5018(BaseEffect):
"""
shipVelocityBonusRookie
Used by:
Ship: Reaper
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('rookieShipVelocityBonus'), **kwargs)
class Effect5019(BaseEffect):
"""
minmatarShipEwTargetPainterRookie
Used by:
Ship: Reaper
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter',
'signatureRadiusBonus', ship.getModifiedItemAttr('rookieTargetPainterStrengthBonus'), **kwargs)
class Effect5020(BaseEffect):
"""
shipSPTDmgBonusRookie
Used by:
Ship: Echo
Ship: Reaper
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'),
'damageMultiplier', ship.getModifiedItemAttr('rookieSPTDamageBonus'), **kwargs)
class Effect5021(BaseEffect):
"""
shipShieldBoostRookie
Used by:
Ship: Immolator
Ship: Reaper
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'),
'shieldBonus', ship.getModifiedItemAttr('rookieShieldBoostBonus'), **kwargs)
class Effect5028(BaseEffect):
"""
shipECMScanStrengthBonusRookie
Used by:
Ship: Ibis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for type in ('Gravimetric', 'Ladar', 'Radar', 'Magnetometric'):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM',
'scan{0}StrengthBonus'.format(type),
ship.getModifiedItemAttr('rookieECMStrengthBonus'), **kwargs)
class Effect5030(BaseEffect):
"""
shipBonusMiningDroneAmountPercentRookie
Used by:
Ship: Gnosis
Ship: Praxis
Ship: Taipan
Ship: Velator
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Mining Drone Operation'),
'miningAmount', container.getModifiedItemAttr('rookieDroneBonus'), **kwargs)
class Effect5035(BaseEffect):
"""
shipBonusDroneHitpointsRookie
Used by:
Ship: Gnosis
Ship: Praxis
Ship: Sunesis
Ship: Taipan
Ship: Velator
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for type in ('shieldCapacity', 'armorHP', 'hp'):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
type, ship.getModifiedItemAttr('rookieDroneBonus'), **kwargs)
class Effect5036(BaseEffect):
"""
shipBonusSalvageCycleAF
Used by:
Ship: Magnate
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Salvaging'),
'duration', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs)
class Effect5045(BaseEffect):
"""
shipBonusSalvageCycleCF
Used by:
Ship: Heron
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Salvaging'),
'duration', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs)
class Effect5048(BaseEffect):
"""
shipBonusSalvageCycleGF
Used by:
Ship: Imicus
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Salvaging'),
'duration', ship.getModifiedItemAttr('shipBonusGF'), skill='Amarr Frigate', **kwargs)
class Effect5051(BaseEffect):
"""
shipBonusSalvageCycleMF
Used by:
Ship: Probe
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Salvaging'),
'duration', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs)
class Effect5058(BaseEffect):
"""
miningYieldMultiplyPassive
Used by:
Ships named like: Venture (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Mining'),
'miningAmount', module.getModifiedItemAttr('miningAmountMultiplier'), **kwargs)
class Effect5066(BaseEffect):
"""
shipBonusTargetPainterOptimalMF1
Used by:
Ship: Hyena
Ship: Vigil
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Target Painting'),
'maxRange', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs)
class Effect5067(BaseEffect):
"""
miningBargeBonusGeneralMiningHoldCapacity
Used by:
Variations of ship: Retriever (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr(
'generalMiningHoldCapacity', ship.getModifiedItemAttr('miningBargeBonusGeneralMiningHoldCapacity'),
skill='Mining Barge', **kwargs)
class Effect5068(BaseEffect):
"""
miningBargeBonusShieldCapacity
Used by:
Variations of ship: Procurer (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldCapacity', ship.getModifiedItemAttr('miningBargeBonusShieldCapacity'), skill='Mining Barge', **kwargs)
class Effect5069(BaseEffect):
"""
deepcoreMiningBonus
Used by:
Module: Medium Deep Core Mining Optimization I
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Mercoxit Ore Processing'),
'specializationAsteroidYieldMultiplier',
module.getModifiedItemAttr('miningAmountBonus'), **kwargs)
class Effect5079(BaseEffect):
"""
shipMissileKineticDamageCF2
Used by:
Ship: Garmur
Ship: Raiju
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'kineticDamage', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs)
class Effect5080(BaseEffect):
"""
shipMissileVelocityCF
Used by:
Ship: Caldari Navy Hookbill
Ship: Crow
Ship: Kestrel
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'maxVelocity', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs)
class Effect5081(BaseEffect):
"""
maxTargetingRangeBonusPostPercentPassive
Used by:
Modules named like: Ionic Field Projector (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRangeBonus'),
stackingPenalties=True, **kwargs)
class Effect5087(BaseEffect):
"""
shipBonusDroneHitpointsGF
Used by:
Ship: Astero
Ship: Imicus Navy Issue
Ship: Maulus Navy Issue
Ship: Tristan
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for layer in ('shieldCapacity', 'armorHP', 'hp'):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
layer, ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs)
class Effect5090(BaseEffect):
"""
shipShieldBoostMF
Used by:
Ship: Breacher
Ship: Geri
Ship: Jaguar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'),
'shieldBonus', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs)
class Effect5103(BaseEffect):
"""
shipBonusShieldTransferCapNeedCF
Used by:
Variations of ship: Bantam (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'),
'capacitorNeed', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs)
class Effect5104(BaseEffect):
"""
shipBonusShieldTransferBoostAmountCF2
Used by:
Variations of ship: Bantam (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'),
'shieldBonus', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs)
class Effect5105(BaseEffect):
"""
shipBonusShieldTransferCapNeedMF
Used by:
Variations of ship: Burst (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'),
'capacitorNeed', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs)
class Effect5106(BaseEffect):
"""
shipBonusShieldTransferBoostAmountMF2
Used by:
Variations of ship: Burst (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'),
'shieldBonus', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs)
class Effect5107(BaseEffect):
"""
shipBonusRemoteArmorRepairCapNeedGF
Used by:
Variations of ship: Navitas (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed',
src.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs)
class Effect5108(BaseEffect):
"""
shipBonusRemoteArmorRepairAmountGF2
Used by:
Variations of ship: Navitas (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'),
'armorDamageAmount', src.getModifiedItemAttr('shipBonusGF2'),
skill='Gallente Frigate', **kwargs)
class Effect5109(BaseEffect):
"""
shipBonusRemoteArmorRepairCapNeedAF
Used by:
Ship: Deacon
Ship: Inquisitor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed',
src.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs)
class Effect5110(BaseEffect):
"""
shipBonusRemoteArmorRepairAmount2AF
Used by:
Ship: Deacon
Ship: Inquisitor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'),
'armorDamageAmount', src.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs)
class Effect5111(BaseEffect):
"""
shipBonusDroneTrackingGF
Used by:
Ship: Imicus Navy Issue
Ship: Maulus Navy Issue
Ship: Tristan
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'trackingSpeed', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs)
class Effect5119(BaseEffect):
"""
shipBonusScanProbeStrength2AF
Used by:
Ship: Magnate
Ship: Magnate Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Scanner Probe',
'baseSensorStrength', ship.getModifiedItemAttr('shipBonus2AF'),
skill='Amarr Frigate', **kwargs)
class Effect5121(BaseEffect):
"""
energyTransferArrayTransferAmountBonus
Used by:
Ship: Augoror
Ship: Osprey
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter',
'powerTransferAmount', ship.getModifiedItemAttr('energyTransferAmountBonus'), **kwargs)
class Effect5122(BaseEffect):
"""
shipBonusShieldTransferCapneedMC1
Used by:
Ship: Scythe
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'),
'capacitorNeed', ship.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs)
class Effect5123(BaseEffect):
"""
shipBonusRemoteArmorRepairCapNeedAC1
Used by:
Ship: Augoror
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed',
src.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs)
class Effect5124(BaseEffect):
"""
shipBonusRemoteArmorRepairAmountAC2
Used by:
Ship: Augoror
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'),
'armorDamageAmount', src.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs)
class Effect5125(BaseEffect):
"""
shipBonusRemoteArmorRepairAmountGC2
Used by:
Ship: Exequror
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'),
'armorDamageAmount', src.getModifiedItemAttr('shipBonusGC2'),
skill='Gallente Cruiser', **kwargs)
class Effect5126(BaseEffect):
"""
shipBonusShieldTransferBoostAmountCC2
Used by:
Ship: Osprey
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'),
'shieldBonus', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs)
class Effect5127(BaseEffect):
"""
shipBonusShieldTransferBoostAmountMC2
Used by:
Ship: Scythe
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'),
'shieldBonus', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs)
class Effect5128(BaseEffect):
"""
shipBonusEwRemoteSensorDampenerOptimalBonusGC1
Used by:
Ship: Celestis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener',
'maxRange', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs)
class Effect5129(BaseEffect):
"""
minmatarShipEwTargetPainterMC1
Used by:
Ship: Bellicose
Ship: Rapier
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter',
'signatureRadiusBonus', ship.getModifiedItemAttr('shipBonusMC'),
skill='Minmatar Cruiser', **kwargs)
class Effect5131(BaseEffect):
"""
shipMissileRofCC
Used by:
Ships named like: Caracal (2 of 2)
Ship: Cobra
Ship: Enforcer
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
groups = ('Missile Launcher Heavy', 'Missile Launcher Rapid Light', 'Missile Launcher Heavy Assault')
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups,
'speed', ship.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs)
class Effect5132(BaseEffect):
"""
shipPTurretFalloffBonusMC2
Used by:
Ship: Cobra
Ship: Enforcer
Ship: Stabber
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'),
'falloff', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs)
class Effect5133(BaseEffect):
"""
shipHTDamageBonusCC
Used by:
Ship: Moa
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs)
class Effect5136(BaseEffect):
"""
shipMETCDamageBonusAC
Used by:
Ship: Augoror Navy Issue
Ship: Cobra
Ship: Enforcer
Ship: Maller
Ship: Omen Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs)
class Effect5139(BaseEffect):
"""
miningFrigateBonusOreMiningYield
Used by:
Variations of ship: Venture (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining'),
'miningAmount', module.getModifiedItemAttr('miningFrigatesBonusOreMiningYield'),
skill='Mining Frigate', **kwargs)
class Effect5153(BaseEffect):
"""
shipMissileVelocityPirateFactionRocket
Used by:
Ship: Corax
Ship: Talwar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'),
'maxVelocity', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5162(BaseEffect):
"""
skillReactiveArmorHardenerCapNeedBonus
Used by:
Skill: Resistance Phasing
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Resistance Shift Hardener', 'capacitorNeed',
src.getModifiedItemAttr('capNeedBonus') * lvl, **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Resistance Phasing'), 'capacitorNeed',
src.getModifiedItemAttr('capNeedBonus') * lvl, **kwargs)
class Effect5165(BaseEffect):
"""
shipBonusDroneMWDboostrole
Used by:
Ship: Algos
Ship: Dragoon
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'maxVelocity', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5168(BaseEffect):
"""
droneSalvageBonus
Used by:
Skill: Salvage Drone Operation
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.drones.filteredItemIncrease(
lambda drone: drone.item.requiresSkill('Salvage Drone Operation'), 'accessDifficultyBonus',
container.getModifiedItemAttr('accessDifficultyBonus') * container.level, **kwargs)
class Effect5180(BaseEffect):
"""
sensorCompensationSensorStrengthBonusGravimetric
Used by:
Skill: Gravimetric Sensor Compensation
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('scanGravimetricStrength',
container.getModifiedItemAttr('sensorStrengthBonus') * container.level, **kwargs)
class Effect5181(BaseEffect):
"""
sensorCompensationSensorStrengthBonusLadar
Used by:
Skill: Ladar Sensor Compensation
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('scanLadarStrength', container.getModifiedItemAttr('sensorStrengthBonus') * container.level, **kwargs)
class Effect5182(BaseEffect):
"""
sensorCompensationSensorStrengthBonusMagnetometric
Used by:
Skill: Magnetometric Sensor Compensation
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('scanMagnetometricStrength',
container.getModifiedItemAttr('sensorStrengthBonus') * container.level, **kwargs)
class Effect5183(BaseEffect):
"""
sensorCompensationSensorStrengthBonusRadar
Used by:
Skill: Radar Sensor Compensation
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('scanRadarStrength', container.getModifiedItemAttr('sensorStrengthBonus') * container.level, **kwargs)
class Effect5185(BaseEffect):
"""
shipEnergyVampireAmountBonusFixedAF2
Used by:
Ship: Malice
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu',
'powerTransferAmount', ship.getModifiedItemAttr('shipBonus2AF'),
skill='Amarr Frigate', **kwargs)
class Effect5187(BaseEffect):
"""
shipBonusEwRemoteSensorDampenerFalloffBonusGC1
Used by:
Ship: Celestis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener',
'falloffEffectiveness', ship.getModifiedItemAttr('shipBonusGC'),
skill='Gallente Cruiser', **kwargs)
class Effect5188(BaseEffect):
"""
trackingSpeedBonusEffectHybrids
Used by:
Modules named like: Hybrid Metastasis Adjuster (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
penalize = 'booster' not in context
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Hybrid Weapon',
'trackingSpeed', module.getModifiedItemAttr('trackingSpeedBonus'),
stackingPenalties=penalize, **kwargs)
class Effect5189(BaseEffect):
"""
trackingSpeedBonusEffectLasers
Used by:
Implants named like: Tetrimon Precision Booster (4 of 4)
Implants named like: Wightstorm Manasikara Booster (4 of 4)
Modules named like: Energy Metastasis Adjuster (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
penalties = 'booster' not in context
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Weapon',
'trackingSpeed', module.getModifiedItemAttr('trackingSpeedBonus'),
stackingPenalties=penalties, **kwargs)
class Effect5190(BaseEffect):
"""
trackingSpeedBonusEffectProjectiles
Used by:
Modules named like: Projectile Metastasis Adjuster (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
penalize = 'booster' not in context
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Projectile Weapon',
'trackingSpeed', module.getModifiedItemAttr('trackingSpeedBonus'),
stackingPenalties=penalize, **kwargs)
class Effect5201(BaseEffect):
"""
armorUpgradesMassPenaltyReductionBonus
Used by:
Skills named like: Armor Layering (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Plate',
'massAddition', container.getModifiedItemAttr('massPenaltyReduction') * level, **kwargs)
class Effect5205(BaseEffect):
"""
shipSETTrackingBonusRookie
Used by:
Ship: Immolator
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'),
'trackingSpeed', ship.getModifiedItemAttr('rookieSETTracking'), **kwargs)
class Effect5206(BaseEffect):
"""
shipSETOptimalBonusRookie
Used by:
Ship: Immolator
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'),
'maxRange', ship.getModifiedItemAttr('rookieSETOptimal'), **kwargs)
class Effect5207(BaseEffect):
"""
shipNOSTransferAmountBonusRookie
Used by:
Ship: Hematos
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu',
'powerTransferAmount', ship.getModifiedItemAttr('rookieNosDrain'), **kwargs)
class Effect5208(BaseEffect):
"""
shipNeutDestabilizationAmountBonusRookie
Used by:
Ship: Hematos
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer',
'energyNeutralizerAmount', ship.getModifiedItemAttr('rookieNeutDrain'), **kwargs)
class Effect5209(BaseEffect):
"""
shipWebVelocityBonusRookie
Used by:
Ship: Hematos
Ship: Violator
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web',
'speedFactor', ship.getModifiedItemAttr('rookieWebAmount'), **kwargs)
class Effect5212(BaseEffect):
"""
shipDroneMWDSpeedBonusRookie
Used by:
Ship: Taipan
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda mod: True,
'maxVelocity', ship.getModifiedItemAttr('rookieDroneMWDspeed'), **kwargs)
class Effect5213(BaseEffect):
"""
shipRocketMaxVelocityBonusRookie
Used by:
Module: Skua Sharpshooter Mode
Ship: Taipan
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
penalties = 'ship' not in context
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Rockets'), 'maxVelocity',
ship.getModifiedItemAttr('rookieRocketVelocity'), stackingPenalties=penalties, **kwargs)
class Effect5214(BaseEffect):
"""
shipLightMissileMaxVelocityBonusRookie
Used by:
Module: Skua Sharpshooter Mode
Ship: Taipan
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
penalties = 'ship' not in context
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Light Missiles'), 'maxVelocity',
ship.getModifiedItemAttr('rookieLightMissileVelocity'), stackingPenalties=penalties, **kwargs)
class Effect5215(BaseEffect):
"""
shipSHTTrackingSpeedBonusRookie
Used by:
Ship: Violator
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'),
'trackingSpeed', ship.getModifiedItemAttr('rookieSHTTracking'), **kwargs)
class Effect5216(BaseEffect):
"""
shipSHTFalloffBonusRookie
Used by:
Ship: Violator
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'),
'falloff', ship.getModifiedItemAttr('rookieSHTFalloff'), **kwargs)
class Effect5217(BaseEffect):
"""
shipSPTTrackingSpeedBonusRookie
Used by:
Ship: Echo
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'),
'trackingSpeed', ship.getModifiedItemAttr('rookieSPTTracking'), **kwargs)
class Effect5218(BaseEffect):
"""
shipSPTFalloffBonusRookie
Used by:
Ship: Echo
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'),
'falloff', ship.getModifiedItemAttr('rookieSPTFalloff'), **kwargs)
class Effect5219(BaseEffect):
"""
shipSPTOptimalRangeBonusRookie
Used by:
Ship: Echo
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'),
'maxRange', ship.getModifiedItemAttr('rookieSPTOptimal'), **kwargs)
class Effect5220(BaseEffect):
"""
shipProjectileDmgPirateCruiser
Used by:
Ship: Gnosis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5221(BaseEffect):
"""
shipHeavyAssaultMissileEMDmgPirateCruiser
Used by:
Ship: Gnosis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'),
'emDamage', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5222(BaseEffect):
"""
shipHeavyAssaultMissileKinDmgPirateCruiser
Used by:
Ship: Gnosis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'),
'kineticDamage', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5223(BaseEffect):
"""
shipHeavyAssaultMissileThermDmgPirateCruiser
Used by:
Ship: Gnosis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'),
'thermalDamage', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5224(BaseEffect):
"""
shipHeavyAssaultMissileExpDmgPirateCruiser
Used by:
Ship: Gnosis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'),
'explosiveDamage', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5225(BaseEffect):
"""
shipHeavyMissileEMDmgPirateCruiser
Used by:
Ship: Gnosis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'emDamage', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5226(BaseEffect):
"""
shipHeavyMissileExpDmgPirateCruiser
Used by:
Ship: Gnosis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'explosiveDamage', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5227(BaseEffect):
"""
shipHeavyMissileKinDmgPirateCruiser
Used by:
Ship: Gnosis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'kineticDamage', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5228(BaseEffect):
"""
shipHeavyMissileThermDmgPirateCruiser
Used by:
Ship: Gnosis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'thermalDamage', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5229(BaseEffect):
"""
shipScanProbeStrengthBonusPirateCruiser
Used by:
Ships named like: Stratios (2 of 2)
Ship: Astero
Ship: Gnosis
Ship: Odysseus
Ship: Praxis
Ship: Sunesis
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'),
'baseSensorStrength', container.getModifiedItemAttr('shipBonusRole8'), **kwargs)
class Effect5230(BaseEffect):
"""
modifyActiveShieldResonancePostPercent
Used by:
Modules from group: Flex Shield Hardener (5 of 5)
Modules from group: Shield Hardener (103 of 103)
"""
type = 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
for damageType in ('kinetic', 'thermal', 'explosive', 'em'):
fit.ship.boostItemAttr('shield' + damageType.capitalize() + 'DamageResonance',
module.getModifiedItemAttr(damageType + 'DamageResistanceBonus'),
stackingPenalties=True, **kwargs)
class Effect5231(BaseEffect):
"""
modifyActiveArmorResonancePostPercent
Used by:
Modules from group: Armor Hardener (148 of 148)
Modules from group: Flex Armor Hardener (4 of 4)
"""
type = 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
for damageType in ('kinetic', 'thermal', 'explosive', 'em'):
fit.ship.boostItemAttr('armor%sDamageResonance' % damageType.capitalize(),
module.getModifiedItemAttr('%sDamageResistanceBonus' % damageType),
stackingPenalties=True, **kwargs)
class Effect5234(BaseEffect):
"""
shipSmallMissileExpDmgCF2
Used by:
Ship: Caldari Navy Hookbill
Ship: Kestrel
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Rockets') or mod.charge.requiresSkill('Light Missiles'),
'explosiveDamage', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs)
class Effect5237(BaseEffect):
"""
shipSmallMissileKinDmgCF2
Used by:
Ship: Kestrel
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Rockets') or mod.charge.requiresSkill('Light Missiles'),
'kineticDamage', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs)
class Effect5240(BaseEffect):
"""
shipSmallMissileThermDmgCF2
Used by:
Ship: Caldari Navy Hookbill
Ship: Kestrel
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Rockets') or mod.charge.requiresSkill('Light Missiles'),
'thermalDamage', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs)
class Effect5243(BaseEffect):
"""
shipSmallMissileEMDmgCF2
Used by:
Ship: Caldari Navy Hookbill
Ship: Kestrel
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Rockets') or mod.charge.requiresSkill('Light Missiles'),
'emDamage', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs)
class Effect5259(BaseEffect):
"""
reconShipCloakCpuBonus1
Used by:
Ships from group: Force Recon Ship (7 of 10)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Cloaking Device',
'cpu', ship.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships', **kwargs)
class Effect5260(BaseEffect):
"""
covertOpsCloakCpuPercentBonus1
Used by:
Ships from group: Covert Ops (6 of 9)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Cloaking'),
'cpu', ship.getModifiedItemAttr('eliteBonusCovertOps1'), skill='Covert Ops', **kwargs)
class Effect5261(BaseEffect):
"""
CovertCloakCPUAddition
Used by:
Modules named like: Covert Ops Cloaking Device II (2 of 2)
Module: Covert Cynosural Field Generator I
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.increaseItemAttr('cpu', module.getModifiedItemAttr('covertCloakCPUAdd') or 0, **kwargs)
class Effect5262(BaseEffect):
"""
covertOpsCloakCpuPenalty
Used by:
Subsystems from group: Defensive Subsystem (8 of 12)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Cloaking'),
'covertCloakCPUAdd', module.getModifiedItemAttr('covertCloakCPUPenalty'), **kwargs)
class Effect5263(BaseEffect):
"""
covertCynoCpuPenalty
Used by:
Subsystems from group: Defensive Subsystem (8 of 12)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Cynosural Field Theory'),
'covertCloakCPUAdd', module.getModifiedItemAttr('covertCloakCPUPenalty'), **kwargs)
class Effect5264(BaseEffect):
"""
warfareLinkCPUAddition
Used by:
Modules from group: Command Burst (15 of 15)
Modules from group: Gang Coordinator (6 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.increaseItemAttr('cpu', module.getModifiedItemAttr('warfareLinkCPUAdd') or 0, **kwargs)
class Effect5265(BaseEffect):
"""
warfareLinkCpuPenalty
Used by:
Subsystems from group: Offensive Subsystem (8 of 12)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'),
'warfareLinkCPUAdd', module.getModifiedItemAttr('warfareLinkCPUPenalty'), **kwargs)
class Effect5266(BaseEffect):
"""
blockadeRunnerCloakCpuPercentBonus
Used by:
Ships from group: Blockade Runner (5 of 5)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Cloaking Device',
'cpu', ship.getModifiedItemAttr('eliteIndustrialCovertCloakBonus'),
skill='Transport Ships', **kwargs)
class Effect5267(BaseEffect):
"""
drawbackRepairSystemsPGNeed
Used by:
Modules named like: Auxiliary Nano Pump (6 of 8)
Modules named like: Nanobot Accelerator (6 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'),
'power', module.getModifiedItemAttr('drawback'), **kwargs)
class Effect5268(BaseEffect):
"""
drawbackCapRepPGNeed
Used by:
Variations of module: Capital Auxiliary Nano Pump I (2 of 2)
Variations of module: Capital Nanobot Accelerator I (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Repair Systems'),
'power', module.getModifiedItemAttr('drawback'), **kwargs)
class Effect5275(BaseEffect):
"""
fueledArmorRepair
Used by:
Modules from group: Ancillary Armor Repairer (12 of 12)
"""
runTime = 'late'
type = 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
if module.charge and module.charge.name == 'Nanite Repair Paste':
multiplier = 3
else:
multiplier = 1
amount = module.getModifiedItemAttr('armorDamageAmount') * multiplier
speed = module.getModifiedItemAttr('duration') / 1000.0
rps = amount / speed
fit.extraAttributes.increase('armorRepair', rps, **kwargs)
fit.extraAttributes.increase('armorRepairPreSpool', rps, **kwargs)
fit.extraAttributes.increase('armorRepairFullSpool', rps, **kwargs)
class Effect5293(BaseEffect):
"""
shipLaserCapNeed2AD1
Used by:
Ship: Coercer
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'),
'capacitorNeed', ship.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer', **kwargs)
class Effect5294(BaseEffect):
"""
shipLaserTracking2AD2
Used by:
Ship: Coercer
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'),
'trackingSpeed', ship.getModifiedItemAttr('shipBonusAD2'), skill='Amarr Destroyer', **kwargs)
class Effect5295(BaseEffect):
"""
shipBonusDroneDamageMultiplierAD1
Used by:
Variations of ship: Dragoon (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'damageMultiplier',
src.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer', **kwargs)
class Effect5300(BaseEffect):
"""
shipBonusDroneHitpointsAD1
Used by:
Variations of ship: Dragoon (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'shieldCapacity',
src.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer', **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'hp',
src.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer', **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'armorHP',
src.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer', **kwargs)
class Effect5303(BaseEffect):
"""
shipHybridRange1CD1
Used by:
Ship: Cormorant
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'),
'maxRange', ship.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer', **kwargs)
class Effect5304(BaseEffect):
"""
shipHybridTrackingCD2
Used by:
Ship: Cormorant
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'),
'trackingSpeed', ship.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer', **kwargs)
class Effect5305(BaseEffect):
"""
shipBonusFrigateSizedMissileKineticDamageCD1
Used by:
Ship: Corax
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'),
'kineticDamage', ship.getModifiedItemAttr('shipBonusCD1'),
skill='Caldari Destroyer', **kwargs)
class Effect5306(BaseEffect):
"""
shipRocketKineticDmgCD1
Used by:
Ship: Corax
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'),
'kineticDamage', ship.getModifiedItemAttr('shipBonusCD1'),
skill='Caldari Destroyer', **kwargs)
class Effect5307(BaseEffect):
"""
shipBonusAoeVelocityRocketsCD2
Used by:
Ship: Corax
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'),
'aoeVelocity', ship.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer', **kwargs)
class Effect5308(BaseEffect):
"""
shipBonusAoeVelocityStandardMissilesCD2
Used by:
Ship: Corax
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'),
'aoeVelocity', ship.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer', **kwargs)
class Effect5309(BaseEffect):
"""
shipHybridFallOff1GD1
Used by:
Ship: Catalyst
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'),
'falloff', ship.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer', **kwargs)
class Effect5310(BaseEffect):
"""
shipHybridTracking1GD2
Used by:
Ship: Algos
Ship: Catalyst
Ship: Eris
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'),
'trackingSpeed', ship.getModifiedItemAttr('shipBonusGD2'), skill='Gallente Destroyer', **kwargs)
class Effect5311(BaseEffect):
"""
shipBonusDroneDamageMultiplierGD1
Used by:
Variations of ship: Algos (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'damageMultiplier',
src.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer', **kwargs)
class Effect5316(BaseEffect):
"""
shipBonusDroneHitpointsGD1
Used by:
Variations of ship: Algos (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'shieldCapacity',
src.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer', **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'armorHP',
src.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer', **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'hp',
src.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer', **kwargs)
class Effect5317(BaseEffect):
"""
shipProjectileDamageMD1
Used by:
Ship: Sabre
Ship: Thrasher
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusMD1'),
skill='Minmatar Destroyer', **kwargs)
class Effect5318(BaseEffect):
"""
shipProjectileTracking1MD2
Used by:
Ship: Sabre
Ship: Thrasher
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'),
'trackingSpeed', ship.getModifiedItemAttr('shipBonusMD2'), skill='Minmatar Destroyer', **kwargs)
class Effect5319(BaseEffect):
"""
shipBonusFrigateSizedLightMissileExplosiveDamageMD1
Used by:
Ship: Talwar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'),
'explosiveDamage', ship.getModifiedItemAttr('shipBonusMD1'),
skill='Minmatar Destroyer', **kwargs)
class Effect5320(BaseEffect):
"""
shipRocketExplosiveDmgMD1
Used by:
Ship: Talwar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'),
'explosiveDamage', ship.getModifiedItemAttr('shipBonusMD1'),
skill='Minmatar Destroyer', **kwargs)
class Effect5321(BaseEffect):
"""
shipBonusMWDSignatureRadiusMD2
Used by:
Ship: Talwar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'),
'signatureRadiusBonus', ship.getModifiedItemAttr('shipBonusMD2'),
skill='Minmatar Destroyer', **kwargs)
class Effect5322(BaseEffect):
"""
shipArmorEMResistance1ABC1
Used by:
Ship: Absolution
Ship: Damnation
Ship: Prophecy
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorEmDamageResonance', ship.getModifiedItemAttr('shipBonusABC1'),
skill='Amarr Battlecruiser', **kwargs)
class Effect5323(BaseEffect):
"""
shipArmorExplosiveResistance1ABC1
Used by:
Ship: Absolution
Ship: Damnation
Ship: Prophecy
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusABC1'),
skill='Amarr Battlecruiser', **kwargs)
class Effect5324(BaseEffect):
"""
shipArmorKineticResistance1ABC1
Used by:
Ship: Absolution
Ship: Damnation
Ship: Prophecy
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorKineticDamageResonance', ship.getModifiedItemAttr('shipBonusABC1'),
skill='Amarr Battlecruiser', **kwargs)
class Effect5325(BaseEffect):
"""
shipArmorThermResistance1ABC1
Used by:
Ship: Absolution
Ship: Damnation
Ship: Prophecy
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorThermalDamageResonance', ship.getModifiedItemAttr('shipBonusABC1'),
skill='Amarr Battlecruiser', **kwargs)
class Effect5326(BaseEffect):
"""
shipBonusDroneDamageMultiplierABC2
Used by:
Ships named like: Prophecy (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusABC2'),
skill='Amarr Battlecruiser', **kwargs)
class Effect5331(BaseEffect):
"""
shipBonusDroneHitpointsABC2
Used by:
Ships named like: Prophecy (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for layer in ('shieldCapacity', 'armorHP', 'hp'):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
layer, ship.getModifiedItemAttr('shipBonusABC2'), skill='Amarr Battlecruiser', **kwargs)
class Effect5332(BaseEffect):
"""
shipLaserCapABC1
Used by:
Ship: Harbinger
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'),
'capacitorNeed', ship.getModifiedItemAttr('shipBonusABC1'),
skill='Amarr Battlecruiser', **kwargs)
class Effect5333(BaseEffect):
"""
shipLaserDamageBonusABC2
Used by:
Ships named like: Harbinger (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusABC2'),
skill='Amarr Battlecruiser', **kwargs)
class Effect5334(BaseEffect):
"""
shipHybridOptimal1CBC1
Used by:
Ship: Ferox
Ship: Vulture
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'maxRange', ship.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser', **kwargs)
class Effect5335(BaseEffect):
"""
shipShieldEmResistance1CBC2
Used by:
Ship: Drake
Ship: Nighthawk
Ship: Vulture
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldEmDamageResonance', ship.getModifiedItemAttr('shipBonusCBC2'),
skill='Caldari Battlecruiser', **kwargs)
class Effect5336(BaseEffect):
"""
shipShieldExplosiveResistance1CBC2
Used by:
Ship: Drake
Ship: Nighthawk
Ship: Vulture
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusCBC2'),
skill='Caldari Battlecruiser', **kwargs)
class Effect5337(BaseEffect):
"""
shipShieldKineticResistance1CBC2
Used by:
Ship: Drake
Ship: Nighthawk
Ship: Vulture
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldKineticDamageResonance', ship.getModifiedItemAttr('shipBonusCBC2'),
skill='Caldari Battlecruiser', **kwargs)
class Effect5338(BaseEffect):
"""
shipShieldThermalResistance1CBC2
Used by:
Ship: Drake
Ship: Nighthawk
Ship: Vulture
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldThermalDamageResonance', ship.getModifiedItemAttr('shipBonusCBC2'),
skill='Caldari Battlecruiser', **kwargs)
class Effect5339(BaseEffect):
"""
shipBonusHeavyAssaultMissileKineticDamageCBC1
Used by:
Ship: Drake
Ship: Nighthawk
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'),
'kineticDamage', ship.getModifiedItemAttr('shipBonusCBC1'),
skill='Caldari Battlecruiser', **kwargs)
class Effect5340(BaseEffect):
"""
shipBonusHeavyMissileKineticDamageCBC1
Used by:
Ship: Drake
Ship: Nighthawk
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'kineticDamage', ship.getModifiedItemAttr('shipBonusCBC1'),
skill='Caldari Battlecruiser', **kwargs)
class Effect5341(BaseEffect):
"""
shipHybridDmg1GBC1
Used by:
Variations of ship: Brutix (3 of 3)
Ship: Myrmidon Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusGBC1'),
skill='Gallente Battlecruiser', **kwargs)
class Effect5342(BaseEffect):
"""
shipArmorRepairing1GBC2
Used by:
Ships named like: Myrmidon (2 of 2)
Ship: Astarte
Ship: Brutix
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'),
'armorDamageAmount', ship.getModifiedItemAttr('shipBonusGBC2'),
skill='Gallente Battlecruiser', **kwargs)
class Effect5343(BaseEffect):
"""
shipBonusDroneDamageMultiplierGBC1
Used by:
Ships named like: Myrmidon (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusGBC1'),
skill='Gallente Battlecruiser', **kwargs)
class Effect5348(BaseEffect):
"""
shipBonusDroneHitpointsGBC1
Used by:
Ships named like: Myrmidon (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for layer in ('shieldCapacity', 'armorHP', 'hp'):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
layer, ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser', **kwargs)
class Effect5349(BaseEffect):
"""
shipBonusHeavyMissileLauncherRofMBC2
Used by:
Variations of ship: Cyclone (3 of 3)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy',
'speed', ship.getModifiedItemAttr('shipBonusMBC2'), skill='Minmatar Battlecruiser', **kwargs)
class Effect5350(BaseEffect):
"""
shipBonusHeavyAssaultMissileLauncherRofMBC2
Used by:
Variations of ship: Cyclone (3 of 3)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy Assault',
'speed', ship.getModifiedItemAttr('shipBonusMBC2'), skill='Minmatar Battlecruiser', **kwargs)
class Effect5351(BaseEffect):
"""
shipShieldBoost1MBC1
Used by:
Ship: Cyclone
Ship: Sleipnir
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'),
'shieldBonus', ship.getModifiedItemAttr('shipBonusMBC1'),
skill='Minmatar Battlecruiser', **kwargs)
class Effect5352(BaseEffect):
"""
shipBonusProjectileDamageMBC1
Used by:
Ships named like: Hurricane (2 of 2)
Ship: Khizriel
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusMBC1'),
skill='Minmatar Battlecruiser', **kwargs)
class Effect5353(BaseEffect):
"""
shipProjectileRof1MBC2
Used by:
Ship: Hurricane
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'),
'speed', ship.getModifiedItemAttr('shipBonusMBC2'), skill='Minmatar Battlecruiser', **kwargs)
class Effect5354(BaseEffect):
"""
shipLargeLaserCapABC1
Used by:
Ship: Oracle
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'),
'capacitorNeed', ship.getModifiedItemAttr('shipBonusABC1'),
skill='Amarr Battlecruiser', **kwargs)
class Effect5355(BaseEffect):
"""
shipLargeLaserDamageBonusABC2
Used by:
Ship: Oracle
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusABC2'),
skill='Amarr Battlecruiser', **kwargs)
class Effect5356(BaseEffect):
"""
shipHybridRangeBonusCBC1
Used by:
Ship: Naga
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'),
'maxRange', ship.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser', **kwargs)
class Effect5357(BaseEffect):
"""
shipHybridDamageBonusCBC2
Used by:
Ship: Naga
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusCBC2'),
skill='Caldari Battlecruiser', **kwargs)
class Effect5358(BaseEffect):
"""
shipLargeHybridTrackingBonusGBC1
Used by:
Ship: Talos
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'),
'trackingSpeed', ship.getModifiedItemAttr('shipBonusGBC1'),
skill='Gallente Battlecruiser', **kwargs)
class Effect5359(BaseEffect):
"""
shipHybridDamageBonusGBC2
Used by:
Ship: Talos
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusGBC2'),
skill='Gallente Battlecruiser', **kwargs)
class Effect5360(BaseEffect):
"""
shipProjectileRofBonusMBC1
Used by:
Ship: Tornado
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'),
'speed', ship.getModifiedItemAttr('shipBonusMBC1'), skill='Minmatar Battlecruiser', **kwargs)
class Effect5361(BaseEffect):
"""
shipProjectileFalloffBonusMBC2
Used by:
Ship: Tornado
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'),
'falloff', ship.getModifiedItemAttr('shipBonusMBC2'), skill='Minmatar Battlecruiser', **kwargs)
class Effect5364(BaseEffect):
"""
armorAllRepairSystemsAmountBonusPassive
Used by:
Implants named like: Agency 'Hardshell' TB Dose (4 of 4)
Implants named like: Exile Booster (4 of 4)
Implants named like: Halcyon R Booster (5 of 5)
Implant: AIR Hardshell Booster II
Implant: Antipharmakon Kosybo
Implant: Wisdom of Gheinok
"""
type = 'passive'
@staticmethod
def handler(fit, booster, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Repair Systems') or mod.item.requiresSkill('Capital Repair Systems'),
'armorDamageAmount', booster.getModifiedItemAttr('armorDamageAmountBonus') or 0, **kwargs)
class Effect5365(BaseEffect):
"""
eliteBonusViolatorsRepairSystemsArmorDamageAmount2
Used by:
Ships from group: Marauder (3 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'),
'armorDamageAmount', ship.getModifiedItemAttr('eliteBonusViolators2'),
skill='Marauders', **kwargs)
class Effect5366(BaseEffect):
"""
shipBonusRepairSystemsBonusATC2
Used by:
Ship: Vangel
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'),
'armorDamageAmount', ship.getModifiedItemAttr('shipBonusATC2'), **kwargs)
class Effect5367(BaseEffect):
"""
shipBonusRepairSystemsArmorRepairAmountGB2
Used by:
Ship: Hyperion
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'),
'armorDamageAmount', ship.getModifiedItemAttr('shipBonusGB2'),
skill='Gallente Battleship', **kwargs)
class Effect5378(BaseEffect):
"""
shipHeavyMissileAOECloudSizeCBC1
Used by:
Ship: Drake Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'aoeCloudSize', ship.getModifiedItemAttr('shipBonusCBC1'),
skill='Caldari Battlecruiser', **kwargs)
class Effect5379(BaseEffect):
"""
shipHeavyAssaultMissileAOECloudSizeCBC1
Used by:
Ship: Drake Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'),
'aoeCloudSize', ship.getModifiedItemAttr('shipBonusCBC1'),
skill='Caldari Battlecruiser', **kwargs)
class Effect5380(BaseEffect):
"""
shipHybridTrackingGBC2
Used by:
Ship: Brutix Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'trackingSpeed', ship.getModifiedItemAttr('shipBonusGBC2'),
skill='Gallente Battlecruiser', **kwargs)
class Effect5381(BaseEffect):
"""
shipEnergyTrackingABC1
Used by:
Ship: Harbinger Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'),
'trackingSpeed', ship.getModifiedItemAttr('shipBonusABC1'),
skill='Amarr Battlecruiser', **kwargs)
class Effect5382(BaseEffect):
"""
shipBonusMETOptimalAC2
Used by:
Ship: Cobra
Ship: Enforcer
Ship: Omen Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'),
'maxRange', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs)
class Effect5383(BaseEffect):
"""
shipMissileEMDamageCC
Used by:
Ship: Laelaps
Ship: Orthrus
Ship: Osprey Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'emDamage', ship.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs)
class Effect5384(BaseEffect):
"""
shipMissileThermDamageCC
Used by:
Ship: Laelaps
Ship: Orthrus
Ship: Osprey Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'thermalDamage', ship.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs)
class Effect5385(BaseEffect):
"""
shipMissileExpDamageCC
Used by:
Ship: Laelaps
Ship: Orthrus
Ship: Osprey Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'explosiveDamage', ship.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs)
class Effect5386(BaseEffect):
"""
shipMissileKinDamageCC2
Used by:
Ship: Rook
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'kineticDamage', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs)
class Effect5387(BaseEffect):
"""
shipHeavyAssaultMissileAOECloudSizeCC2
Used by:
Ship: Caracal Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'),
'aoeCloudSize', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs)
class Effect5388(BaseEffect):
"""
shipHeavyMissileAOECloudSizeCC2
Used by:
Ship: Caracal Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'aoeCloudSize', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs)
class Effect5397(BaseEffect):
"""
baseMaxScanDeviationModifierModuleOnline2None
Used by:
Variations of module: Scan Pinpointing Array I (3 of 3)
Module: Triplot Scan Acquisition Array
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'),
'baseMaxScanDeviation',
module.getModifiedItemAttr('maxScanDeviationModifierModule'),
stackingPenalties=True, **kwargs)
class Effect5398(BaseEffect):
"""
systemScanDurationModuleModifier
Used by:
Modules from group: Scanning Upgrade Time (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Astrometrics'),
'duration', module.getModifiedItemAttr('scanDurationBonus'), **kwargs)
class Effect5399(BaseEffect):
"""
baseSensorStrengthModifierModule
Used by:
Variations of module: Scan Rangefinding Array I (3 of 3)
Module: Triplot Scan Acquisition Array
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'),
'baseSensorStrength', module.getModifiedItemAttr('scanStrengthBonusModule'),
stackingPenalties=True, **kwargs)
class Effect5402(BaseEffect):
"""
shipMissileHeavyAssaultVelocityABC2
Used by:
Ship: Damnation
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'),
'maxVelocity', ship.getModifiedItemAttr('shipBonusABC2'),
skill='Amarr Battlecruiser', **kwargs)
class Effect5403(BaseEffect):
"""
shipMissileHeavyVelocityABC2
Used by:
Ship: Damnation
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'maxVelocity', ship.getModifiedItemAttr('shipBonusABC2'),
skill='Amarr Battlecruiser', **kwargs)
class Effect5410(BaseEffect):
"""
shipLaserCap1ABC2
Used by:
Ship: Absolution
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'),
'capacitorNeed', ship.getModifiedItemAttr('shipBonusABC2'),
skill='Amarr Battlecruiser', **kwargs)
class Effect5411(BaseEffect):
"""
shipMissileVelocityCD1
Used by:
Ship: Flycatcher
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'maxVelocity', ship.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer', **kwargs)
class Effect5417(BaseEffect):
"""
shipBonusDroneDamageMultiplierAB
Used by:
Ship: Armageddon
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs)
class Effect5418(BaseEffect):
"""
shipBonusDroneArmorHitPointsAB
Used by:
Ship: Armageddon
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'armorHP', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs)
class Effect5419(BaseEffect):
"""
shipBonusDroneShieldHitPointsAB
Used by:
Ship: Armageddon
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'shieldCapacity', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs)
class Effect5420(BaseEffect):
"""
shipBonusDroneStructureHitPointsAB
Used by:
Ship: Armageddon
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'hp', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs)
class Effect5424(BaseEffect):
"""
shipLargeHybridTurretRofGB
Used by:
Ship: Megathron
Ship: Megathron Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'),
'speed', ship.getModifiedItemAttr('shipBonusGB'), skill='Gallente Battleship', **kwargs)
class Effect5427(BaseEffect):
"""
shipBonusDroneTrackingGB
Used by:
Ship: Dominix
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'trackingSpeed', ship.getModifiedItemAttr('shipBonusGB'), skill='Gallente Battleship', **kwargs)
class Effect5428(BaseEffect):
"""
shipBonusDroneOptimalRangeGB
Used by:
Ship: Dominix
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'maxRange', ship.getModifiedItemAttr('shipBonusGB'), skill='Gallente Battleship', **kwargs)
class Effect5429(BaseEffect):
"""
shipBonusMissileAoeVelocityMB2
Used by:
Ship: Typhoon
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'),
'aoeVelocity', ship.getModifiedItemAttr('shipBonusMB2'),
skill='Minmatar Battleship', **kwargs)
class Effect5430(BaseEffect):
"""
shipBonusAoeVelocityCruiseMissilesMB2
Used by:
Ship: Typhoon
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'),
'aoeVelocity', ship.getModifiedItemAttr('shipBonusMB2'),
skill='Minmatar Battleship', **kwargs)
class Effect5433(BaseEffect):
"""
hackingSkillVirusBonus
Used by:
Implants named like: Halcyon B Booster (5 of 5)
Modules named like: Memetic Algorithm Bank (8 of 8)
Implant: Neural Lace 'Blackglass' Net Intrusion 920-40
Implant: Neural Lace 'Bluefire' Net Ablation 960-10
Implant: Poteque 'Prospector' Environmental Analysis EY-1005
Implant: Poteque 'Prospector' Hacking HC-905
Skill: Hacking
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Hacking'),
'virusCoherence', container.getModifiedItemAttr('virusCoherenceBonus') * level, **kwargs)
class Effect5437(BaseEffect):
"""
archaeologySkillVirusBonus
Used by:
Implants named like: Halcyon Y Booster (5 of 5)
Modules named like: Emission Scope Sharpener (8 of 8)
Implant: Poteque 'Prospector' Archaeology AC-905
Implant: Poteque 'Prospector' Environmental Analysis EY-1005
Skill: Archaeology
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Archaeology'),
'virusCoherence', container.getModifiedItemAttr('virusCoherenceBonus') * level, **kwargs)
class Effect5440(BaseEffect):
"""
systemStandardMissileKineticDamage
Used by:
Celestials named like: Class Wolf Rayet Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Light Missiles'),
'kineticDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect5444(BaseEffect):
"""
shipTorpedoAOECloudSize1CB
Used by:
Ship: Raven Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'),
'aoeCloudSize', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs)
class Effect5445(BaseEffect):
"""
shipCruiseMissileAOECloudSize1CB
Used by:
Ship: Raven Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'),
'aoeCloudSize', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs)
class Effect5456(BaseEffect):
"""
shipCruiseMissileROFCB
Used by:
Ship: Scorpion Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Cruise',
'speed', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs)
class Effect5457(BaseEffect):
"""
shipTorpedoROFCB
Used by:
Ship: Scorpion Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Torpedo',
'speed', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs)
class Effect5459(BaseEffect):
"""
hackingVirusStrengthBonus
Used by:
Implants named like: Chemal Tech Exploration Booster (3 of 3)
Implant: Neural Lace 'Blackglass' Net Intrusion 920-40
Implant: Neural Lace 'Bluefire' Net Ablation 960-10
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Hacking'), 'virusStrength', src.getModifiedItemAttr('virusStrengthBonus'), **kwargs)
class Effect5460(BaseEffect):
"""
minigameVirusStrengthBonus
Used by:
Ships from group: Covert Ops (8 of 9)
Ships named like: Stratios (2 of 2)
Subsystems named like: Defensive Covert Reconfiguration (4 of 4)
Variations of ship: Heron (3 of 3)
Variations of ship: Imicus (3 of 3)
Variations of ship: Magnate (3 of 5)
Variations of ship: Probe (3 of 3)
Ship: Astero
Ship: Metamorphosis
Ship: Nestor
Ship: Odysseus
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemIncrease(
lambda mod: (mod.item.requiresSkill('Hacking') or mod.item.requiresSkill('Archaeology')),
'virusStrength', container.getModifiedItemAttr('virusStrengthBonus') * level, **kwargs)
class Effect5461(BaseEffect):
"""
shieldOperationRechargeratebonusPostPercentOnline
Used by:
Modules from group: Shield Power Relay (6 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldRechargeRate', module.getModifiedItemAttr('rechargeratebonus') or 0, **kwargs)
class Effect5468(BaseEffect):
"""
shipBonusAgilityCI2
Used by:
Module: Anhinga Tertiary Mode
Ship: Badger
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
if 'ship' in context:
skill = 'Caldari Hauler'
penalties = False
else:
skill = None
penalties = True
fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('shipBonusCI2'),
skill=skill, stackingPenalties=penalties, **kwargs)
class Effect5469(BaseEffect):
"""
shipBonusAgilityMI2
Used by:
Ship: Wreathe
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('shipBonusMI2'), skill='Minmatar Hauler', **kwargs)
class Effect5470(BaseEffect):
"""
shipBonusAgilityGI2
Used by:
Ship: Nereus
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('shipBonusGI2'), skill='Gallente Hauler', **kwargs)
class Effect5471(BaseEffect):
"""
shipBonusAgilityAI2
Used by:
Ship: Sigil
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('shipBonusAI2'), skill='Amarr Hauler', **kwargs)
class Effect5477(BaseEffect):
"""
shipBonusAmmoBayMI2
Used by:
Ship: Hoarder
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('specialAmmoHoldCapacity', ship.getModifiedItemAttr('shipBonusMI2'),
skill='Minmatar Hauler', **kwargs)
class Effect5478(BaseEffect):
"""
shipBonusPICommoditiesHoldGI2
Used by:
Ship: Epithal
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('specialPlanetaryCommoditiesHoldCapacity', ship.getModifiedItemAttr('shipBonusGI2'),
skill='Gallente Hauler', **kwargs)
class Effect5479(BaseEffect):
"""
shipBonusMineralBayGI2
Used by:
Ship: Kryos
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('specialMineralHoldCapacity', ship.getModifiedItemAttr('shipBonusGI2'),
skill='Gallente Hauler', **kwargs)
class Effect5480(BaseEffect):
"""
setBonusChristmasBonusVelocity
Used by:
Implants named like: Genolution Core Augmentation CA (4 of 4)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant',
'implantBonusVelocity', implant.getModifiedItemAttr('implantSetChristmas'), **kwargs)
class Effect5482(BaseEffect):
"""
setBonusChristmasAgilityBonus
Used by:
Implants named like: Genolution Core Augmentation CA (4 of 4)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant',
'agilityBonus', implant.getModifiedItemAttr('implantSetChristmas'), **kwargs)
class Effect5483(BaseEffect):
"""
setBonusChristmasShieldCapacityBonus
Used by:
Implants named like: Genolution Core Augmentation CA (4 of 4)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant',
'shieldCapacityBonus', implant.getModifiedItemAttr('implantSetChristmas'), **kwargs)
class Effect5484(BaseEffect):
"""
setBonusChristmasArmorHPBonus2
Used by:
Implants named like: Genolution Core Augmentation CA (4 of 4)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant',
'armorHpBonus2', implant.getModifiedItemAttr('implantSetChristmas'), **kwargs)
class Effect5485(BaseEffect):
"""
shipSPTOptimalBonusMF
Used by:
Ship: Chremoas
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'),
'maxRange', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs)
class Effect5486(BaseEffect):
"""
shipBonusProjectileDamageMBC2
Used by:
Ship: Sleipnir
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusMBC2'),
skill='Minmatar Battlecruiser', **kwargs)
class Effect5496(BaseEffect):
"""
eliteBonusCommandShipHAMRoFCS1
Used by:
Ship: Claymore
Ship: Nighthawk
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy Assault',
'speed', ship.getModifiedItemAttr('eliteBonusCommandShips1'), skill='Command Ships', **kwargs)
class Effect5497(BaseEffect):
"""
eliteBonusCommandShipHMRoFCS1
Used by:
Ship: Claymore
Ship: Nighthawk
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy',
'speed', ship.getModifiedItemAttr('eliteBonusCommandShips1'), skill='Command Ships', **kwargs)
class Effect5499(BaseEffect):
"""
eliteBonusCommandShipsHeavyAssaultMissileExplosionRadiusCS2
Used by:
Ship: Nighthawk
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'),
'aoeCloudSize', ship.getModifiedItemAttr('eliteBonusCommandShips2'),
skill='Command Ships', **kwargs)
class Effect5500(BaseEffect):
"""
eliteBonusCommandShipsHeavyMissileExplosionRadiusCS2
Used by:
Ship: Nighthawk
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'aoeCloudSize', ship.getModifiedItemAttr('eliteBonusCommandShips2'),
skill='Command Ships', **kwargs)
class Effect5501(BaseEffect):
"""
eliteBonusCommandShipMediumHybridDamageCS2
Used by:
Ship: Vulture
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'damageMultiplier', ship.getModifiedItemAttr('eliteBonusCommandShips2'),
skill='Command Ships', **kwargs)
class Effect5505(BaseEffect):
"""
eliteBonusCommandShipMediumHybridRoFCS1
Used by:
Ship: Astarte
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'speed', ship.getModifiedItemAttr('eliteBonusCommandShips1'), skill='Command Ships', **kwargs)
class Effect5514(BaseEffect):
"""
eliteBonusCommandShipHeavyAssaultMissileDamageCS2
Used by:
Ship: Damnation
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
damageTypes = ('em', 'explosive', 'kinetic', 'thermal')
for damageType in damageTypes:
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'),
'{0}Damage'.format(damageType),
ship.getModifiedItemAttr('eliteBonusCommandShips2'), skill='Command Ships', **kwargs)
class Effect5521(BaseEffect):
"""
eliteBonusCommandShipHeavyMissileDamageCS2
Used by:
Ship: Damnation
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
damageTypes = ('em', 'explosive', 'kinetic', 'thermal')
for damageType in damageTypes:
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'{0}Damage'.format(damageType),
ship.getModifiedItemAttr('eliteBonusCommandShips2'), skill='Command Ships', **kwargs)
class Effect5539(BaseEffect):
"""
shipBonusHMLKineticDamageAC
Used by:
Ship: Sacrilege
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'kineticDamage', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs)
class Effect5540(BaseEffect):
"""
shipBonusHMLEMDamageAC
Used by:
Ship: Sacrilege
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'emDamage', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs)
class Effect5541(BaseEffect):
"""
shipBonusHMLThermDamageAC
Used by:
Ship: Sacrilege
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'thermalDamage', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs)
class Effect5542(BaseEffect):
"""
shipBonusHMLExploDamageAC
Used by:
Ship: Sacrilege
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'explosiveDamage', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs)
class Effect5552(BaseEffect):
"""
shipBonusHMLVelocityEliteBonusHeavyGunship1
Used by:
Ship: Sacrilege
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'maxVelocity', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'),
skill='Heavy Assault Cruisers', **kwargs)
class Effect5553(BaseEffect):
"""
shipBonusHAMVelocityEliteBonusHeavyGunship1
Used by:
Ship: Sacrilege
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'),
'maxVelocity', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'),
skill='Heavy Assault Cruisers', **kwargs)
class Effect5554(BaseEffect):
"""
shipBonusArmorRepAmountGC2
Used by:
Ship: Deimos
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'),
'armorDamageAmount', ship.getModifiedItemAttr('shipBonusGC2'),
skill='Gallente Cruiser', **kwargs)
class Effect5555(BaseEffect):
"""
shipBonusHeavyDroneSpeedGC
Used by:
Ship: Ishtar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'),
'maxVelocity', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs)
class Effect5556(BaseEffect):
"""
shipBonusHeavyDRoneTrackingGC
Used by:
Ship: Ishtar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'),
'trackingSpeed', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs)
class Effect5557(BaseEffect):
"""
shipBonusSentryDroneOptimalRangeEliteBonusHeavyGunship2
Used by:
Ship: Ishtar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'),
'maxRange', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'),
skill='Heavy Assault Cruisers', **kwargs)
class Effect5558(BaseEffect):
"""
shipBonusSentryDroneTrackingEliteBonusHeavyGunship2
Used by:
Ship: Ishtar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'),
'trackingSpeed', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'),
skill='Heavy Assault Cruisers', **kwargs)
class Effect5559(BaseEffect):
"""
shipBonusShieldBoostAmountMC2
Used by:
Ship: Vagabond
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'),
'shieldBonus', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs)
class Effect5560(BaseEffect):
"""
roleBonusMarauderMJDRReactivationDelayBonus
Used by:
Module: Anhinga Tertiary Mode
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
penalties = 'ship' not in context
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Micro Jump Drive', 'moduleReactivationDelay',
ship.getModifiedItemAttr('roleBonusMarauder'), stackingPenalties=penalties, **kwargs)
class Effect5564(BaseEffect):
"""
subSystemBonusCaldariOffensiveCommandBursts
Used by:
Subsystem: Tengu Offensive - Support Processor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'):
fit.modules.filteredItemBoost(lambda mod: (mod.item.requiresSkill('Skirmish Command') or
mod.item.requiresSkill('Shield Command') or
mod.item.requiresSkill('Information Command')),
attrName, src.getModifiedItemAttr('subsystemBonusCaldariOffensive'),
skill='Caldari Offensive Systems', **kwargs)
class Effect5568(BaseEffect):
"""
subSystemBonusGallenteOffensiveCommandBursts
Used by:
Subsystem: Proteus Offensive - Support Processor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'):
fit.modules.filteredItemBoost(lambda mod: (mod.item.requiresSkill('Skirmish Command') or
mod.item.requiresSkill('Armored Command') or
mod.item.requiresSkill('Information Command')),
attrName, src.getModifiedItemAttr('subsystemBonusGallenteOffensive'),
skill='Gallente Offensive Systems', **kwargs)
class Effect5570(BaseEffect):
"""
subSystemBonusMinmatarOffensiveCommandBursts
Used by:
Subsystem: Loki Offensive - Support Processor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'):
fit.modules.filteredItemBoost(lambda mod: (mod.item.requiresSkill('Skirmish Command') or
mod.item.requiresSkill('Shield Command') or
mod.item.requiresSkill('Armored Command')),
attrName, src.getModifiedItemAttr('subsystemBonusMinmatarOffensive'),
skill='Minmatar Offensive Systems', **kwargs)
class Effect5572(BaseEffect):
"""
eliteBonusCommandShipArmoredCS3
Used by:
Ships from group: Command Ship (4 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'),
attrName, src.getModifiedItemAttr('eliteBonusCommandShips3'),
skill='Command Ships', **kwargs)
class Effect5573(BaseEffect):
"""
eliteBonusCommandShipSiegeCS3
Used by:
Ships from group: Command Ship (4 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'),
attrName, src.getModifiedItemAttr('eliteBonusCommandShips3'),
skill='Command Ships', **kwargs)
class Effect5574(BaseEffect):
"""
eliteBonusCommandShipSkirmishCS3
Used by:
Ships from group: Command Ship (4 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'),
attrName, src.getModifiedItemAttr('eliteBonusCommandShips3'),
skill='Command Ships', **kwargs)
class Effect5575(BaseEffect):
"""
eliteBonusCommandShipInformationCS3
Used by:
Ships from group: Command Ship (4 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'),
attrName, src.getModifiedItemAttr('eliteBonusCommandShips3'),
skill='Command Ships', **kwargs)
class Effect5607(BaseEffect):
"""
capacitorEmissionSystemskill
Used by:
Implants named like: Inherent Implants 'Squire' Capacitor Emission Systems ES (6 of 6)
Modules named like: Egress Port Maximizer (8 of 8)
Skill: Capacitor Emission Systems
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capacitor Emission Systems'),
'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs)
class Effect5610(BaseEffect):
"""
shipBonusLargeEnergyTurretMaxRangeAB
Used by:
Ship: Marshal
Ship: Paladin
Ship: Python
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'),
'maxRange', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs)
class Effect5611(BaseEffect):
"""
shipBonusHTFalloffGB2
Used by:
Ship: Kronos
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'),
'falloff', ship.getModifiedItemAttr('shipBonusGB2'), skill='Gallente Battleship', **kwargs)
class Effect5618(BaseEffect):
"""
shipBonusRHMLROF2CB
Used by:
Modules named like: Anhinga Mode (3 of 3)
Ship: Raven
Ship: Widow
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
if 'ship' in context:
skill = 'Caldari Battleship'
penalties = False
penaltyGroup = None
else:
skill = None
penalties = True
penaltyGroup = 'postPerc'
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Missile Launcher Rapid Heavy', 'speed',
ship.getModifiedItemAttr('shipBonus2CB'), skill=skill,
stackingPenalties=penalties, penaltyGroup=penaltyGroup, **kwargs)
class Effect5619(BaseEffect):
"""
shipBonusRHMLROFCB
Used by:
Ship: Scorpion Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rapid Heavy',
'speed', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs)
class Effect5620(BaseEffect):
"""
shipBonusRHMLROFMB
Used by:
Ship: Typhoon
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rapid Heavy',
'speed', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs)
class Effect5621(BaseEffect):
"""
shipBonusCruiseROFMB
Used by:
Ship: Typhoon
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Cruise',
'speed', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs)
class Effect5622(BaseEffect):
"""
shipBonusTorpedoROFMB
Used by:
Ship: Typhoon
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Torpedo',
'speed', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs)
class Effect5628(BaseEffect):
"""
shipBonusCruiseMissileEMDmgMB
Used by:
Ship: Typhoon Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'),
'emDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs)
class Effect5629(BaseEffect):
"""
shipBonusCruiseMissileThermDmgMB
Used by:
Ship: Typhoon Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'),
'thermalDamage', ship.getModifiedItemAttr('shipBonusMB'),
skill='Minmatar Battleship', **kwargs)
class Effect5630(BaseEffect):
"""
shipBonusCruiseMissileKineticDmgMB
Used by:
Ship: Typhoon Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'),
'kineticDamage', ship.getModifiedItemAttr('shipBonusMB'),
skill='Minmatar Battleship', **kwargs)
class Effect5631(BaseEffect):
"""
shipBonusCruiseMissileExploDmgMB
Used by:
Ship: Typhoon Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'),
'explosiveDamage', ship.getModifiedItemAttr('shipBonusMB'),
skill='Minmatar Battleship', **kwargs)
class Effect5632(BaseEffect):
"""
shipBonusTorpedoMissileExploDmgMB
Used by:
Ship: Typhoon Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'),
'explosiveDamage', ship.getModifiedItemAttr('shipBonusMB'),
skill='Minmatar Battleship', **kwargs)
class Effect5633(BaseEffect):
"""
shipBonusTorpedoMissileEMDmgMB
Used by:
Ship: Typhoon Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'),
'emDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs)
class Effect5634(BaseEffect):
"""
shipBonusTorpedoMissileThermDmgMB
Used by:
Ship: Typhoon Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'),
'thermalDamage', ship.getModifiedItemAttr('shipBonusMB'),
skill='Minmatar Battleship', **kwargs)
class Effect5635(BaseEffect):
"""
shipBonusTorpedoMissileKineticDmgMB
Used by:
Ship: Typhoon Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'),
'kineticDamage', ship.getModifiedItemAttr('shipBonusMB'),
skill='Minmatar Battleship', **kwargs)
class Effect5636(BaseEffect):
"""
shipBonusHeavyMissileEMDmgMB
Used by:
Ship: Typhoon Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'emDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs)
class Effect5637(BaseEffect):
"""
shipBonusHeavyMissileThermDmgMB
Used by:
Ship: Typhoon Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'thermalDamage', ship.getModifiedItemAttr('shipBonusMB'),
skill='Minmatar Battleship', **kwargs)
class Effect5638(BaseEffect):
"""
shipBonusHeavyMissileKineticDmgMB
Used by:
Ship: Typhoon Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'kineticDamage', ship.getModifiedItemAttr('shipBonusMB'),
skill='Minmatar Battleship', **kwargs)
class Effect5639(BaseEffect):
"""
shipBonusHeavyMissileExploDmgMB
Used by:
Ship: Typhoon Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'explosiveDamage', ship.getModifiedItemAttr('shipBonusMB'),
skill='Minmatar Battleship', **kwargs)
class Effect5644(BaseEffect):
"""
shipBonusMissileVelocityCC2
Used by:
Ship: Cerberus
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'maxVelocity',
ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs)
class Effect5647(BaseEffect):
"""
covertOpsCloakCPUPercentRoleBonus
Used by:
Ships from group: Expedition Frigate (2 of 2)
Ship: Astero
Ship: Cenotaph
Ship: Cobra
Ship: Enforcer
Ship: Pacifier
Ship: Sidewinder
Ship: Tholos
Ship: Victor
Ship: Victorieux Luxury Yacht
Ship: Virtuoso
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Cloaking'),
'cpu', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5650(BaseEffect):
"""
shipArmorResistanceAF1
Used by:
Ship: Malediction
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
damageTypes = ('Em', 'Explosive', 'Kinetic', 'Thermal')
for damageType in damageTypes:
fit.ship.boostItemAttr('armor{0}DamageResonance'.format(damageType), ship.getModifiedItemAttr('shipBonusAF'),
skill='Amarr Frigate', **kwargs)
class Effect5657(BaseEffect):
"""
Interceptor2ShieldResist
Used by:
Ship: Raptor
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
damageTypes = ('Em', 'Explosive', 'Kinetic', 'Thermal')
for damageType in damageTypes:
fit.ship.boostItemAttr('shield{0}DamageResonance'.format(damageType),
ship.getModifiedItemAttr('eliteBonusInterceptor2'), skill='Interceptors', **kwargs)
class Effect5673(BaseEffect):
"""
interceptor2ProjectileDamage
Used by:
Ship: Claw
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'),
'damageMultiplier', ship.getModifiedItemAttr('eliteBonusInterceptor2'),
skill='Interceptors', **kwargs)
class Effect5695(BaseEffect):
"""
eliteBonusInterdictorsArmorResist1
Used by:
Ship: Heretic
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for damageType in ('Em', 'Thermal', 'Explosive', 'Kinetic'):
fit.ship.boostItemAttr('armor%sDamageResonance' % damageType,
ship.getModifiedItemAttr('eliteBonusInterdictors1'), skill='Interdictors', **kwargs)
class Effect5717(BaseEffect):
"""
implantSetWarpSpeed
Used by:
Implants named like: grade Ascendancy (12 of 12)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant',
'WarpSBonus', implant.getModifiedItemAttr('implantSetWarpSpeed'), **kwargs)
class Effect5721(BaseEffect):
"""
shipBonusMETOptimalRangePirateFaction
Used by:
Ships named like: Stratios (2 of 2)
Ship: Odysseus
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'),
'maxRange', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5723(BaseEffect):
"""
eliteBonusInterdictorsMWDSigRadius2
Used by:
Ships from group: Interdictor (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'),
'signatureRadiusBonus', ship.getModifiedItemAttr('eliteBonusInterdictors2'),
skill='Interdictors', **kwargs)
class Effect5724(BaseEffect):
"""
shipSHTOptimalBonusGF
Used by:
Ship: Ares
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'),
'maxRange', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs)
class Effect5725(BaseEffect):
"""
shipBonusRemoteRepairAmountPirateFaction
Used by:
Ship: Nestor
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'),
'armorDamageAmount', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5726(BaseEffect):
"""
shipBonusLETOptimalRangePirateFaction
Used by:
Ship: Nestor
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'),
'maxRange', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5733(BaseEffect):
"""
eliteBonusMaraudersHeavyMissileDamageExpRole1
Used by:
Ship: Golem
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'explosiveDamage', ship.getModifiedItemAttr('eliteBonusViolatorsRole1'), **kwargs)
class Effect5734(BaseEffect):
"""
eliteBonusMaraudersHeavyMissileDamageKinRole1
Used by:
Ship: Golem
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'kineticDamage', ship.getModifiedItemAttr('eliteBonusViolatorsRole1'), **kwargs)
class Effect5735(BaseEffect):
"""
eliteBonusMaraudersHeavyMissileDamageEMRole1
Used by:
Ship: Golem
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'emDamage', ship.getModifiedItemAttr('eliteBonusViolatorsRole1'), **kwargs)
class Effect5736(BaseEffect):
"""
eliteBonusMaraudersHeavyMissileDamageThermRole1
Used by:
Ship: Golem
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'thermalDamage', ship.getModifiedItemAttr('eliteBonusViolatorsRole1'), **kwargs)
class Effect5737(BaseEffect):
"""
shipScanProbeStrengthBonusPirateFaction
Used by:
Ship: Nestor
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'),
'baseSensorStrength', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5738(BaseEffect):
"""
shipBonusRemoteRepairRangePirateFaction2
Used by:
Ship: Nestor
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'),
'maxRange', ship.getModifiedItemAttr('shipBonusRole8'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'),
'falloffEffectiveness', ship.getModifiedItemAttr('shipBonusRole8'), **kwargs)
class Effect5754(BaseEffect):
"""
overloadSelfTrackingModuleBonus
Used by:
Modules named like: Tracking Computer (19 of 19)
Variations of module: Tracking Disruptor I (6 of 6)
"""
type = 'overheat'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.boostItemAttr('maxRangeBonus', module.getModifiedItemAttr('overloadTrackingModuleStrengthBonus'), **kwargs)
module.boostItemAttr('falloffBonus', module.getModifiedItemAttr('overloadTrackingModuleStrengthBonus'), **kwargs)
module.boostItemAttr('trackingSpeedBonus', module.getModifiedItemAttr('overloadTrackingModuleStrengthBonus'), **kwargs)
class Effect5757(BaseEffect):
"""
overloadSelfSensorModuleBonus
Used by:
Modules from group: Remote Sensor Booster (8 of 8)
Modules from group: Sensor Booster (16 of 16)
Modules from group: Sensor Dampener (6 of 6)
"""
type = 'overheat'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.boostItemAttr('maxTargetRangeBonus', module.getModifiedItemAttr('overloadSensorModuleStrengthBonus'), **kwargs)
module.boostItemAttr('scanResolutionBonus', module.getModifiedItemAttr('overloadSensorModuleStrengthBonus'),
stackingPenalties=True, **kwargs)
for scanType in ('Gravimetric', 'Magnetometric', 'Radar', 'Ladar'):
module.boostItemAttr(
'scan{}StrengthPercent'.format(scanType),
module.getModifiedItemAttr('overloadSensorModuleStrengthBonus'),
stackingPenalties=True, **kwargs)
class Effect5758(BaseEffect):
"""
overloadSelfPainterBonus
Used by:
Modules from group: Target Painter (9 of 9)
"""
type = 'overheat'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.boostItemAttr('signatureRadiusBonus', module.getModifiedItemAttr('overloadPainterStrengthBonus') or 0, **kwargs)
class Effect5769(BaseEffect):
"""
repairDroneHullBonusBonus
Used by:
Implants named like: Black Market 'Valdimar' Repair Drone Operation DR (3 of 3)
Modules named like: Drone Repair Augmentor (8 of 8)
Skill: Repair Drone Operation
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.drones.filteredItemBoost(lambda drone: drone.item.group.name == 'Logistic Drone',
'structureDamageAmount', container.getModifiedItemAttr('damageHP') * level, **kwargs)
class Effect5778(BaseEffect):
"""
shipMissileRoFMF2
Used by:
Ship: Breacher
Ship: Jaguar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'),
'speed', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs)
class Effect5779(BaseEffect):
"""
shipBonusSPTFalloffMF2
Used by:
Ship: Pacifier
Ship: Rifter
Ship: Sidewinder
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'),
'falloff', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs)
class Effect5793(BaseEffect):
"""
ewSkillTrackingDisruptionRangeDisruptionBonus
Used by:
Modules named like: Tracking Diagnostic Subroutines (8 of 8)
Skill: Weapon Destabilization
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
for attr in ('maxRangeBonus', 'falloffBonus'):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'),
attr, container.getModifiedItemAttr('scanSkillEwStrengthBonus') * level, **kwargs)
class Effect5802(BaseEffect):
"""
shipBonusAfterburnerSpeedFactor2CB
Used by:
Ship: Nightmare
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'),
'speedFactor', module.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship', **kwargs)
class Effect5803(BaseEffect):
"""
shipBonusSentryDroneDamageMultiplierPirateFaction
Used by:
Ship: Rattlesnake
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5804(BaseEffect):
"""
shipBonusHeavyDroneDamageMultiplierPirateFaction
Used by:
Ship: Rattlesnake
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5805(BaseEffect):
"""
shipBonusSentryDroneHPPirateFaction
Used by:
Ship: Rattlesnake
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'),
'hp', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5806(BaseEffect):
"""
shipBonusSentryDroneArmorHpPirateFaction
Used by:
Ship: Rattlesnake
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'),
'armorHP', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5807(BaseEffect):
"""
shipBonusSentryDroneShieldHpPirateFaction
Used by:
Ship: Rattlesnake
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'),
'shieldCapacity', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5808(BaseEffect):
"""
shipBonusHeavyDroneShieldHpPirateFaction
Used by:
Ship: Rattlesnake
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'),
'shieldCapacity', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5809(BaseEffect):
"""
shipBonusHeavyDroneArmorHpPirateFaction
Used by:
Ship: Rattlesnake
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'),
'armorHP', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5810(BaseEffect):
"""
shipBonusHeavyDroneHPPirateFaction
Used by:
Ship: Rattlesnake
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'),
'hp', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5811(BaseEffect):
"""
shipBonusKineticMissileDamageGB2
Used by:
Ship: Rattlesnake
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'kineticDamage', ship.getModifiedItemAttr('shipBonusGB2'),
skill='Gallente Battleship', **kwargs)
class Effect5812(BaseEffect):
"""
shipBonusThermalMissileDamageGB2
Used by:
Ship: Rattlesnake
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'thermalDamage', ship.getModifiedItemAttr('shipBonusGB2'),
skill='Gallente Battleship', **kwargs)
class Effect5813(BaseEffect):
"""
shipBonusAfterburnerSpeedFactorCF2
Used by:
Ship: Imp
Ship: Succubus
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'),
'speedFactor', module.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs)
class Effect5814(BaseEffect):
"""
shipBonusKineticMissileDamageGF
Used by:
Ship: Whiptail
Ship: Worm
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'kineticDamage', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs)
class Effect5815(BaseEffect):
"""
shipBonusThermalMissileDamageGF
Used by:
Ship: Whiptail
Ship: Worm
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'thermalDamage', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs)
class Effect5816(BaseEffect):
"""
shipBonusLightDroneDamageMultiplierPirateFaction
Used by:
Ship: Mamba
Ship: Whiptail
Ship: Worm
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5817(BaseEffect):
"""
shipBonusLightDroneHPPirateFaction
Used by:
Ship: Mamba
Ship: Whiptail
Ship: Worm
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'),
'hp', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5818(BaseEffect):
"""
shipBonusLightDroneArmorHPPirateFaction
Used by:
Ship: Mamba
Ship: Whiptail
Ship: Worm
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'),
'armorHP', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5819(BaseEffect):
"""
shipBonusLightDroneShieldHPPirateFaction
Used by:
Ship: Mamba
Ship: Whiptail
Ship: Worm
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'),
'shieldCapacity', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5820(BaseEffect):
"""
shipBonusAfterburnerSpeedFactorCC2
Used by:
Ship: Fiend
Ship: Phantasm
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'),
'speedFactor', module.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs)
class Effect5821(BaseEffect):
"""
shipBonusMediumDroneDamageMultiplierPirateFaction
Used by:
Ship: Alligator
Ship: Chameleon
Ship: Gila
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5822(BaseEffect):
"""
shipBonusMediumDroneHPPirateFaction
Used by:
Ship: Chameleon
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'),
'hp', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5823(BaseEffect):
"""
shipBonusMediumDroneArmorHPPirateFaction
Used by:
Ship: Chameleon
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'),
'armorHP', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5824(BaseEffect):
"""
shipBonusMediumDroneShieldHPPirateFaction
Used by:
Ship: Chameleon
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'),
'shieldCapacity', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect5825(BaseEffect):
"""
shipBonusKineticMissileDamageGC2
Used by:
Ship: Chameleon
Ship: Gila
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'kineticDamage', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs)
class Effect5826(BaseEffect):
"""
shipBonusThermalMissileDamageGC2
Used by:
Ship: Chameleon
Ship: Gila
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'thermalDamage', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs)
class Effect5827(BaseEffect):
"""
shipBonusTDOptimalBonusAF1
Used by:
Ship: Crucifier
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'),
'maxRange', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs)
class Effect5852(BaseEffect):
"""
expeditionFrigateBonusOreMiningYield
Used by:
Ship: Prospect
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Mining'), 'miningAmount',
ship.getModifiedItemAttr('expeditionFrigateBonusOreMiningYield'),
skill='Expedition Frigates', **kwargs)
class Effect5853(BaseEffect):
"""
expeditionFrigateBonusSignatureRadius
Used by:
Ship: Prospect
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('signatureRadius', ship.getModifiedItemAttr('expeditionFrigateBonusSignatureRadius'),
skill='Expedition Frigates', **kwargs)
class Effect5854(BaseEffect):
"""
shipBonusNosferatuOverride
Used by:
Ship: Ashimmu
Ship: Bhaalgorn
Ship: Caedes
Ship: Chemosh
Ship: Cruor
Ship: Dagon
Ship: Molok
Ship: Rabisu
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemForce(lambda mod: mod.item.group.name == 'Energy Nosferatu',
'nosOverride', ship.getModifiedItemAttr('nosOverride'), **kwargs)
class Effect5862(BaseEffect):
"""
shipMissileEMDamageCB
Used by:
Ship: Barghest
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'emDamage', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs)
class Effect5863(BaseEffect):
"""
shipMissileKinDamageCB
Used by:
Ship: Barghest
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'kineticDamage', ship.getModifiedItemAttr('shipBonusCB'),
skill='Caldari Battleship', **kwargs)
class Effect5864(BaseEffect):
"""
shipMissileThermDamageCB
Used by:
Ship: Barghest
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'thermalDamage', ship.getModifiedItemAttr('shipBonusCB'),
skill='Caldari Battleship', **kwargs)
class Effect5865(BaseEffect):
"""
shipMissileExploDamageCB
Used by:
Ship: Barghest
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'explosiveDamage', ship.getModifiedItemAttr('shipBonusCB'),
skill='Caldari Battleship', **kwargs)
class Effect5866(BaseEffect):
"""
shipBonusWarpScrambleMaxRangeGB
Used by:
Ship: Barghest
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler',
'maxRange', ship.getModifiedItemAttr('shipBonusGB'), skill='Gallente Battleship', **kwargs)
class Effect5867(BaseEffect):
"""
shipBonusMissileExplosionDelayPirateFaction2
Used by:
Module: Anhinga Primary Mode
Module: Anhinga Secondary Mode
Ship: Barghest
Ship: Garmur
Ship: Laelaps
Ship: Orthrus
Ship: Raiju
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
penalties = 'ship' not in context
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosionDelay',
ship.getModifiedItemAttr('shipBonusRole8'), stackingPenalties=penalties, **kwargs)
class Effect5868(BaseEffect):
"""
drawbackCargoCapacity
Used by:
Modules named like: Transverse Bulkhead (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('capacity', module.getModifiedItemAttr('drawback'), **kwargs)
class Effect5869(BaseEffect):
"""
eliteIndustrialWarpSpeedBonus1
Used by:
Ships from group: Blockade Runner (5 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('warpSpeedMultiplier', ship.getModifiedItemAttr('eliteBonusIndustrial1'),
skill='Transport Ships', **kwargs)
class Effect5870(BaseEffect):
"""
shipBonusShieldBoostCI2
Used by:
Ship: Bustard
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'),
'shieldBonus', ship.getModifiedItemAttr('shipBonusCI2'), skill='Caldari Hauler', **kwargs)
class Effect5871(BaseEffect):
"""
shipBonusShieldBoostMI2
Used by:
Ship: Mastodon
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'),
'shieldBonus', ship.getModifiedItemAttr('shipBonusMI2'), skill='Minmatar Hauler', **kwargs)
class Effect5872(BaseEffect):
"""
shipBonusArmorRepairAI2
Used by:
Ship: Impel
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'),
'armorDamageAmount', ship.getModifiedItemAttr('shipBonusAI2'),
skill='Amarr Hauler', **kwargs)
class Effect5873(BaseEffect):
"""
shipBonusArmorRepairGI2
Used by:
Ship: Occator
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'),
'armorDamageAmount', ship.getModifiedItemAttr('shipBonusGI2'),
skill='Gallente Hauler', **kwargs)
class Effect5874(BaseEffect):
"""
eliteIndustrialFleetCapacity1
Used by:
Ships from group: Deep Space Transport (5 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('fleetHangarCapacity', ship.getModifiedItemAttr('eliteBonusIndustrial1'),
skill='Transport Ships', **kwargs)
class Effect5881(BaseEffect):
"""
eliteIndustrialShieldResists2
Used by:
Ships from group: Deep Space Transport (3 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for damageType in ('em', 'thermal', 'explosive', 'kinetic'):
fit.ship.boostItemAttr('shield{}DamageResonance'.format(damageType.capitalize()),
ship.getModifiedItemAttr('eliteBonusIndustrial2'), skill='Transport Ships', **kwargs)
class Effect5888(BaseEffect):
"""
eliteIndustrialArmorResists2
Used by:
Ship: Impel
Ship: Occator
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for damageType in ('em', 'thermal', 'explosive', 'kinetic'):
fit.ship.boostItemAttr('armor{}DamageResonance'.format(damageType.capitalize()),
ship.getModifiedItemAttr('eliteBonusIndustrial2'), skill='Transport Ships', **kwargs)
class Effect5889(BaseEffect):
"""
eliteIndustrialABHeatBonus
Used by:
Ships from group: Deep Space Transport (5 of 5)
Ships from group: Interceptor (4 of 10)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'),
'overloadSpeedFactorBonus', ship.getModifiedItemAttr('roleBonusOverheatDST'), **kwargs)
class Effect5890(BaseEffect):
"""
eliteIndustrialMWDHeatBonus
Used by:
Ships from group: Deep Space Transport (5 of 5)
Ships from group: Interceptor (4 of 10)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'),
'overloadSpeedFactorBonus', ship.getModifiedItemAttr('roleBonusOverheatDST'), **kwargs)
class Effect5891(BaseEffect):
"""
eliteIndustrialArmorHardenerHeatBonus
Used by:
Ships from group: Deep Space Transport (5 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'),
'overloadHardeningBonus', ship.getModifiedItemAttr('roleBonusOverheatDST'), **kwargs)
class Effect5892(BaseEffect):
"""
eliteIndustrialReactiveArmorHardenerHeatBonus
Used by:
Ships from group: Deep Space Transport (5 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'),
'overloadSelfDurationBonus', ship.getModifiedItemAttr('roleBonusOverheatDST'), **kwargs)
class Effect5893(BaseEffect):
"""
eliteIndustrialShieldHardenerHeatBonus
Used by:
Ships from group: Deep Space Transport (5 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Tactical Shield Manipulation'),
'overloadHardeningBonus', ship.getModifiedItemAttr('roleBonusOverheatDST'), **kwargs)
class Effect5896(BaseEffect):
"""
eliteIndustrialShieldBoosterHeatBonus
Used by:
Ships from group: Deep Space Transport (5 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'),
'overloadShieldBonus', ship.getModifiedItemAttr('roleBonusOverheatDST'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'),
'overloadSelfDurationBonus', ship.getModifiedItemAttr('roleBonusOverheatDST'), **kwargs)
class Effect5899(BaseEffect):
"""
eliteIndustrialArmorRepairHeatBonus
Used by:
Ships from group: Deep Space Transport (5 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'),
'overloadArmorDamageAmount', ship.getModifiedItemAttr('roleBonusOverheatDST'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'),
'overloadSelfDurationBonus', ship.getModifiedItemAttr('roleBonusOverheatDST'), **kwargs)
class Effect5900(BaseEffect):
"""
warpSpeedAddition
Used by:
Modules from group: Warp Accelerator (3 of 3)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('warpSpeedMultiplier', module.getModifiedItemAttr('warpSpeedAdd'), **kwargs)
class Effect5901(BaseEffect):
"""
roleBonusBulkheadCPU
Used by:
Ships from group: Freighter (4 of 6)
Ships from group: Jump Freighter (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Reinforced Bulkhead',
'cpu', ship.getModifiedItemAttr('cpuNeedBonus'), **kwargs)
class Effect5911(BaseEffect):
"""
onlineJumpDriveConsumptionAmountBonusPercentage
Used by:
Modules from group: Jump Drive Economizer (3 of 3)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('jumpDriveConsumptionAmount',
module.getModifiedItemAttr('consumptionQuantityBonusPercentage'), stackingPenalties=True, **kwargs)
class Effect5912(BaseEffect):
"""
systemRemoteCapTransmitterAmount
Used by:
Celestials named like: Class Cataclysmic Variable Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter',
'powerTransferAmount', beacon.getModifiedItemAttr('energyTransferAmountBonus'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect5913(BaseEffect):
"""
systemArmorHP
Used by:
Celestials named like: Class Wolf Rayet Effects (6 of 6)
Celestial: Federal Stellar Observatory
Celestial: Imperial Stellar Observatory
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr('armorHP', beacon.getModifiedItemAttr('armorHPMultiplier'), **kwargs)
class Effect5914(BaseEffect):
"""
systemEnergyNeutMultiplier
Used by:
Celestials named like: Class Pulsar Effects (6 of 6)
Celestial: Imperial Stellar Observatory
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Energy Neutralizer',
'energyNeutralizerAmount',
beacon.getModifiedItemAttr('energyWarfareStrengthMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect5915(BaseEffect):
"""
systemEnergyVampireMultiplier
Used by:
Celestials named like: Class Pulsar Effects (6 of 6)
Celestial: Imperial Stellar Observatory
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Energy Nosferatu',
'powerTransferAmount',
beacon.getModifiedItemAttr('energyWarfareStrengthMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect5916(BaseEffect):
"""
systemDamageExplosiveBombs
Used by:
Celestials named like: Class Red Giant Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'),
'explosiveDamage', beacon.getModifiedItemAttr('smartbombDamageMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect5917(BaseEffect):
"""
systemDamageKineticBombs
Used by:
Celestials named like: Class Red Giant Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'),
'kineticDamage', beacon.getModifiedItemAttr('smartbombDamageMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect5918(BaseEffect):
"""
systemDamageThermalBombs
Used by:
Celestials named like: Class Red Giant Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'),
'thermalDamage', beacon.getModifiedItemAttr('smartbombDamageMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect5919(BaseEffect):
"""
systemDamageEMBombs
Used by:
Celestials named like: Class Red Giant Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'),
'emDamage', beacon.getModifiedItemAttr('smartbombDamageMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect5920(BaseEffect):
"""
systemAoeCloudSize
Used by:
Celestials named like: Class Magnetar Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'aoeCloudSize', beacon.getModifiedItemAttr('aoeCloudSizeMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect5921(BaseEffect):
"""
systemTargetPainterMultiplier
Used by:
Celestials named like: Class Magnetar Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Target Painting'),
'signatureRadiusBonus',
beacon.getModifiedItemAttr('targetPainterStrengthMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect5922(BaseEffect):
"""
systemWebifierStrengthMultiplier
Used by:
Celestials named like: Class Black Hole Effects (6 of 6)
Celestial: Republic Stellar Observatory
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Stasis Web',
'speedFactor', beacon.getModifiedItemAttr('stasisWebStrengthMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect5923(BaseEffect):
"""
systemNeutBombs
Used by:
Celestials named like: Class Red Giant Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'),
'energyNeutralizerAmount',
beacon.getModifiedItemAttr('smartbombDamageMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect5924(BaseEffect):
"""
systemGravimetricECMBomb
Used by:
Celestials named like: Class Red Giant Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'),
'scanGravimetricStrengthBonus',
beacon.getModifiedItemAttr('smartbombDamageMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect5925(BaseEffect):
"""
systemLadarECMBomb
Used by:
Celestials named like: Class Red Giant Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'),
'scanLadarStrengthBonus',
beacon.getModifiedItemAttr('smartbombDamageMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect5926(BaseEffect):
"""
systemMagnetrometricECMBomb
Used by:
Celestials named like: Class Red Giant Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'),
'scanMagnetometricStrengthBonus',
beacon.getModifiedItemAttr('smartbombDamageMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect5927(BaseEffect):
"""
systemRadarECMBomb
Used by:
Celestials named like: Class Red Giant Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'),
'scanRadarStrengthBonus',
beacon.getModifiedItemAttr('smartbombDamageMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect5929(BaseEffect):
"""
systemDroneTracking
Used by:
Celestials named like: Class Magnetar Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.drones.filteredItemMultiply(lambda drone: True,
'trackingSpeed', beacon.getModifiedItemAttr('trackingSpeedMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect5934(BaseEffect):
"""
warpScrambleBlockMWDWithNPCEffect
Used by:
Modules named like: Warp Scrambler (28 of 28)
"""
runTime = 'early'
type = 'projected', 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'):
return
if module.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0):
return
fit.ship.increaseItemAttr('warpScrambleStatus', module.getModifiedItemAttr('warpScrambleStrength'))
fit.modules.filteredItemIncrease(
lambda mod: mod.item.requiresSkill('High Speed Maneuvering') or mod.item.requiresSkill('Micro Jump Drive Operation'),
'activationBlocked', module.getModifiedItemAttr('activationBlockedStrenght'), **kwargs)
class Effect5939(BaseEffect):
"""
shipRocketRoFBonusAF2
Used by:
Ship: Malediction
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rocket',
'speed', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs)
class Effect5944(BaseEffect):
"""
shipMissileLauncherRoFAD1Fixed
Used by:
Ship: Heretic
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'),
'speed', ship.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer', **kwargs)
class Effect5945(BaseEffect):
"""
cloakingPrototype
Used by:
Modules named like: Prototype Cloaking Device I (2 of 2)
"""
runTime = 'early'
type = 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
# Set flag which is used to determine if ship is cloaked or not
# This is used to apply cloak-only bonuses, like Black Ops' speed bonus
# Doesn't apply to covops cloaks
fit.extraAttributes['cloaked'] = True
# Apply speed penalty
fit.ship.multiplyItemAttr('maxVelocity', module.getModifiedItemAttr('maxVelocityModifier'), **kwargs)
class Effect5951(BaseEffect):
"""
drawbackWarpSpeed
Used by:
Modules from group: Rig Anchor (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('warpSpeedMultiplier', module.getModifiedItemAttr('drawback'), stackingPenalties=True, **kwargs)
class Effect5956(BaseEffect):
"""
shipMETDamageBonusAC2
Used by:
Ship: Devoter
Ship: Zealot
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs)
class Effect5957(BaseEffect):
"""
eliteBonusHeavyInterdictorsMETOptimal
Used by:
Ship: Devoter
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'),
'maxRange', ship.getModifiedItemAttr('eliteBonusHeavyInterdictors1'),
skill='Heavy Interdiction Cruisers', **kwargs)
class Effect5958(BaseEffect):
"""
shipHybridTrackingGC
Used by:
Ship: Lachesis
Ship: Phobos
Ship: Vexor Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'trackingSpeed', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs)
class Effect5959(BaseEffect):
"""
eliteBonusHeavyInterdictorsHybridOptimal1
Used by:
Ship: Phobos
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'maxRange', ship.getModifiedItemAttr('eliteBonusHeavyInterdictors1'),
skill='Heavy Interdiction Cruisers', **kwargs)
class Effect5994(BaseEffect):
"""
resistanceKillerHullAll
Used by:
Modules named like: Polarized (12 of 15)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
for dmgType in ('em', 'thermal', 'kinetic', 'explosive'):
tgtAttr = '{}DamageResonance'.format(dmgType)
fit.ship.forceItemAttr(tgtAttr, module.getModifiedItemAttr('resistanceKillerHull'), **kwargs)
class Effect5995(BaseEffect):
"""
resistanceKillerShieldArmorAll
Used by:
Modules named like: Polarized (12 of 15)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
for layer in ('armor', 'shield'):
for dmgType in ('em', 'thermal', 'kinetic', 'explosive'):
tgtAttr = '{}{}DamageResonance'.format(layer, dmgType.capitalize())
fit.ship.forceItemAttr(tgtAttr, module.getModifiedItemAttr('resistanceKiller'), **kwargs)
class Effect5998(BaseEffect):
"""
freighterSMACapacityBonusO1
Used by:
Ship: Bowhead
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
# todo: stacking?
fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('freighterBonusO2'), skill='ORE Freighter',
stackingPenalties=True, **kwargs)
class Effect6001(BaseEffect):
"""
freighterAgilityBonus2O2
Used by:
Ship: Bowhead
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shipMaintenanceBayCapacity', ship.getModifiedItemAttr('freighterBonusO1'),
skill='ORE Freighter', **kwargs)
class Effect6006(BaseEffect):
"""
shipSETDamageAmarrTacticalDestroyer1
Used by:
Ship: Confessor
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusTacticalDestroyerAmarr1'),
skill='Amarr Tactical Destroyer', **kwargs)
class Effect6007(BaseEffect):
"""
shipSETCapNeedAmarrTacticalDestroyer2
Used by:
Ship: Confessor
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'),
'capacitorNeed', ship.getModifiedItemAttr('shipBonusTacticalDestroyerAmarr2'),
skill='Amarr Tactical Destroyer', **kwargs)
class Effect6008(BaseEffect):
"""
shipHeatDamageAmarrTacticalDestroyer3
Used by:
Ship: Confessor
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage',
ship.getModifiedItemAttr('shipBonusTacticalDestroyerAmarr3'),
skill='Amarr Tactical Destroyer', **kwargs)
class Effect6009(BaseEffect):
"""
probeLauncherCPUPercentRoleBonusT3
Used by:
Ships from group: Strategic Cruiser (4 of 4)
Ships from group: Tactical Destroyer (5 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Astrometrics'), 'cpu',
src.getModifiedItemAttr('roleBonusT3ProbeCPU'), **kwargs)
class Effect6010(BaseEffect):
"""
shipModeMaxTargetRangePostDiv
Used by:
Modules named like: Sharpshooter Mode (5 of 5)
Module: Anhinga Primary Mode
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr(
'maxTargetRange',
1 / module.getModifiedItemAttr('modeMaxTargetRangePostDiv'),
stackingPenalties=True,
penaltyGroup='postDiv',
**kwargs)
class Effect6011(BaseEffect):
"""
shipModeSETOptimalRangePostDiv
Used by:
Module: Confessor Sharpshooter Mode
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.requiresSkill('Small Energy Turret'),
'maxRange',
1 / module.getModifiedItemAttr('modeMaxRangePostDiv'),
stackingPenalties=True,
penaltyGroup='postDiv',
**kwargs)
class Effect6012(BaseEffect):
"""
shipModeScanStrengthPostDiv
Used by:
Modules named like: Sharpshooter Mode (5 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
for scanType in ('Gravimetric', 'Magnetometric', 'Radar', 'Ladar'):
fit.ship.multiplyItemAttr(
'scan{}Strength'.format(scanType),
1 / (module.getModifiedItemAttr('mode{}StrengthPostDiv'.format(scanType)) or 1),
stackingPenalties=True,
penaltyGroup='postDiv',
**kwargs)
class Effect6014(BaseEffect):
"""
modeSigRadiusPostDiv
Used by:
Modules named like: Defense Mode (3 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr('signatureRadius', 1 / module.getModifiedItemAttr('modeSignatureRadiusPostDiv'),
stackingPenalties=True, penaltyGroup='postDiv', **kwargs)
class Effect6015(BaseEffect):
"""
modeArmorResonancePostDiv
Used by:
Modules named like: Defense Mode (3 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
for srcResType, tgtResType in (
('Em', 'Em'),
('Explosive', 'Explosive'),
('Kinetic', 'Kinetic'),
('Thermic', 'Thermal')
):
fit.ship.multiplyItemAttr(
'armor{0}DamageResonance'.format(tgtResType),
1 / module.getModifiedItemAttr('mode{0}ResistancePostDiv'.format(srcResType)),
stackingPenalties=True,
penaltyGroup='postDiv',
**kwargs)
class Effect6016(BaseEffect):
"""
modeAgilityPostDiv
Used by:
Modules named like: Propulsion Mode (5 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr(
'agility',
1 / module.getModifiedItemAttr('modeAgilityPostDiv'),
stackingPenalties=True,
penaltyGroup='postDiv',
**kwargs)
class Effect6017(BaseEffect):
"""
modeVelocityPostDiv
Used by:
Module: Jackdaw Propulsion Mode
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr(
'maxVelocity',
1 / module.getModifiedItemAttr('modeVelocityPostDiv'),
stackingPenalties=True,
penaltyGroup='postDiv',
**kwargs)
class Effect6020(BaseEffect):
"""
shipBonusEnergyNeutOptimalRS3
Used by:
Ship: Pilgrim
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'maxRange',
src.getModifiedItemAttr('eliteBonusReconShip3'), skill='Recon Ships', **kwargs)
class Effect6021(BaseEffect):
"""
shipBonusEnergyNosOptimalRS3
Used by:
Ship: Pilgrim
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange',
src.getModifiedItemAttr('eliteBonusReconShip3'), skill='Recon Ships', **kwargs)
class Effect6025(BaseEffect):
"""
eliteReconBonusMHTOptimalRange1
Used by:
Ship: Lachesis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'maxRange', ship.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships', **kwargs)
class Effect6027(BaseEffect):
"""
eliteReconBonusMPTdamage1
Used by:
Ship: Huginn
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'),
'damageMultiplier', ship.getModifiedItemAttr('eliteBonusReconShip1'),
skill='Recon Ships', **kwargs)
class Effect6032(BaseEffect):
"""
remoteCapacitorTransmitterPowerNeedBonusEffect
Used by:
Ships from group: Logistics (3 of 7)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter',
'power', ship.getModifiedItemAttr('powerTransferPowerNeedBonus'), **kwargs)
class Effect6036(BaseEffect):
"""
shipHeatDamageMinmatarTacticalDestroyer3
Used by:
Ship: Svipul
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage',
ship.getModifiedItemAttr('shipBonusTacticalDestroyerMinmatar3'),
skill='Minmatar Tactical Destroyer', **kwargs)
class Effect6037(BaseEffect):
"""
shipSPTDamageMinmatarTacticalDestroyer1
Used by:
Ship: Svipul
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusTacticalDestroyerMinmatar1'),
skill='Minmatar Tactical Destroyer', **kwargs)
class Effect6038(BaseEffect):
"""
shipSPTOptimalMinmatarTacticalDestroyer2
Used by:
Ship: Svipul
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'),
'maxRange', ship.getModifiedItemAttr('shipBonusTacticalDestroyerMinmatar2'),
skill='Minmatar Tactical Destroyer', **kwargs)
class Effect6039(BaseEffect):
"""
shipModeSPTTrackingPostDiv
Used by:
Module: Svipul Sharpshooter Mode
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.requiresSkill('Small Projectile Turret'),
'trackingSpeed',
1 / module.getModifiedItemAttr('modeTrackingPostDiv'),
stackingPenalties=True,
penaltyGroup='postDiv',
**kwargs)
class Effect6040(BaseEffect):
"""
modeMWDSigRadiusPostDiv
Used by:
Module: Svipul Defense Mode
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.requiresSkill('High Speed Maneuvering'),
'signatureRadiusBonus',
1 / module.getModifiedItemAttr('modeMWDSigPenaltyPostDiv'),
stackingPenalties=True,
penaltyGroup='postDiv',
**kwargs)
class Effect6041(BaseEffect):
"""
modeShieldResonancePostDiv
Used by:
Modules named like: Defense Mode (3 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
for srcResType, tgtResType in (
('Em', 'Em'),
('Explosive', 'Explosive'),
('Kinetic', 'Kinetic'),
('Thermic', 'Thermal')
):
fit.ship.multiplyItemAttr(
'shield{0}DamageResonance'.format(tgtResType),
1 / module.getModifiedItemAttr('mode{0}ResistancePostDiv'.format(srcResType)),
stackingPenalties=True,
penaltyGroup='postDiv',
**kwargs)
class Effect6045(BaseEffect):
"""
shipBonusSentryDamageMultiplierGC3
Used by:
Ship: Ishtar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusGC3'), skill='Gallente Cruiser', **kwargs)
class Effect6046(BaseEffect):
"""
shipBonusSentryHPGC3
Used by:
Ship: Ishtar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'),
'hp', ship.getModifiedItemAttr('shipBonusGC3'), skill='Gallente Cruiser', **kwargs)
class Effect6047(BaseEffect):
"""
shipBonusSentryArmorHPGC3
Used by:
Ship: Ishtar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'),
'armorHP', ship.getModifiedItemAttr('shipBonusGC3'), skill='Gallente Cruiser', **kwargs)
class Effect6048(BaseEffect):
"""
shipBonusSentryShieldHPGC3
Used by:
Ship: Ishtar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'),
'shieldCapacity', ship.getModifiedItemAttr('shipBonusGC3'), skill='Gallente Cruiser', **kwargs)
class Effect6051(BaseEffect):
"""
shipBonusLightDroneDamageMultiplierGC2
Used by:
Ship: Ishtar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs)
class Effect6052(BaseEffect):
"""
shipBonusMediumDroneDamageMultiplierGC2
Used by:
Ship: Ishtar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs)
class Effect6053(BaseEffect):
"""
shipBonusHeavyDroneDamageMultiplierGC2
Used by:
Ship: Ishtar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs)
class Effect6054(BaseEffect):
"""
shipBonusHeavyDroneHPGC2
Used by:
Ship: Ishtar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'),
'hp', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs)
class Effect6055(BaseEffect):
"""
shipBonusHeavyDroneArmorHPGC2
Used by:
Ship: Ishtar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'),
'armorHP', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs)
class Effect6056(BaseEffect):
"""
shipBonusHeavyDroneShieldHPGC2
Used by:
Ship: Ishtar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'),
'shieldCapacity', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs)
class Effect6057(BaseEffect):
"""
shipBonusMediumDroneShieldHPGC2
Used by:
Ship: Ishtar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'),
'shieldCapacity', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs)
class Effect6058(BaseEffect):
"""
shipBonusMediumDroneArmorHPGC2
Used by:
Ship: Ishtar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'),
'armorHP', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs)
class Effect6059(BaseEffect):
"""
shipBonusMediumDroneHPGC2
Used by:
Ship: Ishtar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'),
'hp', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs)
class Effect6060(BaseEffect):
"""
shipBonusLightDroneHPGC2
Used by:
Ship: Ishtar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'),
'hp', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs)
class Effect6061(BaseEffect):
"""
shipBonusLightDroneArmorHPGC2
Used by:
Ship: Ishtar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'),
'armorHP', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs)
class Effect6062(BaseEffect):
"""
shipBonusLightDroneShieldHPGC2
Used by:
Ship: Ishtar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'),
'shieldCapacity', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs)
class Effect6063(BaseEffect):
"""
entosisLink
Used by:
Modules from group: Entosis Link (6 of 6)
"""
type = 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.forceItemAttr('disallowAssistance', module.getModifiedItemAttr('disallowAssistance'))
for scanType in ('Gravimetric', 'Magnetometric', 'Radar', 'Ladar'):
fit.ship.boostItemAttr(
'scan{}Strength'.format(scanType),
module.getModifiedItemAttr('scan{}StrengthPercent'.format(scanType)),
stackingPenalties=True, **kwargs)
class Effect6076(BaseEffect):
"""
shipModeMissileVelocityPostDiv
Used by:
Module: Jackdaw Sharpshooter Mode
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredChargeMultiply(
lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'maxVelocity',
1 / module.getModifiedItemAttr('modeMaxRangePostDiv'),
stackingPenalties=True,
penaltyGroup='postDiv',
**kwargs)
class Effect6077(BaseEffect):
"""
shipHeatDamageCaldariTacticalDestroyer3
Used by:
Ship: Jackdaw
Ship: Skua
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage',
ship.getModifiedItemAttr('shipBonusTacticalDestroyerCaldari3'),
skill='Caldari Tactical Destroyer', **kwargs)
class Effect6083(BaseEffect):
"""
shipSmallMissileDmgPirateFaction
Used by:
Ship: Jackdaw
Ship: Metamorphosis
Ship: Skua
Ship: Sunesis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for damageType in ('em', 'explosive', 'kinetic', 'thermal'):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Rockets') or mod.charge.requiresSkill('Light Missiles'),
'{0}Damage'.format(damageType), ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect6085(BaseEffect):
"""
shipMissileRoFCaldariTacticalDestroyer1
Used by:
Ship: Jackdaw
Ship: Skua
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'),
'speed', ship.getModifiedItemAttr('shipBonusTacticalDestroyerCaldari1'),
skill='Caldari Tactical Destroyer', **kwargs)
class Effect6088(BaseEffect):
"""
shipBonusHeavyAssaultMissileAllDamageMC2
Used by:
Ship: Rapier
Ship: Scythe Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for damageType in ('em', 'explosive', 'kinetic', 'thermal'):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'),
'{0}Damage'.format(damageType), ship.getModifiedItemAttr('shipBonusMC2'),
skill='Minmatar Cruiser', **kwargs)
class Effect6093(BaseEffect):
"""
shipBonusHeavyMissileAllDamageMC2
Used by:
Ship: Rapier
Ship: Scythe Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for damageType in ('em', 'explosive', 'kinetic', 'thermal'):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'{0}Damage'.format(damageType), ship.getModifiedItemAttr('shipBonusMC2'),
skill='Minmatar Cruiser', **kwargs)
class Effect6096(BaseEffect):
"""
shipBonusLightMissileAllDamageMC2
Used by:
Ship: Rapier
Ship: Scythe Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for damageType in ('em', 'explosive', 'kinetic', 'thermal'):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'),
'{0}Damage'.format(damageType), ship.getModifiedItemAttr('shipBonusMC2'),
skill='Minmatar Cruiser', **kwargs)
class Effect6098(BaseEffect):
"""
shipMissileReloadTimeCaldariTacticalDestroyer2
Used by:
Ship: Jackdaw
Ship: Skua
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'),
'reloadTime', ship.getModifiedItemAttr('shipBonusTacticalDestroyerCaldari2'),
skill='Caldari Tactical Destroyer', **kwargs)
class Effect6104(BaseEffect):
"""
entosisDurationMultiply
Used by:
Ships from group: Carrier (4 of 4)
Ships from group: Dreadnought (13 of 13)
Ships from group: Force Auxiliary (6 of 6)
Ships from group: Lancer Dreadnought (4 of 4)
Ships from group: Supercarrier (6 of 6)
Ships from group: Titan (8 of 8)
Ship: Rorqual
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Infomorph Psychology'),
'duration', ship.getModifiedItemAttr('entosisDurationMultiplier') or 1, **kwargs)
class Effect6110(BaseEffect):
"""
missileVelocityBonusOnline
Used by:
Modules from group: Missile Guidance Enhancer (3 of 3)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'maxVelocity', module.getModifiedItemAttr('missileVelocityBonus'),
stackingPenalties=True, **kwargs)
class Effect6111(BaseEffect):
"""
missileExplosionDelayBonusOnline
Used by:
Modules from group: Missile Guidance Enhancer (3 of 3)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'explosionDelay', module.getModifiedItemAttr('explosionDelayBonus'),
stackingPenalties=True, **kwargs)
class Effect6112(BaseEffect):
"""
missileAOECloudSizeBonusOnline
Used by:
Modules from group: Missile Guidance Enhancer (3 of 3)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'aoeCloudSize', module.getModifiedItemAttr('aoeCloudSizeBonus'),
stackingPenalties=True, **kwargs)
class Effect6113(BaseEffect):
"""
missileAOEVelocityBonusOnline
Used by:
Modules from group: Missile Guidance Enhancer (3 of 3)
Module: ML-EKP 'Polybolos' Ballistic Control System
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'aoeVelocity', module.getModifiedItemAttr('aoeVelocityBonus'),
stackingPenalties=True, **kwargs)
class Effect6128(BaseEffect):
"""
scriptMissileGuidanceComputerAOECloudSizeBonusBonus
Used by:
Charges from group: Tracking Script (2 of 2)
Charges named like: Missile Script (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.boostItemAttr('aoeCloudSizeBonus', module.getModifiedChargeAttr('aoeCloudSizeBonusBonus'), **kwargs)
class Effect6129(BaseEffect):
"""
scriptMissileGuidanceComputerAOEVelocityBonusBonus
Used by:
Charges from group: Tracking Script (2 of 2)
Charges named like: Missile Script (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.boostItemAttr('aoeVelocityBonus', module.getModifiedChargeAttr('aoeVelocityBonusBonus'), **kwargs)
class Effect6130(BaseEffect):
"""
scriptMissileGuidanceComputerMissileVelocityBonusBonus
Used by:
Charges named like: Missile Script (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.boostItemAttr('missileVelocityBonus', module.getModifiedChargeAttr('missileVelocityBonusBonus'), **kwargs)
class Effect6131(BaseEffect):
"""
scriptMissileGuidanceComputerExplosionDelayBonusBonus
Used by:
Charges named like: Missile Script (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.boostItemAttr('explosionDelayBonus', module.getModifiedChargeAttr('explosionDelayBonusBonus'), **kwargs)
class Effect6135(BaseEffect):
"""
missileGuidanceComputerBonus4
Used by:
Modules from group: Missile Guidance Computer (3 of 3)
"""
type = 'active'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
for srcAttr, tgtAttr in (
('aoeCloudSizeBonus', 'aoeCloudSize'),
('aoeVelocityBonus', 'aoeVelocity'),
('missileVelocityBonus', 'maxVelocity'),
('explosionDelayBonus', 'explosionDelay'),
):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
tgtAttr, container.getModifiedItemAttr(srcAttr),
stackingPenalties=True, **kwargs)
class Effect6144(BaseEffect):
"""
overloadSelfMissileGuidanceBonus5
Used by:
Modules from group: Missile Guidance Computer (3 of 3)
"""
type = 'overheat'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
for tgtAttr in (
'aoeCloudSizeBonus',
'explosionDelayBonus',
'missileVelocityBonus',
'maxVelocityModifier',
'aoeVelocityBonus'
):
module.boostItemAttr(tgtAttr, module.getModifiedItemAttr('overloadTrackingModuleStrengthBonus'), **kwargs)
class Effect6148(BaseEffect):
"""
shipHeatDamageGallenteTacticalDestroyer3
Used by:
Ship: Hecate
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage',
ship.getModifiedItemAttr('shipBonusTacticalDestroyerGallente3'),
skill='Gallente Tactical Destroyer', **kwargs)
class Effect6149(BaseEffect):
"""
shipSHTRoFGallenteTacticalDestroyer1
Used by:
Ship: Hecate
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'),
'speed', ship.getModifiedItemAttr('shipBonusTacticalDestroyerGallente1'),
skill='Gallente Tactical Destroyer', **kwargs)
class Effect6150(BaseEffect):
"""
shipSHTTrackingGallenteTacticalDestroyer2
Used by:
Ship: Hecate
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'),
'trackingSpeed', ship.getModifiedItemAttr('shipBonusTacticalDestroyerGallente2'),
skill='Gallente Tactical Destroyer', **kwargs)
class Effect6151(BaseEffect):
"""
modeHullResonancePostDiv
Used by:
Module: Hecate Defense Mode
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
for srcResType, tgtResType in (
('Em', 'em'),
('Explosive', 'explosive'),
('Kinetic', 'kinetic'),
('Thermic', 'thermal')
):
fit.ship.multiplyItemAttr(
'{0}DamageResonance'.format(tgtResType),
1 / module.getModifiedItemAttr('mode{0}ResistancePostDiv'.format(srcResType)), **kwargs)
class Effect6152(BaseEffect):
"""
shipModeSHTOptimalRangePostDiv
Used by:
Module: Hecate Sharpshooter Mode
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.requiresSkill('Small Hybrid Turret'),
'maxRange',
1 / module.getModifiedItemAttr('modeMaxRangePostDiv'),
stackingPenalties=True,
penaltyGroup='postDiv',
**kwargs)
class Effect6153(BaseEffect):
"""
modeMWDCapPostDiv
Used by:
Module: Hecate Propulsion Mode
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.requiresSkill('High Speed Maneuvering'),
'capacitorNeed',
1 / module.getModifiedItemAttr('modeMWDCapPostDiv'),
**kwargs)
class Effect6154(BaseEffect):
"""
modeMWDBoostPostDiv
Used by:
Module: Hecate Propulsion Mode
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.requiresSkill('High Speed Maneuvering'),
'speedFactor',
1 / module.getModifiedItemAttr('modeMWDVelocityPostDiv'),
stackingPenalties=True,
penaltyGroup='postDiv',
**kwargs)
class Effect6155(BaseEffect):
"""
modeArmorRepDurationPostDiv
Used by:
Module: Hecate Defense Mode
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.requiresSkill('Repair Systems'),
'duration',
1 / module.getModifiedItemAttr('modeArmorRepDurationPostDiv'),
**kwargs)
class Effect6163(BaseEffect):
"""
passiveSpeedLimit
Used by:
Modules from group: Entosis Link (6 of 6)
"""
runtime = 'late'
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.extraAttributes['speedLimit'] = src.getModifiedItemAttr('speedLimit')
class Effect6164(BaseEffect):
"""
systemMaxVelocityPercentage
Used by:
Celestials named like: Drifter Incursion (6 of 6)
Celestial: Drifter Crisis
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', beacon.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs)
class Effect6166(BaseEffect):
"""
shipBonusWDFGnullPenalties
Used by:
Ship: Fiend
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Propulsion Jamming'),
'speedFactorBonus', ship.getModifiedItemAttr('shipBonusAT'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Propulsion Jamming'),
'speedBoostFactorBonus', ship.getModifiedItemAttr('shipBonusAT'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Propulsion Jamming'),
'massBonusPercentage', ship.getModifiedItemAttr('shipBonusAT'), **kwargs)
class Effect6170(BaseEffect):
"""
entosisCPUPenalty
Used by:
Ships from group: Interceptor (10 of 10)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Infomorph Psychology'),
'entosisCPUAdd', ship.getModifiedItemAttr('entosisCPUPenalty'), **kwargs)
class Effect6171(BaseEffect):
"""
entosisCPUAddition
Used by:
Modules from group: Entosis Link (6 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.increaseItemAttr('cpu', module.getModifiedItemAttr('entosisCPUAdd'), **kwargs)
class Effect6172(BaseEffect):
"""
battlecruiserMETRange
Used by:
Ships named like: Harbinger (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'),
'maxRange', ship.getModifiedItemAttr('roleBonusCBC'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'),
'falloff', ship.getModifiedItemAttr('roleBonusCBC'), **kwargs)
class Effect6173(BaseEffect):
"""
battlecruiserMHTRange
Used by:
Ships named like: Brutix (2 of 2)
Ships named like: Ferox (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'maxRange', ship.getModifiedItemAttr('roleBonusCBC'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'falloff', ship.getModifiedItemAttr('roleBonusCBC'), **kwargs)
class Effect6174(BaseEffect):
"""
battlecruiserMPTRange
Used by:
Ships named like: Hurricane (2 of 2)
Ship: Cenotaph
Ship: Khizriel
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'),
'maxRange', ship.getModifiedItemAttr('roleBonusCBC'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'),
'falloff', ship.getModifiedItemAttr('roleBonusCBC'), **kwargs)
class Effect6175(BaseEffect):
"""
battlecruiserMissileRange
Used by:
Ships named like: Cyclone (2 of 2)
Ships named like: Drake (2 of 2)
Ship: Cenotaph
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'maxVelocity', skill.getModifiedItemAttr('roleBonusCBC'), **kwargs)
class Effect6176(BaseEffect):
"""
battlecruiserDroneSpeed
Used by:
Ships named like: Myrmidon (2 of 2)
Ships named like: Prophecy (2 of 2)
Ship: Alligator
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'maxVelocity', ship.getModifiedItemAttr('roleBonusCBC'), **kwargs)
class Effect6177(BaseEffect):
"""
shipHybridDmg1CBC2
Used by:
Ships named like: Ferox (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusCBC2'),
skill='Caldari Battlecruiser', **kwargs)
class Effect6178(BaseEffect):
"""
shipBonusProjectileTrackingMBC2
Used by:
Ship: Hurricane Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'),
'trackingSpeed', ship.getModifiedItemAttr('shipBonusMBC2'),
skill='Minmatar Battlecruiser', **kwargs)
class Effect6184(BaseEffect):
"""
shipModuleRemoteCapacitorTransmitter
Used by:
Modules from group: Remote Capacitor Transmitter (37 of 37)
"""
runTime = 'late'
type = 'projected', 'active'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowAssistance'):
return
if src.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0):
return
amount = src.getModifiedItemAttr('powerTransferAmount')
duration = src.getModifiedItemAttr('duration')
if 'effect' in kwargs:
from eos.modifiedAttributeDict import ModifiedAttributeDict
amount *= ModifiedAttributeDict.getResistance(fit, kwargs['effect'])
fit.addDrain(src, duration, -amount, 0)
class Effect6185(BaseEffect):
"""
shipModuleRemoteHullRepairer
Used by:
Modules from group: Remote Hull Repairer (8 of 8)
"""
runTime = 'late'
type = 'projected', 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowAssistance'):
return
bonus = module.getModifiedItemAttr('structureDamageAmount')
bonus *= calculateRangeFactor(
srcOptimalRange=module.getModifiedItemAttr('maxRange'),
srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'),
distance=projectionRange)
duration = module.getModifiedItemAttr('duration') / 1000.0
fit._hullRr.append((bonus, duration))
class Effect6186(BaseEffect):
"""
shipModuleRemoteShieldBooster
Used by:
Modules from group: Remote Shield Booster (42 of 42)
"""
type = 'projected', 'active'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowAssistance'):
return
bonus = container.getModifiedItemAttr('shieldBonus')
bonus *= calculateRangeFactor(
srcOptimalRange=container.getModifiedItemAttr('maxRange'),
srcFalloffRange=container.getModifiedItemAttr('falloffEffectiveness'),
distance=projectionRange)
duration = container.getModifiedItemAttr('duration') / 1000.0
fit._shieldRr.append((bonus, duration))
class Effect6187(BaseEffect):
"""
energyNeutralizerFalloff
Used by:
Modules from group: Energy Neutralizer (57 of 57)
"""
type = 'active', 'projected'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if not ((hasattr(src, 'state') and src.state >= FittingModuleState.ACTIVE) or hasattr(src, 'amountActive')):
return
amount = src.getModifiedItemAttr('energyNeutralizerAmount')
amount *= calculateRangeFactor(
srcOptimalRange=src.getModifiedItemAttr('maxRange'),
srcFalloffRange=src.getModifiedItemAttr('falloffEffectiveness'),
distance=projectionRange)
if 'effect' in kwargs:
from eos.modifiedAttributeDict import ModifiedAttributeDict
amount *= ModifiedAttributeDict.getResistance(fit, kwargs['effect'])
time = src.getModifiedItemAttr('duration')
fit.addDrain(src, time, amount, 0)
class Effect6188(BaseEffect):
"""
shipModuleRemoteArmorRepairer
Used by:
Modules from group: Remote Armor Repairer (43 of 43)
"""
runTime = 'late'
type = 'projected', 'active'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowAssistance'):
return
bonus = container.getModifiedItemAttr('armorDamageAmount')
bonus *= calculateRangeFactor(
srcOptimalRange=container.getModifiedItemAttr('maxRange'),
srcFalloffRange=container.getModifiedItemAttr('falloffEffectiveness'),
distance=projectionRange)
duration = container.getModifiedItemAttr('duration') / 1000.0
fit._armorRr.append((bonus, duration))
fit._armorRrPreSpool.append((bonus, duration))
fit._armorRrFullSpool.append((bonus, duration))
class Effect6195(BaseEffect):
"""
expeditionFrigateBonusShieldResistance
Used by:
Ship: Endurance
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for dmgType in ('Em', 'Thermal', 'Kinetic', 'Explosive'):
fit.ship.boostItemAttr('shield{}DamageResonance'.format(dmgType),
src.getModifiedItemAttr('expeditionFrigateBonusShieldResistance'),
skill='Expedition Frigates', **kwargs)
class Effect6197(BaseEffect):
"""
energyNosferatuFalloff
Used by:
Modules from group: Energy Nosferatu (58 of 58)
"""
runTime = 'late'
type = 'active', 'projected'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
amount = src.getModifiedItemAttr('powerTransferAmount')
time = src.getModifiedItemAttr('duration')
if 'projected' in context:
if 'effect' in kwargs:
from eos.modifiedAttributeDict import ModifiedAttributeDict
amount *= ModifiedAttributeDict.getResistance(fit, kwargs['effect'])
amount *= calculateRangeFactor(
srcOptimalRange=src.getModifiedItemAttr('maxRange'),
srcFalloffRange=src.getModifiedItemAttr('falloffEffectiveness'),
distance=projectionRange)
fit.addDrain(src, time, amount, 0)
elif 'module' in context:
src.itemModifiedAttributes.force('capacitorNeed', -amount, **kwargs)
class Effect6201(BaseEffect):
"""
doomsdaySlash
Used by:
Modules named like: Reaper (4 of 4)
"""
type = 'active'
@staticmethod
def handler(fit, mod, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs)
fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs)
class Effect6208(BaseEffect):
"""
microJumpPortalDrive
Used by:
Module: Micro Jump Field Generator
"""
type = 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('signatureRadius', module.getModifiedItemAttr('signatureRadiusBonusPercent'),
stackingPenalties=True, **kwargs)
class Effect6214(BaseEffect):
"""
roleBonusCDLinksPGReduction
Used by:
Ships from group: Command Destroyer (6 of 6)
Ship: Porpoise
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'power',
src.getModifiedItemAttr('roleBonusCD'), **kwargs)
class Effect6216(BaseEffect):
"""
structureEnergyNeutralizerFalloff
Used by:
Structure Modules from group: Structure Energy Neutralizer (5 of 5)
"""
type = 'active', 'projected'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
amount = 0
if 'projected' not in context:
return
if not ((hasattr(src, 'state') and src.state >= FittingModuleState.ACTIVE) or hasattr(src, 'amountActive')):
return
amount = src.getModifiedItemAttr('energyNeutralizerAmount')
amount *= calculateRangeFactor(
srcOptimalRange=src.getModifiedItemAttr('maxRange'),
srcFalloffRange=src.getModifiedItemAttr('falloffEffectiveness'),
distance=projectionRange)
if 'effect' in kwargs:
from eos.modifiedAttributeDict import ModifiedAttributeDict
amount *= ModifiedAttributeDict.getResistance(fit, kwargs['effect'])
time = src.getModifiedItemAttr('duration')
fit.addDrain(src, time, amount, 0)
class Effect6222(BaseEffect):
"""
structureWarpScrambleBlockMWDWithNPCEffect
Used by:
Structure Modules from group: Structure Warp Scrambler (2 of 2)
"""
runTime = 'early'
type = 'projected', 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'):
return
if module.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0):
return
fit.ship.increaseItemAttr('warpScrambleStatus', module.getModifiedItemAttr('warpScrambleStrength'), **kwargs)
fit.modules.filteredItemIncrease(
lambda mod: mod.item.requiresSkill('High Speed Maneuvering') or mod.item.requiresSkill('Micro Jump Drive Operation'),
'activationBlocked', module.getModifiedItemAttr('activationBlockedStrenght'), **kwargs)
class Effect6230(BaseEffect):
"""
shipBonusEnergyNeutOptimalRS1
Used by:
Ship: Curse
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'maxRange',
src.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships', **kwargs)
class Effect6232(BaseEffect):
"""
shipBonusEnergyNeutFalloffRS2
Used by:
Ship: Pilgrim
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'falloffEffectiveness',
src.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships', **kwargs)
class Effect6233(BaseEffect):
"""
shipBonusEnergyNeutFalloffRS3
Used by:
Ship: Curse
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'falloffEffectiveness',
src.getModifiedItemAttr('eliteBonusReconShip3'), skill='Recon Ships', **kwargs)
class Effect6234(BaseEffect):
"""
shipBonusEnergyNosOptimalRS1
Used by:
Ship: Curse
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange',
src.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships', **kwargs)
class Effect6237(BaseEffect):
"""
shipBonusEnergyNosFalloffRS2
Used by:
Ship: Pilgrim
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness',
src.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships', **kwargs)
class Effect6238(BaseEffect):
"""
shipBonusEnergyNosFalloffRS3
Used by:
Ship: Curse
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness',
src.getModifiedItemAttr('eliteBonusReconShip3'), skill='Recon Ships', **kwargs)
class Effect6241(BaseEffect):
"""
shipBonusEnergyNeutFalloffAD1
Used by:
Ship: Dragoon
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'falloffEffectiveness',
src.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer', **kwargs)
class Effect6242(BaseEffect):
"""
shipBonusEnergyNeutOptimalAD2
Used by:
Ship: Dragoon
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'maxRange',
src.getModifiedItemAttr('shipBonusAD2'), skill='Amarr Destroyer', **kwargs)
class Effect6245(BaseEffect):
"""
shipBonusEnergyNosOptimalAD2
Used by:
Ship: Dragoon
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange',
src.getModifiedItemAttr('shipBonusAD2'), skill='Amarr Destroyer', **kwargs)
class Effect6246(BaseEffect):
"""
shipBonusEnergyNosFalloffAD1
Used by:
Ship: Dragoon
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness',
src.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer', **kwargs)
class Effect6253(BaseEffect):
"""
shipBonusEnergyNeutOptimalAB
Used by:
Ship: Armageddon
Ship: Armageddon Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'maxRange',
src.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs)
class Effect6256(BaseEffect):
"""
shipBonusEnergyNeutFalloffAB2
Used by:
Ship: Armageddon
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'falloffEffectiveness',
src.getModifiedItemAttr('shipBonusAB2'), skill='Amarr Battleship', **kwargs)
class Effect6257(BaseEffect):
"""
shipBonusEnergyNosOptimalAB
Used by:
Ship: Armageddon
Ship: Armageddon Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange',
src.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs)
class Effect6260(BaseEffect):
"""
shipBonusEnergyNosFalloffAB2
Used by:
Ship: Armageddon
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness',
src.getModifiedItemAttr('shipBonusAB2'), skill='Amarr Battleship', **kwargs)
class Effect6267(BaseEffect):
"""
shipBonusEnergyNeutOptimalEAF1
Used by:
Ship: Sentinel
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'maxRange',
src.getModifiedItemAttr('eliteBonusElectronicAttackShip1'),
skill='Electronic Attack Ships', **kwargs)
class Effect6272(BaseEffect):
"""
shipBonusEnergyNeutFalloffEAF3
Used by:
Ship: Sentinel
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'falloffEffectiveness',
src.getModifiedItemAttr('eliteBonusElectronicAttackShip3'),
skill='Electronic Attack Ships', **kwargs)
class Effect6273(BaseEffect):
"""
shipBonusEnergyNosOptimalEAF1
Used by:
Ship: Sentinel
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange',
src.getModifiedItemAttr('eliteBonusElectronicAttackShip1'),
skill='Electronic Attack Ships', **kwargs)
class Effect6278(BaseEffect):
"""
shipBonusEnergyNosFalloffEAF3
Used by:
Ship: Sentinel
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness',
src.getModifiedItemAttr('eliteBonusElectronicAttackShip3'),
skill='Electronic Attack Ships', **kwargs)
class Effect6281(BaseEffect):
"""
shipBonusEnergyNeutOptimalAF2
Used by:
Ship: Cruor
Ship: Malice
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'maxRange',
src.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs)
class Effect6285(BaseEffect):
"""
shipBonusEnergyNeutFalloffAF3
Used by:
Ship: Cruor
Ship: Malice
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'falloffEffectiveness',
src.getModifiedItemAttr('shipBonus3AF'), skill='Amarr Frigate', **kwargs)
class Effect6287(BaseEffect):
"""
shipBonusEnergyNosOptimalAF2
Used by:
Ship: Cruor
Ship: Malice
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange',
src.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs)
class Effect6291(BaseEffect):
"""
shipBonusEnergyNosFalloffAF3
Used by:
Ship: Cruor
Ship: Malice
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness',
src.getModifiedItemAttr('shipBonus3AF'), skill='Amarr Frigate', **kwargs)
class Effect6294(BaseEffect):
"""
shipBonusEnergyNeutOptimalAC1
Used by:
Ship: Vangel
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'maxRange',
src.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs)
class Effect6299(BaseEffect):
"""
shipBonusEnergyNeutFalloffAC3
Used by:
Ship: Ashimmu
Ship: Vangel
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'falloffEffectiveness',
src.getModifiedItemAttr('shipBonusAC3'), skill='Amarr Cruiser', **kwargs)
class Effect6300(BaseEffect):
"""
shipBonusEnergyNosOptimalAC1
Used by:
Ship: Vangel
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange',
src.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs)
class Effect6301(BaseEffect):
"""
shipBonusNosOptimalFalloffAC2
Used by:
Ship: Rabisu
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness',
src.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange',
src.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs)
class Effect6305(BaseEffect):
"""
shipBonusEnergyNosFalloffAC3
Used by:
Ship: Ashimmu
Ship: Vangel
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness',
src.getModifiedItemAttr('shipBonusAC3'), skill='Amarr Cruiser', **kwargs)
class Effect6307(BaseEffect):
"""
shipBonusThermMissileDmgMD1
Used by:
Ship: Bifrost
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage',
src.getModifiedItemAttr('shipBonusMD1'), skill='Minmatar Destroyer', **kwargs)
class Effect6308(BaseEffect):
"""
shipBonusEMMissileDmgMD1
Used by:
Ship: Bifrost
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'emDamage',
src.getModifiedItemAttr('shipBonusMD1'), skill='Minmatar Destroyer', **kwargs)
class Effect6309(BaseEffect):
"""
shipBonusKineticMissileDmgMD1
Used by:
Ship: Bifrost
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage',
src.getModifiedItemAttr('shipBonusMD1'), skill='Minmatar Destroyer', **kwargs)
class Effect6310(BaseEffect):
"""
shipBonusExplosiveMissileDmgMD1
Used by:
Ship: Bifrost
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'explosiveDamage', src.getModifiedItemAttr('shipBonusMD1'),
skill='Minmatar Destroyer', **kwargs)
class Effect6315(BaseEffect):
"""
eliteBonusCommandDestroyerSkirmish1
Used by:
Ships from group: Command Destroyer (3 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'),
attrName, src.getModifiedItemAttr('eliteBonusCommandDestroyer1'),
skill='Command Destroyers', **kwargs)
class Effect6316(BaseEffect):
"""
eliteBonusCommandDestroyerShield1
Used by:
Ships from group: Command Destroyer (3 of 6)
Ship: Skua
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'),
attrName, src.getModifiedItemAttr('eliteBonusCommandDestroyer1'),
skill='Command Destroyers', **kwargs)
class Effect6317(BaseEffect):
"""
eliteBonusCommandDestroyerMJFGspool2
Used by:
Ships from group: Command Destroyer (6 of 6)
Ship: Skua
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Micro Jump Drive Operation'), 'duration',
src.getModifiedItemAttr('eliteBonusCommandDestroyer2'), skill='Command Destroyers', **kwargs)
class Effect6318(BaseEffect):
"""
shipBonusEMShieldResistanceMD2
Used by:
Ship: Bifrost
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('shipBonusMD2'),
skill='Minmatar Destroyer', **kwargs)
class Effect6319(BaseEffect):
"""
shipBonusKineticShieldResistanceMD2
Used by:
Ship: Bifrost
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('shipBonusMD2'),
skill='Minmatar Destroyer', **kwargs)
class Effect6320(BaseEffect):
"""
shipBonusThermalShieldResistanceMD2
Used by:
Ship: Bifrost
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('shipBonusMD2'),
skill='Minmatar Destroyer', **kwargs)
class Effect6321(BaseEffect):
"""
shipBonusExplosiveShieldResistanceMD2
Used by:
Ship: Bifrost
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusMD2'),
skill='Minmatar Destroyer', **kwargs)
class Effect6322(BaseEffect):
"""
scriptscanGravimetricStrengthBonusBonus
Used by:
Charges from group: Structure ECM script (4 of 4)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
src.boostItemAttr('scanGravimetricStrengthBonus', src.getModifiedChargeAttr('scanGravimetricStrengthBonusBonus'), **kwargs)
class Effect6323(BaseEffect):
"""
scriptscanLadarStrengthBonusBonus
Used by:
Charges from group: Structure ECM script (4 of 4)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
src.boostItemAttr('scanLadarStrengthBonus', src.getModifiedChargeAttr('scanLadarStrengthBonusBonus'), **kwargs)
class Effect6324(BaseEffect):
"""
scriptscanMagnetometricStrengthBonusBonus
Used by:
Charges from group: Structure ECM script (4 of 4)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
src.boostItemAttr('scanMagnetometricStrengthBonus', src.getModifiedChargeAttr('scanMagnetometricStrengthBonusBonus'), **kwargs)
class Effect6325(BaseEffect):
"""
scriptscanRadarStrengthBonusBonus
Used by:
Charges from group: Structure ECM script (4 of 4)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
src.boostItemAttr('scanRadarStrengthBonus', src.getModifiedChargeAttr('scanRadarStrengthBonusBonus'), **kwargs)
class Effect6326(BaseEffect):
"""
shipBonusThermalMissileDamageCD1
Used by:
Ship: Stork
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage',
src.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer', **kwargs)
class Effect6327(BaseEffect):
"""
shipBonusEMMissileDamageCD1
Used by:
Ship: Stork
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'emDamage',
src.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer', **kwargs)
class Effect6328(BaseEffect):
"""
shipBonusKineticMissileDamageCD1
Used by:
Ship: Stork
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage',
src.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer', **kwargs)
class Effect6329(BaseEffect):
"""
shipBonusExplosiveMissileDamageCD1
Used by:
Ship: Stork
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'explosiveDamage', src.getModifiedItemAttr('shipBonusCD1'),
skill='Caldari Destroyer', **kwargs)
class Effect6330(BaseEffect):
"""
shipBonusShieldEMResistanceCD2
Used by:
Ship: Stork
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('shipBonusCD2'),
skill='Caldari Destroyer', **kwargs)
class Effect6331(BaseEffect):
"""
shipBonusShieldThermalResistanceCD2
Used by:
Ship: Stork
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('shipBonusCD2'),
skill='Caldari Destroyer', **kwargs)
class Effect6332(BaseEffect):
"""
shipBonusShieldKineticResistanceCD2
Used by:
Ship: Stork
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('shipBonusCD2'),
skill='Caldari Destroyer', **kwargs)
class Effect6333(BaseEffect):
"""
shipBonusShieldExplosiveResistanceCD2
Used by:
Ship: Stork
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusCD2'),
skill='Caldari Destroyer', **kwargs)
class Effect6334(BaseEffect):
"""
eliteBonusCommandDestroyerInfo1
Used by:
Ships from group: Command Destroyer (3 of 6)
Ship: Skua
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'),
attrName, src.getModifiedItemAttr('eliteBonusCommandDestroyer1'),
skill='Command Destroyers', **kwargs)
class Effect6335(BaseEffect):
"""
shipBonusKineticArmorResistanceAD2
Used by:
Ship: Pontifex
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorKineticDamageResonance', src.getModifiedItemAttr('shipBonusAD2'),
skill='Amarr Destroyer', **kwargs)
class Effect6336(BaseEffect):
"""
shipBonusThermalArmorResistanceAD2
Used by:
Ship: Pontifex
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorThermalDamageResonance', src.getModifiedItemAttr('shipBonusAD2'),
skill='Amarr Destroyer', **kwargs)
class Effect6337(BaseEffect):
"""
shipBonusEMArmorResistanceAD2
Used by:
Ship: Pontifex
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorEmDamageResonance', src.getModifiedItemAttr('shipBonusAD2'), skill='Amarr Destroyer', **kwargs)
class Effect6338(BaseEffect):
"""
shipBonusExplosiveArmorResistanceAD2
Used by:
Ship: Pontifex
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusAD2'),
skill='Amarr Destroyer', **kwargs)
class Effect6339(BaseEffect):
"""
eliteBonusCommandDestroyerArmored1
Used by:
Ship: Magus
Ship: Pontifex
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'),
attrName, src.getModifiedItemAttr('eliteBonusCommandDestroyer1'),
skill='Command Destroyers', **kwargs)
class Effect6340(BaseEffect):
"""
shipBonusKineticArmorResistanceGD2
Used by:
Ship: Magus
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorKineticDamageResonance', src.getModifiedItemAttr('shipBonusGD2'),
skill='Gallente Destroyer', **kwargs)
class Effect6341(BaseEffect):
"""
shipBonusEMArmorResistanceGD2
Used by:
Ship: Magus
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorEmDamageResonance', src.getModifiedItemAttr('shipBonusGD2'),
skill='Gallente Destroyer', **kwargs)
class Effect6342(BaseEffect):
"""
shipBonusThermalArmorResistanceGD2
Used by:
Ship: Magus
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorThermalDamageResonance', src.getModifiedItemAttr('shipBonusGD2'),
skill='Gallente Destroyer', **kwargs)
class Effect6343(BaseEffect):
"""
shipBonusExplosiveArmorResistanceGD2
Used by:
Ship: Magus
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusGD2'),
skill='Gallente Destroyer', **kwargs)
class Effect6350(BaseEffect):
"""
shipSmallMissileKinDmgCF3
Used by:
Ship: Caldari Navy Hookbill
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Light Missiles') or mod.charge.requiresSkill('Rockets'), 'kineticDamage',
src.getModifiedItemAttr('shipBonus3CF'), skill='Caldari Frigate', **kwargs)
class Effect6351(BaseEffect):
"""
shipMissileKinDamageCC3
Used by:
Ship: Osprey Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage',
src.getModifiedItemAttr('shipBonusCC3'), skill='Caldari Cruiser', **kwargs)
class Effect6352(BaseEffect):
"""
roleBonusWDRange
Used by:
Ship: Crucifier Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'falloffEffectiveness',
src.getModifiedItemAttr('roleBonus'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'maxRange',
src.getModifiedItemAttr('roleBonus'), **kwargs)
class Effect6353(BaseEffect):
"""
roleBonusWDCapCPU
Used by:
Ship: Crucifier Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'cpu',
src.getModifiedItemAttr('roleBonus'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'capacitorNeed',
src.getModifiedItemAttr('roleBonus'), **kwargs)
class Effect6354(BaseEffect):
"""
shipBonusEwWeaponDisruptionStrengthAF2
Used by:
Variations of ship: Crucifier (3 of 3)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for attrName in (
'trackingSpeedBonus', 'explosionDelayBonus', 'maxRangeBonus', 'falloffBonus',
'missileVelocityBonus', 'aoeVelocityBonus', 'aoeCloudSizeBonus'
):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), attrName,
src.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs)
class Effect6357(BaseEffect):
"""
shipBonusJustScramblerRangeGF2
Used by:
Ship: Maulus Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Navigation'), 'maxRange',
src.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs)
class Effect6358(BaseEffect):
"""
roleBonusJustScramblerStrength
Used by:
Ship: Maulus Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Navigation'),
'warpScrambleStrength', ship.getModifiedItemAttr('roleBonus'), **kwargs)
class Effect6359(BaseEffect):
"""
shipBonusAoeVelocityRocketsMF
Used by:
Ship: Vigil Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'aoeVelocity',
src.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs)
class Effect6360(BaseEffect):
"""
shipRocketEMThermKinDmgMF2
Used by:
Ship: Vigil Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'emDamage',
src.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'thermalDamage',
src.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'kineticDamage',
src.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs)
class Effect6361(BaseEffect):
"""
shipRocketExpDmgMF3
Used by:
Ship: Vigil Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'explosiveDamage',
src.getModifiedItemAttr('shipBonus3MF'), skill='Minmatar Frigate', **kwargs)
class Effect6362(BaseEffect):
"""
roleBonusStasisRange
Used by:
Ship: Vigil Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange',
src.getModifiedItemAttr('roleBonus'), **kwargs)
class Effect6368(BaseEffect):
"""
shieldTransporterFalloffBonus
Used by:
Variations of ship: Bantam (2 of 2)
Variations of ship: Burst (2 of 2)
Ship: Osprey
Ship: Scythe
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Shield Booster', 'falloffEffectiveness',
src.getModifiedItemAttr('falloffBonus'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Ancillary Remote Shield Booster',
'falloffEffectiveness', src.getModifiedItemAttr('falloffBonus'), **kwargs)
class Effect6369(BaseEffect):
"""
shipShieldTransferFalloffMC2
Used by:
Ship: Scimitar
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'falloffEffectiveness',
src.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs)
class Effect6370(BaseEffect):
"""
shipShieldTransferFalloffCC1
Used by:
Ship: Basilisk
Ship: Etana
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'falloffEffectiveness',
src.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs)
class Effect6371(BaseEffect):
"""
shipRemoteArmorFalloffGC1
Used by:
Ship: Oneiros
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'),
'falloffEffectiveness', src.getModifiedItemAttr('shipBonusGC'),
skill='Gallente Cruiser', **kwargs)
class Effect6372(BaseEffect):
"""
shipRemoteArmorFalloffAC2
Used by:
Ship: Guardian
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'),
'falloffEffectiveness', src.getModifiedItemAttr('shipBonusAC2'),
skill='Amarr Cruiser', **kwargs)
class Effect6373(BaseEffect):
"""
armorRepairProjectorFalloffBonus
Used by:
Variations of ship: Navitas (2 of 2)
Ship: Augoror
Ship: Deacon
Ship: Exequror
Ship: Inquisitor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Armor Repairer', 'falloffEffectiveness',
src.getModifiedItemAttr('falloffBonus'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Ancillary Remote Armor Repairer',
'falloffEffectiveness', src.getModifiedItemAttr('falloffBonus'), **kwargs)
class Effect6374(BaseEffect):
"""
droneHullRepairBonusEffect
Used by:
Ships from group: Logistics (6 of 7)
Ship: Exequror
Ship: Scythe
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.group.name == 'Logistic Drone', 'structureDamageAmount',
src.getModifiedItemAttr('droneArmorDamageAmountBonus'), **kwargs)
class Effect6377(BaseEffect):
"""
eliteBonusLogiFrigArmorRepSpeedCap1
Used by:
Ship: Deacon
Ship: Thalia
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed',
src.getModifiedItemAttr('eliteBonusLogiFrig1'), skill='Logistics Frigates', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'duration',
src.getModifiedItemAttr('eliteBonusLogiFrig1'), skill='Logistics Frigates', **kwargs)
class Effect6378(BaseEffect):
"""
eliteBonusLogiFrigShieldRepSpeedCap1
Used by:
Ship: Kirin
Ship: Scalpel
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'duration',
src.getModifiedItemAttr('eliteBonusLogiFrig1'), skill='Logistics Frigates', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed',
src.getModifiedItemAttr('eliteBonusLogiFrig1'), skill='Logistics Frigates', **kwargs)
class Effect6379(BaseEffect):
"""
eliteBonusLogiFrigArmorHP2
Used by:
Ship: Deacon
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorHP', src.getModifiedItemAttr('eliteBonusLogiFrig2'), skill='Logistics Frigates', **kwargs)
class Effect6380(BaseEffect):
"""
eliteBonusLogiFrigShieldHP2
Used by:
Ship: Kirin
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldCapacity', src.getModifiedItemAttr('eliteBonusLogiFrig2'), skill='Logistics Frigates', **kwargs)
class Effect6381(BaseEffect):
"""
eliteBonusLogiFrigSignature2
Used by:
Ship: Scalpel
Ship: Thalia
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('signatureRadius', src.getModifiedItemAttr('eliteBonusLogiFrig2'),
skill='Logistics Frigates', **kwargs)
class Effect6384(BaseEffect):
"""
overloadSelfMissileGuidanceModuleBonus
Used by:
Variations of module: Guidance Disruptor I (6 of 6)
"""
type = 'overheat'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
for tgtAttr in (
'aoeCloudSizeBonus',
'explosionDelayBonus',
'missileVelocityBonus',
'aoeVelocityBonus'
):
module.boostItemAttr(tgtAttr, module.getModifiedItemAttr('overloadTrackingModuleStrengthBonus'), **kwargs)
class Effect6385(BaseEffect):
"""
ignoreCloakVelocityPenalty
Used by:
Ships from group: Expedition Frigate (2 of 2)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemForce(lambda mod: mod.item.group.name == 'Cloaking Device',
'maxVelocityModifier', src.getModifiedItemAttr('ignoreCloakVelocityPenalty'), **kwargs)
class Effect6386(BaseEffect):
"""
ewSkillGuidanceDisruptionBonus
Used by:
Modules named like: Tracking Diagnostic Subroutines (8 of 8)
Skill: Weapon Destabilization
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
level = src.level if 'skill' in context else 1
for attr in (
'explosionDelayBonus',
'aoeVelocityBonus',
'aoeCloudSizeBonus',
'missileVelocityBonus'
):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'),
attr, src.getModifiedItemAttr('scanSkillEwStrengthBonus') * level, **kwargs)
class Effect6395(BaseEffect):
"""
shipBonusEwWeaponDisruptionStrengthAC1
Used by:
Variations of ship: Arbitrator (3 of 3)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for attrName in (
'missileVelocityBonus', 'aoeVelocityBonus', 'maxRangeBonus', 'explosionDelayBonus',
'aoeCloudSizeBonus', 'trackingSpeedBonus', 'falloffBonus'
):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), attrName,
src.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs)
class Effect6396(BaseEffect):
"""
skillStructureMissileDamageBonus
Used by:
Skill: Structure Missile Systems
"""
type = 'passive', 'structure'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
groups = ('Structure Anti-Capital Missile', 'Structure Anti-Subcapital Missile', 'Guided Bomb')
for damageType in ('em', 'thermal', 'explosive', 'kinetic'):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name in groups,
'%sDamage' % damageType, src.getModifiedItemAttr('damageMultiplierBonus'),
skill='Structure Missile Systems', **kwargs)
class Effect6400(BaseEffect):
"""
skillStructureElectronicSystemsCapNeedBonus
Used by:
Skill: Structure Electronic Systems
"""
type = 'passive', 'structure'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
groups = ('Structure Warp Scrambler', 'Structure ECM Battery', 'Structure Stasis Webifier')
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups,
'capacitorNeed', src.getModifiedItemAttr('capNeedBonus'),
skill='Structure Electronic Systems', **kwargs)
class Effect6401(BaseEffect):
"""
skillStructureEngineeringSystemsCapNeedBonus
Used by:
Skill: Structure Engineering Systems
"""
type = 'passive', 'structure'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
groups = ('Structure Energy Neutralizer', 'Structure Area Denial Module')
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups,
'capacitorNeed', src.getModifiedItemAttr('capNeedBonus'),
skill='Structure Engineering Systems', **kwargs)
class Effect6402(BaseEffect):
"""
structureRigAoeVelocityBonusSingleTargetMissiles
Used by:
Structure Modules named like: Standup Set Missile (6 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
groups = ('Structure Anti-Subcapital Missile', 'Structure Anti-Capital Missile')
fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name in groups,
'aoeVelocity', src.getModifiedItemAttr('structureRigMissileExploVeloBonus'),
stackingPenalties=True, **kwargs)
class Effect6403(BaseEffect):
"""
structureRigVelocityBonusSingleTargetMissiles
Used by:
Structure Modules named like: Standup Set Missile (6 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
groups = ('Structure Anti-Subcapital Missile', 'Structure Anti-Capital Missile')
fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name in groups,
'maxVelocity', src.getModifiedItemAttr('structureRigMissileVelocityBonus'),
stackingPenalties=True, **kwargs)
class Effect6404(BaseEffect):
"""
structureRigNeutralizerMaxRangeFalloffEffectiveness
Used by:
Structure Modules from group: Structure Combat Rig XL - Energy Neutralizer and EW (2 of 2)
Structure Modules named like: Standup Set Energy Neutralizer (4 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Energy Neutralizer',
'maxRange', src.getModifiedItemAttr('structureRigEwarOptimalBonus'),
stackingPenalties=True, **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Energy Neutralizer',
'falloffEffectiveness', src.getModifiedItemAttr('structureRigEwarFalloffBonus'),
stackingPenalties=True, **kwargs)
class Effect6405(BaseEffect):
"""
structureRigNeutralizerCapacitorNeed
Used by:
Structure Modules from group: Structure Combat Rig XL - Energy Neutralizer and EW (2 of 2)
Structure Modules named like: Standup Set Energy Neutralizer (4 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Energy Neutralizer',
'capacitorNeed', src.getModifiedItemAttr('structureRigEwarCapUseBonus'),
stackingPenalties=True, **kwargs)
class Effect6406(BaseEffect):
"""
structureRigEWMaxRangeFalloff
Used by:
Structure Modules from group: Structure Combat Rig M - EW projection (2 of 2)
Structure Modules named like: Standup Set EW (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
groups = ('Structure ECM Battery', 'Structure Disruption Battery')
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups,
'falloff', src.getModifiedItemAttr('structureRigEwarFalloffBonus'),
stackingPenalties=True, **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups,
'maxRange', src.getModifiedItemAttr('structureRigEwarOptimalBonus'),
stackingPenalties=True, **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups,
'falloffEffectiveness', src.getModifiedItemAttr('structureRigEwarFalloffBonus'),
stackingPenalties=True, **kwargs)
class Effect6407(BaseEffect):
"""
structureRigEWCapacitorNeed
Used by:
Structure Modules from group: Structure Combat Rig M - EW Cap Reduction (2 of 2)
Structure Modules named like: Standup Set EW (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
groups = ('Structure ECM Battery', 'Structure Disruption Battery')
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups,
'capacitorNeed', src.getModifiedItemAttr('structureRigEwarCapUseBonus'), **kwargs)
class Effect6408(BaseEffect):
"""
structureRigMaxTargets
Used by:
Structure Modules from group: Structure Combat Rig XL - Doomsday and Targeting (2 of 2)
Structure Modules named like: Standup Set Target (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('maxLockedTargets', src.getModifiedItemAttr('structureRigMaxTargetBonus'), **kwargs)
class Effect6409(BaseEffect):
"""
structureRigSensorResolution
Used by:
Structure Modules from group: Structure Combat Rig L - Max Targets and Sensor Boosting (2 of 2)
Structure Modules from group: Structure Combat Rig M - Boosted Sensors (2 of 2)
Structure Modules from group: Structure Combat Rig XL - Doomsday and Targeting (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('scanResolution', src.getModifiedItemAttr('structureRigScanResBonus'),
stackingPenalties=True, **kwargs)
class Effect6410(BaseEffect):
"""
structureRigExplosionRadiusBonusAoEMissiles
Used by:
Structure Modules from group: Structure Combat Rig L - AoE Launcher Application and Projection (2 of 2)
Structure Modules from group: Structure Combat Rig XL - Missile and AoE Missile (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Guided Bomb',
'aoeCloudSize', src.getModifiedItemAttr('structureRigMissileExplosionRadiusBonus'),
stackingPenalties=True, **kwargs)
class Effect6411(BaseEffect):
"""
structureRigVelocityBonusAoeMissiles
Used by:
Structure Modules from group: Structure Combat Rig L - AoE Launcher Application and Projection (2 of 2)
Structure Modules from group: Structure Combat Rig XL - Missile and AoE Missile (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Guided Bomb',
'maxVelocity', src.getModifiedItemAttr('structureRigMissileVelocityBonus'),
stackingPenalties=True, **kwargs)
class Effect6412(BaseEffect):
"""
structureRigPDBmaxRange
Used by:
Structure Modules from group: Structure Combat Rig L - Point Defense Battery Application and Projection (2 of 2)
Structure Modules from group: Structure Combat Rig XL - Doomsday and Targeting (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Area Denial Module',
'empFieldRange', src.getModifiedItemAttr('structureRigPDRangeBonus'),
stackingPenalties=True, **kwargs)
class Effect6413(BaseEffect):
"""
structureRigPDBCapacitorNeed
Used by:
Structure Modules from group: Structure Combat Rig L - Point Defense Battery Application and Projection (2 of 2)
Structure Modules from group: Structure Combat Rig XL - Doomsday and Targeting (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Area Denial Module',
'capacitorNeed', src.getModifiedItemAttr('structureRigPDCapUseBonus'), **kwargs)
class Effect6417(BaseEffect):
"""
structureRigDoomsdayDamageLoss
Used by:
Structure Modules from group: Structure Combat Rig XL - Doomsday and Targeting (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemIncrease(lambda mod: mod.item.group.name == 'Structure Doomsday Weapon',
'lightningWeaponDamageLossTarget',
src.getModifiedItemAttr('structureRigDoomsdayDamageLossTargetBonus'), **kwargs)
class Effect6422(BaseEffect):
"""
remoteSensorDampFalloff
Used by:
Modules from group: Sensor Dampener (6 of 6)
Starbases from group: Sensor Dampening Battery (3 of 3)
"""
type = 'projected', 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'):
return
rangeFactor = calculateRangeFactor(
srcOptimalRange=module.getModifiedItemAttr('maxRange'),
srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'),
distance=projectionRange)
fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRangeBonus') * rangeFactor,
stackingPenalties=True, **kwargs)
fit.ship.boostItemAttr('scanResolution', module.getModifiedItemAttr('scanResolutionBonus') * rangeFactor,
stackingPenalties=True, **kwargs)
class Effect6423(BaseEffect):
"""
shipModuleGuidanceDisruptor
Used by:
Variations of module: Guidance Disruptor I (6 of 6)
"""
type = 'active', 'projected'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'):
return
rangeFactor = calculateRangeFactor(
srcOptimalRange=module.getModifiedItemAttr('maxRange'),
srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'),
distance=projectionRange)
for srcAttr, tgtAttr in (
('aoeCloudSizeBonus', 'aoeCloudSize'),
('aoeVelocityBonus', 'aoeVelocity'),
('missileVelocityBonus', 'maxVelocity'),
('explosionDelayBonus', 'explosionDelay')
):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
tgtAttr, module.getModifiedItemAttr(srcAttr) * rangeFactor,
stackingPenalties=True, **kwargs)
class Effect6424(BaseEffect):
"""
shipModuleTrackingDisruptor
Used by:
Variations of module: Tracking Disruptor I (6 of 6)
"""
type = 'projected', 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'):
return
rangeFactor = calculateRangeFactor(
srcOptimalRange=module.getModifiedItemAttr('maxRange'),
srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'),
distance=projectionRange)
for srcAttr, tgtAttr in (
('trackingSpeedBonus', 'trackingSpeed'),
('maxRangeBonus', 'maxRange'),
('falloffBonus', 'falloff')
):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'),
tgtAttr, module.getModifiedItemAttr(srcAttr) * rangeFactor,
stackingPenalties=True, **kwargs)
class Effect6425(BaseEffect):
"""
remoteTargetPaintFalloff
Used by:
Modules from group: Target Painter (9 of 9)
"""
type = 'projected', 'active'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'):
return
appliedBoost = container.getModifiedItemAttr('signatureRadiusBonus') * calculateRangeFactor(
srcOptimalRange=container.getModifiedItemAttr('maxRange'),
srcFalloffRange=container.getModifiedItemAttr('falloffEffectiveness'),
distance=projectionRange)
fit.ship.boostItemAttr('signatureRadius', appliedBoost, stackingPenalties=True, **kwargs)
class Effect6426(BaseEffect):
"""
remoteWebifierFalloff
Used by:
Modules from group: Stasis Grappler (8 of 8)
Modules from group: Stasis Web (19 of 19)
Starbases from group: Stasis Webification Battery (3 of 3)
"""
type = 'active', 'projected'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'):
return
appliedBoost = module.getModifiedItemAttr('speedFactor') * calculateRangeFactor(
srcOptimalRange=module.getModifiedItemAttr('maxRange'),
srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'),
distance=projectionRange)
fit.ship.boostItemAttr('maxVelocity', appliedBoost, stackingPenalties=True, **kwargs)
class Effect6427(BaseEffect):
"""
remoteSensorBoostFalloff
Used by:
Modules from group: Remote Sensor Booster (8 of 8)
"""
type = 'projected', 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowAssistance'):
return
rangeFactor = calculateRangeFactor(
srcOptimalRange=module.getModifiedItemAttr('maxRange'),
srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'),
distance=projectionRange)
for srcAttr, tgtAttr in (
('maxTargetRangeBonus', 'maxTargetRange'),
('scanResolutionBonus', 'scanResolution'),
('scanGravimetricStrengthPercent', 'scanGravimetricStrength'),
('scanMagnetometricStrengthPercent', 'scanMagnetometricStrength'),
('scanRadarStrengthPercent', 'scanRadarStrength'),
('scanLadarStrengthPercent', 'scanLadarStrength')
):
fit.ship.boostItemAttr(tgtAttr, module.getModifiedItemAttr(srcAttr) * rangeFactor,
stackingPenalties=True, **kwargs)
class Effect6428(BaseEffect):
"""
shipModuleRemoteTrackingComputer
Used by:
Modules from group: Remote Tracking Computer (8 of 8)
"""
type = 'projected', 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowAssistance'):
return
rangeFactor = calculateRangeFactor(
srcOptimalRange=module.getModifiedItemAttr('maxRange'),
srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'),
distance=projectionRange)
for srcAttr, tgtAttr in (
('trackingSpeedBonus', 'trackingSpeed'),
('maxRangeBonus', 'maxRange'),
('falloffBonus', 'falloff')
):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'),
tgtAttr, module.getModifiedItemAttr(srcAttr) * rangeFactor,
stackingPenalties=True, **kwargs)
class Effect6431(BaseEffect):
"""
fighterAbilityMissiles
Used by:
Items from category: Fighter (56 of 94)
"""
dealsDamage = True
displayName = 'Missile Attack'
hasCharges = True
prefix = 'fighterAbilityMissiles'
type = 'active'
class Effect6434(BaseEffect):
"""
fighterAbilityEnergyNeutralizer
Used by:
Fighters named like: Cenobite (5 of 5)
"""
displayName = 'Energy Neutralizer'
grouped = True
prefix = 'fighterAbilityEnergyNeutralizer'
type = 'active', 'projected'
@classmethod
def handler(cls, fit, src, context, projectionRange, **kwargs):
if 'projected' not in context:
return
amount = src.getModifiedItemAttr('{}Amount'.format(cls.prefix)) * src.amount
amount *= calculateRangeFactor(
srcOptimalRange=src.getModifiedItemAttr('{}OptimalRange'.format(cls.prefix)),
srcFalloffRange=src.getModifiedItemAttr('{}FalloffRange'.format(cls.prefix)),
distance=projectionRange)
if 'effect' in kwargs:
from eos.modifiedAttributeDict import ModifiedAttributeDict
amount *= ModifiedAttributeDict.getResistance(fit, kwargs['effect'])
time = src.getModifiedItemAttr('{}Duration'.format(cls.prefix))
fit.addDrain(src, time, amount, 0)
class Effect6435(BaseEffect):
"""
fighterAbilityStasisWebifier
Used by:
Fighters named like: Dromi (5 of 5)
"""
displayName = 'Stasis Webifier'
grouped = True
prefix = 'fighterAbilityStasisWebifier'
type = 'active', 'projected'
@classmethod
def handler(cls, fit, src, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'):
return
speedBoost = src.getModifiedItemAttr('{}SpeedPenalty'.format(cls.prefix)) * src.amount
speedBoost *= calculateRangeFactor(
srcOptimalRange=src.getModifiedItemAttr('{}OptimalRange'.format(cls.prefix)),
srcFalloffRange=src.getModifiedItemAttr('{}FalloffRange'.format(cls.prefix)),
distance=projectionRange)
fit.ship.boostItemAttr('maxVelocity', speedBoost, stackingPenalties=True, **kwargs)
class Effect6436(BaseEffect):
"""
fighterAbilityWarpDisruption
Used by:
Fighters named like: Siren (5 of 5)
"""
displayName = 'Warp Disruption'
grouped = True
prefix = 'fighterAbilityWarpDisruption'
type = 'active', 'projected'
@classmethod
def handler(cls, fit, src, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'):
return
if src.getModifiedItemAttr('{}Range'.format(cls.prefix), 0) < (projectionRange or 0):
return
fit.ship.increaseItemAttr(
'warpScrambleStatus',
src.getModifiedItemAttr('{}PointStrength'.format(cls.prefix)) * src.amount,
**kwargs)
class Effect6437(BaseEffect):
"""
fighterAbilityECM
Used by:
Fighters named like: Scarab (5 of 5)
"""
displayName = 'ECM'
grouped = True
prefix = 'fighterAbilityECM'
type = 'projected', 'active'
@classmethod
def handler(cls, fit, src, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'):
return
strength = src.getModifiedItemAttr('{}Strength{}'.format(cls.prefix, fit.scanType)) * src.amount
strength *= calculateRangeFactor(
srcOptimalRange=src.getModifiedItemAttr('{}RangeOptimal'.format(cls.prefix)),
srcFalloffRange=src.getModifiedItemAttr('{}RangeFalloff'.format(cls.prefix)),
distance=projectionRange)
if 'effect' in kwargs:
from eos.modifiedAttributeDict import ModifiedAttributeDict
strength *= ModifiedAttributeDict.getResistance(fit, kwargs['effect'])
fit.addProjectedEcm(strength)
class Effect6439(BaseEffect):
"""
fighterAbilityEvasiveManeuvers
Used by:
Fighters from group: Light Fighter (12 of 24)
Fighters from group: Structure Light Fighter (8 of 16)
"""
displayName = 'Evasive Maneuvers'
grouped = True
prefix = 'fighterAbilityEvasiveManeuvers'
runTime = 'late'
type = 'active'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
container.boostItemAttr('maxVelocity',
container.getModifiedItemAttr('fighterAbilityEvasiveManeuversSpeedBonus'), **kwargs)
container.boostItemAttr('signatureRadius',
container.getModifiedItemAttr('fighterAbilityEvasiveManeuversSignatureRadiusBonus'),
stackingPenalties=True, **kwargs)
# These may not have stacking penalties, but there's nothing else that affects the attributes yet to check.
container.multiplyItemAttr('shieldEmDamageResonance',
container.getModifiedItemAttr('fighterAbilityEvasiveManeuversEmResonance'),
stackingPenalties=True, **kwargs)
container.multiplyItemAttr('shieldThermalDamageResonance',
container.getModifiedItemAttr('fighterAbilityEvasiveManeuversThermResonance'),
stackingPenalties=True, **kwargs)
container.multiplyItemAttr('shieldKineticDamageResonance',
container.getModifiedItemAttr('fighterAbilityEvasiveManeuversKinResonance'),
stackingPenalties=True, **kwargs)
container.multiplyItemAttr('shieldExplosiveDamageResonance',
container.getModifiedItemAttr('fighterAbilityEvasiveManeuversExpResonance'),
stackingPenalties=True, **kwargs)
class Effect6440(BaseEffect):
"""
fighterAbilityAfterburner
Used by:
Fighters named like: Shadow (2 of 2)
Fighters named like: Siren (5 of 5)
"""
displayName = 'Afterburner'
grouped = True
runTime = 'late'
type = 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.boostItemAttr('maxVelocity', module.getModifiedItemAttr('fighterAbilityAfterburnerSpeedBonus'),
stackingPenalties=True, **kwargs)
class Effect6441(BaseEffect):
"""
fighterAbilityMicroWarpDrive
Used by:
Items from category: Fighter (51 of 94)
"""
displayName = 'Microwarpdrive'
grouped = True
runTime = 'late'
type = 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.boostItemAttr('maxVelocity', module.getModifiedItemAttr('fighterAbilityMicroWarpDriveSpeedBonus'),
stackingPenalties=True, **kwargs)
module.boostItemAttr('signatureRadius',
module.getModifiedItemAttr('fighterAbilityMicroWarpDriveSignatureRadiusBonus'),
stackingPenalties=True, **kwargs)
class Effect6443(BaseEffect):
"""
pointDefense
Used by:
Structure Modules from group: Structure Area Denial Module (2 of 2)
"""
type = 'active'
class Effect6447(BaseEffect):
"""
lightningWeapon
Used by:
Structure Module: Standup Arcing Vorton Projector I
"""
type = 'active'
class Effect6448(BaseEffect):
"""
structureMissileGuidanceEnhancer
Used by:
Variations of structure module: Standup Missile Guidance Enhancer I (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
missileGroups = ('Structure Anti-Capital Missile', 'Structure Anti-Subcapital Missile')
for srcAttr, tgtAttr in (
('aoeCloudSizeBonus', 'aoeCloudSize'),
('aoeVelocityBonus', 'aoeVelocity'),
('missileVelocityBonus', 'maxVelocity'),
('explosionDelayBonus', 'explosionDelay'),
):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name in missileGroups,
tgtAttr, container.getModifiedItemAttr(srcAttr),
stackingPenalties=True, **kwargs)
class Effect6449(BaseEffect):
"""
structureBallisticControlSystem
Used by:
Variations of structure module: Standup Ballistic Control System I (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
missileGroups = ('Structure Anti-Capital Missile', 'Structure Anti-Subcapital Missile')
for dmgType in ('em', 'kinetic', 'explosive', 'thermal'):
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.group.name in missileGroups,
'%sDamage' % dmgType,
module.getModifiedItemAttr('missileDamageMultiplierBonus'),
stackingPenalties=True, **kwargs)
launcherGroups = ('Structure XL Missile Launcher', 'Structure Multirole Missile Launcher')
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name in launcherGroups,
'speed', module.getModifiedItemAttr('speedMultiplier'),
stackingPenalties=True, **kwargs)
class Effect6465(BaseEffect):
"""
fighterAbilityAttackM
Used by:
Items from category: Fighter (54 of 94)
"""
dealsDamage = True
displayName = 'Turret Attack'
prefix = 'fighterAbilityAttackMissile'
type = 'active'
class Effect6470(BaseEffect):
"""
remoteECMFalloff
Used by:
Modules from group: ECM (43 of 43)
Starbases from group: Electronic Warfare Battery (12 of 12)
"""
type = 'projected', 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'):
return
strength = module.getModifiedItemAttr('scan{0}StrengthBonus'.format(fit.scanType))
strength *= calculateRangeFactor(
srcOptimalRange=module.getModifiedItemAttr('maxRange'),
srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'),
distance=projectionRange)
if 'effect' in kwargs:
from eos.modifiedAttributeDict import ModifiedAttributeDict
strength *= ModifiedAttributeDict.getResistance(fit, kwargs['effect'])
fit.addProjectedEcm(strength)
class Effect6472(BaseEffect):
"""
doomsdayBeamDOT
Used by:
Module: 'Geiravor' Explosive Lance
Module: 'Holy Destiny' Electromagnetic Lance
Module: 'Iron Pike' Kinetic Lance
Module: 'Phalarica' Thermal Lance
"""
dealsDamage = True
type = 'active'
@staticmethod
def handler(fit, mod, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs)
fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs)
class Effect6473(BaseEffect):
"""
doomsdayConeDOT
Used by:
Module: Bosonic Field Generator
"""
dealsDamage = True
type = 'active'
@staticmethod
def handler(fit, mod, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs)
fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs)
class Effect6474(BaseEffect):
"""
doomsdayHOG
Used by:
Module: Gravitational Transportation Field Oscillator
"""
type = 'active'
@staticmethod
def handler(fit, mod, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs)
fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs)
class Effect6475(BaseEffect):
"""
structureRigDoomsdayTargetAmountBonus
Used by:
Structure Modules from group: Structure Combat Rig XL - Doomsday and Targeting (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemIncrease(lambda mod: mod.item.group.name == 'Structure Doomsday Weapon',
'lightningWeaponTargetAmount',
src.getModifiedItemAttr('structureRigDoomsdayTargetAmountBonus'), **kwargs)
class Effect6476(BaseEffect):
"""
doomsdayAOEWeb
Used by:
Module: Stasis Webification Burst Projector
Structure Module: Standup Stasis Webification Burst Projector
"""
type = 'active', 'projected'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'):
return
fit.ship.boostItemAttr('maxVelocity', module.getModifiedItemAttr('speedFactor'),
stackingPenalties=True, **kwargs)
class Effect6477(BaseEffect):
"""
doomsdayAOENeut
Used by:
Module: Energy Neutralization Burst Projector
Structure Module: Standup Energy Neutralization Burst Projector
"""
type = 'active', 'projected'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if not ((hasattr(src, 'state') and src.state >= FittingModuleState.ACTIVE) or hasattr(src, 'amountActive')):
return
amount = src.getModifiedItemAttr('energyNeutralizerAmount')
if 'effect' in kwargs:
from eos.modifiedAttributeDict import ModifiedAttributeDict
amount *= ModifiedAttributeDict.getResistance(fit, kwargs['effect'])
time = src.getModifiedItemAttr('duration')
fit.addDrain(src, time, amount, 0)
class Effect6478(BaseEffect):
"""
doomsdayAOEPaint
Used by:
Module: Target Illumination Burst Projector
Structure Module: Standup Target Illumination Burst Projector
"""
type = 'projected', 'active'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'):
return
fit.ship.boostItemAttr('signatureRadius', container.getModifiedItemAttr('signatureRadiusBonus'),
stackingPenalties=True, **kwargs)
class Effect6479(BaseEffect):
"""
doomsdayAOETrack
Used by:
Module: Weapon Disruption Burst Projector
Structure Module: Standup Weapon Disruption Burst Projector
"""
type = 'active', 'projected'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'):
return
for srcAttr, tgtAttr in (
('aoeCloudSizeBonus', 'aoeCloudSize'),
('aoeVelocityBonus', 'aoeVelocity'),
('missileVelocityBonus', 'maxVelocity'),
('explosionDelayBonus', 'explosionDelay')
):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
tgtAttr, module.getModifiedItemAttr(srcAttr),
stackingPenalties=True, **kwargs)
for srcAttr, tgtAttr in (
('trackingSpeedBonus', 'trackingSpeed'),
('maxRangeBonus', 'maxRange'),
('falloffBonus', 'falloff')
):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'),
tgtAttr, module.getModifiedItemAttr(srcAttr),
stackingPenalties=True, **kwargs)
class Effect6481(BaseEffect):
"""
doomsdayAOEDamp
Used by:
Module: Sensor Dampening Burst Projector
Structure Module: Standup Sensor Dampening Burst Projector
"""
type = 'projected', 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'):
return
fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRangeBonus'),
stackingPenalties=True, **kwargs)
fit.ship.boostItemAttr('scanResolution', module.getModifiedItemAttr('scanResolutionBonus'),
stackingPenalties=True, **kwargs)
class Effect6482(BaseEffect):
"""
doomsdayAOEBubble
Used by:
Module: Warp Disruption Burst Projector
Structure Module: Standup Warp Disruption Burst Projector
"""
type = 'projected', 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
return
class Effect6484(BaseEffect):
"""
emergencyHullEnergizer
Used by:
Variations of module: Capital Emergency Hull Energizer I (5 of 5)
"""
runtime = 'late'
type = 'active'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for dmgType in ('em', 'thermal', 'kinetic', 'explosive'):
fit.ship.multiplyItemAttr('{}DamageResonance'.format(dmgType),
src.getModifiedItemAttr('hull{}DamageResonance'.format(dmgType.title())),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect6485(BaseEffect):
"""
fighterAbilityLaunchBomb
Used by:
Fighters from group: Heavy Fighter (8 of 17)
Fighters from group: Structure Heavy Fighter (8 of 17)
"""
dealsDamage = True
displayName = 'Bomb'
hasCharges = True
prefix = 'fighterAbilityLaunchBomb'
type = 'active'
class Effect6487(BaseEffect):
"""
modifyEnergyWarfareResistance
Used by:
Modules from group: Capacitor Battery (30 of 30)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('energyWarfareResistance',
module.getModifiedItemAttr('energyWarfareResistanceBonus'),
stackingPenalties=True, **kwargs)
class Effect6488(BaseEffect):
"""
scriptSensorBoosterSensorStrengthBonusBonus
Used by:
Charges from group: Sensor Booster Script (3 of 3)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
for scanType in ('Gravimetric', 'Magnetometric', 'Radar', 'Ladar'):
module.boostItemAttr('scan{}StrengthPercent'.format(scanType),
module.getModifiedChargeAttr('sensorStrengthBonusBonus'), **kwargs)
class Effect6501(BaseEffect):
"""
shipBonusDreadnoughtA1DamageBonus
Used by:
Ships named like: Revelation (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Energy Turret'), 'damageMultiplier',
src.getModifiedItemAttr('shipBonusDreadnoughtA1'), skill='Amarr Dreadnought', **kwargs)
class Effect6502(BaseEffect):
"""
shipBonusDreadnoughtA2ArmorResists
Used by:
Ships named like: Revelation (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for dmgType in ('em', 'thermal', 'kinetic', 'explosive'):
fit.ship.boostItemAttr(
'armor{}DamageResonance'.format(dmgType.capitalize()),
src.getModifiedItemAttr('shipBonusDreadnoughtA2'),
skill='Amarr Dreadnought', **kwargs)
class Effect6503(BaseEffect):
"""
shipBonusDreadnoughtA3CapNeed
Used by:
Ships named like: Revelation (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Energy Turret'), 'capacitorNeed',
src.getModifiedItemAttr('shipBonusDreadnoughtA3'), skill='Amarr Dreadnought', **kwargs)
class Effect6504(BaseEffect):
"""
shipBonusDreadnoughtC1DamageBonus
Used by:
Ships named like: Phoenix (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for attrName in ('emDamage', 'thermalDamage', 'kineticDamage', 'explosiveDamage'):
fit.modules.filteredChargeBoost(lambda mod: (mod.charge.requiresSkill('XL Torpedoes') or
mod.charge.requiresSkill('XL Cruise Missiles') or
mod.charge.requiresSkill('Torpedoes')), attrName,
src.getModifiedItemAttr('shipBonusDreadnoughtC1'),
skill='Caldari Dreadnought', **kwargs)
class Effect6505(BaseEffect):
"""
shipBonusDreadnoughtC2ShieldResists
Used by:
Variations of ship: Phoenix (3 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('shipBonusDreadnoughtC2'),
skill='Caldari Dreadnought', **kwargs)
fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('shipBonusDreadnoughtC2'),
skill='Caldari Dreadnought', **kwargs)
fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('shipBonusDreadnoughtC2'),
skill='Caldari Dreadnought', **kwargs)
fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusDreadnoughtC2'),
skill='Caldari Dreadnought', **kwargs)
class Effect6506(BaseEffect):
"""
shipBonusDreadnoughtG1DamageBonus
Used by:
Ship: Moros
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'damageMultiplier',
src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs)
class Effect6507(BaseEffect):
"""
shipBonusDreadnoughtG2ROFBonus
Used by:
Variations of ship: Moros (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'speed',
src.getModifiedItemAttr('shipBonusDreadnoughtG2'), skill='Gallente Dreadnought', **kwargs)
class Effect6508(BaseEffect):
"""
shipBonusDreadnoughtG3RepairTime
Used by:
Variations of ship: Moros (3 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Repair Systems'), 'duration',
src.getModifiedItemAttr('shipBonusDreadnoughtG3'), skill='Gallente Dreadnought', **kwargs)
class Effect6509(BaseEffect):
"""
shipBonusDreadnoughtM1DamageBonus
Used by:
Ships named like: Naglfar (2 of 2)
Ship: Sarathiel
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'damageMultiplier',
src.getModifiedItemAttr('shipBonusDreadnoughtM1'), skill='Minmatar Dreadnought', **kwargs)
class Effect6510(BaseEffect):
"""
shipBonusDreadnoughtM2ROFBonus
Used by:
Ships named like: Naglfar (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'speed',
src.getModifiedItemAttr('shipBonusDreadnoughtM2'), skill='Minmatar Dreadnought', **kwargs)
class Effect6511(BaseEffect):
"""
shipBonusDreadnoughtM3RepairTime
Used by:
Ship: Naglfar
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Operation'), 'duration',
src.getModifiedItemAttr('shipBonusDreadnoughtM2'), skill='Minmatar Dreadnought', **kwargs)
class Effect6513(BaseEffect):
"""
doomsdayAOEECM
Used by:
Module: ECM Jammer Burst Projector
Structure Module: Standup ECM Jammer Burst Projector
"""
type = 'projected', 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'):
return
strength = module.getModifiedItemAttr('scan{0}StrengthBonus'.format(fit.scanType))
if 'effect' in kwargs:
from eos.modifiedAttributeDict import ModifiedAttributeDict
strength *= ModifiedAttributeDict.getResistance(fit, kwargs['effect'])
fit.addProjectedEcm(strength)
class Effect6526(BaseEffect):
"""
shipBonusForceAuxiliaryA1RemoteRepairAndCapAmount
Used by:
Ship: Apostle
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Capacitor Emission Systems'),
'powerTransferAmount', src.getModifiedItemAttr('shipBonusForceAuxiliaryA1'),
skill='Amarr Carrier', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Remote Armor Repair Systems'),
'armorDamageAmount', src.getModifiedItemAttr('shipBonusForceAuxiliaryA1'),
skill='Amarr Carrier', **kwargs)
class Effect6527(BaseEffect):
"""
shipBonusForceAuxiliaryA2ArmorResists
Used by:
Ship: Apostle
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorKineticDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryA2'),
skill='Amarr Carrier', **kwargs)
fit.ship.boostItemAttr('armorExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryA2'),
skill='Amarr Carrier', **kwargs)
fit.ship.boostItemAttr('armorEmDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryA2'),
skill='Amarr Carrier', **kwargs)
fit.ship.boostItemAttr('armorThermalDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryA2'),
skill='Amarr Carrier', **kwargs)
class Effect6533(BaseEffect):
"""
shipBonusForceAuxiliaryA4WarfareLinksBonus
Used by:
Ship: Apostle
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command') or
mod.item.requiresSkill('Information Command'),
'warfareBuff4Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryA4'),
skill='Amarr Carrier', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command') or
mod.item.requiresSkill('Information Command'),
'warfareBuff3Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryA4'),
skill='Amarr Carrier', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command') or
mod.item.requiresSkill('Information Command'),
'warfareBuff1Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryA4'),
skill='Amarr Carrier', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command') or
mod.item.requiresSkill('Information Command'),
'buffDuration', src.getModifiedItemAttr('shipBonusForceAuxiliaryA4'),
skill='Amarr Carrier', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command') or
mod.item.requiresSkill('Information Command'),
'warfareBuff2Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryA4'),
skill='Amarr Carrier', **kwargs)
class Effect6534(BaseEffect):
"""
shipBonusForceAuxiliaryM4WarfareLinksBonus
Used by:
Ship: Lif
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'),
'warfareBuff3Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryM4'), skill='Minmatar Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'),
'warfareBuff2Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryM4'), skill='Minmatar Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'),
'warfareBuff1Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryM4'), skill='Minmatar Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'),
'buffDuration', src.getModifiedItemAttr('shipBonusForceAuxiliaryM4'), skill='Minmatar Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'),
'warfareBuff4Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryM4'), skill='Minmatar Carrier', **kwargs)
class Effect6535(BaseEffect):
"""
shipBonusForceAuxiliaryG4WarfareLinksBonus
Used by:
Ship: Ninazu
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'),
'warfareBuff3Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryG4'), skill='Gallente Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'),
'warfareBuff4Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryG4'), skill='Gallente Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'),
'buffDuration', src.getModifiedItemAttr('shipBonusForceAuxiliaryG4'), skill='Gallente Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'),
'warfareBuff2Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryG4'), skill='Gallente Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'),
'warfareBuff1Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryG4'), skill='Gallente Carrier', **kwargs)
class Effect6536(BaseEffect):
"""
shipBonusForceAuxiliaryC4WarfareLinksBonus
Used by:
Ship: Minokawa
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'),
'warfareBuff3Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryC4'), skill='Caldari Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'),
'warfareBuff4Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryC4'), skill='Caldari Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'),
'warfareBuff2Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryC4'), skill='Caldari Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'),
'buffDuration', src.getModifiedItemAttr('shipBonusForceAuxiliaryC4'), skill='Caldari Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'),
'warfareBuff1Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryC4'), skill='Caldari Carrier', **kwargs)
class Effect6537(BaseEffect):
"""
shipBonusRole1CommandBurstCPUBonus
Used by:
Ships from group: Force Auxiliary (6 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'cpu',
src.getModifiedItemAttr('shipBonusRole1'), **kwargs)
class Effect6545(BaseEffect):
"""
shipBonusForceAuxiliaryC1RemoteBoostAndCapAmount
Used by:
Ship: Minokawa
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
if src.getModifiedItemAttr('shipBonusForceAuxiliaryC1') is None:
return # See GH Issue 1321
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Capacitor Emission Systems'),
'powerTransferAmount', src.getModifiedItemAttr('shipBonusForceAuxiliaryC1'),
skill='Caldari Carrier', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Emission Systems'),
'shieldBonus', src.getModifiedItemAttr('shipBonusForceAuxiliaryC1'),
skill='Caldari Carrier', **kwargs)
class Effect6546(BaseEffect):
"""
shipBonusForceAuxiliaryC2ShieldResists
Used by:
Variations of ship: Minokawa (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryC2'),
skill='Caldari Carrier', **kwargs)
fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryC2'),
skill='Caldari Carrier', **kwargs)
fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryC2'),
skill='Caldari Carrier', **kwargs)
fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryC2'),
skill='Caldari Carrier', **kwargs)
class Effect6548(BaseEffect):
"""
shipBonusForceAuxiliaryG1RemoteCycleTime
Used by:
Ship: Ninazu
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Capital Remote Armor Repair Systems') or mod.item.requiresSkill('Capital Shield Emission Systems'),
'duration', src.getModifiedItemAttr('shipBonusForceAuxiliaryG1'), skill='Gallente Carrier', **kwargs)
class Effect6549(BaseEffect):
"""
shipBonusForceAuxiliaryG2LocalRepairAmount
Used by:
Ship: Ninazu
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount',
src.getModifiedItemAttr('shipBonusForceAuxiliaryG2'), skill='Gallente Carrier', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Repair Systems'), 'armorDamageAmount',
src.getModifiedItemAttr('shipBonusForceAuxiliaryG2'), skill='Gallente Carrier', **kwargs)
class Effect6551(BaseEffect):
"""
shipBonusForceAuxiliaryM1RemoteDuration
Used by:
Ship: Lif
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Capital Shield Emission Systems') or mod.item.requiresSkill('Capital Remote Armor Repair Systems'),
'duration', src.getModifiedItemAttr('shipBonusForceAuxiliaryM1'), skill='Minmatar Carrier', **kwargs)
class Effect6552(BaseEffect):
"""
shipBonusForceAuxiliaryM2LocalBoostAmount
Used by:
Ship: Lif
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Operation'), 'shieldBonus',
src.getModifiedItemAttr('shipBonusForceAuxiliaryM2'), skill='Minmatar Carrier', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus',
src.getModifiedItemAttr('shipBonusForceAuxiliaryM2'), skill='Minmatar Carrier', **kwargs)
class Effect6555(BaseEffect):
"""
moduleBonusDroneNavigationComputer
Used by:
Modules from group: Drone Navigation Computer (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'maxVelocity',
src.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'maxVelocity',
src.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs)
class Effect6556(BaseEffect):
"""
moduleBonusDroneDamageAmplifier
Used by:
Modules from group: Drone Damage Modules (12 of 12)
Modules named like: C3 'Hivaa Saitsuo' Ballistic Control System (2 of 2)
Module: Abyssal Ballistic Control System
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityMissilesDamageMultiplier',
src.getModifiedItemAttr('droneDamageBonus'), stackingPenalties=True, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackTurretDamageMultiplier',
src.getModifiedItemAttr('droneDamageBonus'), stackingPenalties=True, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackMissileDamageMultiplier',
src.getModifiedItemAttr('droneDamageBonus'), stackingPenalties=True, **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'damageMultiplier',
src.getModifiedItemAttr('droneDamageBonus'), stackingPenalties=True, **kwargs)
class Effect6557(BaseEffect):
"""
moduleBonusOmnidirectionalTrackingLink
Used by:
Modules from group: Drone Tracking Modules (10 of 10)
"""
type = 'active'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackTurretRangeFalloff', src.getModifiedItemAttr('falloffBonus'),
stackingPenalties=True, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityMissilesExplosionVelocity',
src.getModifiedItemAttr('aoeVelocityBonus'), stackingPenalties=True, **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'trackingSpeed',
src.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=True, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackMissileExplosionRadius',
src.getModifiedItemAttr('aoeCloudSizeBonus'), stackingPenalties=True, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackTurretTrackingSpeed',
src.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=True, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityMissilesExplosionRadius',
src.getModifiedItemAttr('aoeCloudSizeBonus'), stackingPenalties=True, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesRange',
src.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackMissileRangeOptimal', src.getModifiedItemAttr('maxRangeBonus'),
stackingPenalties=True, **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'falloff',
src.getModifiedItemAttr('falloffBonus'), stackingPenalties=True, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackMissileExplosionVelocity',
src.getModifiedItemAttr('aoeVelocityBonus'), stackingPenalties=True, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackMissileRangeFalloff', src.getModifiedItemAttr('falloffBonus'),
stackingPenalties=True, **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'maxRange',
src.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackTurretRangeOptimal', src.getModifiedItemAttr('maxRangeBonus'),
stackingPenalties=True, **kwargs)
class Effect6558(BaseEffect):
"""
moduleBonusOmnidirectionalTrackingLinkOverload
Used by:
Modules from group: Drone Tracking Modules (10 of 10)
"""
type = 'overheat'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
overloadBonus = module.getModifiedItemAttr('overloadTrackingModuleStrengthBonus')
module.boostItemAttr('maxRangeBonus', overloadBonus, **kwargs)
module.boostItemAttr('falloffBonus', overloadBonus, **kwargs)
module.boostItemAttr('trackingSpeedBonus', overloadBonus, **kwargs)
module.boostItemAttr('aoeCloudSizeBonus', overloadBonus, **kwargs)
module.boostItemAttr('aoeVelocityBonus', overloadBonus, **kwargs)
class Effect6559(BaseEffect):
"""
moduleBonusOmnidirectionalTrackingEnhancer
Used by:
Modules from group: Drone Tracking Enhancer (10 of 10)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackMissileExplosionRadius',
src.getModifiedItemAttr('aoeCloudSizeBonus'), stackingPenalties=True, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackMissileRangeOptimal', src.getModifiedItemAttr('maxRangeBonus'),
stackingPenalties=True, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackTurretRangeFalloff', src.getModifiedItemAttr('falloffBonus'),
stackingPenalties=True, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityMissilesExplosionRadius',
src.getModifiedItemAttr('aoeCloudSizeBonus'), stackingPenalties=True, **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'falloff',
src.getModifiedItemAttr('falloffBonus'), stackingPenalties=True, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackMissileRangeFalloff', src.getModifiedItemAttr('falloffBonus'),
stackingPenalties=True, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackTurretTrackingSpeed',
src.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=True, **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'maxRange',
src.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True, **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'trackingSpeed',
src.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=True, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackTurretRangeOptimal', src.getModifiedItemAttr('maxRangeBonus'),
stackingPenalties=True, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityMissilesExplosionVelocity',
src.getModifiedItemAttr('aoeVelocityBonus'), stackingPenalties=True, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackMissileExplosionVelocity',
src.getModifiedItemAttr('aoeVelocityBonus'), stackingPenalties=True, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesRange',
src.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True, **kwargs)
class Effect6560(BaseEffect):
"""
skillBonusFighters
Used by:
Skill: Fighters
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackMissileDamageMultiplier',
src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackTurretDamageMultiplier',
src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityMissilesDamageMultiplier',
src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs)
class Effect6561(BaseEffect):
"""
skillBonusLightFighters
Used by:
Skill: Light Fighters
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Light Fighters'), 'maxVelocity',
src.getModifiedItemAttr('maxVelocityBonus') * lvl, **kwargs)
class Effect6562(BaseEffect):
"""
skillBonusSupportFightersShield
Used by:
Skill: Support Fighters
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'shieldCapacity',
src.getModifiedItemAttr('shieldBonus') * lvl, **kwargs)
class Effect6563(BaseEffect):
"""
skillBonusHeavyFighters
Used by:
Skill: Heavy Fighters
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Heavy Fighters'),
'fighterAbilityMissilesDamageMultiplier',
src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Heavy Fighters'),
'fighterAbilityAttackMissileDamageMultiplier',
src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Heavy Fighters'),
'fighterAbilityAttackTurretDamageMultiplier',
src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs)
class Effect6565(BaseEffect):
"""
citadelRigBonus
Used by:
Structures from group: Citadel (9 of 9)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for attr in [
'structureRigDoomsdayDamageLossTargetBonus',
'structureRigScanResBonus',
'structureRigPDRangeBonus',
'structureRigPDCapUseBonus',
'structureRigMissileExploVeloBonus',
'structureRigMissileVelocityBonus',
'structureRigEwarOptimalBonus',
'structureRigEwarFalloffBonus',
'structureRigEwarCapUseBonus',
'structureRigMissileExplosionRadiusBonus'
]:
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Jury Rigging'),
attr, src.getModifiedItemAttr('structureRoleBonus'), **kwargs)
class Effect6566(BaseEffect):
"""
moduleBonusFighterSupportUnit
Used by:
Modules from group: Fighter Support Unit (10 of 10)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.fighters.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Fighters'), 'shieldCapacity',
src.getModifiedItemAttr('fighterBonusShieldCapacityPercent'), **kwargs)
fit.fighters.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Fighters'), 'maxVelocity',
src.getModifiedItemAttr('fighterBonusVelocityPercent'), stackingPenalties=True, penaltyGroup='postMul', **kwargs)
fit.fighters.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackMissileDuration',
src.getModifiedItemAttr('fighterBonusROFPercent'), stackingPenalties=True, penaltyGroup='postMul', **kwargs)
fit.fighters.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDuration',
src.getModifiedItemAttr('fighterBonusROFPercent'), stackingPenalties=True, penaltyGroup='postMul', **kwargs)
fit.fighters.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDuration',
src.getModifiedItemAttr('fighterBonusROFPercent'), stackingPenalties=True, penaltyGroup='postMul', **kwargs)
fit.fighters.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Fighters'), 'shieldRechargeRate',
src.getModifiedItemAttr('fighterBonusShieldRechargePercent'), **kwargs)
class Effect6567(BaseEffect):
"""
moduleBonusNetworkedSensorArray
Used by:
Module: Networked Sensor Array
"""
type = 'active'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('scanResolution', src.getModifiedItemAttr('scanResolutionBonus'), stackingPenalties=True, **kwargs)
for scanType in ('Magnetometric', 'Ladar', 'Gravimetric', 'Radar'):
attr = 'scan{}Strength'.format(scanType)
bonus = src.getModifiedItemAttr('scan{}StrengthPercent'.format(scanType))
fit.ship.boostItemAttr(attr, bonus, stackingPenalties=True, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), attr, bonus,
stackingPenalties=True, **kwargs)
# EW cap need increase
groups = [
'Burst Jammer',
'Weapon Disruptor',
'ECM',
'Stasis Grappler',
'Sensor Dampener',
'Target Painter']
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups or
mod.item.requiresSkill('Propulsion Jamming'),
'capacitorNeed', src.getModifiedItemAttr('ewCapacitorNeedBonus'), **kwargs)
fit.modules.filteredItemIncrease(
lambda mod: mod.item.requiresSkill('Capital Micro Jump Drive Operation'), 'activationBlocked',
src.getModifiedItemAttr('networkedSensorArrayDisallowCapitalMicroJump'), **kwargs)
class Effect6570(BaseEffect):
"""
skillBonusFighterHangarManagement
Used by:
Skill: Fighter Hangar Management
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.ship.boostItemAttr('fighterCapacity', src.getModifiedItemAttr('skillBonusFighterHangarSize') * lvl, **kwargs)
class Effect6571(BaseEffect):
"""
skillBonusCapitalAutocannonSpecialization
Used by:
Skill: Capital Autocannon Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Autocannon Specialization'),
'damageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs)
class Effect6572(BaseEffect):
"""
skillBonusCapitalArtillerySpecialization
Used by:
Skill: Capital Artillery Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Artillery Specialization'),
'damageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs)
class Effect6573(BaseEffect):
"""
skillBonusCapitalBlasterSpecialization
Used by:
Skill: Capital Blaster Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Blaster Specialization'),
'damageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs)
class Effect6574(BaseEffect):
"""
skillBonusCapitalRailgunSpecialization
Used by:
Skill: Capital Railgun Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Railgun Specialization'),
'damageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs)
class Effect6575(BaseEffect):
"""
skillBonusCapitalPulseLaserSpecialization
Used by:
Skill: Capital Pulse Laser Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Pulse Laser Specialization'),
'damageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs)
class Effect6576(BaseEffect):
"""
skillBonusCapitalBeamLaserSpecialization
Used by:
Skill: Capital Beam Laser Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Beam Laser Specialization'),
'damageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs)
class Effect6577(BaseEffect):
"""
skillBonusXLCruiseMissileSpecialization
Used by:
Skill: XL Cruise Missile Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('XL Cruise Missile Specialization'), 'speed',
src.getModifiedItemAttr('rofBonus') * lvl, **kwargs)
class Effect6578(BaseEffect):
"""
skillBonusXLTorpedoSpecialization
Used by:
Skill: XL Torpedo Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('XL Torpedo Specialization'), 'speed',
src.getModifiedItemAttr('rofBonus') * lvl, **kwargs)
class Effect6580(BaseEffect):
"""
shipBonusRole2LogisticDroneRepAmountBonus
Used by:
Ships from group: Force Auxiliary (5 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'), 'structureDamageAmount',
src.getModifiedItemAttr('shipBonusRole2'), **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'), 'armorDamageAmount',
src.getModifiedItemAttr('shipBonusRole2'), **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'), 'shieldBonus',
src.getModifiedItemAttr('shipBonusRole2'), **kwargs)
class Effect6581(BaseEffect):
"""
moduleBonusTriageModule
Used by:
Variations of module: Triage Module I (2 of 2)
"""
runTime = 'early'
type = 'active'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
# Remote effect bonuses (duration / amount / range / falloff)
for skill, amtAttr, stack in (
('Capital Remote Armor Repair Systems', 'armorDamageAmount', True),
('Capital Shield Emission Systems', 'shieldBonus', True),
('Capital Capacitor Emission Systems', 'powerTransferAmount', False),
('Capital Remote Hull Repair Systems', 'structureDamageAmount', False)):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), 'duration',
src.getModifiedItemAttr('siegeRemoteLogisticsDurationBonus'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), amtAttr,
src.getModifiedItemAttr('siegeRemoteLogisticsAmountBonus'),
stackingPenalties=stack, **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), 'maxRange',
src.getModifiedItemAttr('siegeRemoteLogisticsRangeBonus'), stackingPenalties=True, **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), 'falloffEffectiveness',
src.getModifiedItemAttr('siegeRemoteLogisticsRangeBonus'), stackingPenalties=True, **kwargs)
# Local armor/shield rep effects (duration / amount)
for skill, amtAttr in (
('Capital Shield Operation', 'shieldBonus'),
('Capital Repair Systems', 'armorDamageAmount')):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), 'duration',
src.getModifiedItemAttr('siegeLocalLogisticsDurationBonus'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), amtAttr,
src.getModifiedItemAttr('siegeLocalLogisticsAmountBonus'),
stackingPenalties=True, **kwargs)
# Speed bonus
fit.ship.boostItemAttr('maxVelocity', src.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs)
# Scan resolution multiplier
fit.ship.multiplyItemAttr('scanResolution', src.getModifiedItemAttr('scanResolutionMultiplier'),
stackingPenalties=True, **kwargs)
# Mass multiplier
fit.ship.multiplyItemAttr('mass', src.getModifiedItemAttr('siegeMassMultiplier'), stackingPenalties=True, **kwargs)
# Max locked targets
fit.ship.increaseItemAttr('maxLockedTargets', src.getModifiedItemAttr('maxLockedTargetsBonus'), **kwargs)
# EW cap need increase
groups = [
'Burst Jammer',
'Weapon Disruptor',
'ECM',
'Stasis Grappler',
'Sensor Dampener',
'Target Painter']
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups or
mod.item.requiresSkill('Propulsion Jamming'),
'capacitorNeed', src.getModifiedItemAttr('ewCapacitorNeedBonus'), **kwargs)
# todo: test for April 2016 release
# Block EWAR & projected effects
fit.ship.forceItemAttr('disallowOffensiveModifiers', src.getModifiedItemAttr('disallowOffensiveModifiers'), **kwargs)
fit.ship.forceItemAttr('disallowAssistance', src.getModifiedItemAttr('disallowAssistance'), **kwargs)
# new in April 2016 release
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'damageMultiplier',
src.getModifiedItemAttr('droneDamageBonus'), stackingPenalties=True, **kwargs)
fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs)
fit.ship.boostItemAttr('sensorDampenerResistance', src.getModifiedItemAttr('sensorDampenerResistanceBonus'), **kwargs)
fit.ship.boostItemAttr('remoteAssistanceImpedance', src.getModifiedItemAttr('remoteAssistanceImpedanceBonus'), **kwargs)
fit.ship.boostItemAttr('remoteRepairImpedance', src.getModifiedItemAttr('remoteRepairImpedanceBonus'), **kwargs)
fit.ship.forceItemAttr('disallowTethering', src.getModifiedItemAttr('disallowTethering'), **kwargs)
fit.ship.forceItemAttr('disallowDocking', src.getModifiedItemAttr('disallowDocking'), **kwargs)
class Effect6582(BaseEffect):
"""
moduleBonusSiegeModule
Used by:
Modules named like: Siege Module (4 of 4)
"""
runTime = 'early'
type = 'active'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
# Turrets
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Energy Turret') or
mod.item.requiresSkill('Capital Hybrid Turret') or
mod.item.requiresSkill('Capital Projectile Turret') or
mod.item.requiresSkill('Capital Precursor Weapon'),
'damageMultiplier', src.getModifiedItemAttr('siegeTurretDamageBonus'), **kwargs)
# Missiles
for type in ('kinetic', 'thermal', 'explosive', 'em'):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes') or
mod.charge.requiresSkill('XL Cruise Missiles') or
mod.charge.requiresSkill('Torpedoes'),
'%sDamage' % type, src.getModifiedItemAttr('siegeMissileDamageBonus'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('XL Torpedoes') or
mod.item.requiresSkill('XL Cruise Missiles'),
'speed', src.getModifiedItemAttr('siegeLauncherROFBonus'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rapid Torpedo',
'speed', src.getModifiedItemAttr('siegeHAWMissileROFBonus'),
stackingPenalties=True, penaltyGroup='postPercent', **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'),
'maxVelocity', src.getModifiedItemAttr('siegeTorpedoVelocityBonus'),
stackingPenalties=True, **kwargs)
# Tank
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Operation') or
mod.item.requiresSkill('Capital Repair Systems'),
'duration', src.getModifiedItemAttr('siegeLocalLogisticsDurationBonus'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Operation'),
'shieldBonus', src.getModifiedItemAttr('siegeLocalLogisticsAmountBonus'),
stackingPenalties=True, **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Repair Systems'),
'armorDamageAmount', src.getModifiedItemAttr('siegeLocalLogisticsAmountBonus'),
stackingPenalties=True, **kwargs)
# Mobility & safety penalties
fit.ship.boostItemAttr('maxVelocity', src.getModifiedItemAttr('speedFactor'), **kwargs)
fit.ship.multiplyItemAttr('mass', src.getModifiedItemAttr('siegeMassMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs)
fit.ship.forceItemAttr('disallowDocking', src.getModifiedItemAttr('disallowDocking'), **kwargs)
fit.ship.forceItemAttr('disallowTethering', src.getModifiedItemAttr('disallowTethering'), **kwargs)
# Ewar and assistance resistances
fit.ship.boostItemAttr('remoteRepairImpedance', src.getModifiedItemAttr('remoteRepairImpedanceBonus'), **kwargs)
fit.ship.boostItemAttr('sensorDampenerResistance', src.getModifiedItemAttr('sensorDampenerResistanceBonus'), **kwargs)
fit.ship.boostItemAttr('remoteAssistanceImpedance', src.getModifiedItemAttr('remoteAssistanceImpedanceBonus'), **kwargs)
fit.ship.boostItemAttr('weaponDisruptionResistance', src.getModifiedItemAttr('weaponDisruptionResistanceBonus'), **kwargs)
class Effect6591(BaseEffect):
"""
shipBonusSupercarrierA3WarpStrength
Used by:
Ship: Aeon
Ship: Revenant
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusSupercarrierA3'),
skill='Amarr Carrier', **kwargs)
class Effect6592(BaseEffect):
"""
shipBonusSupercarrierC3WarpStrength
Used by:
Ship: Revenant
Ship: Wyvern
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusSupercarrierC3'),
skill='Caldari Carrier', **kwargs)
class Effect6593(BaseEffect):
"""
shipBonusSupercarrierG3WarpStrength
Used by:
Variations of ship: Nyx (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusSupercarrierG3'),
skill='Gallente Carrier', **kwargs)
class Effect6594(BaseEffect):
"""
shipBonusSupercarrierM3WarpStrength
Used by:
Ship: Hel
Ship: Vendetta
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusSupercarrierM3'),
skill='Minmatar Carrier', **kwargs)
class Effect6595(BaseEffect):
"""
shipBonusCarrierA4WarfareLinksBonus
Used by:
Ship: Archon
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'),
'buffDuration', src.getModifiedItemAttr('shipBonusCarrierA4'), skill='Amarr Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'),
'warfareBuff3Value', src.getModifiedItemAttr('shipBonusCarrierA4'), skill='Amarr Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'),
'warfareBuff1Value', src.getModifiedItemAttr('shipBonusCarrierA4'), skill='Amarr Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'),
'warfareBuff4Value', src.getModifiedItemAttr('shipBonusCarrierA4'), skill='Amarr Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'),
'warfareBuff2Value', src.getModifiedItemAttr('shipBonusCarrierA4'), skill='Amarr Carrier', **kwargs)
class Effect6596(BaseEffect):
"""
shipBonusCarrierC4WarfareLinksBonus
Used by:
Ship: Chimera
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'),
'warfareBuff2Value', src.getModifiedItemAttr('shipBonusCarrierC4'), skill='Caldari Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'),
'buffDuration', src.getModifiedItemAttr('shipBonusCarrierC4'), skill='Caldari Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'),
'warfareBuff3Value', src.getModifiedItemAttr('shipBonusCarrierC4'), skill='Caldari Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'),
'warfareBuff4Value', src.getModifiedItemAttr('shipBonusCarrierC4'), skill='Caldari Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'),
'warfareBuff1Value', src.getModifiedItemAttr('shipBonusCarrierC4'), skill='Caldari Carrier', **kwargs)
class Effect6597(BaseEffect):
"""
shipBonusCarrierG4WarfareLinksBonus
Used by:
Ship: Thanatos
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'),
'warfareBuff2Value', src.getModifiedItemAttr('shipBonusCarrierG4'), skill='Gallente Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'),
'warfareBuff3Value', src.getModifiedItemAttr('shipBonusCarrierG4'), skill='Gallente Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'),
'warfareBuff4Value', src.getModifiedItemAttr('shipBonusCarrierG4'), skill='Gallente Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'),
'buffDuration', src.getModifiedItemAttr('shipBonusCarrierG4'), skill='Gallente Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'),
'warfareBuff1Value', src.getModifiedItemAttr('shipBonusCarrierG4'), skill='Gallente Carrier', **kwargs)
class Effect6598(BaseEffect):
"""
shipBonusCarrierM4WarfareLinksBonus
Used by:
Ship: Nidhoggur
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'),
'warfareBuff4Value', src.getModifiedItemAttr('shipBonusCarrierM4'), skill='Minmatar Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'),
'warfareBuff2Value', src.getModifiedItemAttr('shipBonusCarrierM4'), skill='Minmatar Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'),
'warfareBuff3Value', src.getModifiedItemAttr('shipBonusCarrierM4'), skill='Minmatar Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'),
'warfareBuff1Value', src.getModifiedItemAttr('shipBonusCarrierM4'), skill='Minmatar Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'),
'buffDuration', src.getModifiedItemAttr('shipBonusCarrierM4'), skill='Minmatar Carrier', **kwargs)
class Effect6599(BaseEffect):
"""
shipBonusCarrierA1ArmorResists
Used by:
Ship: Archon
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorKineticDamageResonance', src.getModifiedItemAttr('shipBonusCarrierA1'),
skill='Amarr Carrier', **kwargs)
fit.ship.boostItemAttr('armorEmDamageResonance', src.getModifiedItemAttr('shipBonusCarrierA1'),
skill='Amarr Carrier', **kwargs)
fit.ship.boostItemAttr('armorExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusCarrierA1'),
skill='Amarr Carrier', **kwargs)
fit.ship.boostItemAttr('armorThermalDamageResonance', src.getModifiedItemAttr('shipBonusCarrierA1'),
skill='Amarr Carrier', **kwargs)
class Effect6600(BaseEffect):
"""
shipBonusCarrierC1ShieldResists
Used by:
Ship: Chimera
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('shipBonusCarrierC1'),
skill='Caldari Carrier', **kwargs)
fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('shipBonusCarrierC1'),
skill='Caldari Carrier', **kwargs)
fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('shipBonusCarrierC1'),
skill='Caldari Carrier', **kwargs)
fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusCarrierC1'),
skill='Caldari Carrier', **kwargs)
class Effect6601(BaseEffect):
"""
shipBonusCarrierG1FighterDamage
Used by:
Ship: Thanatos
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityMissilesDamageMultiplier',
src.getModifiedItemAttr('shipBonusCarrierG1'), skill='Gallente Carrier', **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackTurretDamageMultiplier',
src.getModifiedItemAttr('shipBonusCarrierG1'), skill='Gallente Carrier', **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackMissileDamageMultiplier',
src.getModifiedItemAttr('shipBonusCarrierG1'), skill='Gallente Carrier', **kwargs)
class Effect6602(BaseEffect):
"""
shipBonusCarrierM1FighterDamage
Used by:
Ship: Nidhoggur
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackMissileDamageMultiplier',
src.getModifiedItemAttr('shipBonusCarrierM1'), skill='Minmatar Carrier', **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityMissilesDamageMultiplier',
src.getModifiedItemAttr('shipBonusCarrierM1'), skill='Minmatar Carrier', **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackTurretDamageMultiplier',
src.getModifiedItemAttr('shipBonusCarrierM1'), skill='Minmatar Carrier', **kwargs)
class Effect6603(BaseEffect):
"""
shipBonusSupercarrierA1FighterDamage
Used by:
Ship: Aeon
Ship: Revenant
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityMissilesDamageMultiplier',
src.getModifiedItemAttr('shipBonusSupercarrierA1'), skill='Amarr Carrier', **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackMissileDamageMultiplier',
src.getModifiedItemAttr('shipBonusSupercarrierA1'), skill='Amarr Carrier', **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackTurretDamageMultiplier',
src.getModifiedItemAttr('shipBonusSupercarrierA1'), skill='Amarr Carrier', **kwargs)
class Effect6604(BaseEffect):
"""
shipBonusSupercarrierC1FighterDamage
Used by:
Ship: Revenant
Ship: Wyvern
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityMissilesDamageMultiplier',
src.getModifiedItemAttr('shipBonusSupercarrierC1'), skill='Caldari Carrier', **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackTurretDamageMultiplier',
src.getModifiedItemAttr('shipBonusSupercarrierC1'), skill='Caldari Carrier', **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackMissileDamageMultiplier',
src.getModifiedItemAttr('shipBonusSupercarrierC1'), skill='Caldari Carrier', **kwargs)
class Effect6605(BaseEffect):
"""
shipBonusSupercarrierG1FighterDamage
Used by:
Variations of ship: Nyx (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackTurretDamageMultiplier',
src.getModifiedItemAttr('shipBonusSupercarrierG1'), skill='Gallente Carrier', **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityMissilesDamageMultiplier',
src.getModifiedItemAttr('shipBonusSupercarrierG1'), skill='Gallente Carrier', **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackMissileDamageMultiplier',
src.getModifiedItemAttr('shipBonusSupercarrierG1'), skill='Gallente Carrier', **kwargs)
class Effect6606(BaseEffect):
"""
shipBonusSupercarrierM1FighterDamage
Used by:
Ship: Hel
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackMissileDamageMultiplier',
src.getModifiedItemAttr('shipBonusSupercarrierM1'), skill='Minmatar Carrier', **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityMissilesDamageMultiplier',
src.getModifiedItemAttr('shipBonusSupercarrierM1'), skill='Minmatar Carrier', **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackTurretDamageMultiplier',
src.getModifiedItemAttr('shipBonusSupercarrierM1'), skill='Minmatar Carrier', **kwargs)
class Effect6607(BaseEffect):
"""
shipBonusSupercarrierA5WarfareLinksBonus
Used by:
Ship: Aeon
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'),
'warfareBuff4Value', src.getModifiedItemAttr('shipBonusSupercarrierA5'), skill='Amarr Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'),
'warfareBuff3Value', src.getModifiedItemAttr('shipBonusSupercarrierA5'), skill='Amarr Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'),
'buffDuration', src.getModifiedItemAttr('shipBonusSupercarrierA5'), skill='Amarr Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'),
'warfareBuff2Value', src.getModifiedItemAttr('shipBonusSupercarrierA5'), skill='Amarr Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'),
'warfareBuff1Value', src.getModifiedItemAttr('shipBonusSupercarrierA5'), skill='Amarr Carrier', **kwargs)
class Effect6608(BaseEffect):
"""
shipBonusSupercarrierC5WarfareLinksBonus
Used by:
Ship: Wyvern
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'),
'buffDuration', src.getModifiedItemAttr('shipBonusSupercarrierC5'), skill='Caldari Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'),
'warfareBuff2Value', src.getModifiedItemAttr('shipBonusSupercarrierC5'), skill='Caldari Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'),
'warfareBuff1Value', src.getModifiedItemAttr('shipBonusSupercarrierC5'), skill='Caldari Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'),
'warfareBuff4Value', src.getModifiedItemAttr('shipBonusSupercarrierC5'), skill='Caldari Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'),
'warfareBuff3Value', src.getModifiedItemAttr('shipBonusSupercarrierC5'), skill='Caldari Carrier', **kwargs)
class Effect6609(BaseEffect):
"""
shipBonusSupercarrierG5WarfareLinksBonus
Used by:
Ship: Nyx
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'),
'warfareBuff2Value', src.getModifiedItemAttr('shipBonusSupercarrierG5'), skill='Gallente Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'),
'buffDuration', src.getModifiedItemAttr('shipBonusSupercarrierG5'), skill='Gallente Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'),
'warfareBuff1Value', src.getModifiedItemAttr('shipBonusSupercarrierG5'), skill='Gallente Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'),
'warfareBuff3Value', src.getModifiedItemAttr('shipBonusSupercarrierG5'), skill='Gallente Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'),
'warfareBuff4Value', src.getModifiedItemAttr('shipBonusSupercarrierG5'), skill='Gallente Carrier', **kwargs)
class Effect6610(BaseEffect):
"""
shipBonusSupercarrierM5WarfareLinksBonus
Used by:
Ship: Hel
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'),
'warfareBuff4Value', src.getModifiedItemAttr('shipBonusSupercarrierM5'), skill='Minmatar Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'),
'warfareBuff1Value', src.getModifiedItemAttr('shipBonusSupercarrierM5'), skill='Minmatar Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'),
'warfareBuff3Value', src.getModifiedItemAttr('shipBonusSupercarrierM5'), skill='Minmatar Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'),
'buffDuration', src.getModifiedItemAttr('shipBonusSupercarrierM5'), skill='Minmatar Carrier', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'),
'warfareBuff2Value', src.getModifiedItemAttr('shipBonusSupercarrierM5'), skill='Minmatar Carrier', **kwargs)
class Effect6611(BaseEffect):
"""
shipBonusSupercarrierC2AfterburnerBonus
Used by:
Ship: Revenant
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'speedFactor',
src.getModifiedItemAttr('shipBonusSupercarrierC2'), skill='Caldari Carrier', **kwargs)
class Effect6612(BaseEffect):
"""
shipBonusSupercarrierA2FighterApplicationBonus
Used by:
Ship: Revenant
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityMissilesExplosionVelocity',
src.getModifiedItemAttr('shipBonusSupercarrierA2'), skill='Amarr Carrier', **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackMissileExplosionVelocity',
src.getModifiedItemAttr('shipBonusSupercarrierA2'), skill='Amarr Carrier', **kwargs)
class Effect6613(BaseEffect):
"""
shipBonusSupercarrierRole1NumWarfareLinks
Used by:
Ships from group: Supercarrier (6 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupOnline',
src.getModifiedItemAttr('shipBonusRole1'), **kwargs)
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupActive',
src.getModifiedItemAttr('shipBonusRole1'), **kwargs)
class Effect6614(BaseEffect):
"""
shipBonusSupercarrierRole2ArmorShieldModuleBonus
Used by:
Ships from group: Supercarrier (6 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'armorHPBonusAdd',
src.getModifiedItemAttr('shipBonusRole2'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Upgrades'), 'capacityBonus',
src.getModifiedItemAttr('shipBonusRole2'), **kwargs)
class Effect6615(BaseEffect):
"""
shipBonusSupercarrierA4BurstProjectorBonus
Used by:
Ship: Aeon
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation'),
'durationWeaponDisruptionBurstProjector',
src.getModifiedItemAttr('shipBonusSupercarrierA4'), skill='Amarr Carrier', **kwargs)
class Effect6616(BaseEffect):
"""
shipBonusSupercarrierC4BurstProjectorBonus
Used by:
Ship: Wyvern
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation'),
'durationECMJammerBurstProjector', src.getModifiedItemAttr('shipBonusSupercarrierC4'),
skill='Caldari Carrier', **kwargs)
class Effect6617(BaseEffect):
"""
shipBonusSupercarrierG4BurstProjectorBonus
Used by:
Ship: Nyx
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation'),
'durationSensorDampeningBurstProjector',
src.getModifiedItemAttr('shipBonusSupercarrierG4'), skill='Gallente Carrier', **kwargs)
class Effect6618(BaseEffect):
"""
shipBonusSupercarrierM4BurstProjectorBonus
Used by:
Ship: Hel
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation'),
'durationTargetIlluminationBurstProjector',
src.getModifiedItemAttr('shipBonusSupercarrierM4'), skill='Minmatar Carrier', **kwargs)
class Effect6619(BaseEffect):
"""
shipBonusCarrierRole1NumWarfareLinks
Used by:
Ships from group: Carrier (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupOnline',
src.getModifiedItemAttr('shipBonusRole1'), **kwargs)
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupActive',
src.getModifiedItemAttr('shipBonusRole1'), **kwargs)
class Effect6620(BaseEffect):
"""
shipBonusDreadnoughtC3ReloadBonus
Used by:
Ships named like: Phoenix (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'reloadTime',
src.getModifiedItemAttr('shipBonusDreadnoughtC3'), skill='Caldari Dreadnought', **kwargs)
class Effect6621(BaseEffect):
"""
shipBonusSupercarrierA2ArmorResists
Used by:
Ship: Aeon
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierA2'),
skill='Amarr Carrier', **kwargs)
fit.ship.boostItemAttr('armorEmDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierA2'),
skill='Amarr Carrier', **kwargs)
fit.ship.boostItemAttr('armorThermalDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierA2'),
skill='Amarr Carrier', **kwargs)
fit.ship.boostItemAttr('armorKineticDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierA2'),
skill='Amarr Carrier', **kwargs)
class Effect6622(BaseEffect):
"""
shipBonusSupercarrierC2ShieldResists
Used by:
Ship: Wyvern
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierC2'),
skill='Caldari Carrier', **kwargs)
fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierC2'),
skill='Caldari Carrier', **kwargs)
fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierC2'),
skill='Caldari Carrier', **kwargs)
fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierC2'),
skill='Caldari Carrier', **kwargs)
class Effect6623(BaseEffect):
"""
shipBonusSupercarrierG2FighterHitpoints
Used by:
Variations of ship: Nyx (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'shieldCapacity',
src.getModifiedItemAttr('shipBonusSupercarrierG2'), skill='Gallente Carrier', **kwargs)
class Effect6624(BaseEffect):
"""
shipBonusSupercarrierM2FighterVelocity
Used by:
Ship: Hel
Ship: Vendetta
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'maxVelocity',
src.getModifiedItemAttr('shipBonusSupercarrierM2'), skill='Minmatar Carrier', **kwargs)
class Effect6625(BaseEffect):
"""
shipBonusCarrierA2SupportFighterBonusRange
Used by:
Ship: Archon
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterSquadronOrbitRange',
src.getModifiedItemAttr('shipBonusCarrierA2'), skill='Amarr Carrier', **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'),
'fighterAbilityEnergyNeutralizerOptimalRange',
src.getModifiedItemAttr('shipBonusCarrierA2'), skill='Amarr Carrier', **kwargs)
class Effect6626(BaseEffect):
"""
shipBonusCarrierC2SupportFighterBonusRange
Used by:
Ship: Chimera
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterSquadronOrbitRange',
src.getModifiedItemAttr('shipBonusCarrierC2'), skill='Caldari Carrier', **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'),
'fighterAbilityECMRangeOptimal', src.getModifiedItemAttr('shipBonusCarrierC2'),
skill='Caldari Carrier', **kwargs)
class Effect6627(BaseEffect):
"""
shipBonusCarrierG2SupportFighterBonusRange
Used by:
Ship: Thanatos
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterSquadronOrbitRange',
src.getModifiedItemAttr('shipBonusCarrierG2'), skill='Gallente Carrier', **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'),
'fighterAbilityWarpDisruptionRange', src.getModifiedItemAttr('shipBonusCarrierG2'),
skill='Gallente Carrier', **kwargs)
class Effect6628(BaseEffect):
"""
shipBonusCarrierM2SupportFighterBonusRange
Used by:
Ship: Nidhoggur
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterSquadronOrbitRange',
src.getModifiedItemAttr('shipBonusCarrierM2'), skill='Minmatar Carrier', **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'),
'fighterAbilityStasisWebifierOptimalRange',
src.getModifiedItemAttr('shipBonusCarrierM2'), skill='Minmatar Carrier', **kwargs)
class Effect6629(BaseEffect):
"""
scriptResistanceBonusBonus
Used by:
Charges named like: Resistance Script (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
src.boostItemAttr('emDamageResistanceBonus', src.getModifiedChargeAttr('emDamageResistanceBonusBonus'), **kwargs)
src.boostItemAttr('explosiveDamageResistanceBonus',
src.getModifiedChargeAttr('explosiveDamageResistanceBonusBonus'), **kwargs)
src.boostItemAttr('kineticDamageResistanceBonus', src.getModifiedChargeAttr('kineticDamageResistanceBonusBonus'), **kwargs)
src.boostItemAttr('thermalDamageResistanceBonus', src.getModifiedChargeAttr('thermalDamageResistanceBonusBonus'), **kwargs)
class Effect6634(BaseEffect):
"""
shipBonusTitanA1DamageBonus
Used by:
Ship: Avatar
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Energy Turret'), 'damageMultiplier',
src.getModifiedItemAttr('shipBonusTitanA1'), skill='Amarr Titan', **kwargs)
class Effect6635(BaseEffect):
"""
shipBonusTitanC1KinDamageBonus
Used by:
Ship: Leviathan
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'kineticDamage',
src.getModifiedItemAttr('shipBonusTitanC1'), skill='Caldari Titan', **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'kineticDamage',
src.getModifiedItemAttr('shipBonusTitanC1'), skill='Caldari Titan', **kwargs)
class Effect6636(BaseEffect):
"""
shipBonusTitanG1DamageBonus
Used by:
Ship: Erebus
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'damageMultiplier',
src.getModifiedItemAttr('shipBonusTitanG1'), skill='Gallente Titan', **kwargs)
class Effect6637(BaseEffect):
"""
shipBonusTitanM1DamageBonus
Used by:
Ship: Azariel
Ship: Ragnarok
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'damageMultiplier',
src.getModifiedItemAttr('shipBonusTitanM1'), skill='Minmatar Titan', **kwargs)
class Effect6638(BaseEffect):
"""
shipBonusTitanC2ROFBonus
Used by:
Variations of ship: Leviathan (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher XL Cruise', 'speed',
src.getModifiedItemAttr('shipBonusTitanC2'), skill='Caldari Titan', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher XL Torpedo', 'speed',
src.getModifiedItemAttr('shipBonusTitanC2'), skill='Caldari Titan', **kwargs)
class Effect6639(BaseEffect):
"""
shipBonusSupercarrierA4FighterApplicationBonus
Used by:
Ship: Revenant
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityMissilesExplosionRadius',
src.getModifiedItemAttr('shipBonusSupercarrierA4'), skill='Amarr Carrier', **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackMissileExplosionRadius',
src.getModifiedItemAttr('shipBonusSupercarrierA4'), skill='Amarr Carrier', **kwargs)
class Effect6640(BaseEffect):
"""
shipBonusRole1NumWarfareLinks
Used by:
Ships from group: Titan (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupOnline',
src.getModifiedItemAttr('shipBonusRole1'), **kwargs)
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupActive',
src.getModifiedItemAttr('shipBonusRole1'), **kwargs)
class Effect6641(BaseEffect):
"""
shipBonusRole2ArmorPlates&ShieldExtendersBonus
Used by:
Ships from group: Titan (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'armorHPBonusAdd',
src.getModifiedItemAttr('shipBonusRole2'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Upgrades'), 'capacityBonus',
src.getModifiedItemAttr('shipBonusRole2'), **kwargs)
class Effect6642(BaseEffect):
"""
skillBonusDoomsdayRapidFiring
Used by:
Skill: Doomsday Rapid Firing
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Doomsday Operation'), 'duration',
src.getModifiedItemAttr('rofBonus') * lvl, **kwargs)
class Effect6647(BaseEffect):
"""
shipBonusTitanA3WarpStrength
Used by:
Variations of ship: Avatar (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusTitanA3'), skill='Amarr Titan', **kwargs)
class Effect6648(BaseEffect):
"""
shipBonusTitanC3WarpStrength
Used by:
Variations of ship: Leviathan (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusTitanC3'), skill='Caldari Titan', **kwargs)
class Effect6649(BaseEffect):
"""
shipBonusTitanG3WarpStrength
Used by:
Ships from group: Titan (4 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusTitanG3'), skill='Gallente Titan', **kwargs)
class Effect6650(BaseEffect):
"""
shipBonusTitanM3WarpStrength
Used by:
Ships from group: Titan (4 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusTitanM3'), skill='Minmatar Titan', **kwargs)
class Effect6651(BaseEffect):
"""
shipModuleAncillaryRemoteArmorRepairer
Used by:
Modules from group: Ancillary Remote Armor Repairer (4 of 4)
"""
runTime = 'late'
type = 'projected', 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowAssistance'):
return
if module.charge and module.charge.name == 'Nanite Repair Paste':
multiplier = 3
else:
multiplier = 1
amount = module.getModifiedItemAttr('armorDamageAmount') * multiplier
amount *= calculateRangeFactor(
srcOptimalRange=module.getModifiedItemAttr('maxRange'),
srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'),
distance=projectionRange)
speed = module.getModifiedItemAttr('duration') / 1000.0
fit._armorRr.append((amount, speed))
fit._armorRrPreSpool.append((amount, speed))
fit._armorRrFullSpool.append((amount, speed))
class Effect6652(BaseEffect):
"""
shipModuleAncillaryRemoteShieldBooster
Used by:
Modules from group: Ancillary Remote Shield Booster (4 of 4)
"""
runTime = 'late'
type = 'projected', 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowAssistance'):
return
amount = module.getModifiedItemAttr('shieldBonus')
amount *= calculateRangeFactor(
srcOptimalRange=module.getModifiedItemAttr('maxRange'),
srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'),
distance=projectionRange)
speed = module.getModifiedItemAttr('duration') / 1000.0
fit._shieldRr.append((amount, speed))
class Effect6653(BaseEffect):
"""
shipBonusTitanA2CapNeed
Used by:
Ship: Avatar
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Energy Turret'), 'capacitorNeed',
src.getModifiedItemAttr('shipBonusTitanA2'), skill='Amarr Titan', **kwargs)
class Effect6654(BaseEffect):
"""
shipBonusTitanG2ROFBonus
Used by:
Variations of ship: Erebus (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'speed',
src.getModifiedItemAttr('shipBonusTitanG2'), skill='Gallente Titan', **kwargs)
class Effect6655(BaseEffect):
"""
shipBonusTitanM2ROFBonus
Used by:
Ship: Azariel
Ship: Ragnarok
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'speed',
src.getModifiedItemAttr('shipBonusTitanM2'), skill='Minmatar Titan', **kwargs)
class Effect6657(BaseEffect):
"""
shipBonusTitanC5AllDamageBonus
Used by:
Ship: Leviathan
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'explosiveDamage',
src.getModifiedItemAttr('shipBonusTitanC5'), skill='Caldari Titan', **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'thermalDamage',
src.getModifiedItemAttr('shipBonusTitanC5'), skill='Caldari Titan', **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'emDamage',
src.getModifiedItemAttr('shipBonusTitanC5'), skill='Caldari Titan', **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'thermalDamage',
src.getModifiedItemAttr('shipBonusTitanC5'), skill='Caldari Titan', **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'emDamage',
src.getModifiedItemAttr('shipBonusTitanC5'), skill='Caldari Titan', **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'explosiveDamage',
src.getModifiedItemAttr('shipBonusTitanC5'), skill='Caldari Titan', **kwargs)
class Effect6658(BaseEffect):
"""
moduleBonusBastionModule
Used by:
Module: Bastion Module I
"""
runTime = 'early'
type = 'active'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
# Resistances
for layer, attrPrefix in (('shield', 'shield'), ('armor', 'armor'), ('hull', '')):
for damageType in ('Kinetic', 'Thermal', 'Explosive', 'Em'):
bonus = '%s%sDamageResonance' % (attrPrefix, damageType)
bonus = '%s%s' % (bonus[0].lower(), bonus[1:])
booster = '%s%sDamageResonance' % (layer, damageType)
penalize = False if layer == 'hull' else True
fit.ship.multiplyItemAttr(bonus, src.getModifiedItemAttr(booster),
stackingPenalties=penalize, penaltyGroup='preMul', **kwargs)
# Turrets
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret') or
mod.item.requiresSkill('Large Hybrid Turret') or
mod.item.requiresSkill('Large Projectile Turret') or
mod.item.requiresSkill('Large Precursor Weapon'),
'maxRange', src.getModifiedItemAttr('maxRangeBonus'),
stackingPenalties=True, **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret') or
mod.item.requiresSkill('Large Hybrid Turret') or
mod.item.requiresSkill('Large Projectile Turret'),
'falloff', src.getModifiedItemAttr('falloffBonus'),
stackingPenalties=True, **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret') or
mod.item.requiresSkill('Large Hybrid Turret') or
mod.item.requiresSkill('Large Projectile Turret') or
mod.item.requiresSkill('Large Precursor Weapon'),
'speed', src.getModifiedItemAttr('bastionTurretROFBonus'),
stackingPenalties=True, penaltyGroup='postPerc', **kwargs)
# Missiles
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes') or
mod.charge.requiresSkill('Cruise Missiles') or
mod.charge.requiresSkill('Heavy Missiles'),
'maxVelocity', src.getModifiedItemAttr('missileVelocityBonus'),
stackingPenalties=True, **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Cruise Missiles') or
mod.item.requiresSkill('Torpedoes') or
mod.item.requiresSkill('Torpedo Specialization') or
mod.item.requiresSkill('Cruise Missile Specialization'),
'speed', src.getModifiedItemAttr('bastionMissileROFBonus'),
stackingPenalties=True, penaltyGroup='postPerc', **kwargs)
# Tanking
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'),
'armorDamageAmount', src.getModifiedItemAttr('armorDamageAmountBonus'),
stackingPenalties=True, **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'),
'shieldBonus', src.getModifiedItemAttr('shieldBoostMultiplier'),
stackingPenalties=True, **kwargs)
for attrName in ('duration', 'capacitorNeed'):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Operation') or mod.item.requiresSkill('Repair Systems'),
attrName, src.getModifiedItemAttr('bastionModeArmorRepairAndShieldBoosterCapDurationBonus'), **kwargs)
# Speed penalty
fit.ship.boostItemAttr('maxVelocity', src.getModifiedItemAttr('speedFactor'), **kwargs)
# new with April 2016 release
for scanType in ('Magnetometric', 'Ladar', 'Gravimetric', 'Radar'):
fit.ship.boostItemAttr('scan{}Strength'.format(scanType),
src.getModifiedItemAttr('scan{}StrengthPercent'.format(scanType)),
stackingPenalties=True, **kwargs)
fit.ship.boostItemAttr('remoteRepairImpedance', src.getModifiedItemAttr('remoteRepairImpedanceBonus'), **kwargs)
fit.ship.boostItemAttr('remoteAssistanceImpedance', src.getModifiedItemAttr('remoteAssistanceImpedanceBonus'), **kwargs)
fit.ship.boostItemAttr('sensorDampenerResistance', src.getModifiedItemAttr('sensorDampenerResistanceBonus'), **kwargs)
# This one was removed from expressions, but somehow MJD is still blocked, so leaving it here
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Micro Jump Drive Operation'),
'activationBlocked', src.getModifiedItemAttr('activationBlockedStrenght'), **kwargs)
fit.ship.boostItemAttr('targetPainterResistance', src.getModifiedItemAttr('targetPainterResistanceBonus'), **kwargs)
fit.ship.boostItemAttr('weaponDisruptionResistance', src.getModifiedItemAttr('weaponDisruptionResistanceBonus'), **kwargs)
fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs)
fit.ship.forceItemAttr('disallowDocking', src.getModifiedItemAttr('disallowDocking'), **kwargs)
fit.ship.forceItemAttr('disallowTethering', src.getModifiedItemAttr('disallowTethering'), **kwargs)
class Effect6660(BaseEffect):
"""
higgsWarpBubbleImmuneRemoval
Used by:
Modules from group: Burst Jammer (11 of 11)
Modules from group: Rig Anchor (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.forceItemAttr('warpBubbleImmune', ship.getModifiedItemAttr('warpBubbleImmuneModifier'), **kwargs)
class Effect6661(BaseEffect):
"""
shipBonusCarrierM3FighterVelocity
Used by:
Ship: Nidhoggur
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'maxVelocity',
src.getModifiedItemAttr('shipBonusCarrierM3'), skill='Minmatar Carrier', **kwargs)
class Effect6662(BaseEffect):
"""
shipBonusCarrierG3FighterHitpoints
Used by:
Ship: Thanatos
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'shieldCapacity',
src.getModifiedItemAttr('shipBonusCarrierG3'), skill='Gallente Carrier', **kwargs)
class Effect6663(BaseEffect):
"""
skillBonusDroneInterfacing
Used by:
Skill: Drone Interfacing
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level if 'skill' in context else 1
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'damageMultiplier',
src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackMissileDamageMultiplier',
src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackTurretDamageMultiplier',
src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityMissilesDamageMultiplier',
src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs)
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Mining Drone Operation'), 'miningDroneAmountPercent',
src.getModifiedItemAttr('miningAmountBonus') * lvl, **kwargs)
class Effect6664(BaseEffect):
"""
skillBonusDroneSharpshooting
Used by:
Implants named like: Black Market 'Valdimar' Drone Sharpshooting DS (3 of 3)
Skill: Drone Sharpshooting
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level if 'skill' in context else 1
fit.drones.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Drones'), 'maxRange',
src.getModifiedItemAttr('rangeSkillBonus') * lvl, **kwargs)
fit.fighters.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesRange',
src.getModifiedItemAttr('rangeSkillBonus') * lvl, **kwargs)
fit.fighters.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretRangeOptimal',
src.getModifiedItemAttr('rangeSkillBonus') * lvl, **kwargs)
fit.fighters.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileRangeOptimal',
src.getModifiedItemAttr('rangeSkillBonus') * lvl, **kwargs)
class Effect6665(BaseEffect):
"""
skillBonusDroneDurability
Used by:
Implants named like: Black Market 'Valdimar' Drone Durability DD (3 of 3)
Implants named like: Halcyon B Booster (5 of 5)
Skill: Drone Durability
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level if 'skill' in context else 1
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'hp',
src.getModifiedItemAttr('hullHpBonus') * lvl, **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'armorHP',
src.getModifiedItemAttr('armorHpBonus') * lvl, **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'shieldCapacity',
src.getModifiedItemAttr('shieldCapacityBonus') * lvl, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'shieldCapacity',
src.getModifiedItemAttr('shieldCapacityBonus') * lvl, **kwargs)
class Effect6667(BaseEffect):
"""
skillBonusDroneNavigation
Used by:
Implants named like: Black Market 'Valdimar' Drone Navigation DN (3 of 3)
Skill: Drone Navigation
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level if 'skill' in context else 1
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'maxVelocity',
src.getModifiedItemAttr('maxVelocityBonus') * lvl, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'maxVelocity',
src.getModifiedItemAttr('maxVelocityBonus') * lvl, **kwargs)
class Effect6669(BaseEffect):
"""
moduleBonusCapitalDroneDurabilityEnhancer
Used by:
Variations of module: Capital Drone Durability Enhancer I (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'armorHP',
src.getModifiedItemAttr('hullHpBonus'), **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'hp',
src.getModifiedItemAttr('hullHpBonus'), **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'shieldCapacity',
src.getModifiedItemAttr('hullHpBonus'), **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'shieldCapacity',
src.getModifiedItemAttr('hullHpBonus'), **kwargs)
fit.ship.boostItemAttr('cpuOutput', src.getModifiedItemAttr('drawback'), **kwargs)
class Effect6670(BaseEffect):
"""
moduleBonusCapitalDroneScopeChip
Used by:
Variations of module: Capital Drone Scope Chip I (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'maxRange',
src.getModifiedItemAttr('rangeSkillBonus'), stackingPenalties=True, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesRange',
src.getModifiedItemAttr('rangeSkillBonus'), stackingPenalties=True, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackTurretRangeOptimal', src.getModifiedItemAttr('rangeSkillBonus'),
stackingPenalties=True, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'),
'fighterAbilityAttackMissileRangeOptimal',
src.getModifiedItemAttr('rangeSkillBonus'), stackingPenalties=True, **kwargs)
fit.ship.boostItemAttr('cpuOutput', src.getModifiedItemAttr('drawback'), **kwargs)
class Effect6671(BaseEffect):
"""
moduleBonusCapitalDroneSpeedAugmentor
Used by:
Variations of module: Capital Drone Speed Augmentor I (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'maxVelocity',
src.getModifiedItemAttr('droneMaxVelocityBonus'), stackingPenalties=True, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'maxVelocity',
src.getModifiedItemAttr('droneMaxVelocityBonus'), stackingPenalties=True, **kwargs)
fit.ship.boostItemAttr('cpuOutput', src.getModifiedItemAttr('drawback'), **kwargs)
class Effect6672(BaseEffect):
"""
structureCombatRigSecurityModification
Used by:
Items from market group: Structure Modifications > Structure Combat Rigs (32 of 34)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
secMap = {
FitSystemSecurity.HISEC: 'hiSecModifier',
FitSystemSecurity.LOWSEC: 'lowSecModifier',
FitSystemSecurity.NULLSEC: 'nullSecModifier',
FitSystemSecurity.WSPACE: 'nullSecModifier'}
fitSec = fit.getSystemSecurity()
attrName = secMap[fitSec]
secModifier = module.getModifiedItemAttr(attrName)
module.multiplyItemAttr('structureRigDoomsdayDamageLossTargetBonus', secModifier, **kwargs)
module.multiplyItemAttr('structureRigScanResBonus', secModifier, **kwargs)
module.multiplyItemAttr('structureRigPDRangeBonus', secModifier, **kwargs)
module.multiplyItemAttr('structureRigPDCapUseBonus', secModifier, **kwargs)
module.multiplyItemAttr('structureRigMissileExploVeloBonus', secModifier, **kwargs)
module.multiplyItemAttr('structureRigMissileVelocityBonus', secModifier, **kwargs)
module.multiplyItemAttr('structureRigEwarOptimalBonus', secModifier, **kwargs)
module.multiplyItemAttr('structureRigEwarFalloffBonus', secModifier, **kwargs)
module.multiplyItemAttr('structureRigEwarCapUseBonus', secModifier, **kwargs)
module.multiplyItemAttr('structureRigMissileExplosionRadiusBonus', secModifier, **kwargs)
module.multiplyItemAttr('structureRigMaxTargetRangeBonus', secModifier, **kwargs)
class Effect6679(BaseEffect):
"""
skillStructureDoomsdayDurationBonus
Used by:
Skill: Structure Doomsday Operation
"""
type = 'passive', 'structure'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Doomsday Weapon',
'duration', src.getModifiedItemAttr('durationBonus'),
skill='Structure Doomsday Operation', **kwargs)
class Effect6681(BaseEffect):
"""
shipBonusRole3NumWarfareLinks
Used by:
Ships from group: Force Auxiliary (6 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupOnline',
src.getModifiedItemAttr('shipBonusRole3'), **kwargs)
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupActive',
src.getModifiedItemAttr('shipBonusRole3'), **kwargs)
class Effect6682(BaseEffect):
"""
structureModuleEffectStasisWebifier
Used by:
Structure Modules from group: Structure Stasis Webifier (2 of 2)
"""
type = 'active', 'projected'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'):
return
speedBoost = module.getModifiedItemAttr('speedFactor')
speedBoost *= calculateRangeFactor(
srcOptimalRange=module.getModifiedItemAttr('maxRange'),
srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'),
distance=projectionRange)
fit.ship.boostItemAttr('maxVelocity', speedBoost, stackingPenalties=True, **kwargs)
class Effect6683(BaseEffect):
"""
structureModuleEffectTargetPainter
Used by:
Variations of structure module: Standup Target Painter I (2 of 2)
"""
type = 'projected', 'active'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'):
return
appliedBoost = container.getModifiedItemAttr('signatureRadiusBonus')
appliedBoost *= calculateRangeFactor(
srcOptimalRange=container.getModifiedItemAttr('maxRange'),
srcFalloffRange=container.getModifiedItemAttr('falloffEffectiveness'),
distance=projectionRange)
fit.ship.boostItemAttr('signatureRadius', appliedBoost, stackingPenalties=True, **kwargs)
class Effect6684(BaseEffect):
"""
structureModuleEffectRemoteSensorDampener
Used by:
Variations of structure module: Standup Remote Sensor Dampener I (2 of 2)
"""
type = 'projected', 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'):
return
rangeFactor = calculateRangeFactor(
srcOptimalRange=module.getModifiedItemAttr('maxRange'),
srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'),
distance=projectionRange)
fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRangeBonus') * rangeFactor,
stackingPenalties=True, **kwargs)
fit.ship.boostItemAttr('scanResolution', module.getModifiedItemAttr('scanResolutionBonus') * rangeFactor,
stackingPenalties=True, **kwargs)
class Effect6685(BaseEffect):
"""
structureModuleEffectECM
Used by:
Structure Modules from group: Structure ECM Battery (3 of 3)
"""
type = 'projected', 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'):
return
strength = module.getModifiedItemAttr('scan{0}StrengthBonus'.format(fit.scanType))
strength *= calculateRangeFactor(
srcOptimalRange=module.getModifiedItemAttr('maxRange'),
srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'),
distance=projectionRange)
if 'effect' in kwargs:
from eos.modifiedAttributeDict import ModifiedAttributeDict
strength *= ModifiedAttributeDict.getResistance(fit, kwargs['effect'])
fit.addProjectedEcm(strength)
class Effect6686(BaseEffect):
"""
structureModuleEffectWeaponDisruption
Used by:
Variations of structure module: Standup Weapon Disruptor I (2 of 2)
"""
type = 'active', 'projected'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'):
return
rangeFactor = calculateRangeFactor(
srcOptimalRange=module.getModifiedItemAttr('maxRange'),
srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'),
distance=projectionRange)
for srcAttr, tgtAttr in (
('aoeCloudSizeBonus', 'aoeCloudSize'),
('aoeVelocityBonus', 'aoeVelocity'),
('missileVelocityBonus', 'maxVelocity'),
('explosionDelayBonus', 'explosionDelay')
):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
tgtAttr, module.getModifiedItemAttr(srcAttr) * rangeFactor,
stackingPenalties=True, **kwargs)
for srcAttr, tgtAttr in (
('trackingSpeedBonus', 'trackingSpeed'),
('maxRangeBonus', 'maxRange'),
('falloffBonus', 'falloff')
):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'),
tgtAttr, module.getModifiedItemAttr(srcAttr) * rangeFactor,
stackingPenalties=True, **kwargs)
class Effect6687(BaseEffect):
"""
npcEntityRemoteArmorRepairer
Used by:
Drones named like: Armor Maintenance Bot (6 of 6)
"""
type = 'projected', 'active'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowAssistance'):
return
if container.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0):
return
bonus = container.getModifiedItemAttr('armorDamageAmount')
duration = container.getModifiedItemAttr('duration') / 1000.0
fit._armorRr.append((bonus, duration))
fit._armorRrPreSpool.append((bonus, duration))
fit._armorRrFullSpool.append((bonus, duration))
class Effect6688(BaseEffect):
"""
npcEntityRemoteShieldBooster
Used by:
Drones named like: Shield Maintenance Bot (6 of 6)
"""
type = 'projected', 'active'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowAssistance'):
return
if container.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0):
return
bonus = container.getModifiedItemAttr('shieldBonus')
duration = container.getModifiedItemAttr('duration') / 1000.0
fit._shieldRr.append((bonus, duration))
class Effect6689(BaseEffect):
"""
npcEntityRemoteHullRepairer
Used by:
Drones named like: Hull Maintenance Bot (6 of 6)
"""
runTime = 'late'
type = 'projected', 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowAssistance'):
return
if module.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0):
return
bonus = module.getModifiedItemAttr('structureDamageAmount')
duration = module.getModifiedItemAttr('duration') / 1000.0
fit._hullRr.append((bonus, duration))
class Effect6690(BaseEffect):
"""
remoteWebifierEntity
Used by:
Drones from group: Stasis Webifying Drone (3 of 3)
"""
type = 'active', 'projected'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'):
return
if module.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0):
return
fit.ship.boostItemAttr('maxVelocity', module.getModifiedItemAttr('speedFactor'),
stackingPenalties=True, **kwargs)
class Effect6691(BaseEffect):
"""
entityEnergyNeutralizerFalloff
Used by:
Drones from group: Energy Neutralizer Drone (3 of 3)
"""
type = 'active', 'projected'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if not ((hasattr(src, 'state') and src.state >= FittingModuleState.ACTIVE) or hasattr(src, 'amountActive')):
return
if src.getModifiedItemAttr('energyNeutralizerRangeOptimal', 0) < (projectionRange or 0):
return
amount = src.getModifiedItemAttr('energyNeutralizerAmount')
if 'effect' in kwargs:
from eos.modifiedAttributeDict import ModifiedAttributeDict
amount *= ModifiedAttributeDict.getResistance(fit, kwargs['effect'])
time = src.getModifiedItemAttr('energyNeutralizerDuration')
fit.addDrain(src, time, amount, 0)
class Effect6692(BaseEffect):
"""
remoteTargetPaintEntity
Used by:
Drones named like: TP (3 of 3)
"""
type = 'projected', 'active'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'):
return
if container.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0):
return
fit.ship.boostItemAttr('signatureRadius', container.getModifiedItemAttr('signatureRadiusBonus'),
stackingPenalties=True, **kwargs)
class Effect6693(BaseEffect):
"""
remoteSensorDampEntity
Used by:
Drones named like: SD (3 of 3)
"""
type = 'projected', 'active'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'):
return
if container.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0):
return
fit.ship.boostItemAttr('maxTargetRange', container.getModifiedItemAttr('maxTargetRangeBonus'),
stackingPenalties=True, **kwargs)
fit.ship.boostItemAttr('scanResolution', container.getModifiedItemAttr('scanResolutionBonus'),
stackingPenalties=True, **kwargs)
class Effect6694(BaseEffect):
"""
npcEntityWeaponDisruptor
Used by:
Drones named like: TD (3 of 3)
"""
type = 'projected', 'active'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'):
return
if container.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0):
return
for srcAttr, tgtAttr in (
('trackingSpeedBonus', 'trackingSpeed'),
('maxRangeBonus', 'maxRange'),
('falloffBonus', 'falloff')
):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'),
tgtAttr, container.getModifiedItemAttr(srcAttr),
stackingPenalties=True, **kwargs)
class Effect6695(BaseEffect):
"""
entityECMFalloff
Used by:
Drones named like: EC (3 of 3)
"""
type = 'projected', 'active'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'):
return
if container.getModifiedItemAttr('ECMRangeOptimal', 0) < (projectionRange or 0):
return
strength = container.getModifiedItemAttr('scan{0}StrengthBonus'.format(fit.scanType))
if 'effect' in kwargs:
from eos.modifiedAttributeDict import ModifiedAttributeDict
strength *= ModifiedAttributeDict.getResistance(fit, kwargs['effect'])
fit.addProjectedEcm(strength)
class Effect6697(BaseEffect):
"""
rigDrawbackReductionArmor
Used by:
Skill: Armor Rigging
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Armor', 'drawback',
src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Resource Processing', 'drawback',
src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs)
class Effect6698(BaseEffect):
"""
rigDrawbackReductionAstronautics
Used by:
Skill: Astronautics Rigging
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Navigation', 'drawback',
src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Anchor', 'drawback',
src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs)
class Effect6699(BaseEffect):
"""
rigDrawbackReductionDrones
Used by:
Skill: Drones Rigging
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Drones', 'drawback',
src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs)
class Effect6700(BaseEffect):
"""
rigDrawbackReductionElectronic
Used by:
Skill: Electronic Superiority Rigging
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Electronic Systems', 'drawback',
src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Scanning', 'drawback',
src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Targeting', 'drawback',
src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs)
class Effect6701(BaseEffect):
"""
rigDrawbackReductionProjectile
Used by:
Skill: Projectile Weapon Rigging
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Projectile Weapon', 'drawback',
src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs)
class Effect6702(BaseEffect):
"""
rigDrawbackReductionEnergyWeapon
Used by:
Skill: Energy Weapon Rigging
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Energy Weapon', 'drawback',
src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs)
class Effect6703(BaseEffect):
"""
rigDrawbackReductionHybrid
Used by:
Skill: Hybrid Weapon Rigging
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Hybrid Weapon', 'drawback',
src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs)
class Effect6704(BaseEffect):
"""
rigDrawbackReductionLauncher
Used by:
Skill: Launcher Rigging
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Launcher', 'drawback',
src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs)
class Effect6705(BaseEffect):
"""
rigDrawbackReductionShield
Used by:
Skill: Shield Rigging
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Shield', 'drawback',
src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs)
class Effect6706(BaseEffect):
"""
setBonusAsklepian
Used by:
Implants named like: grade Asklepian (18 of 18)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Cybernetics'),
'armorRepairBonus', src.getModifiedItemAttr('implantSetSerpentis2'), **kwargs)
class Effect6708(BaseEffect):
"""
armorRepairAmountBonusSubcap
Used by:
Implants named like: grade Asklepian (15 of 18)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'),
'armorDamageAmount', src.getModifiedItemAttr('armorRepairBonus'), **kwargs)
class Effect6709(BaseEffect):
"""
shipBonusRole1CapitalHybridDamageBonus
Used by:
Ship: Vehement
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole1'), **kwargs)
class Effect6710(BaseEffect):
"""
shipBonusDreadnoughtM1WebStrengthBonus
Used by:
Ship: Vehement
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'speedFactor',
src.getModifiedItemAttr('shipBonusDreadnoughtM1'), skill='Minmatar Dreadnought', **kwargs)
class Effect6711(BaseEffect):
"""
shipBonusRole3CapitalHybridDamageBonus
Used by:
Ship: Vanquisher
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'damageMultiplier',
src.getModifiedItemAttr('shipBonusRole3'), **kwargs)
class Effect6712(BaseEffect):
"""
shipBonusTitanM1WebStrengthBonus
Used by:
Ship: Vanquisher
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'speedFactor',
src.getModifiedItemAttr('shipBonusTitanM1'), skill='Minmatar Titan', **kwargs)
class Effect6713(BaseEffect):
"""
shipBonusSupercarrierM1BurstProjectorWebBonus
Used by:
Ship: Vendetta
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation'), 'speedFactor',
src.getModifiedItemAttr('shipBonusSupercarrierM1'), skill='Minmatar Carrier', **kwargs)
class Effect6714(BaseEffect):
"""
ECMBurstJammer
Used by:
Modules from group: Burst Jammer (11 of 11)
"""
type = 'projected', 'active'
runTime = 'late'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'):
return
if module.getModifiedItemAttr('ecmBurstRange', 0) < (projectionRange or 0):
return
strength = module.getModifiedItemAttr('scan{0}StrengthBonus'.format(fit.scanType))
if 'effect' in kwargs:
from eos.modifiedAttributeDict import ModifiedAttributeDict
strength *= ModifiedAttributeDict.getResistance(fit, kwargs['effect'])
fit.addProjectedEcm(strength)
class Effect6720(BaseEffect):
"""
shipBonusDroneRepairMC1
Used by:
Ship: Rabisu
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'shieldBonus',
src.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'structureDamageAmount',
src.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'armorDamageAmount',
src.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs)
class Effect6721(BaseEffect):
"""
eliteBonusLogisticRemoteArmorRepairOptimalFalloff1
Used by:
Ship: Rabisu
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'),
'falloffEffectiveness',
src.getModifiedItemAttr('eliteBonusLogistics1'),
skill='Logistics Cruisers', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'),
'maxRange',
src.getModifiedItemAttr('eliteBonusLogistics1'),
skill='Logistics Cruisers', **kwargs)
class Effect6722(BaseEffect):
"""
roleBonusRemoteArmorRepairOptimalFalloff
Used by:
Ship: Rabisu
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'),
'falloffEffectiveness',
src.getModifiedItemAttr('roleBonusRepairRange'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'),
'maxRange',
src.getModifiedItemAttr('roleBonusRepairRange'), **kwargs)
class Effect6723(BaseEffect):
"""
shipBonusCloakCpuMC2
Used by:
Ship: Rabisu
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Cloaking'), 'cpu',
src.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs)
class Effect6724(BaseEffect):
"""
eliteBonusLogisticRemoteArmorRepairDuration3
Used by:
Ship: Rabisu
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'duration',
src.getModifiedItemAttr('eliteBonusLogistics3'), skill='Logistics Cruisers', **kwargs)
class Effect6725(BaseEffect):
"""
shipBonusSETFalloffAF2
Used by:
Ship: Caedes
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'falloff',
src.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs)
class Effect6726(BaseEffect):
"""
shipBonusCloakCpuMF1
Used by:
Ship: Caedes
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Cloaking'), 'cpu',
src.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs)
class Effect6727(BaseEffect):
"""
eliteBonusCoverOpsNOSNeutFalloff1
Used by:
Ship: Caedes
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Energy Nosferatu', 'Energy Neutralizer'),
'falloffEffectiveness', src.getModifiedItemAttr('eliteBonusCovertOps1'),
stackingPenalties=True, skill='Covert Ops', **kwargs)
class Effect6730(BaseEffect):
"""
moduleBonusMicrowarpdrive
Used by:
Modules from group: Propulsion Module (73 of 147)
"""
runTime = 'late'
type = 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('mass', module.getModifiedItemAttr('massAddition'), **kwargs)
speedBoost = module.getModifiedItemAttr('speedFactor')
mass = fit.ship.getModifiedItemAttr('mass')
thrust = module.getModifiedItemAttr('speedBoostFactor')
# It is actually a postMul, see black hole speed interactions
fit.ship.boostItemAttr('maxVelocity', speedBoost * thrust / mass,
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
fit.ship.boostItemAttr('signatureRadius', module.getModifiedItemAttr('signatureRadiusBonus'),
stackingPenalties=True, **kwargs)
class Effect6731(BaseEffect):
"""
moduleBonusAfterburner
Used by:
Modules from group: Propulsion Module (74 of 147)
"""
runTime = 'late'
type = 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('mass', module.getModifiedItemAttr('massAddition'), **kwargs)
speedBoost = module.getModifiedItemAttr('speedFactor')
mass = fit.ship.getModifiedItemAttr('mass')
thrust = module.getModifiedItemAttr('speedBoostFactor')
# It is actually a postMul, see black hole speed interactions
fit.ship.boostItemAttr('maxVelocity', speedBoost * thrust / mass,
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect6732(BaseEffect):
"""
moduleBonusWarfareLinkArmor
Used by:
Variations of module: Armor Command Burst I (3 of 3)
"""
type = 'active', 'gang'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
for x in range(1, 5):
if module.getModifiedChargeAttr('warfareBuff{}ID'.format(x)):
value = module.getModifiedItemAttr('warfareBuff{}Value'.format(x))
id = module.getModifiedChargeAttr('warfareBuff{}ID'.format(x))
if id:
fit.addCommandBonus(id, value, module, kwargs['effect'])
class Effect6733(BaseEffect):
"""
moduleBonusWarfareLinkShield
Used by:
Variations of module: Shield Command Burst I (3 of 3)
"""
type = 'active', 'gang'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
for x in range(1, 5):
if module.getModifiedChargeAttr('warfareBuff{}ID'.format(x)):
value = module.getModifiedItemAttr('warfareBuff{}Value'.format(x))
id = module.getModifiedChargeAttr('warfareBuff{}ID'.format(x))
if id:
fit.addCommandBonus(id, value, module, kwargs['effect'])
class Effect6734(BaseEffect):
"""
moduleBonusWarfareLinkSkirmish
Used by:
Variations of module: Skirmish Command Burst I (2 of 2)
"""
type = 'active', 'gang'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
for x in range(1, 5):
if module.getModifiedChargeAttr('warfareBuff{}ID'.format(x)):
value = module.getModifiedItemAttr('warfareBuff{}Value'.format(x))
id = module.getModifiedChargeAttr('warfareBuff{}ID'.format(x))
if id:
fit.addCommandBonus(id, value, module, kwargs['effect'])
class Effect6735(BaseEffect):
"""
moduleBonusWarfareLinkInfo
Used by:
Variations of module: Expedition Command Burst I (3 of 3)
Variations of module: Information Command Burst I (2 of 2)
"""
type = 'active', 'gang'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
for x in range(1, 5):
if module.getModifiedChargeAttr('warfareBuff{}ID'.format(x)):
value = module.getModifiedItemAttr('warfareBuff{}Value'.format(x))
id = module.getModifiedChargeAttr('warfareBuff{}ID'.format(x))
if id:
fit.addCommandBonus(id, value, module, kwargs['effect'])
class Effect6736(BaseEffect):
"""
moduleBonusWarfareLinkMining
Used by:
Variations of module: Mining Foreman Burst I (2 of 2)
"""
type = 'active', 'gang'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
for x in range(1, 5):
if module.getModifiedChargeAttr('warfareBuff{}ID'.format(x)):
value = module.getModifiedItemAttr('warfareBuff{}Value'.format(x))
id = module.getModifiedChargeAttr('warfareBuff{}ID'.format(x))
if id:
fit.addCommandBonus(id, value, module, kwargs['effect'])
class Effect6737(BaseEffect):
"""
chargeBonusWarfareCharge
Used by:
Items from market group: Ammunition & Charges > Command Burst Charges (19 of 19)
"""
type = 'offline'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
for x in range(1, 4):
value = module.getModifiedChargeAttr('warfareBuff{}Multiplier'.format(x))
module.multiplyItemAttr('warfareBuff{}Value'.format(x), value, **kwargs)
class Effect6753(BaseEffect):
"""
moduleTitanEffectGenerator
Used by:
Modules from group: Titan Phenomena Generator (4 of 4)
"""
type = 'active', 'gang'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
for x in range(1, 5):
if module.getModifiedItemAttr('warfareBuff{}ID'.format(x)):
value = module.getModifiedItemAttr('warfareBuff{}Value'.format(x))
id = module.getModifiedItemAttr('warfareBuff{}ID'.format(x))
if id:
fit.addCommandBonus(id, value, module, kwargs['effect'])
class Effect6762(BaseEffect):
"""
miningDroneSpecBonus
Used by:
Skill: Mining Drone Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Drone Specialization'), 'miningAmount',
src.getModifiedItemAttr('miningAmountBonus') * lvl, **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Drone Specialization'), 'maxVelocity',
src.getModifiedItemAttr('maxVelocityBonus') * lvl, **kwargs)
class Effect6763(BaseEffect):
"""
iceHarvestingDroneOperationDurationBonus
Used by:
Modules named like: Drone Mining Augmentor (8 of 8)
Skill: Ice Harvesting Drone Operation
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level if 'skill' in context else 1
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Ice Harvesting Drone Operation'), 'duration', src.getModifiedItemAttr('rofBonus') * lvl, **kwargs)
class Effect6764(BaseEffect):
"""
iceHarvestingDroneSpecBonus
Used by:
Skill: Ice Harvesting Drone Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Ice Harvesting Drone Specialization'), 'duration',
src.getModifiedItemAttr('rofBonus') * lvl, **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Ice Harvesting Drone Specialization'),
'maxVelocity', src.getModifiedItemAttr('maxVelocityBonus') * lvl, **kwargs)
class Effect6765(BaseEffect):
"""
spatialPhenomenaGenerationDurationBonus
Used by:
Skill: Spatial Phenomena Generation
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Spatial Phenomena Generation'), 'buffDuration',
src.getModifiedItemAttr('durationBonus') * lvl, **kwargs)
class Effect6766(BaseEffect):
"""
commandProcessorEffect
Used by:
Modules named like: Command Processor I (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupActive',
src.getModifiedItemAttr('maxGangModules'), **kwargs)
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupOnline',
src.getModifiedItemAttr('maxGangModules'), **kwargs)
class Effect6769(BaseEffect):
"""
commandBurstAoEBonus
Used by:
Skill: Fleet Command
Skill: Leadership
Skill: Wing Command
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'maxRange',
src.getModifiedItemAttr('areaOfEffectBonus') * src.level, **kwargs)
class Effect6770(BaseEffect):
"""
armoredCommandDurationBonus
Used by:
Skill: Armored Command
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'buffDuration',
src.getModifiedItemAttr('durationBonus') * lvl, **kwargs)
class Effect6771(BaseEffect):
"""
shieldCommandDurationBonus
Used by:
Skill: Shield Command
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'buffDuration',
src.getModifiedItemAttr('durationBonus') * lvl, **kwargs)
class Effect6772(BaseEffect):
"""
informationCommandDurationBonus
Used by:
Skill: Information Command
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'buffDuration',
src.getModifiedItemAttr('durationBonus') * lvl, **kwargs)
class Effect6773(BaseEffect):
"""
skirmishCommandDurationBonus
Used by:
Skill: Skirmish Command
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'buffDuration',
src.getModifiedItemAttr('durationBonus') * lvl, **kwargs)
class Effect6774(BaseEffect):
"""
miningForemanDurationBonus
Used by:
Skill: Mining Foreman
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'buffDuration',
src.getModifiedItemAttr('durationBonus') * lvl, **kwargs)
class Effect6776(BaseEffect):
"""
armoredCommandStrengthBonus
Used by:
Skill: Armored Command Specialist
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff1Multiplier',
src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff2Multiplier',
src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff4Multiplier',
src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff3Multiplier',
src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs)
class Effect6777(BaseEffect):
"""
shieldCommandStrengthBonus
Used by:
Skill: Shield Command Specialist
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff3Multiplier',
src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff1Multiplier',
src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff2Multiplier',
src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff4Multiplier',
src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs)
class Effect6778(BaseEffect):
"""
informationCommandStrengthBonus
Used by:
Skill: Information Command Specialist
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff2Multiplier',
src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff1Multiplier',
src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff3Multiplier',
src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff4Multiplier',
src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs)
class Effect6779(BaseEffect):
"""
skirmishCommandStrengthBonus
Used by:
Skill: Skirmish Command Specialist
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff3Multiplier',
src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff4Multiplier',
src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff1Multiplier',
src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff2Multiplier',
src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs)
class Effect6780(BaseEffect):
"""
miningForemanStrengthBonus
Used by:
Skill: Mining Director
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff4Value', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff3Value', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff2Value', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff1Value', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs)
class Effect6782(BaseEffect):
"""
commandBurstReloadTimeBonus
Used by:
Skill: Command Burst Specialist
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'),
'reloadTime',
src.getModifiedItemAttr('reloadTimeBonus') * lvl, **kwargs)
class Effect6783(BaseEffect):
"""
commandBurstAoERoleBonus
Used by:
Ships from group: Carrier (4 of 4)
Ships from group: Combat Battlecruiser (21 of 21)
Ships from group: Command Ship (8 of 8)
Ships from group: Force Auxiliary (6 of 6)
Ships from group: Supercarrier (6 of 6)
Ships from group: Titan (8 of 8)
Subsystems named like: Offensive Support Processor (4 of 4)
Ship: Odysseus
Ship: Orca
Ship: Rorqual
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'maxRange',
src.getModifiedItemAttr('roleBonusCommandBurstAoERange'), **kwargs)
class Effect6786(BaseEffect):
"""
shieldCommandBurstBonusICS3
Used by:
Ship: Orca
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff4Value',
src.getModifiedItemAttr('shipBonusICS3'), skill='Industrial Command Ships', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff1Value',
src.getModifiedItemAttr('shipBonusICS3'), skill='Industrial Command Ships', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff2Value',
src.getModifiedItemAttr('shipBonusICS3'), skill='Industrial Command Ships', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff3Value',
src.getModifiedItemAttr('shipBonusICS3'), skill='Industrial Command Ships', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'buffDuration',
src.getModifiedItemAttr('shipBonusICS3'), skill='Industrial Command Ships', **kwargs)
class Effect6789(BaseEffect):
"""
industrialBonusDroneDamage
Used by:
Ships from group: Blockade Runner (5 of 5)
Ships from group: Deep Space Transport (5 of 5)
Ships from group: Hauler (18 of 18)
Ships from group: Industrial Command Ship (2 of 2)
Ship: Hulk
Ship: Mackinaw
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'damageMultiplier',
src.getModifiedItemAttr('industrialBonusDroneDamage'), **kwargs)
class Effect6793(BaseEffect):
"""
miningForemanBurstBonusORECapital2
Used by:
Ship: Rorqual
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff1Value',
src.getModifiedItemAttr('shipBonusORECapital2'), skill='Capital Industrial Ships', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff2Value',
src.getModifiedItemAttr('shipBonusORECapital2'), skill='Capital Industrial Ships', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff4Value',
src.getModifiedItemAttr('shipBonusORECapital2'), skill='Capital Industrial Ships', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff3Value',
src.getModifiedItemAttr('shipBonusORECapital2'), skill='Capital Industrial Ships', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'buffDuration',
src.getModifiedItemAttr('shipBonusORECapital2'), skill='Capital Industrial Ships', **kwargs)
class Effect6794(BaseEffect):
"""
shieldCommandBurstBonusORECapital3
Used by:
Ship: Rorqual
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff4Value',
src.getModifiedItemAttr('shipBonusORECapital3'), skill='Capital Industrial Ships', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'buffDuration',
src.getModifiedItemAttr('shipBonusORECapital3'), skill='Capital Industrial Ships', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff1Value',
src.getModifiedItemAttr('shipBonusORECapital3'), skill='Capital Industrial Ships', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff3Value',
src.getModifiedItemAttr('shipBonusORECapital3'), skill='Capital Industrial Ships', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff2Value',
src.getModifiedItemAttr('shipBonusORECapital3'), skill='Capital Industrial Ships', **kwargs)
class Effect6796(BaseEffect):
"""
shipModeSHTDamagePostDiv
Used by:
Module: Hecate Sharpshooter Mode
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.requiresSkill('Small Hybrid Turret'),
'damageMultiplier',
1 / module.getModifiedItemAttr('modeDamageBonusPostDiv'),
stackingPenalties=True,
penaltyGroup='postDiv', **kwargs)
class Effect6797(BaseEffect):
"""
shipModeSPTDamagePostDiv
Used by:
Module: Svipul Sharpshooter Mode
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.requiresSkill('Small Projectile Turret'),
'damageMultiplier',
1 / module.getModifiedItemAttr('modeDamageBonusPostDiv'),
stackingPenalties=True,
penaltyGroup='postDiv', **kwargs)
class Effect6798(BaseEffect):
"""
shipModeSETDamagePostDiv
Used by:
Module: Confessor Sharpshooter Mode
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.requiresSkill('Small Energy Turret'),
'damageMultiplier',
1 / module.getModifiedItemAttr('modeDamageBonusPostDiv'),
stackingPenalties=True,
penaltyGroup='postDiv', **kwargs)
class Effect6799(BaseEffect):
"""
shipModeSmallMissileDamagePostDiv
Used by:
Module: Jackdaw Sharpshooter Mode
Module: Skua Sharpshooter Mode
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
types = ('thermal', 'em', 'explosive', 'kinetic')
for type in types:
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Rockets') or mod.charge.requiresSkill('Light Missiles'),
'{}Damage'.format(type),
1 / module.getModifiedItemAttr('modeDamageBonusPostDiv'),
stackingPenalties=True,
penaltyGroup='postDiv', **kwargs)
class Effect6800(BaseEffect):
"""
modeDampTDResistsPostDiv
Used by:
Modules named like: Sharpshooter Mode (5 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr('weaponDisruptionResistance', 1 / module.getModifiedItemAttr('modeEwarResistancePostDiv'), **kwargs)
fit.ship.multiplyItemAttr('sensorDampenerResistance', 1 / module.getModifiedItemAttr('modeEwarResistancePostDiv'), **kwargs)
class Effect6801(BaseEffect):
"""
modeMWDandABBoostPostDiv
Used by:
Modules named like: Propulsion Mode (3 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.requiresSkill('High Speed Maneuvering') or mod.item.requiresSkill('Afterburner'),
'speedFactor',
1 / module.getModifiedItemAttr('modeVelocityPostDiv'),
stackingPenalties=True,
penaltyGroup='postDiv', **kwargs)
class Effect6807(BaseEffect):
"""
invulnerabilityCoreDurationBonus
Used by:
Skill: Invulnerability Core Operation
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Invulnerability Core Operation'), 'buffDuration',
src.getModifiedItemAttr('durationBonus') * lvl, **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Invulnerability Core Operation'), 'duration',
src.getModifiedItemAttr('durationBonus') * lvl, **kwargs)
class Effect6844(BaseEffect):
"""
skillMultiplierDefenderMissileVelocity
Used by:
Skill: Defender Missiles
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Defender Missiles'),
'maxVelocity', skill.getModifiedItemAttr('missileVelocityBonus') * skill.level, **kwargs)
class Effect6845(BaseEffect):
"""
shipBonusCommandDestroyerRole1DefenderBonus
Used by:
Ships from group: Command Destroyer (5 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Defender Missiles'),
'moduleReactivationDelay', ship.getModifiedItemAttr('shipBonusRole1'), **kwargs)
class Effect6851(BaseEffect):
"""
shipBonusRole3CapitalEnergyDamageBonus
Used by:
Ship: Chemosh
Ship: Molok
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Energy Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusRole3'), **kwargs)
class Effect6852(BaseEffect):
"""
shipBonusTitanM1WebRangeBonus
Used by:
Ship: Molok
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web',
'maxRange', src.getModifiedItemAttr('shipBonusTitanM1'), skill='Minmatar Titan', **kwargs)
class Effect6853(BaseEffect):
"""
shipBonusTitanA1EnergyWarfareAmountBonus
Used by:
Ship: Molok
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu',
'powerTransferAmount', src.getModifiedItemAttr('shipBonusTitanA1'), skill='Amarr Titan', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer',
'energyNeutralizerAmount', src.getModifiedItemAttr('shipBonusTitanA1'), skill='Amarr Titan', **kwargs)
class Effect6855(BaseEffect):
"""
shipBonusDreadnoughtA1EnergyWarfareAmountBonus
Used by:
Ship: Chemosh
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu',
'powerTransferAmount', src.getModifiedItemAttr('shipBonusDreadnoughtA1'), skill='Amarr Dreadnought', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer',
'energyNeutralizerAmount', src.getModifiedItemAttr('shipBonusDreadnoughtA1'), skill='Amarr Dreadnought', **kwargs)
class Effect6856(BaseEffect):
"""
shipBonusDreadnoughtM1WebRangeBonus
Used by:
Ship: Chemosh
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web',
'maxRange', src.getModifiedItemAttr('shipBonusDreadnoughtM1'), skill='Minmatar Dreadnought', **kwargs)
class Effect6857(BaseEffect):
"""
shipBonusForceAuxiliaryA1NosferatuRangeBonus
Used by:
Ship: Dagon
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu',
'maxRange', src.getModifiedItemAttr('shipBonusForceAuxiliaryA1'), skill='Amarr Carrier', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu',
'falloffEffectiveness', src.getModifiedItemAttr('shipBonusForceAuxiliaryA1'), skill='Amarr Carrier', **kwargs)
class Effect6858(BaseEffect):
"""
shipBonusForceAuxiliaryA1NosferatuDrainAmount
Used by:
Ship: Dagon
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu',
'powerTransferAmount', src.getModifiedItemAttr('shipBonusForceAuxiliaryA1'), skill='Amarr Carrier', **kwargs)
class Effect6859(BaseEffect):
"""
shipBonusRole4NosferatuCPUBonus
Used by:
Ship: Dagon
Ship: Rabisu
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'cpu', src.getModifiedItemAttr('shipBonusRole4'), **kwargs)
class Effect6860(BaseEffect):
"""
shipBonusRole5RemoteArmorRepairPowergridBonus
Used by:
Ships from group: Logistics (3 of 7)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'power',
src.getModifiedItemAttr('shipBonusRole5'), **kwargs)
class Effect6861(BaseEffect):
"""
shipBonusRole5CapitalRemoteArmorRepairPowergridBonus
Used by:
Ship: Dagon
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Remote Armor Repair Systems'), 'power', src.getModifiedItemAttr('shipBonusRole5'), **kwargs)
class Effect6862(BaseEffect):
"""
shipBonusForceAuxiliaryM1RemoteArmorRepairDuration
Used by:
Ship: Dagon
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Remote Armor Repair Systems'),
'duration', src.getModifiedItemAttr('shipBonusForceAuxiliaryM1'), skill='Minmatar Carrier', **kwargs)
class Effect6865(BaseEffect):
"""
eliteBonusCoverOpsWarpVelocity1
Used by:
Ship: Pacifier
Ship: Sidewinder
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('eliteBonusCovertOps1'), skill='Covert Ops', **kwargs)
class Effect6866(BaseEffect):
"""
shipBonusSmallMissileFlightTimeCF1
Used by:
Ship: Pacifier
Ship: Sidewinder
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'),
'explosionDelay', src.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'),
'explosionDelay', src.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs)
class Effect6867(BaseEffect):
"""
shipBonusSPTRoFMF
Used by:
Ship: Pacifier
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'),
'speed', src.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs)
class Effect6871(BaseEffect):
"""
concordSecStatusTankBonus
Used by:
Ship: Enforcer
Ship: Marshal
Ship: Pacifier
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
# Get pilot sec status bonus directly here, instead of going through the intermediary effects
# via https://forums.eveonline.com/default.aspx?g=posts&t=515826
try:
sec_status = ship.owner.getPilotSecurity(low_limit=0, high_limit=5)
except (KeyboardInterrupt, SystemExit):
raise
except:
return
bonus = sec_status * 10
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Repair Systems'),
'armorDamageAmount', bonus, **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Operation'),
'shieldBonus', bonus, **kwargs)
class Effect6872(BaseEffect):
"""
eliteReconStasisWebBonus1
Used by:
Ship: Enforcer
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', src.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships', **kwargs)
class Effect6873(BaseEffect):
"""
eliteBonusReconWarpVelocity3
Used by:
Ship: Cobra
Ship: Enforcer
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('eliteBonusReconShip3'), skill='Recon Ships', **kwargs)
class Effect6874(BaseEffect):
"""
shipBonusMedMissileFlightTimeCC2
Used by:
Ship: Cobra
Ship: Enforcer
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'explosionDelay', src.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'),
'explosionDelay', src.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs)
class Effect6877(BaseEffect):
"""
eliteBonusBlackOpsWarpVelocity1
Used by:
Ship: Marshal
Ship: Python
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('eliteBonusBlackOps1'), stackingPenalties=True, skill='Black Ops', **kwargs)
class Effect6878(BaseEffect):
"""
eliteBonusBlackOpsScramblerRange4
Used by:
Ship: Marshal
Ship: Python
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange',
src.getModifiedItemAttr('eliteBonusBlackOps4'), skill='Black Ops', **kwargs)
class Effect6879(BaseEffect):
"""
eliteBonusBlackOpsWebRange3
Used by:
Ship: Marshal
Ship: Python
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange',
src.getModifiedItemAttr('eliteBonusBlackOps3'), skill='Black Ops', **kwargs)
class Effect6880(BaseEffect):
"""
shipBonusLauncherRoF2CB
Used by:
Ship: Marshal
Ship: Python
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Cruise', 'speed',
src.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Torpedo', 'speed',
src.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rapid Heavy', 'speed',
src.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship', **kwargs)
class Effect6881(BaseEffect):
"""
shipBonusLargeMissileFlightTimeCB1
Used by:
Ship: Marshal
Ship: Python
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'explosionDelay',
src.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'explosionDelay',
src.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs)
class Effect6883(BaseEffect):
"""
shipBonusForceAuxiliaryM2LocalRepairAmount
Used by:
Ship: Dagon
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'),
'armorDamageAmount', src.getModifiedItemAttr('shipBonusForceAuxiliaryM2'), skill='Minmatar Carrier', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Repair Systems'),
'armorDamageAmount', src.getModifiedItemAttr('shipBonusForceAuxiliaryM2'), skill='Minmatar Carrier', **kwargs)
class Effect6894(BaseEffect):
"""
subsystemEnergyNeutFittingReduction
Used by:
Subsystem: Legion Core - Energy Parasitic Complex
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Energy Nosferatu', 'Energy Neutralizer'),
'cpu', src.getModifiedItemAttr('subsystemEnergyNeutFittingReduction'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Energy Nosferatu', 'Energy Neutralizer'),
'power', src.getModifiedItemAttr('subsystemEnergyNeutFittingReduction'), **kwargs)
class Effect6895(BaseEffect):
"""
subsystemMETFittingReduction
Used by:
Subsystem: Legion Offensive - Liquid Crystal Magnifiers
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'),
'cpu', src.getModifiedItemAttr('subsystemMETFittingReduction'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'),
'power', src.getModifiedItemAttr('subsystemMETFittingReduction'), **kwargs)
class Effect6896(BaseEffect):
"""
subsystemMHTFittingReduction
Used by:
Subsystem: Proteus Offensive - Drone Synthesis Projector
Subsystem: Proteus Offensive - Hybrid Encoding Platform
Subsystem: Tengu Offensive - Magnetic Infusion Basin
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'cpu', src.getModifiedItemAttr('subsystemMHTFittingReduction'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'),
'power', src.getModifiedItemAttr('subsystemMHTFittingReduction'), **kwargs)
class Effect6897(BaseEffect):
"""
subsystemMPTFittingReduction
Used by:
Subsystem: Loki Offensive - Projectile Scoping Array
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'),
'power', src.getModifiedItemAttr('subsystemMPTFittingReduction'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'),
'cpu', src.getModifiedItemAttr('subsystemMPTFittingReduction'), **kwargs)
class Effect6898(BaseEffect):
"""
subsystemMRARFittingReduction
Used by:
Subsystems named like: Offensive Support Processor (3 of 4)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'),
'mediumRemoteRepFittingMultiplier', src.getModifiedItemAttr('subsystemMRARFittingReduction'), **kwargs)
class Effect6899(BaseEffect):
"""
subsystemMRSBFittingReduction
Used by:
Subsystem: Loki Offensive - Support Processor
Subsystem: Tengu Offensive - Support Processor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Emission Systems'),
'mediumRemoteRepFittingMultiplier', src.getModifiedItemAttr('subsystemMRSBFittingReduction'), **kwargs)
class Effect6900(BaseEffect):
"""
subsystemMMissileFittingReduction
Used by:
Subsystem: Legion Offensive - Assault Optimization
Subsystem: Loki Offensive - Launcher Efficiency Configuration
Subsystem: Tengu Offensive - Accelerated Ejection Bay
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
groups = ('Missile Launcher Heavy', 'Missile Launcher Rapid Light', 'Missile Launcher Heavy Assault')
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups,
'cpu', src.getModifiedItemAttr('subsystemMMissileFittingReduction'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups,
'power', src.getModifiedItemAttr('subsystemMMissileFittingReduction'), **kwargs)
class Effect6908(BaseEffect):
"""
shipBonusStrategicCruiserCaldariNaniteRepairTime2
Used by:
Ship: Tengu
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: True, 'moduleRepairRate',
ship.getModifiedItemAttr('shipBonusStrategicCruiserCaldari2'),
skill='Caldari Strategic Cruiser', **kwargs)
class Effect6909(BaseEffect):
"""
shipBonusStrategicCruiserAmarrNaniteRepairTime2
Used by:
Ship: Legion
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: True, 'moduleRepairRate',
ship.getModifiedItemAttr('shipBonusStrategicCruiserAmarr2'),
skill='Amarr Strategic Cruiser', **kwargs)
class Effect6910(BaseEffect):
"""
shipBonusStrategicCruiserGallenteNaniteRepairTime2
Used by:
Ship: Proteus
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: True, 'moduleRepairRate',
ship.getModifiedItemAttr('shipBonusStrategicCruiserGallente2'),
skill='Gallente Strategic Cruiser', **kwargs)
class Effect6911(BaseEffect):
"""
shipBonusStrategicCruiserMinmatarNaniteRepairTime2
Used by:
Ship: Loki
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: True, 'moduleRepairRate',
ship.getModifiedItemAttr('shipBonusStrategicCruiserMinmatar2'),
skill='Minmatar Strategic Cruiser', **kwargs)
class Effect6920(BaseEffect):
"""
structureHPBonusAddPassive
Used by:
Subsystems named like: Defensive Covert Reconfiguration (4 of 4)
Subsystem: Loki Defensive - Adaptive Defense Node
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('hp', module.getModifiedItemAttr('structureHPBonusAdd') or 0, **kwargs)
class Effect6921(BaseEffect):
"""
subSystemBonusAmarrDefensive2ScanProbeStrength
Used by:
Subsystem: Legion Defensive - Covert Reconfiguration
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'),
'baseSensorStrength', src.getModifiedItemAttr('subsystemBonusAmarrDefensive2'),
skill='Amarr Defensive Systems', **kwargs)
class Effect6923(BaseEffect):
"""
subsystemBonusMinmatarOffensive1HMLHAMVelo
Used by:
Subsystem: Loki Offensive - Launcher Efficiency Configuration
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles') or mod.charge.requiresSkill('Heavy Assault Missiles'),
'maxVelocity', container.getModifiedItemAttr('subsystemBonusMinmatarOffensive'),
skill='Minmatar Offensive Systems', **kwargs)
class Effect6924(BaseEffect):
"""
subsystemBonusMinmatarOffensive3MissileExpVelo
Used by:
Subsystem: Loki Offensive - Launcher Efficiency Configuration
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'aoeVelocity', container.getModifiedItemAttr('subsystemBonusMinmatarOffensive3'),
skill='Minmatar Offensive Systems', **kwargs)
class Effect6925(BaseEffect):
"""
subsystemBonusGallenteOffensive2DroneVeloTracking
Used by:
Subsystem: Proteus Offensive - Drone Synthesis Projector
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'),
'maxVelocity', src.getModifiedItemAttr('subsystemBonusGallenteOffensive2'),
skill='Gallente Offensive Systems', **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'),
'trackingSpeed', src.getModifiedItemAttr('subsystemBonusGallenteOffensive2'),
skill='Gallente Offensive Systems', **kwargs)
class Effect6926(BaseEffect):
"""
subsystemBonusAmarrPropulsionWarpCapacitor
Used by:
Subsystem: Legion Propulsion - Interdiction Nullifier
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('warpCapacitorNeed', src.getModifiedItemAttr('subsystemBonusAmarrPropulsion'), skill='Amarr Propulsion Systems', **kwargs)
class Effect6927(BaseEffect):
"""
subsystemBonusMinmatarPropulsionWarpCapacitor
Used by:
Subsystem: Loki Propulsion - Interdiction Nullifier
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('warpCapacitorNeed', src.getModifiedItemAttr('subsystemBonusMinmatarPropulsion'),
skill='Minmatar Propulsion Systems', **kwargs)
class Effect6928(BaseEffect):
"""
subsystemBonusCaldariPropulsion2PropModHeatBenefit
Used by:
Subsystem: Tengu Propulsion - Fuel Catalyst
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner') or mod.item.requiresSkill('High Speed Maneuvering'),
'overloadSpeedFactorBonus', src.getModifiedItemAttr('subsystemBonusCaldariPropulsion2'),
skill='Caldari Propulsion Systems', **kwargs)
class Effect6929(BaseEffect):
"""
subsystemBonusGallentePropulsion2PropModHeatBenefit
Used by:
Subsystem: Proteus Propulsion - Localized Injectors
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner') or mod.item.requiresSkill('High Speed Maneuvering'),
'overloadSpeedFactorBonus', src.getModifiedItemAttr('subsystemBonusGallentePropulsion2'),
skill='Gallente Propulsion Systems', **kwargs)
class Effect6930(BaseEffect):
"""
subsystemBonusAmarrCore2EnergyResistance
Used by:
Subsystem: Legion Core - Augmented Antimatter Reactor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('energyWarfareResistance', src.getModifiedItemAttr('subsystemBonusAmarrCore2'), skill='Amarr Core Systems', **kwargs)
class Effect6931(BaseEffect):
"""
subsystemBonusMinmatarCore2EnergyResistance
Used by:
Subsystem: Loki Core - Augmented Nuclear Reactor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('energyWarfareResistance', src.getModifiedItemAttr('subsystemBonusMinmatarCore2'),
skill='Minmatar Core Systems', **kwargs)
class Effect6932(BaseEffect):
"""
subsystemBonusGallenteCore2EnergyResistance
Used by:
Subsystem: Proteus Core - Augmented Fusion Reactor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('energyWarfareResistance', src.getModifiedItemAttr('subsystemBonusGallenteCore2'),
skill='Gallente Core Systems', **kwargs)
class Effect6933(BaseEffect):
"""
subsystemBonusCaldariCore2EnergyResistance
Used by:
Subsystem: Tengu Core - Augmented Graviton Reactor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('energyWarfareResistance', src.getModifiedItemAttr('subsystemBonusCaldariCore2'),
skill='Caldari Core Systems', **kwargs)
class Effect6934(BaseEffect):
"""
shipMaxLockedTargetsBonusAddPassive
Used by:
Subsystems named like: Core Dissolution Sequencer (2 of 2)
Subsystems named like: Core Electronic Efficiency Gate (2 of 2)
Subsystems named like: Offensive Support Processor (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('maxLockedTargets', src.getModifiedItemAttr('maxLockedTargetsBonus'), **kwargs)
class Effect6935(BaseEffect):
"""
subsystemBonusAmarrCore3EnergyWarHeatBonus
Used by:
Subsystem: Legion Core - Energy Parasitic Complex
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Energy Nosferatu', 'Energy Neutralizer'), 'overloadSelfDurationBonus',
src.getModifiedItemAttr('subsystemBonusAmarrCore3'), skill='Amarr Core Systems', **kwargs)
class Effect6936(BaseEffect):
"""
subsystemBonusMinmatarCore3StasisWebHeatBonus
Used by:
Subsystem: Loki Core - Immobility Drivers
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web',
'overloadRangeBonus', src.getModifiedItemAttr('subsystemBonusMinmatarCore3'),
skill='Minmatar Core Systems', **kwargs)
class Effect6937(BaseEffect):
"""
subsystemBonusGallenteCore3WarpScramHeatBonus
Used by:
Subsystem: Proteus Core - Friction Extension Processor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'overloadRangeBonus',
src.getModifiedItemAttr('subsystemBonusGallenteCore3'), skill='Gallente Core Systems', **kwargs)
class Effect6938(BaseEffect):
"""
subsystemBonusCaldariCore3ECMHeatBonus
Used by:
Subsystem: Tengu Core - Obfuscation Manifold
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'overloadECMStrengthBonus',
src.getModifiedItemAttr('subsystemBonusCaldariCore3'), skill='Caldari Core Systems', **kwargs)
class Effect6939(BaseEffect):
"""
subsystemBonusAmarrDefensive2HardenerHeat
Used by:
Subsystem: Legion Defensive - Augmented Plating
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'overloadSelfDurationBonus',
src.getModifiedItemAttr('subsystemBonusAmarrDefensive2'), skill='Amarr Defensive Systems', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'overloadHardeningBonus',
src.getModifiedItemAttr('subsystemBonusAmarrDefensive2'), skill='Amarr Defensive Systems', **kwargs)
class Effect6940(BaseEffect):
"""
subsystemBonusGallenteDefensive2HardenerHeat
Used by:
Subsystem: Proteus Defensive - Augmented Plating
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'overloadHardeningBonus',
src.getModifiedItemAttr('subsystemBonusGallenteDefensive2'), skill='Gallente Defensive Systems', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'overloadSelfDurationBonus',
src.getModifiedItemAttr('subsystemBonusGallenteDefensive2'), skill='Gallente Defensive Systems', **kwargs)
class Effect6941(BaseEffect):
"""
subsystemBonusCaldariDefensive2HardenerHeat
Used by:
Subsystem: Tengu Defensive - Supplemental Screening
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Tactical Shield Manipulation'),
'overloadHardeningBonus', src.getModifiedItemAttr('subsystemBonusCaldariDefensive2'),
skill='Caldari Defensive Systems', **kwargs)
class Effect6942(BaseEffect):
"""
subsystemBonusMinmatarDefensive2HardenerHeat
Used by:
Subsystem: Loki Defensive - Augmented Durability
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'overloadSelfDurationBonus',
src.getModifiedItemAttr('subsystemBonusMinmatarDefensive2'), skill='Minmatar Defensive Systems', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'overloadHardeningBonus',
src.getModifiedItemAttr('subsystemBonusMinmatarDefensive2'), skill='Minmatar Defensive Systems', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Tactical Shield Manipulation'), 'overloadHardeningBonus',
src.getModifiedItemAttr('subsystemBonusMinmatarDefensive2'), skill='Minmatar Defensive Systems', **kwargs)
class Effect6943(BaseEffect):
"""
subsystemBonusAmarrDefensive3ArmorRepHeat
Used by:
Subsystem: Legion Defensive - Covert Reconfiguration
Subsystem: Legion Defensive - Nanobot Injector
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'),
'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusAmarrDefensive3'),
skill='Amarr Defensive Systems', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'),
'overloadArmorDamageAmount', src.getModifiedItemAttr('subsystemBonusAmarrDefensive3'),
skill='Amarr Defensive Systems', **kwargs)
class Effect6944(BaseEffect):
"""
subsystemBonusGallenteDefensive3ArmorRepHeat
Used by:
Subsystem: Proteus Defensive - Covert Reconfiguration
Subsystem: Proteus Defensive - Nanobot Injector
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'),
'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusGallenteDefensive3'),
skill='Gallente Defensive Systems', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'),
'overloadArmorDamageAmount', src.getModifiedItemAttr('subsystemBonusGallenteDefensive3'),
skill='Gallente Defensive Systems', **kwargs)
class Effect6945(BaseEffect):
"""
subsystemBonusCaldariDefensive3ShieldBoostHeat
Used by:
Subsystem: Tengu Defensive - Amplification Node
Subsystem: Tengu Defensive - Covert Reconfiguration
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'),
'overloadShieldBonus', src.getModifiedItemAttr('subsystemBonusCaldariDefensive3'),
skill='Caldari Defensive Systems', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'),
'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusCaldariDefensive3'),
skill='Caldari Defensive Systems', **kwargs)
class Effect6946(BaseEffect):
"""
subsystemBonusMinmatarDefensive3LocalRepHeat
Used by:
Subsystem: Loki Defensive - Adaptive Defense Node
Subsystem: Loki Defensive - Covert Reconfiguration
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'),
'overloadArmorDamageAmount', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive3'),
skill='Minmatar Defensive Systems', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'),
'overloadShieldBonus', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive3'),
skill='Minmatar Defensive Systems', **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems') or mod.item.requiresSkill('Shield Operation'),
'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive3'),
skill='Minmatar Defensive Systems', **kwargs)
class Effect6947(BaseEffect):
"""
subSystemBonusCaldariDefensive2ScanProbeStrength
Used by:
Subsystem: Tengu Defensive - Covert Reconfiguration
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'),
'baseSensorStrength', src.getModifiedItemAttr('subsystemBonusCaldariDefensive2'),
skill='Caldari Defensive Systems', **kwargs)
class Effect6949(BaseEffect):
"""
subSystemBonusGallenteDefensive2ScanProbeStrength
Used by:
Subsystem: Proteus Defensive - Covert Reconfiguration
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength',
src.getModifiedItemAttr('subsystemBonusGallenteDefensive2'), skill='Gallente Defensive Systems', **kwargs)
class Effect6951(BaseEffect):
"""
subSystemBonusMinmatarDefensive2ScanProbeStrength
Used by:
Subsystem: Loki Defensive - Covert Reconfiguration
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength',
src.getModifiedItemAttr('subsystemBonusMinmatarDefensive2'), skill='Minmatar Defensive Systems', **kwargs)
class Effect6953(BaseEffect):
"""
mediumRemoteRepFittingAdjustment
Used by:
Variations of module: Medium Remote Armor Repairer I (14 of 14)
Variations of module: Medium Remote Shield Booster I (13 of 13)
Module: Medium Ancillary Remote Armor Repairer
Module: Medium Ancillary Remote Shield Booster
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.multiplyItemAttr('power', module.getModifiedItemAttr('mediumRemoteRepFittingMultiplier'), **kwargs)
module.multiplyItemAttr('cpu', module.getModifiedItemAttr('mediumRemoteRepFittingMultiplier'), **kwargs)
class Effect6954(BaseEffect):
"""
subsystemBonusCommandBurstFittingReduction
Used by:
Subsystems named like: Offensive Support Processor (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'power',
src.getModifiedItemAttr('subsystemCommandBurstFittingReduction'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'cpu',
src.getModifiedItemAttr('subsystemCommandBurstFittingReduction'), **kwargs)
class Effect6955(BaseEffect):
"""
subsystemRemoteShieldBoostFalloffBonus
Used by:
Subsystem: Loki Offensive - Support Processor
Subsystem: Tengu Offensive - Support Processor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Remote Shield Booster', 'Ancillary Remote Shield Booster'),
'falloffEffectiveness', src.getModifiedItemAttr('remoteShieldBoosterFalloffBonus'), **kwargs)
class Effect6956(BaseEffect):
"""
subsystemRemoteArmorRepairerOptimalBonus
Used by:
Subsystems named like: Offensive Support Processor (3 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Remote Armor Repairer', 'Ancillary Remote Armor Repairer'),
'maxRange', src.getModifiedItemAttr('remoteArmorRepairerOptimalBonus'), **kwargs)
class Effect6957(BaseEffect):
"""
subsystemRemoteArmorRepairerFalloffBonus
Used by:
Subsystems named like: Offensive Support Processor (3 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Remote Armor Repairer', 'Ancillary Remote Armor Repairer'),
'falloffEffectiveness', src.getModifiedItemAttr('remoteArmorRepairerFalloffBonus'), **kwargs)
class Effect6958(BaseEffect):
"""
subsystemBonusAmarrOffensive3RemoteArmorRepairHeat
Used by:
Subsystem: Legion Offensive - Support Processor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for attr in ('overloadSelfDurationBonus', 'overloadArmorDamageAmount'):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), attr,
src.getModifiedItemAttr('subsystemBonusAmarrOffensive3'), skill='Amarr Offensive Systems', **kwargs)
class Effect6959(BaseEffect):
"""
subsystemBonusGallenteOffensive3RemoteArmorRepairHeat
Used by:
Subsystem: Proteus Offensive - Support Processor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for attr in ('overloadSelfDurationBonus', 'overloadArmorDamageAmount'):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), attr,
src.getModifiedItemAttr('subsystemBonusGallenteOffensive3'), skill='Gallente Offensive Systems', **kwargs)
class Effect6960(BaseEffect):
"""
subsystemBonusCaldariOffensive3RemoteShieldBoosterHeat
Used by:
Subsystem: Tengu Offensive - Support Processor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for attr in ('overloadSelfDurationBonus', 'overloadShieldBonus'):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Emission Systems'), attr,
src.getModifiedItemAttr('subsystemBonusCaldariOffensive3'), skill='Caldari Offensive Systems', **kwargs)
class Effect6961(BaseEffect):
"""
subsystemBonusMinmatarOffensive3RemoteRepHeat
Used by:
Subsystem: Loki Offensive - Support Processor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Emission Systems') or mod.item.requiresSkill('Remote Armor Repair Systems'),
'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusMinmatarOffensive3'),
skill='Minmatar Offensive Systems', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'overloadShieldBonus',
src.getModifiedItemAttr('subsystemBonusMinmatarOffensive3'), skill='Minmatar Offensive Systems', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'overloadArmorDamageAmount',
src.getModifiedItemAttr('subsystemBonusMinmatarOffensive3'), skill='Minmatar Offensive Systems', **kwargs)
class Effect6962(BaseEffect):
"""
subsystemBonusAmarrPropulsion2WarpSpeed
Used by:
Subsystem: Legion Propulsion - Interdiction Nullifier
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('subsystemBonusAmarrPropulsion2'),
skill='Amarr Propulsion Systems', **kwargs)
class Effect6963(BaseEffect):
"""
subsystemBonusMinmatarPropulsion2WarpSpeed
Used by:
Subsystem: Loki Propulsion - Interdiction Nullifier
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('subsystemBonusMinmatarPropulsion2'),
skill='Minmatar Propulsion Systems', **kwargs)
class Effect6964(BaseEffect):
"""
subsystemBonusGallentePropulsionWarpSpeed
Used by:
Subsystem: Proteus Propulsion - Hyperspatial Optimization
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('baseWarpSpeed', module.getModifiedItemAttr('subsystemBonusGallentePropulsion'),
skill='Gallente Propulsion Systems', **kwargs)
class Effect6965(BaseEffect):
"""
surveyProbeExplosionDelayOnline
Used by:
Module: Survey Probe Launcher II
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Survey'), 'explosionDelay',
container.getModifiedItemAttr('surveyProbeDurationBonus'), **kwargs)
class Effect6981(BaseEffect):
"""
shipBonusTitanG1KinThermDamageBonus
Used by:
Ship: Komodo
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Torpedoes'), 'thermalDamage',
src.getModifiedItemAttr('shipBonusTitanG1'), skill='Gallente Titan', **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Torpedoes'), 'kineticDamage',
src.getModifiedItemAttr('shipBonusTitanG1'), skill='Gallente Titan', **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Cruise Missiles'), 'thermalDamage',
src.getModifiedItemAttr('shipBonusTitanG1'), skill='Gallente Titan', **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Cruise Missiles'), 'kineticDamage',
src.getModifiedItemAttr('shipBonusTitanG1'), skill='Gallente Titan', **kwargs)
class Effect6982(BaseEffect):
"""
shipBonusTitanG2EMExplosiveDamageBonus
Used by:
Ship: Komodo
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Torpedoes'), 'emDamage',
src.getModifiedItemAttr('shipBonusTitanG2'), skill='Gallente Titan', **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Torpedoes'), 'explosiveDamage',
src.getModifiedItemAttr('shipBonusTitanG2'), skill='Gallente Titan', **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Cruise Missiles'), 'emDamage',
src.getModifiedItemAttr('shipBonusTitanG2'), skill='Gallente Titan', **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Cruise Missiles'), 'explosiveDamage',
src.getModifiedItemAttr('shipBonusTitanG2'), skill='Gallente Titan', **kwargs)
class Effect6983(BaseEffect):
"""
shipBonusTitanC1ShieldResists
Used by:
Ship: Komodo
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('shipBonusTitanC1'), skill='Caldari Titan', **kwargs)
fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('shipBonusTitanC1'), skill='Caldari Titan', **kwargs)
fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusTitanC1'), skill='Caldari Titan', **kwargs)
fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('shipBonusTitanC1'), skill='Caldari Titan', **kwargs)
class Effect6984(BaseEffect):
"""
shipBonusRole4FighterDamageAndHitpoints
Used by:
Ship: Caiman
Ship: Komodo
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'shieldCapacity',
src.getModifiedItemAttr('shipBonusRole4'), **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDamageMultiplier',
src.getModifiedItemAttr('shipBonusRole4'), **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDamageMultiplier',
src.getModifiedItemAttr('shipBonusRole4'), **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDamageMultiplier',
src.getModifiedItemAttr('shipBonusRole4'), **kwargs)
class Effect6985(BaseEffect):
"""
shipBonusDreadnoughtG1KinThermDamageBonus
Used by:
Ship: Caiman
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Torpedoes'), 'kineticDamage',
src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Torpedoes'), 'thermalDamage',
src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Torpedoes'), 'kineticDamage',
src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Torpedoes'), 'thermalDamage',
src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Cruise Missiles'), 'thermalDamage',
src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Cruise Missiles'), 'kineticDamage',
src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs)
class Effect6986(BaseEffect):
"""
shipBonusForceAuxiliaryG1RemoteShieldBoostAmount
Used by:
Ship: Loggerhead
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Emission Systems'), 'shieldBonus',
src.getModifiedItemAttr('shipBonusForceAuxiliaryG1'), skill='Gallente Carrier', **kwargs)
class Effect6987(BaseEffect):
"""
shipBonusRole2LogisticDroneRepAmountAndHitpointBonus
Used by:
Ship: Loggerhead
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'),
'structureDamageAmount', src.getModifiedItemAttr('shipBonusRole2'), **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'),
'shieldBonus', src.getModifiedItemAttr('shipBonusRole2'), **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'),
'armorDamageAmount', src.getModifiedItemAttr('shipBonusRole2'), **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'),
'armorHP', src.getModifiedItemAttr('shipBonusRole2'), **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'),
'shieldCapacity', src.getModifiedItemAttr('shipBonusRole2'), **kwargs)
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'),
'hp', src.getModifiedItemAttr('shipBonusRole2'), **kwargs)
class Effect6992(BaseEffect):
"""
roleBonusMHTDamage1
Used by:
Ship: Victor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusRole1'), **kwargs)
class Effect6993(BaseEffect):
"""
roleBonus2BoosterPenaltyReduction
Used by:
Ship: Victor
Ship: Virtuoso
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterMissileAOECloudPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs)
fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterCapacitorCapacityPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs)
fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterAOEVelocityPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs)
fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterArmorRepairAmountPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs)
fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterMissileVelocityPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs)
fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterTurretTrackingPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs)
fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterShieldCapacityPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs)
fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterTurretOptimalRangePenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs)
fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterShieldBoostAmountPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs)
fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterTurretFalloffPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs)
fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterArmorHPPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs)
fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterMaxVelocityPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs)
class Effect6994(BaseEffect):
"""
eliteReconBonusMHTDamage1
Used by:
Ship: Victor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier',
src.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships', **kwargs)
class Effect6995(BaseEffect):
"""
targetDisintegratorAttack
Used by:
Modules from group: Precursor Weapon (19 of 19)
"""
dealsDamage = True
type = 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
# Set reload time to 1 second
module.reloadTime = 1000
class Effect6996(BaseEffect):
"""
eliteReconBonusArmorRepAmount3
Used by:
Ship: Victor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount',
src.getModifiedItemAttr('eliteBonusReconShip3'), skill='Recon Ships', **kwargs)
class Effect6997(BaseEffect):
"""
eliteCovertOpsBonusArmorRepAmount4
Used by:
Ship: Virtuoso
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount',
src.getModifiedItemAttr('eliteBonusCovertOps4'), skill='Covert Ops', **kwargs)
class Effect6999(BaseEffect):
"""
covertOpsStealthBomberSiegeMissileLauncherCPUNeedBonus
Used by:
Ship: Virtuoso
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Missile Launcher Torpedo',
'cpu', ship.getModifiedItemAttr('stealthBomberLauncherCPU'), **kwargs)
class Effect7000(BaseEffect):
"""
shipBonusSHTFalloffGF1
Used by:
Ship: Virtuoso
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'falloff',
src.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs)
class Effect7001(BaseEffect):
"""
roleBonusTorpRoF1
Used by:
Ship: Virtuoso
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Torpedo', 'speed', src.getModifiedItemAttr('shipBonusRole1'), **kwargs)
class Effect7002(BaseEffect):
"""
roleBonusBombLauncherPWGCPU3
Used by:
Ship: Virtuoso
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Bomb Deployment'), 'power', src.getModifiedItemAttr('shipBonusRole3'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Bomb Deployment'), 'cpu', src.getModifiedItemAttr('shipBonusRole3'), **kwargs)
class Effect7003(BaseEffect):
"""
eliteBonusCovertOpsSHTDamage3
Used by:
Ship: Virtuoso
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier',
src.getModifiedItemAttr('eliteBonusCovertOps3'), skill='Covert Ops', **kwargs)
class Effect7008(BaseEffect):
"""
structureFullPowerStateHitpointModifier
Used by:
Items from category: Structure (18 of 18)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr('shieldCapacity', src.getModifiedItemAttr('structureFullPowerStateHitpointMultiplier') or 0, **kwargs)
fit.ship.multiplyItemAttr('armorHP', src.getModifiedItemAttr('structureFullPowerStateHitpointMultiplier') or 0, **kwargs)
class Effect7009(BaseEffect):
"""
serviceModuleFullPowerHitpointPostAssign
Used by:
Structure Modules from group: Structure Citadel Service Module (2 of 2)
Structure Modules from group: Structure Engineering Service Module (6 of 6)
Structure Modules from group: Structure FLEX Service Module (4 of 4)
Structure Modules from group: Structure Resource Processing Service Module (4 of 4)
Structure Module: Standup Moon Drill I
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.forceItemAttr('structureFullPowerStateHitpointMultiplier', src.getModifiedItemAttr('serviceModuleFullPowerStateHitpointMultiplier'), **kwargs)
class Effect7012(BaseEffect):
"""
moduleBonusAssaultDamageControl
Used by:
Variations of module: Assault Damage Control I (6 of 6)
Module: Abyssal Assault Damage Control
"""
runTime = 'early'
type = 'active'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for layer, attrPrefix in (('shield', 'shield'), ('armor', 'armor'), ('hull', '')):
for damageType in ('Kinetic', 'Thermal', 'Explosive', 'Em'):
booster = '%s%sDamageResonance' % (layer, damageType)
src.forceItemAttr(booster, src.getModifiedItemAttr('resistanceMultiplier'), **kwargs)
class Effect7013(BaseEffect):
"""
eliteBonusGunshipKineticMissileDamage1
Used by:
Ship: Jaguar
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage',
src.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs)
class Effect7014(BaseEffect):
"""
eliteBonusGunshipThermalMissileDamage1
Used by:
Ship: Jaguar
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage',
src.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs)
class Effect7015(BaseEffect):
"""
eliteBonusGunshipEMMissileDamage1
Used by:
Ship: Jaguar
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'emDamage',
src.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs)
class Effect7016(BaseEffect):
"""
eliteBonusGunshipExplosiveMissileDamage1
Used by:
Ship: Jaguar
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosiveDamage',
src.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs)
class Effect7017(BaseEffect):
"""
eliteBonusGunshipExplosionVelocity2
Used by:
Ship: Geri
Ship: Jaguar
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeVelocity',
src.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates', **kwargs)
class Effect7018(BaseEffect):
"""
shipSETROFAF
Used by:
Ship: Retribution
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'speed',
src.getModifiedItemAttr('shipBonusAF'), stackingPenalties=False, skill='Amarr Frigate', **kwargs)
class Effect7020(BaseEffect):
"""
remoteWebifierMaxRangeBonus
Used by:
Implants named like: Inquest 'Eros' Stasis Webifier MR (3 of 3)
Implants named like: Inquest 'Hedone' Entanglement Optimizer WS (3 of 3)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange',
src.getModifiedItemAttr('stasisWebRangeBonus'), stackingPenalties=False, **kwargs)
class Effect7021(BaseEffect):
"""
structureRigMaxTargetRange
Used by:
Structure Modules from group: Structure Combat Rig L - Max Targets and Sensor Boosting (2 of 2)
Structure Modules from group: Structure Combat Rig M - Boosted Sensors (2 of 2)
Structure Modules from group: Structure Combat Rig XL - Doomsday and Targeting (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('structureRigMaxTargetRangeBonus'), **kwargs)
class Effect7026(BaseEffect):
"""
scriptStandupWarpScram
Used by:
Charge: Standup Focused Warp Scrambling Script
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
src.boostItemAttr('maxRange', src.getModifiedChargeAttr('warpScrambleRangeBonus'), **kwargs)
src.forceItemAttr('activationBlockedStrenght', src.getModifiedChargeAttr('activationBlockedStrenght'), **kwargs)
class Effect7027(BaseEffect):
"""
structureCapacitorCapacityBonus
Used by:
Structure Modules from group: Structure Capacitor Battery (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('capacitorCapacity', ship.getModifiedItemAttr('capacitorBonus'), **kwargs)
class Effect7028(BaseEffect):
"""
structureModifyPowerRechargeRate
Used by:
Structure Modules from group: Structure Capacitor Power Relay (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr('rechargeRate', module.getModifiedItemAttr('capacitorRechargeRateMultiplier'), **kwargs)
class Effect7029(BaseEffect):
"""
structureArmorHPBonus
Used by:
Structure Modules from group: Structure Armor Reinforcer (2 of 2)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('hiddenArmorHPMultiplier', src.getModifiedItemAttr('armorHpBonus'), stackingPenalties=True, **kwargs)
class Effect7030(BaseEffect):
"""
structureAoERoFRoleBonus
Used by:
Items from category: Structure (11 of 18)
Structures from group: Citadel (8 of 9)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Guided Bomb Launcher',
'speed', ship.getModifiedItemAttr('structureAoERoFRoleBonus'), **kwargs)
for attr in ['duration', 'durationTargetIlluminationBurstProjector', 'durationWeaponDisruptionBurstProjector',
'durationECMJammerBurstProjector', 'durationSensorDampeningBurstProjector', 'capacitorNeed']:
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Burst Projector',
attr, ship.getModifiedItemAttr('structureAoERoFRoleBonus'), **kwargs)
class Effect7031(BaseEffect):
"""
shipBonusHeavyMissileKineticDamageCBC2
Used by:
Ship: Drake Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage',
src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs)
class Effect7032(BaseEffect):
"""
shipBonusHeavyMissileThermalDamageCBC2
Used by:
Ship: Drake Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'thermalDamage',
src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs)
class Effect7033(BaseEffect):
"""
shipBonusHeavyMissileEMDamageCBC2
Used by:
Ship: Drake Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'),
'emDamage', src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs)
class Effect7034(BaseEffect):
"""
shipBonusHeavyMissileExplosiveDamageCBC2
Used by:
Ship: Drake Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'explosiveDamage',
src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs)
class Effect7035(BaseEffect):
"""
shipBonusHeavyAssaultMissileExplosiveDamageCBC2
Used by:
Ship: Drake Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'explosiveDamage',
src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs)
class Effect7036(BaseEffect):
"""
shipBonusHeavyAssaultMissileEMDamageCBC2
Used by:
Ship: Drake Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'emDamage',
src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs)
class Effect7037(BaseEffect):
"""
shipBonusHeavyAssaultMissileThermalDamageCBC2
Used by:
Ship: Drake Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'),
'thermalDamage', src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs)
class Effect7038(BaseEffect):
"""
shipBonusHeavyAssaultMissileKineticDamageCBC2
Used by:
Ship: Drake Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'),
'kineticDamage', src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs)
class Effect7039(BaseEffect):
"""
structureHiddenMissileDamageMultiplier
Used by:
Items from category: Structure (14 of 18)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
groups = ('Structure Anti-Subcapital Missile', 'Structure Anti-Capital Missile')
for dmgType in ('em', 'kinetic', 'explosive', 'thermal'):
fit.modules.filteredChargeMultiply(lambda mod: mod.item.group.name in groups,
'%sDamage' % dmgType,
src.getModifiedItemAttr('hiddenMissileDamageMultiplier'), **kwargs)
class Effect7040(BaseEffect):
"""
structureHiddenArmorHPMultiplier
Used by:
Items from category: Structure (18 of 18)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr('armorHP', src.getModifiedItemAttr('hiddenArmorHPMultiplier') or 0, **kwargs)
class Effect7042(BaseEffect):
"""
shipArmorHitPointsAC1
Used by:
Ship: Monitor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorHP', src.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs)
class Effect7043(BaseEffect):
"""
shipShieldHitpointsCC1
Used by:
Ship: Monitor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldCapacity', src.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs)
class Effect7044(BaseEffect):
"""
shipAgilityBonusGC1
Used by:
Ship: Monitor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('agility', src.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs)
class Effect7045(BaseEffect):
"""
shipSignatureRadiusMC1
Used by:
Ship: Monitor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('signatureRadius', src.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs)
class Effect7046(BaseEffect):
"""
eliteBonusFlagCruiserAllResistances1
Used by:
Ship: Monitor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('explosiveDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs)
fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs)
fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs)
fit.ship.boostItemAttr('armorThermalDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs)
fit.ship.boostItemAttr('thermalDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs)
fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs)
fit.ship.boostItemAttr('armorExplosiveDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs)
fit.ship.boostItemAttr('armorEmDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs)
fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs)
fit.ship.boostItemAttr('kineticDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs)
fit.ship.boostItemAttr('armorKineticDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs)
fit.ship.boostItemAttr('emDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs)
class Effect7047(BaseEffect):
"""
roleBonusFlagCruiserModuleFittingReduction
Used by:
Ship: Monitor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Propulsion Module', 'Micro Jump Drive'),
'power', src.getModifiedItemAttr('flagCruiserFittingBonusPropMods'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Propulsion Module', 'Micro Jump Drive'),
'cpu', src.getModifiedItemAttr('flagCruiserFittingBonusPropMods'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Target Painter', 'Scan Probe Launcher'),
'cpu', src.getModifiedItemAttr('flagCruiserFittingBonusPainterProbes'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Target Painter', 'Scan Probe Launcher'),
'power', src.getModifiedItemAttr('flagCruiserFittingBonusPainterProbes'), **kwargs)
class Effect7050(BaseEffect):
"""
aoe_beacon_bioluminescence_cloud
Used by:
Celestials named like: Bioluminescence Cloud (3 of 3)
"""
runTime = 'early'
type = ('projected', 'passive', 'gang')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
for x in range(1, 3):
if beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)):
value = beacon.getModifiedItemAttr('warfareBuff{}Value'.format(x))
id = beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x))
if id:
fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early')
class Effect7051(BaseEffect):
"""
aoe_beacon_caustic_cloud
Used by:
Celestials named like: Caustic Cloud (3 of 3)
"""
runTime = 'early'
type = ('projected', 'passive', 'gang')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
for x in range(1, 3):
if beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)):
value = beacon.getModifiedItemAttr('warfareBuff{}Value'.format(x))
id = beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x))
if id:
fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early')
class Effect7052(BaseEffect):
"""
roleBonusFlagCruiserTargetPainterModifications
Used by:
Ship: Monitor
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'signatureRadiusBonus',
src.getModifiedItemAttr('targetPainterStrengthModifierFlagCruisers'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'maxRange',
src.getModifiedItemAttr('targetPainterRangeModifierFlagCruisers'), **kwargs)
class Effect7055(BaseEffect):
"""
shipLargeWeaponsDamageBonus
Used by:
Ship: Praxis
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'damageMultiplier',
src.getModifiedItemAttr('shipBonusRole7'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'damageMultiplier',
src.getModifiedItemAttr('shipBonusRole7'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'damageMultiplier',
src.getModifiedItemAttr('shipBonusRole7'), **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'thermalDamage',
src.getModifiedItemAttr('shipBonusRole7'), **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'emDamage',
src.getModifiedItemAttr('shipBonusRole7'), **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage',
src.getModifiedItemAttr('shipBonusRole7'), **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'explosiveDamage',
src.getModifiedItemAttr('shipBonusRole7'), **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'emDamage',
src.getModifiedItemAttr('shipBonusRole7'), **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'kineticDamage',
src.getModifiedItemAttr('shipBonusRole7'), **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'explosiveDamage',
src.getModifiedItemAttr('shipBonusRole7'), **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'thermalDamage',
src.getModifiedItemAttr('shipBonusRole7'), **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'thermalDamage',
src.getModifiedItemAttr('shipBonusRole7'), **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'explosiveDamage',
src.getModifiedItemAttr('shipBonusRole7'), **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'kineticDamage',
src.getModifiedItemAttr('shipBonusRole7'), **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'emDamage',
src.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect7058(BaseEffect):
"""
aoe_beacon_filament_cloud
Used by:
Celestials named like: Filament Cloud (3 of 3)
"""
runTime = 'early'
type = ('projected', 'passive', 'gang')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
for x in range(1, 3):
if beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)):
value = beacon.getModifiedItemAttr('warfareBuff{}Value'.format(x))
id = beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x))
if id:
fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early')
class Effect7059(BaseEffect):
"""
weather_caustic_toxin
Used by:
Celestial: caustic_toxin_weather_1
Celestial: caustic_toxin_weather_2
Celestial: caustic_toxin_weather_3
"""
runTime = 'early'
type = ('projected', 'passive', 'gang')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
for x in range(1, 3):
if beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)):
value = beacon.getModifiedItemAttr('warfareBuff{}Value'.format(x))
id = beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x))
if id:
fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early')
class Effect7060(BaseEffect):
"""
weather_darkness
Used by:
Celestial: darkness_weather_1
Celestial: darkness_weather_2
Celestial: darkness_weather_3
Celestial: pvp_weather_1
"""
runTime = 'early'
type = ('projected', 'passive', 'gang')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
for x in range(1, 5):
if beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)):
value = beacon.getModifiedItemAttr('warfareBuff{}Value'.format(x))
id = beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x))
if id:
fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early')
class Effect7061(BaseEffect):
"""
weather_electric_storm
Used by:
Celestial: electric_storm_weather_1
Celestial: electric_storm_weather_2
Celestial: electric_storm_weather_3
"""
runTime = 'early'
type = ('projected', 'passive', 'gang')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
for x in range(1, 3):
if beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)):
value = beacon.getModifiedItemAttr('warfareBuff{}Value'.format(x))
id = beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x))
if id:
fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early')
class Effect7062(BaseEffect):
"""
weather_infernal
Used by:
Celestial: infernal_weather_1
Celestial: infernal_weather_2
Celestial: infernal_weather_3
"""
runTime = 'early'
type = ('projected', 'passive', 'gang')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
for x in range(1, 3):
if beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)):
value = beacon.getModifiedItemAttr('warfareBuff{}Value'.format(x))
id = beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x))
if id:
fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early')
class Effect7063(BaseEffect):
"""
weather_xenon_gas
Used by:
Celestial: xenon_gas_weather_1
Celestial: xenon_gas_weather_2
Celestial: xenon_gas_weather_3
"""
runTime = 'early'
type = ('projected', 'passive', 'gang')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
for x in range(1, 3):
if beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)):
value = beacon.getModifiedItemAttr('warfareBuff{}Value'.format(x))
id = beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x))
if id:
fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early')
class Effect7064(BaseEffect):
"""
weather_basic
Used by:
Celestial: basic_weather
"""
runTime = 'early'
type = ('projected', 'passive')
class Effect7071(BaseEffect):
"""
smallPrecursorTurretDmgBonusRequiredSkill
Used by:
Skill: Small Precursor Weapon
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'),
'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs)
class Effect7072(BaseEffect):
"""
mediumPrecursorTurretDmgBonusRequiredSkill
Used by:
Skill: Medium Precursor Weapon
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'),
'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs)
class Effect7073(BaseEffect):
"""
largePrecursorTurretDmgBonusRequiredSkill
Used by:
Skill: Large Precursor Weapon
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Precursor Weapon'),
'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs)
class Effect7074(BaseEffect):
"""
smallDisintegratorSkillDmgBonus
Used by:
Skill: Small Disintegrator Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Disintegrator Specialization'),
'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs)
class Effect7075(BaseEffect):
"""
mediumDisintegratorSkillDmgBonus
Used by:
Skill: Medium Disintegrator Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Disintegrator Specialization'),
'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs)
class Effect7076(BaseEffect):
"""
largeDisintegratorSkillDmgBonus
Used by:
Skill: Large Disintegrator Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Disintegrator Specialization'),
'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs)
class Effect7077(BaseEffect):
"""
disintegratorWeaponDamageMultiply
Used by:
Modules from group: Entropic Radiation Sink (6 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Precursor Weapon',
'damageMultiplier', module.getModifiedItemAttr('damageMultiplier'),
stackingPenalties=True, **kwargs)
class Effect7078(BaseEffect):
"""
disintegratorWeaponSpeedMultiply
Used by:
Modules from group: Entropic Radiation Sink (6 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Precursor Weapon',
'speed', module.getModifiedItemAttr('speedMultiplier'),
stackingPenalties=True, **kwargs)
class Effect7079(BaseEffect):
"""
shipPCBSSPeedBonusPCBS1
Used by:
Ship: Leshak
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Precursor Weapon'),
'speed', ship.getModifiedItemAttr('shipBonusPBS1'), skill='Precursor Battleship', **kwargs)
class Effect7080(BaseEffect):
"""
shipPCBSDmgBonusPCBS2
Used by:
Ship: Leshak
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Precursor Weapon'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusPBS2'), skill='Precursor Battleship', **kwargs)
class Effect7085(BaseEffect):
"""
shipbonusPCTDamagePC1
Used by:
Variations of ship: Vedmak (2 of 2)
Ship: Tiamat
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusPC1'), skill='Precursor Cruiser', **kwargs)
class Effect7086(BaseEffect):
"""
shipbonusPCTTrackingPC2
Used by:
Ship: Ikitursa
Ship: Tiamat
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'),
'trackingSpeed', ship.getModifiedItemAttr('shipBonusPC2'), skill='Precursor Cruiser', **kwargs)
class Effect7087(BaseEffect):
"""
shipbonusPCTOptimalPF2
Used by:
Ship: Hydra
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'),
'maxRange', ship.getModifiedItemAttr('shipBonusPF2'), skill='Precursor Frigate', **kwargs)
class Effect7088(BaseEffect):
"""
shipbonusPCTDamagePF1
Used by:
Variations of ship: Damavik (2 of 2)
Ship: Hydra
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusPF1'), skill='Precursor Frigate', **kwargs)
class Effect7091(BaseEffect):
"""
shipBonusNosNeutCapNeedRoleBonus2
Used by:
Variations of ship: Rodiva (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capacitor Emission Systems'), 'capacitorNeed', src.getModifiedItemAttr('shipBonusRole2'), **kwargs)
class Effect7092(BaseEffect):
"""
shipBonusRemoteRepCapNeedRoleBonus2
Used by:
Variations of ship: Damavik (2 of 2)
Variations of ship: Kikimora (2 of 2)
Variations of ship: Leshak (2 of 2)
Variations of ship: Vedmak (2 of 2)
Ship: Drekavac
Ship: Hydra
Ship: Tiamat
Ship: Zirnitra
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems') or mod.item.requiresSkill('Capital Remote Armor Repair Systems'),
'capacitorNeed', ship.getModifiedItemAttr('shipBonusRole2'), **kwargs)
class Effect7093(BaseEffect):
"""
shipBonusSmartbombCapNeedRoleBonus2
Used by:
Variations of ship: Damavik (2 of 2)
Variations of ship: Kikimora (2 of 2)
Variations of ship: Leshak (2 of 2)
Variations of ship: Rodiva (2 of 2)
Variations of ship: Vedmak (2 of 2)
Ship: Drekavac
Ship: Hydra
Ship: Tiamat
Ship: Zirnitra
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Energy Pulse Weapons'),
'capacitorNeed', ship.getModifiedItemAttr('shipBonusRole2'), **kwargs)
class Effect7094(BaseEffect):
"""
shipBonusRemoteRepMaxRangeRoleBonus1
Used by:
Variations of ship: Damavik (2 of 2)
Variations of ship: Kikimora (2 of 2)
Variations of ship: Leshak (2 of 2)
Variations of ship: Vedmak (2 of 2)
Ship: Drekavac
Ship: Hydra
Ship: Tiamat
Ship: Zirnitra
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems') or mod.item.requiresSkill('Capital Remote Armor Repair Systems'),
'maxRange', ship.getModifiedItemAttr('shipBonusRole1'), **kwargs)
class Effect7097(BaseEffect):
"""
surgicalStrikeDamageMultiplierBonusPostPercentDamageMultiplierLocationShipGroupPrecursorTurret
Used by:
Skill: Surgical Strike
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Precursor Weapon',
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect7098(BaseEffect):
"""
structureConversionRigBasicBonuses
Used by:
Structure Modules from group: Outpost Conversion Rigs (104 of 104)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for attr in ('hp', 'armorHP', 'shieldCapacity', 'capacitorCapacity'):
fit.ship.boostItemAttr(attr, src.getModifiedItemAttr('conversionRigHPCapBonus'), **kwargs)
fit.ship.boostItemAttr('maxTargetRange', src.getModifiedItemAttr('structureRigMaxTargetRangeBonus'),
stackingPenalties=True, **kwargs)
fit.ship.boostItemAttr('scanResolution', src.getModifiedItemAttr('structureRigScanResBonus'),
stackingPenalties=True, **kwargs)
fit.ship.increaseItemAttr('maxLockedTargets', src.getModifiedItemAttr('structureRigMaxTargetBonus'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Area Denial Module',
'capacitorNeed', src.getModifiedItemAttr('structureRigPDCapUseBonus'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Area Denial Module',
'empFieldRange', src.getModifiedItemAttr('structureRigPDRangeBonus'), **kwargs)
for attr in ('structureRigMaxTargetBonus', 'structureRigMaxTargetRangeBonus', 'structureRigScanResBonus'):
fit.modules.filteredItemForce(
lambda mod: mod.item.group.name == 'Structure Combat Rig L - Max Targets and Sensor Boosting',
attr, src.getModifiedItemAttr('constantZero'), **kwargs)
for attr in ('structureRigPDCapUseBonus', 'structureRigPDRangeBonus'):
fit.modules.filteredItemForce(
lambda mod: mod.item.group.name == 'Structure Combat Rig L - Point Defense Battery Application and Projection',
attr, src.getModifiedItemAttr('constantZero'), **kwargs)
class Effect7111(BaseEffect):
"""
systemSmallPrecursorTurretDamage
Used by:
Celestials named like: Class Wolf Rayet Effects (6 of 6)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'),
'damageMultiplier', module.getModifiedItemAttr('smallWeaponDamageMultiplier'),
stackingPenalties=True, **kwargs)
class Effect7112(BaseEffect):
"""
shipBonusNeutCapNeedRoleBonus2
Used by:
Variations of ship: Damavik (2 of 2)
Variations of ship: Kikimora (2 of 2)
Variations of ship: Leshak (2 of 2)
Variations of ship: Vedmak (2 of 2)
Ship: Drekavac
Ship: Hydra
Ship: Tiamat
Ship: Zirnitra
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'capacitorNeed',
src.getModifiedItemAttr('shipBonusRole2'), **kwargs)
class Effect7116(BaseEffect):
"""
eliteBonusReconScanProbeStrength2
Used by:
Ship: Tiamat
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength',
src.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships', **kwargs)
class Effect7117(BaseEffect):
"""
roleBonusWarpSpeed
Used by:
Ships from group: Blockade Runner (5 of 5)
Ships from group: Covert Ops (9 of 9)
Ships from group: Hauler (5 of 18)
Ships from group: Interceptor (10 of 10)
Ships from group: Interdictor (4 of 4)
Ship: Azariel
Ship: Cynabal
Ship: Dramiel
Ship: Khizriel
Ship: Leopard
Ship: Machariel
Ship: Mekubal
Ship: Sarathiel
Ship: Victorieux Luxury Yacht
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('shipRoleBonusWarpSpeed'), **kwargs)
class Effect7118(BaseEffect):
"""
eliteBonusCovertOps3PCTdamagePerCycle
Used by:
Ship: Hydra
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'), 'damageMultiplierBonusPerCycle',
src.getModifiedItemAttr('eliteBonusCovertOps3'), skill='Covert Ops', **kwargs)
class Effect7119(BaseEffect):
"""
eliteBonusReconShip3PCTdamagePerCycle
Used by:
Ship: Tiamat
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'), 'damageMultiplierBonusPerCycle',
src.getModifiedItemAttr('eliteBonusReconShip3'), skill='Recon Ships', **kwargs)
class Effect7142(BaseEffect):
"""
massEntanglerEffect5
Used by:
Module: Zero-Point Mass Entangler
"""
type = 'active'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('warpScrambleStrength'), **kwargs)
fit.ship.boostItemAttr('mass', src.getModifiedItemAttr('massBonusPercentage'), stackingPenalties=True, **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'speedFactor',
src.getModifiedItemAttr('speedFactorBonus'), stackingPenalties=True, **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'speedBoostFactor',
src.getModifiedItemAttr('speedBoostFactorBonus'), **kwargs)
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'activationBlocked',
src.getModifiedItemAttr('activationBlockedStrenght'), **kwargs)
fit.ship.boostItemAttr('maxVelocity', src.getModifiedItemAttr('maxVelocityBonus'), stackingPenalties=True, **kwargs)
class Effect7154(BaseEffect):
"""
shipBonusPD1DisintegratorDamage
Used by:
Variations of ship: Kikimora (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusPD1'),
skill='Precursor Destroyer', **kwargs)
class Effect7155(BaseEffect):
"""
shipBonusPBC1DisintegratorDamage
Used by:
Ship: Drekavac
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusPBC1'),
skill='Precursor Battlecruiser', **kwargs)
class Effect7156(BaseEffect):
"""
smallDisintegratorMaxRangeBonus
Used by:
Ship: Kikimora
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'),
'maxRange', ship.getModifiedItemAttr('maxRangeBonus'), **kwargs)
class Effect7157(BaseEffect):
"""
shipBonusPD2DisintegratorMaxRange
Used by:
Variations of ship: Kikimora (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'),
'maxRange', ship.getModifiedItemAttr('shipBonusPD2'),
skill='Precursor Destroyer', **kwargs)
class Effect7158(BaseEffect):
"""
shipArmorKineticResistancePBC2
Used by:
Ship: Drekavac
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorKineticDamageResonance', ship.getModifiedItemAttr('shipBonusPBC2'),
skill='Precursor Battlecruiser', **kwargs)
class Effect7159(BaseEffect):
"""
shipArmorThermalResistancePBC2
Used by:
Ship: Drekavac
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorThermalDamageResonance', ship.getModifiedItemAttr('shipBonusPBC2'),
skill='Precursor Battlecruiser', **kwargs)
class Effect7160(BaseEffect):
"""
shipArmorEMResistancePBC2
Used by:
Ship: Drekavac
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorEmDamageResonance', ship.getModifiedItemAttr('shipBonusPBC2'),
skill='Precursor Battlecruiser', **kwargs)
class Effect7161(BaseEffect):
"""
shipArmorExplosiveResistancePBC2
Used by:
Ship: Drekavac
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusPBC2'),
skill='Precursor Battlecruiser', **kwargs)
class Effect7162(BaseEffect):
"""
shipRoleDisintegratorMaxRangeCBC
Used by:
Ship: Drekavac
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'),
'maxRange', ship.getModifiedItemAttr('roleBonusCBC'), **kwargs)
class Effect7166(BaseEffect):
"""
ShipModuleRemoteArmorMutadaptiveRepairer
Used by:
Modules from group: Mutadaptive Remote Armor Repairer (5 of 5)
"""
runTime = 'late'
type = 'projected', 'active'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
if 'projected' not in context:
return
if fit.ship.getModifiedItemAttr('disallowAssistance'):
return
repAmountBase = container.getModifiedItemAttr('armorDamageAmount')
repAmountBase *= calculateRangeFactor(
srcOptimalRange=container.getModifiedItemAttr('maxRange'),
srcFalloffRange=container.getModifiedItemAttr('falloffEffectiveness'),
distance=projectionRange)
cycleTime = container.getModifiedItemAttr('duration') / 1000.0
repSpoolMax = container.getModifiedItemAttr('repairMultiplierBonusMax')
repSpoolPerCycle = container.getModifiedItemAttr('repairMultiplierBonusPerCycle')
defaultSpoolValue = eos.config.settings['globalDefaultSpoolupPercentage']
spoolType, spoolAmount = resolveSpoolOptions(SpoolOptions(SpoolType.SPOOL_SCALE, defaultSpoolValue, False), container)
amount = repAmountBase * (1 + calculateSpoolup(repSpoolMax, repSpoolPerCycle, cycleTime, spoolType, spoolAmount)[0])
amountPreSpool = repAmountBase * (1 + calculateSpoolup(repSpoolMax, repSpoolPerCycle, cycleTime, SpoolType.SPOOL_SCALE, 0)[0])
amountFullSpool = repAmountBase * (1 + calculateSpoolup(repSpoolMax, repSpoolPerCycle, cycleTime, SpoolType.SPOOL_SCALE, 1)[0])
fit._armorRr.append((amount, cycleTime))
fit._armorRrPreSpool.append((amountPreSpool, cycleTime))
fit._armorRrFullSpool.append((amountFullSpool, cycleTime))
class Effect7167(BaseEffect):
"""
shipBonusRemoteCapacitorTransferRangeRole1
Used by:
Variations of ship: Rodiva (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter', 'maxRange', src.getModifiedItemAttr('shipBonusRole1'), **kwargs)
class Effect7168(BaseEffect):
"""
shipBonusMutadaptiveRemoteRepairRangeRole3
Used by:
Ship: Rodiva
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Mutadaptive Remote Armor Repairer', 'maxRange', src.getModifiedItemAttr('shipBonusRole3'), **kwargs)
class Effect7169(BaseEffect):
"""
shipBonusMutadaptiveRepAmountPC1
Used by:
Ship: Rodiva
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Mutadaptive Remote Armor Repairer', 'armorDamageAmount', src.getModifiedItemAttr('shipBonusPC1'), skill='Precursor Cruiser', **kwargs)
class Effect7170(BaseEffect):
"""
shipBonusMutadaptiveRepCapNeedPC2
Used by:
Ship: Rodiva
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Mutadaptive Remote Armor Repairer', 'capacitorNeed', src.getModifiedItemAttr('shipBonusPC2'), skill='Precursor Cruiser', **kwargs)
class Effect7171(BaseEffect):
"""
shipBonusMutadaptiveRemoteRepRangePC1
Used by:
Ship: Zarmazd
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Mutadaptive Remote Armor Repairer', 'maxRange', src.getModifiedItemAttr('shipBonusPC1'), skill='Precursor Cruiser', **kwargs)
class Effect7172(BaseEffect):
"""
shipBonusMutadaptiveRemoteRepCapNeedeliteBonusLogisitics1
Used by:
Ship: Zarmazd
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Mutadaptive Remote Armor Repairer', 'capacitorNeed', src.getModifiedItemAttr('eliteBonusLogistics1'), skill='Logistics Cruisers', **kwargs)
class Effect7173(BaseEffect):
"""
shipBonusMutadaptiveRemoteRepAmounteliteBonusLogisitics2
Used by:
Ship: Zarmazd
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Mutadaptive Remote Armor Repairer', 'armorDamageAmount', src.getModifiedItemAttr('eliteBonusLogistics2'), skill='Logistics Cruisers', **kwargs)
class Effect7176(BaseEffect):
"""
skillBonusDroneInterfacingNotFighters
Used by:
Implants named like: Halcyon G Booster (5 of 5)
Implant: CreoDron 'Bumblebee' Drone Tuner T10-5D
Implant: CreoDron 'Yellowjacket' Drone Tuner D5-10T
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'damageMultiplier',
src.getModifiedItemAttr('damageMultiplierBonus'), **kwargs)
class Effect7177(BaseEffect):
"""
skillBonusDroneDurabilityNotFighters
Used by:
Implants named like: Drone Tuner (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'hp',
src.getModifiedItemAttr('hullHpBonus'))
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'armorHP',
src.getModifiedItemAttr('armorHpBonus'))
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'shieldCapacity',
src.getModifiedItemAttr('shieldCapacityBonus'), **kwargs)
class Effect7183(BaseEffect):
"""
implantWarpScrambleRangeBonus
Used by:
Implants named like: Inquest 'Hedone' Entanglement Optimizer WS (3 of 3)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Warp Scrambler',
'maxRange', src.getModifiedItemAttr('warpScrambleRangeBonus'), **kwargs)
class Effect7184(BaseEffect):
"""
shipBonusMediumDroneHProle8
Used by:
Ship: Alligator
Ship: Gila
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'),
'hp', ship.getModifiedItemAttr('shipBonusRole8'), **kwargs)
class Effect7185(BaseEffect):
"""
shipBonusMediumDroneShieldHProle8
Used by:
Ship: Alligator
Ship: Gila
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'),
'shieldCapacity', ship.getModifiedItemAttr('shipBonusRole8'), **kwargs)
class Effect7186(BaseEffect):
"""
shipBonusMediumDroneArmorHProle8
Used by:
Ship: Alligator
Ship: Gila
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'),
'armorHP', ship.getModifiedItemAttr('shipBonusRole8'), **kwargs)
class Effect7193(BaseEffect):
"""
systemMiningCycleTimeBonus
Used by:
Celestials from group: Destructible Effect Beacon (4 of 6)
Celestials named like: Triglavian Invasion System Effects (3 of 3)
Celestials named like: War HQ (4 of 4)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining'), 'duration',
beacon.getModifiedItemAttr('miningDurationMultiplier'), **kwargs)
class Effect7202(BaseEffect):
"""
systemDroneSpeedBonusPercent
Used by:
Celestials named like: Triglavian Invasion System Effects (3 of 3)
Celestial: Drifter Crisis
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'maxVelocity', beacon.getModifiedItemAttr('droneMaxVelocityBonus'),
stackingPenalties=True, **kwargs)
class Effect7203(BaseEffect):
"""
systemDroneDamageBonusPercent
Used by:
Celestials named like: Triglavian Invasion System Effects (3 of 3)
Celestial: Drifter Crisis
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'damageMultiplier', beacon.getModifiedItemAttr('droneDamageBonus'),
stackingPenalties=True, **kwargs)
class Effect7204(BaseEffect):
"""
shipArmorEMResistancePF2
Used by:
Variations of ship: Damavik (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorEmDamageResonance', ship.getModifiedItemAttr('shipBonusPF2'), skill='Precursor Frigate', **kwargs)
class Effect7205(BaseEffect):
"""
shipArmorKinResistancePF2
Used by:
Variations of ship: Damavik (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorKineticDamageResonance', ship.getModifiedItemAttr('shipBonusPF2'), skill='Precursor Frigate', **kwargs)
class Effect7206(BaseEffect):
"""
shipArmorThermResistancePF2
Used by:
Variations of ship: Damavik (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorThermalDamageResonance', ship.getModifiedItemAttr('shipBonusPF2'), skill='Precursor Frigate', **kwargs)
class Effect7207(BaseEffect):
"""
shipArmorExpResistancePF2
Used by:
Variations of ship: Damavik (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusPF2'), skill='Precursor Frigate', **kwargs)
class Effect7209(BaseEffect):
"""
shipPCTOptimalBonusEliteGunship2
Used by:
Ship: Nergal
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'),
'maxRange', ship.getModifiedItemAttr('eliteBonusGunship2'),
skill='Assault Frigates', **kwargs)
class Effect7210(BaseEffect):
"""
shipBonusCommandDestroyerRole2DefenderBonus
Used by:
Ship: Draugur
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Defender Missiles'),
'moduleReactivationDelay', ship.getModifiedItemAttr('shipBonusRole2'), **kwargs)
class Effect7211(BaseEffect):
"""
shipDmgMultiMaxEliteHeavyGunship1
Used by:
Ship: Ikitursa
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'),
'damageMultiplierBonusMax', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'),
skill='Heavy Assault Cruisers', **kwargs)
class Effect7216(BaseEffect):
"""
shipDmgMultiMaxEliteGunship1
Used by:
Ship: Nergal
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'),
'damageMultiplierBonusMax', ship.getModifiedItemAttr('eliteBonusGunship1'),
skill='Assault Frigates', **kwargs)
class Effect7223(BaseEffect):
"""
systemAgilityBonusPercentItem
Used by:
Celestials named like: Triglavian Invasion System Effects (3 of 3)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('agility', beacon.getModifiedItemAttr('agilityBonus'), stackingPenalties=True, **kwargs)
class Effect7227(BaseEffect):
"""
systemHullHPBonusPercentItem
Used by:
Celestials named like: Triglavian Invasion System Effects (3 of 3)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('hp', beacon.getModifiedItemAttr('hullHpBonus'), **kwargs)
class Effect7228(BaseEffect):
"""
shipMediumPrecursorWeaponOptimalEliteHeavyGunship2
Used by:
Ship: Ikitursa
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'),
'maxRange', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'),
skill='Heavy Assault Cruisers', **kwargs)
class Effect7230(BaseEffect):
"""
shipBonusDroneTrackingGC2
Used by:
Ship: Vexor Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'),
'trackingSpeed', ship.getModifiedItemAttr('shipBonusGC2'),
skill='Gallente Cruiser', **kwargs)
class Effect7231(BaseEffect):
"""
shipBonusArmorRepAmountGC3
Used by:
Ship: Vexor Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'),
'armorDamageAmount', ship.getModifiedItemAttr('shipBonusGC3'),
skill='Gallente Cruiser', **kwargs)
class Effect7232(BaseEffect):
"""
modifyDamageMultiplierBonusMax
Used by:
Implants named like: grade Mimesis (15 of 18)
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Precursor Weapon', 'damageMultiplierBonusMax',
implant.getModifiedItemAttr('damageMultiplierBonusMaxModifier'), **kwargs)
class Effect7233(BaseEffect):
"""
modifyDamageMultiplierBonusPerCycle
Used by:
Implants named like: grade Mimesis (15 of 18)
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Precursor Weapon', 'damageMultiplierBonusPerCycle',
implant.getModifiedItemAttr('damageMultiplierBonusPerCycleModifier'), **kwargs)
class Effect7234(BaseEffect):
"""
implantSetMimesis
Used by:
Implants named like: grade Mimesis (18 of 18)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(
lambda imp: imp.item.group.name == 'Cyberimplant', 'damageMultiplierBonusMaxModifier',
implant.getModifiedItemAttr('setBonusMimesis'), **kwargs)
fit.appliedImplants.filteredItemMultiply(
lambda imp: imp.item.group.name == 'Cyberimplant', 'damageMultiplierBonusPerCycleModifier',
implant.getModifiedItemAttr('setBonusMimesis'), **kwargs)
class Effect7237(BaseEffect):
"""
systemWarpSpeedBonus
Used by:
Celestial: Drifter Crisis
Celestial: Final Liminality
Celestial: Turnur Aftermath
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('warpSpeedMultiplier', beacon.getModifiedItemAttr('warpSpeedBonus'),
stackingPenalties=True, **kwargs)
class Effect7238(BaseEffect):
"""
shipBonusDreadnoughtPC1DamageMultMax
Used by:
Ship: Zirnitra
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Precursor Weapon'), 'damageMultiplier',
src.getModifiedItemAttr('shipBonusDreadnoughtPC1'), skill='Precursor Dreadnought', **kwargs)
class Effect7239(BaseEffect):
"""
shipBonusDreadnoughtPC2ArmorResists
Used by:
Ship: Zirnitra
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for type in ('Em', 'Explosive', 'Kinetic', 'Thermal'):
fit.ship.boostItemAttr('armor{0}DamageResonance'.format(type), src.getModifiedItemAttr('shipBonusDreadnoughtPC2'),
skill='Precursor Dreadnought', **kwargs)
class Effect7240(BaseEffect):
"""
shipBonusDreadnoughtPC3WeaponSpeed
Used by:
Ship: Zirnitra
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Precursor Weapon'), 'speed',
src.getModifiedItemAttr('shipBonusDreadnoughtPC3'), skill='Precursor Dreadnought', **kwargs)
class Effect7242(BaseEffect):
"""
capitalPrecursorTurretDmgBonusRequiredSkill
Used by:
Skill: Capital Precursor Weapon
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Precursor Weapon'),
'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs)
class Effect7247(BaseEffect):
"""
shipBonusHAMHMLAoeVelocityMC
Used by:
Ship: Bellicose
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: (mod.charge.requiresSkill('Heavy Missiles') or
mod.charge.requiresSkill('Heavy Assault Missiles')),
'aoeVelocity', ship.getModifiedItemAttr('shipBonusMC'),
skill='Minmatar Cruiser', **kwargs)
class Effect7248(BaseEffect):
"""
shipPBonusROFMF
Used by:
Ship: Rifter
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'),
'speed', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs)
class Effect8011(BaseEffect):
"""
shieldHpBonusPostPercentHpLocationShip
Used by:
Implants named like: grade Nirvana (15 of 18)
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldCapacity', container.getModifiedItemAttr('shieldHpBonus'), **kwargs)
class Effect8013(BaseEffect):
"""
setBonusNirvana
Used by:
Implants named like: grade Nirvana (18 of 18)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'),
'shieldHpBonus', implant.getModifiedItemAttr('ImplantSetNirvana') or 1, **kwargs)
class Effect8017(BaseEffect):
"""
saviorSetBonus
Used by:
Implants named like: grade Savior (18 of 18)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(
lambda implant: implant.item.requiresSkill('Cybernetics'),
'remoteRepDurationCapBonus', implant.getModifiedItemAttr('implantSetSavior'), **kwargs)
class Effect8018(BaseEffect):
"""
subcapRemoteArmorShieldRepDurationCapBonus
Used by:
Implants named like: grade Savior (15 of 18)
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
for attr in ('duration', 'capacitorNeed'):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Emission Systems')
or mod.item.requiresSkill('Remote Armor Repair Systems'),
attr, implant.getModifiedItemAttr('remoteRepDurationCapBonus'), **kwargs)
class Effect8020(BaseEffect):
"""
systemWarpSpeedAddition
Used by:
Celestial: System-Wide Warp Speed Bonus
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('warpSpeedAdd'), **kwargs)
class Effect8021(BaseEffect):
"""
hydraSetBonus
Used by:
Implants named like: grade Hydra (18 of 18)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
for attr in ('hydraDroneTrackingBonus', 'hydraDroneRangeBonus', 'hydraMissileFlightTimeBonus', 'hydraMissileExplosionVelocityBonus'):
fit.appliedImplants.filteredItemMultiply(
lambda implant: implant.item.requiresSkill('Cybernetics'),
attr, implant.getModifiedItemAttr('implantSetHydra'), **kwargs)
class Effect8023(BaseEffect):
"""
hydraDroneTrackingEffect
Used by:
Implants named like: grade Hydra (15 of 18)
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Drones'),
'trackingSpeed', implant.getModifiedItemAttr('hydraDroneTrackingBonus'), **kwargs)
class Effect8024(BaseEffect):
"""
hydraDroneRangeEffect
Used by:
Implants named like: grade Hydra (15 of 18)
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
for attr in ('maxRange', 'falloff'):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Drones'),
attr, implant.getModifiedItemAttr('hydraDroneRangeBonus'), **kwargs)
class Effect8025(BaseEffect):
"""
hydraMissileFlightTimeEffect
Used by:
Implants named like: grade Hydra (15 of 18)
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'explosionDelay', implant.getModifiedItemAttr('hydraMissileFlightTimeBonus'), **kwargs)
class Effect8026(BaseEffect):
"""
hydraMissileExplosionVelocityEffect
Used by:
Implants named like: grade Hydra (15 of 18)
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'aoeVelocity', implant.getModifiedItemAttr('hydraMissileExplosionVelocityBonus'), **kwargs)
class Effect8029(BaseEffect):
"""
roleBonus7CapBoosterGroupRestriction
Used by:
Ships from group: Force Auxiliary (6 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for attr in ('maxGroupOnline', 'maxGroupFitted'):
fit.modules.filteredItemForce(
lambda mod: mod.item.group.name == 'Capacitor Booster',
attr, ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect8031(BaseEffect):
"""
systemMaxTargets
Used by:
Celestial: Final Liminality
Celestial: Triglavian Minor Victory
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr('maxLockedTargets', beacon.getModifiedItemAttr('maxLockedTargetsMultiplier'), **kwargs)
class Effect8032(BaseEffect):
"""
systemWarpScrambleStrengthBonus
Used by:
Celestial: Federal Stellar Observatory
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredItemIncrease(
lambda mod: mod.item.group.name == 'Warp Scrambler',
'warpScrambleStrength', beacon.getModifiedItemAttr('warpScrambleStrengthBonus'), **kwargs)
class Effect8033(BaseEffect):
"""
systemEcmRangeMultiplier
Used by:
Celestial: State Stellar Observatory
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.group.name == 'ECM', 'maxRange',
beacon.getModifiedItemAttr('ecmRangeBonus'), stackingPenalties=True, **kwargs)
class Effect8034(BaseEffect):
"""
smallUpwellWeaponDmgBonusRequiredSkill
Used by:
Skill: Small Vorton Projector
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Vorton Projector'),
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect8035(BaseEffect):
"""
mediumUpwellWeaponDmgBonusRequiredSkill
Used by:
Skill: Medium Vorton Projector
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Vorton Projector'),
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect8036(BaseEffect):
"""
largeUpwellWeaponDmgBonusRequiredSkill
Used by:
Skill: Large Vorton Projector
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Vorton Projector'),
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect8037(BaseEffect):
"""
ChainLightning
Used by:
Modules from group: Vorton Projector (15 of 15)
"""
type = 'active'
class Effect8039(BaseEffect):
"""
upwellSkillaoeVelocityaoeCloudSizeBonus
Used by:
Implants named like: Halcyon G Booster (5 of 5)
Skill: Vorton Arc Guidance
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
level = container.level if 'skill' in context else 1
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Vorton Projector Operation'),
'aoeVelocity', container.getModifiedItemAttr('aoeVelocityBonus') * level, **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Vorton Projector Operation'),
'aoeCloudSize', container.getModifiedItemAttr('aoeCloudSizeBonus') * level, **kwargs)
class Effect8041(BaseEffect):
"""
upwellSkillDamageMuliplierBonus
Used by:
Skill: Vorton Power Amplification
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Vorton Projector',
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect8042(BaseEffect):
"""
upwellSkillSpeedBonus
Used by:
Skill: Vorton Projector Operation
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Vorton Projector Operation'),
'speed', skill.getModifiedItemAttr('turretSpeeBonus') * skill.level, **kwargs)
class Effect8044(BaseEffect):
"""
smallVortonProjectorSkillDmgBonus
Used by:
Skill: Small Vorton Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Vorton Specialization'),
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect8045(BaseEffect):
"""
mediumVortonProjectorSkillDmgBonus
Used by:
Skill: Medium Vorton Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Vorton Specialization'),
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect8046(BaseEffect):
"""
largeVortonProjectorSkillDmgBonus
Used by:
Skill: Large Vorton Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Vorton Specialization'),
'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs)
class Effect8047(BaseEffect):
"""
shipBonusUF1shieldResistance
Used by:
Ship: Skybreaker
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for type in ('kinetic', 'thermal', 'explosive', 'em'):
fit.ship.boostItemAttr('shield%sDamageResonance' % type.capitalize(),
ship.getModifiedItemAttr('shipBonusUF1'),
skill='EDENCOM Frigate', **kwargs)
class Effect8048(BaseEffect):
"""
shipBonusUF2damage
Used by:
Ship: Skybreaker
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Small Vorton Projector'), 'damageMultiplier',
ship.getModifiedItemAttr('shipBonusUF2'), skill='EDENCOM Frigate', **kwargs)
class Effect8052(BaseEffect):
"""
shipBonusUC2ShieldResistance
Used by:
Ship: Stormbringer
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for type in ('kinetic', 'thermal', 'explosive', 'em'):
fit.ship.boostItemAttr('shield%sDamageResonance' % type.capitalize(),
ship.getModifiedItemAttr('shipBonusUC2'),
skill='EDENCOM Cruiser', **kwargs)
class Effect8053(BaseEffect):
"""
shipBonusUC1maxRange
Used by:
Ship: Stormbringer
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Medium Vorton Projector'), 'maxRange',
ship.getModifiedItemAttr('shipBonusUC1'), skill='EDENCOM Cruiser', **kwargs)
class Effect8054(BaseEffect):
"""
shipBonusUB1upwellDamage
Used by:
Ship: Thunderchild
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Large Vorton Projector'), 'damageMultiplier',
ship.getModifiedItemAttr('shipBonusUB1'), skill='EDENCOM Battleship', **kwargs)
class Effect8056(BaseEffect):
"""
shipBonusUB2upwellROF
Used by:
Ship: Thunderchild
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Large Vorton Projector'), 'speed',
ship.getModifiedItemAttr('shipBonusUB2'), skill='EDENCOM Battleship', **kwargs)
class Effect8057(BaseEffect):
"""
vortonWeaponDamageSpeedMultiply
Used by:
Modules from group: Vorton Projector Upgrade (6 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Vorton Projector',
'damageMultiplier', module.getModifiedItemAttr('damageMultiplier'),
stackingPenalties=True, **kwargs)
fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Vorton Projector',
'speed', module.getModifiedItemAttr('speedMultiplier'),
stackingPenalties=True, **kwargs)
class Effect8062(BaseEffect):
"""
ammoAOEvelocityMultiplier
Used by:
Charges from group: Advanced Condenser Pack (6 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.multiplyItemAttr('aoeVelocity', module.getModifiedChargeAttr('aoeVelocityBonus') or 0, **kwargs)
class Effect8065(BaseEffect):
"""
vortonProjectorSkillRangeBonus
Used by:
Skill: Vorton Arc Extension
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Vorton Projector Operation'),
'maxRange', skill.getModifiedItemAttr('rangeSkillBonus') * skill.level, **kwargs)
class Effect8064(BaseEffect):
"""
vortonProjectorOptimalRangeBonus
Used by:
Implants named like: Halcyon B Booster (5 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, booster, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Vorton Projector Operation'), 'maxRange',
booster.getModifiedItemAttr('rangeSkillBonus'), **kwargs)
class Effect8066(BaseEffect):
"""
vortonProjectorDamageBonus
Used by:
Implants named like: Agency 'Pyrolancea' DB Dose (4 of 4)
Implants named like: Halcyon Y Booster (5 of 5)
Implant: AIR Pyrolancea Booster II
"""
type = 'passive'
@staticmethod
def handler(fit, booster, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Vorton Projector Operation'), 'damageMultiplier',
booster.getModifiedItemAttr('damageMultiplierBonus'), **kwargs)
class Effect8068(BaseEffect):
"""
shipShieldResistanceBonusMBC1
Used by:
Ship: Claymore
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
damageTypes = ('Em', 'Explosive', 'Kinetic', 'Thermal')
for damageType in damageTypes:
fit.ship.boostItemAttr(f'shield{damageType}DamageResonance', ship.getModifiedItemAttr('shipBonusMBC1'),
skill='Minmatar Battlecruiser', **kwargs)
class Effect8070(BaseEffect):
"""
eliteBonusCommandShipsHeavyHAMvelocityCS2
Used by:
Ship: Claymore
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles') or
mod.charge.requiresSkill('Heavy Assault Missiles'),
'maxVelocity', ship.getModifiedItemAttr('eliteBonusCommandShips2'),
skill='Command Ships', **kwargs)
class Effect8071(BaseEffect):
"""
eliteBonusCommandShipDroneRangeCS1
Used by:
Ship: Eos
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'maxRange', ship.getModifiedItemAttr('eliteBonusCommandShips1'),
skill='Command Ships', **kwargs)
class Effect8072(BaseEffect):
"""
shipArmorResistanceBonusGBC2
Used by:
Ship: Eos
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
damageTypes = ('Em', 'Explosive', 'Kinetic', 'Thermal')
for damageType in damageTypes:
fit.ship.boostItemAttr(f'armor{damageType}DamageResonance', ship.getModifiedItemAttr('shipBonusGBC2'),
skill='Gallente Battlecruiser', **kwargs)
class Effect8073(BaseEffect):
"""
eliteBonusCommandShipShieldHPCS1
Used by:
Ship: Vulture
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldCapacity', ship.getModifiedItemAttr('eliteBonusCommandShips1'),
skill='Command Ships', **kwargs)
class Effect8074(BaseEffect):
"""
shipBonusPC2maxRange
Used by:
Ship: Vedmak
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'),
'maxRange', ship.getModifiedItemAttr('shipBonusPC2'), skill='Precursor Cruiser', **kwargs)
class Effect8076(BaseEffect):
"""
systemHullThermalResistance
Used by:
Celestials named like: Volatile Ice Storm (2 of 2)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('thermalDamageResonance', beacon.getModifiedItemAttr('thermalDamageResistanceBonus'),
stackingPenalties=True, **kwargs)
class Effect8082(BaseEffect):
"""
systemScanResolutionBonus
Used by:
Celestial: Turnur Aftermath
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('scanResolution', beacon.getModifiedItemAttr('scanResolutionBonus'),
stackingPenalties=True, **kwargs)
class Effect8091(BaseEffect):
"""
shipBonusForceAuxiliaryG2CapBoosterStrength
Used by:
Ship: Ninazu
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.group.name == 'Capacitor Booster Charge',
'capacitorBonus', ship.getModifiedItemAttr('shipBonusForceAuxiliaryG2'),
skill='Gallente Carrier', **kwargs)
class Effect8092(BaseEffect):
"""
shipBonusForceAuxiliaryM2CapBoosterStrength
Used by:
Ship: Lif
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.group.name == 'Capacitor Booster Charge',
'capacitorBonus', ship.getModifiedItemAttr('shipBonusForceAuxiliaryM2'),
skill='Minmatar Carrier', **kwargs)
class Effect8094(BaseEffect):
"""
shipBonusHybridROFGD1
Used by:
Ship: Eris
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'),
'speed', ship.getModifiedItemAttr('shipBonusGD1'),
skill='Gallente Destroyer', **kwargs)
class Effect8095(BaseEffect):
"""
eliteBonusInterdictors1massAddition
Used by:
Ship: Eris
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Plate',
'massAddition', ship.getModifiedItemAttr('eliteBonusInterdictors1'),
skill='Interdictors', **kwargs)
class Effect8096(BaseEffect):
"""
shipBonusKinMissileDamageCD2
Used by:
Ship: Flycatcher
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'kineticDamage', ship.getModifiedItemAttr('shipBonusCD2'),
skill='Caldari Destroyer', **kwargs)
class Effect8097(BaseEffect):
"""
eliteBonusInterdictors1ShieldCapacity
Used by:
Ship: Flycatcher
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldCapacity', ship.getModifiedItemAttr('eliteBonusInterdictors1'),
skill='Interdictors', **kwargs)
class Effect8098(BaseEffect):
"""
shipBonusArmorHPAD2
Used by:
Ship: Heretic
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('armorHP', ship.getModifiedItemAttr('shipBonusAD2'),
skill='Amarr Destroyer', **kwargs)
class Effect8100(BaseEffect):
"""
shipBonusECMJamDroneDurationCF
Used by:
Ship: Griffin Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Drones'),
'ecmJamDuration', ship.getModifiedItemAttr('shipBonusCF'),
skill='Caldari Frigate', **kwargs)
class Effect8101(BaseEffect):
"""
roleBonusDroneDamage
Used by:
Ship: Griffin Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for dmgType in ('em', 'kinetic', 'explosive', 'thermal'):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Drones'),
f'{dmgType}Damage', ship.getModifiedItemAttr('roleBonus'), **kwargs)
class Effect8102(BaseEffect):
"""
shipBonusRole1DroneHitpointsDroneControlRange
Used by:
Ship: Griffin Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.extraAttributes.boost(
'droneControlRange', ship.getModifiedItemAttr('shipBonusRole1'), **kwargs)
for attr in ('shieldCapacity', 'armorHP', 'hp'):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Drones'),
attr, ship.getModifiedItemAttr('shipBonusRole1'), **kwargs)
class Effect8099(BaseEffect):
"""
systemHeatDamageBonus
Used by:
Celestials named like: Metaliminal Yoiul Festival YC 122 Storm (4 of 4)
Celestials named like: Volatile Ice Storm (2 of 2)
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, source, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: 'heatDamage' in mod.itemModifiedAttributes,
'heatDamage', source.getModifiedItemAttr('thermodynamicsHeatDamage'), **kwargs)
class Effect8103(BaseEffect):
"""
setBonusRapture
Used by:
Implants named like: grade Rapture (18 of 18)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(
lambda mod: mod.item.requiresSkill('Cybernetics'),
'capRechargeBonus', src.getModifiedItemAttr('ImplantSetRapture'), **kwargs)
class Effect8104(BaseEffect):
"""
salvageDroneSpecBonus
Used by:
Skill: Salvage Drone Specialization
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.drones.filteredItemIncrease(
lambda mod: mod.item.requiresSkill('Salvage Drone Specialization'),
'accessDifficultyBonus', src.getModifiedItemAttr('specAccessDifficultyBonus') * lvl, **kwargs)
fit.drones.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Salvage Drone Specialization'),
'maxVelocity', src.getModifiedItemAttr('maxVelocityBonus') * lvl, **kwargs)
class Effect8106(BaseEffect):
"""
shipPTdamageBonusMB2
Used by:
Ship: Maelstrom
Ship: Vargur
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusMB2'),
skill='Minmatar Battleship', **kwargs)
class Effect8107(BaseEffect):
"""
shipBonusLETcapNeedAB2
Used by:
Ship: Paladin
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'),
'capacitorNeed', ship.getModifiedItemAttr('shipBonusAB2'),
skill='Amarr Battleship', **kwargs)
class Effect8108(BaseEffect):
"""
signatureRadiusBonusOnline
Used by:
Modules from group: Signature Suppressor (5 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr('signatureRadius', src.getModifiedItemAttr('signatureSuppressorSignatureRadiusBonusPassive'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect8109(BaseEffect):
"""
targetSpectrumBreakerBonus
Used by:
Modules from group: Signature Suppressor (5 of 5)
"""
type = 'active'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr('signatureRadius', src.getModifiedItemAttr('signatureSuppressorSignatureRadiusBonusActive'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect8111(BaseEffect):
"""
systemElectricalStorm
Used by:
Celestial: Strong Metaliminal Electrical Storm
Celestial: Weak Metaliminal Electrical Storm
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('disallowCloaking', beacon.getModifiedItemAttr('disallowCloaking'), **kwargs)
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'),
'baseSensorStrength', beacon.getModifiedItemAttr('scanProbeStrengthBonus'),
stackingPenalties=True, **kwargs)
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Archaeology'),
'virusCoherence', beacon.getModifiedItemAttr('virusCoherenceBonus'), **kwargs)
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Hacking'),
'virusCoherence', beacon.getModifiedItemAttr('virusCoherenceBonus'), **kwargs)
fit.ship.boostItemAttr('shieldEmDamageResonance', beacon.getModifiedItemAttr('shieldEmDamageResistanceBonus'),
stackingPenalties=True, **kwargs)
fit.ship.boostItemAttr('armorEmDamageResonance', beacon.getModifiedItemAttr('armorEmDamageResistanceBonus'),
stackingPenalties=True, **kwargs)
fit.ship.boostItemAttr('emDamageResonance', beacon.getModifiedItemAttr('emDamageResistanceBonus'),
stackingPenalties=True, **kwargs)
fit.ship.multiplyItemAttr('rechargeRate', beacon.getModifiedItemAttr('rechargeRateMultiplier'), **kwargs)
class Effect8112(BaseEffect):
"""
systemExoticStorm
Used by:
Celestial: Strong Metaliminal Exotic Matter Storm
Celestial: Weak Metaliminal Exotic Matter Storm
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems') or
mod.item.requiresSkill('Capital Repair Systems'),
'duration', beacon.getModifiedItemAttr('armorRepairDurationBonus'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation') or
mod.item.requiresSkill('Capital Shield Operation'),
'duration', beacon.getModifiedItemAttr('shieldBoosterDurationBonus'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining'), 'duration',
beacon.getModifiedItemAttr('miningDurationMultiplier'), **kwargs)
fit.ship.boostItemAttr('warpSpeedMultiplier', beacon.getModifiedItemAttr('warpSpeedBonus'),
stackingPenalties=True, **kwargs)
fit.ship.boostItemAttr('scanResolution', beacon.getModifiedItemAttr('scanResolutionBonus'),
stackingPenalties=True, **kwargs)
fit.ship.boostItemAttr('shieldKineticDamageResonance',
beacon.getModifiedItemAttr('shieldKineticDamageResistanceBonus'),
stackingPenalties=True, **kwargs)
fit.ship.boostItemAttr('armorKineticDamageResonance',
beacon.getModifiedItemAttr('armorKineticDamageResistanceBonus'),
stackingPenalties=True, **kwargs)
fit.ship.boostItemAttr('kineticDamageResonance', beacon.getModifiedItemAttr('kineticDamageResistanceBonus'),
stackingPenalties=True, **kwargs)
class Effect8113(BaseEffect):
"""
systemGammaStorm
Used by:
Celestial: Strong Metaliminal Gamma Ray Storm
Celestial: Weak Metaliminal Gamma Ray Storm
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.requiresSkill('Shield Emission Systems') or
mod.item.requiresSkill('Capital Shield Emission Systems'),
'shieldBonus', beacon.getModifiedItemAttr('shieldBonusMultiplierRemote'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
fit.modules.filteredItemMultiply(
lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems') or
mod.item.requiresSkill('Capital Remote Armor Repair Systems'),
'armorDamageAmount', beacon.getModifiedItemAttr('armorDamageAmountMultiplierRemote'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
fit.ship.multiplyItemAttr('shieldCapacity', beacon.getModifiedItemAttr('shieldCapacityMultiplier'), **kwargs)
fit.ship.multiplyItemAttr('capacitorCapacity', beacon.getModifiedItemAttr('capacitorCapacityMultiplierSystem'), **kwargs)
fit.ship.multiplyItemAttr('signatureRadius', beacon.getModifiedItemAttr('signatureRadiusMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
fit.ship.boostItemAttr('shieldExplosiveDamageResonance',
beacon.getModifiedItemAttr('shieldExplosiveDamageResistanceBonus'),
stackingPenalties=True, **kwargs)
fit.ship.boostItemAttr('armorExplosiveDamageResonance',
beacon.getModifiedItemAttr('armorExplosiveDamageResistanceBonus'),
stackingPenalties=True, **kwargs)
fit.ship.boostItemAttr('explosiveDamageResonance', beacon.getModifiedItemAttr('explosiveDamageResistanceBonus'),
stackingPenalties=True, **kwargs)
class Effect8114(BaseEffect):
"""
systemPlasmaStorm
Used by:
Celestial: Strong Metaliminal Plasma Firestorm
Celestial: Weak Metaliminal Plasma Firestorm
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Gunnery'),
'damageMultiplier', beacon.getModifiedItemAttr('damageMultiplierMultiplier'),
stackingPenalties=True, **kwargs)
for attr in ('emDamage', 'explosiveDamage', 'kineticDamage', 'thermalDamage'):
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
attr, beacon.getModifiedItemAttr('damageMultiplierMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
fit.drones.filteredItemMultiply(lambda drone: drone.item.requiresSkill('Drones'),
'damageMultiplier', beacon.getModifiedItemAttr('damageMultiplierMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
fit.fighters.filteredItemMultiply(lambda drone: drone.item.requiresSkill('Fighters'),
'damageMultiplier', beacon.getModifiedItemAttr('damageMultiplierMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Gunnery'),
'trackingSpeed', beacon.getModifiedItemAttr('trackingSpeedMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
fit.drones.filteredItemMultiply(lambda drone: True,
'trackingSpeed', beacon.getModifiedItemAttr('trackingSpeedMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
for attr in ('fighterAbilityAttackMissileExplosionRadius', 'fighterAbilityMissilesExplosionRadius'):
fit.fighters.filteredItemMultiply(
lambda mod: mod.item.requiresSkill('Fighters'),
attr, beacon.getModifiedItemAttr('aoeCloudSizeMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
fit.ship.multiplyItemAttr('armorHP', beacon.getModifiedItemAttr('armorHPMultiplier'), **kwargs)
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'aoeCloudSize', beacon.getModifiedItemAttr('aoeCloudSizeMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
fit.ship.boostItemAttr('shieldThermalDamageResonance',
beacon.getModifiedItemAttr('shieldThermalDamageResistanceBonus'),
stackingPenalties=True, **kwargs)
fit.ship.boostItemAttr('armorThermalDamageResonance',
beacon.getModifiedItemAttr('armorThermalDamageResistanceBonus'),
stackingPenalties=True, **kwargs)
fit.ship.boostItemAttr('thermalDamageResonance', beacon.getModifiedItemAttr('thermalDamageResistanceBonus'),
stackingPenalties=True, **kwargs)
class Effect8117(BaseEffect):
"""
interdictionNullifierBonus
Used by:
Modules from group: Interdiction Nullifier (4 of 4)
"""
type = 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.preAssignItemAttr('warpBubbleImmune', module.getModifiedItemAttr('warpBubbleImmuneBonus'), **kwargs)
class Effect8119(BaseEffect):
"""
industrialCompactCoreEffect2
Used by:
Modules named like: Industrial Core (4 of 6)
"""
runTime = 'early'
type = 'active'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', src.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs)
fit.ship.multiplyItemAttr('mass', src.getModifiedItemAttr('siegeMassMultiplier'), **kwargs)
# Local Shield Repper Bonuses
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'),
'duration', src.getModifiedItemAttr('industrialCoreLocalLogisticsDurationBonus'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'),
'shieldBonus', src.getModifiedItemAttr('industrialCoreLocalLogisticsAmountBonus'),
stackingPenalties=True, **kwargs)
# Mining Burst Bonuses
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'),
'warfareBuff1Value', src.getModifiedItemAttr('industrialCoreBonusMiningBurstStrength'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'),
'warfareBuff2Value', src.getModifiedItemAttr('industrialCoreBonusMiningBurstStrength'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'),
'warfareBuff3Value', src.getModifiedItemAttr('industrialCoreBonusMiningBurstStrength'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'),
'warfareBuff4Value', src.getModifiedItemAttr('industrialCoreBonusMiningBurstStrength'), **kwargs)
# Command Burst Range Bonus
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'),
'maxRange', src.getModifiedItemAttr('industrialCoreBonusCommandBurstRange'),
stackingPenalties=True, **kwargs)
# Drone Bonuses
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Ice Harvesting Drone Operation'),
'duration', src.getModifiedItemAttr('industrialCoreBonusDroneIceHarvesting'), **kwargs)
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Mining Drone Operation'),
'miningAmount', src.getModifiedItemAttr('industrialCoreBonusDroneMining'), **kwargs)
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'maxVelocity', src.getModifiedItemAttr('industrialCoreBonusDroneVelocity'),
stackingPenalties=True, **kwargs)
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'damageMultiplier', src.getModifiedItemAttr('industrialCoreBonusDroneDamageHP'),
stackingPenalties=True, **kwargs)
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'shieldCapacity', src.getModifiedItemAttr('industrialCoreBonusDroneDamageHP'), **kwargs)
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'armorHP', src.getModifiedItemAttr('industrialCoreBonusDroneDamageHP'), **kwargs)
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'),
'hp', src.getModifiedItemAttr('industrialCoreBonusDroneDamageHP'), **kwargs)
# Remote impedance (no reps, etc)
fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs)
fit.ship.boostItemAttr('remoteRepairImpedance', src.getModifiedItemAttr('remoteRepairImpedanceBonus'), **kwargs)
fit.ship.increaseItemAttr('disallowTethering', src.getModifiedItemAttr('disallowTethering'), **kwargs)
fit.ship.boostItemAttr('sensorDampenerResistance', src.getModifiedItemAttr('sensorDampenerResistanceBonus'), **kwargs)
fit.ship.boostItemAttr('remoteAssistanceImpedance', src.getModifiedItemAttr('remoteAssistanceImpedanceBonus'), **kwargs)
fit.ship.increaseItemAttr('disallowDocking', src.getModifiedItemAttr('disallowDocking'), **kwargs)
fit.ship.increaseItemAttr('gateScrambleStatus', src.getModifiedItemAttr('gateScrambleStrength'), **kwargs)
fit.ship.forceItemAttr('ECMResistance', src.getModifiedItemAttr('ECMResistance'), **kwargs)
class Effect8120(BaseEffect):
"""
interceptorNullificationRoleBonus
Used by:
Ships from group: Interceptor (6 of 10)
Subsystems named like: Propulsion Interdiction Nullifier (4 of 4)
Ship: Victorieux Luxury Yacht
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Interdiction Nullifier',
'maxTargetRangeBonus', ship.getModifiedItemAttr('shipBonusRole1'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Interdiction Nullifier',
'moduleReactivationDelay', ship.getModifiedItemAttr('shipBonusRole1'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Interdiction Nullifier',
'durationHighisGood', ship.getModifiedItemAttr('shipBonusRole2'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Interdiction Nullifier',
'scanResolutionMultiplier', ship.getModifiedItemAttr('shipBonusRole3'), **kwargs)
class Effect8121(BaseEffect):
"""
warpCoreStabilizerActive
Used by:
Modules from group: Warp Core Stabilizer (8 of 8)
"""
type = 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('warpScrambleStatus', module.getModifiedItemAttr('warpScrambleStrength'), **kwargs)
class Effect8123(BaseEffect):
"""
droneBandWidthPenaltyOnline
Used by:
Modules from group: Interdiction Nullifier (4 of 4)
Modules from group: Warp Core Stabilizer (8 of 8)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('droneBandwidth', module.getModifiedItemAttr('droneBandwidthPercentage'), **kwargs)
class Effect8128(BaseEffect):
"""
miningLaserRangeBonusLRSM
Used by:
Implants named like: AIR Mining Range Booster (2 of 2)
Implants named like: Chemal Tech Mining Booster (3 of 3)
"""
type = 'passive'
@staticmethod
def handler(fit, source, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining'), 'maxRange',
source.getModifiedItemAttr('maxRangeBonus'), **kwargs)
class Effect8129(BaseEffect):
"""
shipBonusCloakVelocityBonusGF
Used by:
Ship: Helios
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
if fit.extraAttributes['cloaked']:
fit.ship.boostItemAttr(
'maxVelocity', container.getModifiedItemAttr('shipBonusGF'),
skill='Gallente Frigate', **kwargs)
class Effect8130(BaseEffect):
"""
shipBonusWarpCapacityNeedGF2
Used by:
Ship: Helios
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('warpCapacitorNeed', container.getModifiedItemAttr('shipBonusGF2'),
skill='Gallente Frigate', **kwargs)
class Effect8131(BaseEffect):
"""
shipBonusWarpCapacitorNeedAF
Used by:
Ship: Anathema
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('warpCapacitorNeed', container.getModifiedItemAttr('shipBonusAF'),
skill='Amarr Frigate', **kwargs)
class Effect8132(BaseEffect):
"""
shipBonusScanProbeDeviationA2F
Used by:
Ship: Anathema
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseMaxScanDeviation',
container.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs)
class Effect8133(BaseEffect):
"""
shipBonusCloakVelocityMF
Used by:
Ship: Cheetah
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
if fit.extraAttributes['cloaked']:
fit.ship.boostItemAttr('maxVelocity', container.getModifiedItemAttr('shipBonusMF'),
skill='Minmatar Frigate', **kwargs)
class Effect8134(BaseEffect):
"""
shipBonusWarpCapacitorNeedCF2
Used by:
Ship: Buzzard
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('warpCapacitorNeed', container.getModifiedItemAttr('shipBonusCF2'),
skill='Caldari Frigate', **kwargs)
class Effect8135(BaseEffect):
"""
shipBonusScanProbeDeviationCF
Used by:
Ship: Buzzard
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseMaxScanDeviation',
container.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs)
class Effect8136(BaseEffect):
"""
shipBonusWarpCapacitorNeedMF2
Used by:
Ship: Cheetah
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('warpCapacitorNeed', container.getModifiedItemAttr('shipBonusMF2'),
skill='Minmatar Frigate', **kwargs)
class Effect8151(BaseEffect):
"""
shipBonusCloakedVelocityRole1
Used by:
Ships from group: Black Ops (6 of 6)
"""
type = 'passive'
runTime = 'early'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.requiresSkill('Cloaking'), 'maxVelocityModifier',
ship.getModifiedItemAttr('shipBonusRole1'), **kwargs)
class Effect8152(BaseEffect):
"""
eliteBonusEnergyDrainAmountBlackOps2
Used by:
Ship: Redeemer
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount',
ship.getModifiedItemAttr('eliteBonusBlackOps2'), skill='Black Ops', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount',
ship.getModifiedItemAttr('eliteBonusBlackOps2'), skill='Black Ops', **kwargs)
class Effect8154(BaseEffect):
"""
eliteBonusDroneTrackingOptimalBlackOps2
Used by:
Ship: Sin
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Drones'), 'maxRange',
ship.getModifiedItemAttr('eliteBonusBlackOps2'), skill='Black Ops', **kwargs)
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Drones'), 'trackingSpeed',
ship.getModifiedItemAttr('eliteBonusBlackOps2'), skill='Black Ops', **kwargs)
class Effect8155(BaseEffect):
"""
eliteBonusLPTtrackingBlackOps1
Used by:
Ship: Panther
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Large Projectile Turret'),
'trackingSpeed', ship.getModifiedItemAttr('eliteBonusBlackOps1'), skill='Black Ops', **kwargs)
class Effect8156(BaseEffect):
"""
eliteBonusLPTfalloffBlackOps2
Used by:
Ship: Panther
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Large Projectile Turret'),
'falloff', ship.getModifiedItemAttr('eliteBonusBlackOps2'), skill='Black Ops', **kwargs)
class Effect8157(BaseEffect):
"""
eliteBonusShieldResistancesBlackOps2
Used by:
Ship: Widow
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
damageTypes = ('Em', 'Explosive', 'Kinetic', 'Thermal')
for damageType in damageTypes:
fit.ship.boostItemAttr(
'shield{0}DamageResonance'.format(damageType), ship.getModifiedItemAttr('eliteBonusBlackOps2'),
skill='Black Ops', **kwargs)
class Effect8158(BaseEffect):
"""
stabilizeCloakDurationBonus
Used by:
Implant: Strong Veilguard Booster
"""
type = 'passive'
@staticmethod
def handler(fit, booster, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Cloaking'), 'stabilizeCloakDuration',
booster.getModifiedItemAttr('stabilizeCloakDurationBonus'), **kwargs)
class Effect8199(BaseEffect):
"""
gallenteIndustrialBonusIceHoldCapacity
Used by:
Ship: Kryos
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr(
'specialIceHoldCapacity', ship.getModifiedItemAttr('gallenteIndustrialBonusIceHoldCapacity'),
skill='Gallente Hauler', **kwargs)
class Effect8206(BaseEffect):
"""
specializationAsteroidDurationMultiplierEffect
Used by:
Charges from group: Mercoxit Mining Crystal (6 of 6)
Charges from group: Mining Crystal (66 of 66)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.multiplyItemAttr('duration', module.getModifiedChargeAttr('specializationAsteroidDurationMultiplier'), **kwargs)
class Effect8210(BaseEffect):
"""
expeditionFrigateBonusIceHarvestingDuration
Used by:
Ship: Endurance
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'duration',
ship.getModifiedItemAttr('expeditionFrigateBonusIceHarvestingDuration'),
skill='Expedition Frigates', **kwargs)
class Effect8223(BaseEffect):
"""
shipRoleBonusOreMiningYield
Used by:
Ships from group: Expedition Frigate (2 of 2)
Ship: Retriever
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Mining'), 'miningAmount',
ship.getModifiedItemAttr('shipRoleBonusOreMiningYield'), **kwargs)
class Effect8224(BaseEffect):
"""
shipRoleBonusIceHarvestingDuration
Used by:
Variations of ship: Covetor (2 of 2)
Variations of ship: Retriever (2 of 2)
Ship: Endurance
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'duration',
ship.getModifiedItemAttr('shipRoleBonusIceHarvestingDuration'), **kwargs)
class Effect8225(BaseEffect):
"""
shipRoleBonusDroneDamage
Used by:
Variations of ship: Procurer (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier',
ship.getModifiedItemAttr('shipRoleBonusDroneDamage'), **kwargs)
class Effect8226(BaseEffect):
"""
shipRoleBonusDroneHitPoints
Used by:
Variations of ship: Procurer (2 of 2)
Ship: Metamorphosis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for layer in ('shieldCapacity', 'armorHP', 'hp'):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Drones'), layer,
ship.getModifiedItemAttr('shipRoleBonusDroneHitPoints'), **kwargs)
class Effect8227(BaseEffect):
"""
miningBargeBonusOreMiningYield
Used by:
Ships from group: Exhumer (3 of 3)
Ships from group: Mining Barge (3 of 3)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Mining'), 'miningAmount',
ship.getModifiedItemAttr('miningBargeBonusOreMiningYield'),
skill='Mining Barge', **kwargs)
class Effect8228(BaseEffect):
"""
miningBargeBonusIceHarvestingDuration
Used by:
Ships from group: Exhumer (3 of 3)
Ships from group: Mining Barge (3 of 3)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'duration',
ship.getModifiedItemAttr('miningBargeBonusIceHarvestingDuration'),
skill='Mining Barge', **kwargs)
class Effect8229(BaseEffect):
"""
miningBargeBonusGasHarvestingDuration
Used by:
Ships from group: Mining Barge (3 of 3)
Ship: Hulk
Ship: Mackinaw
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Gas Cloud Harvesting'), 'duration',
ship.getModifiedItemAttr('miningBargeBonusGasHarvestingDuration'),
skill='Mining Barge', **kwargs)
class Effect8230(BaseEffect):
"""
miningBargeBonusOreMiningRange
Used by:
Variations of ship: Covetor (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Mining'), 'maxRange',
ship.getModifiedItemAttr('miningBargeBonusOreMiningRange'),
skill='Mining Barge', **kwargs)
class Effect8231(BaseEffect):
"""
miningBargeBonusIceHarvestingRange
Used by:
Variations of ship: Covetor (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'maxRange',
ship.getModifiedItemAttr('miningBargeBonusIceHarvestingRange'),
skill='Mining Barge', **kwargs)
class Effect8243(BaseEffect):
"""
exhumersBonusOreMiningDuration
Used by:
Ship: Hulk
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Mining'), 'duration',
ship.getModifiedItemAttr('exhumersBonusOreMiningDuration'),
skill='Exhumers', **kwargs)
class Effect8244(BaseEffect):
"""
exhumersBonusIceHarvestingDuration
Used by:
Ship: Hulk
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'duration',
ship.getModifiedItemAttr('exhumersBonusIceHarvestingDuration'),
skill='Exhumers', **kwargs)
class Effect8249(BaseEffect):
"""
exhumersBonusOreMiningYield
Used by:
Ships from group: Exhumer (3 of 3)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Mining'), 'miningAmount',
ship.getModifiedItemAttr('exhumersBonusOreMiningYield'),
skill='Exhumers', **kwargs)
class Effect8251(BaseEffect):
"""
exhumersBonusGeneralMiningHoldCapacity
Used by:
Ship: Mackinaw
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr(
'generalMiningHoldCapacity', ship.getModifiedItemAttr('exhumersBonusGeneralMiningHoldCapacity'),
skill='Exhumers', **kwargs)
class Effect8253(BaseEffect):
"""
exhumersBonusShieldResistance
Used by:
Ships from group: Exhumer (3 of 3)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
damageTypes = ('Em', 'Explosive', 'Kinetic', 'Thermal')
for damageType in damageTypes:
fit.ship.boostItemAttr(
'shield{}DamageResonance'.format(damageType),
ship.getModifiedItemAttr('exhumersBonusShieldResistance'),
skill='Exhumers', **kwargs)
class Effect8261(BaseEffect):
"""
industrialCommandBonusDroneDamage
Used by:
Ships from group: Industrial Command Ship (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier',
ship.getModifiedItemAttr('industrialCommandBonusDroneDamage'),
skill='Industrial Command Ships', **kwargs)
class Effect8263(BaseEffect):
"""
industrialCommandBonusFuelConsuptionCompactIndustrialCore
Used by:
Ship: Orca
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Industrial Reconfiguration'), 'consumptionQuantity',
ship.getModifiedItemAttr('industrialCommandBonusFuelConsuptionCompactIndustrialCore'),
skill='Industrial Command Ships', **kwargs)
class Effect8264(BaseEffect):
"""
industrialCommandBonusMiningForemanBurstRange
Used by:
Ships from group: Industrial Command Ship (2 of 2)
Ship: Rorqual
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Mining Foreman'), 'maxRange',
ship.getModifiedItemAttr('industrialCommandBonusMiningForemanBurstRange'),
skill='Industrial Command Ships', **kwargs)
class Effect8267(BaseEffect):
"""
weaponDisruptorResistanceBonusPassive
Used by:
Implants named like: Harvest Anti Disruptor Booster (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.ship.boostItemAttr(
'weaponDisruptionResistance',
container.getModifiedItemAttr('weaponDisruptionResistanceBonus'), **kwargs)
class Effect8268(BaseEffect):
"""
nosferatuDurationBonusPassive
Used by:
Implants named like: Harvest Nosferatu Booster (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Energy Nosferatu', 'duration',
module.getModifiedItemAttr('durationBonus'), **kwargs)
class Effect8269(BaseEffect):
"""
stasisWebifierMaxRangeAddPassive
Used by:
Implants named like: Harvest Webifier Booster (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemIncrease(
lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange',
module.getModifiedItemAttr('stasisWebRangeAdd'), **kwargs)
class Effect8270(BaseEffect):
"""
capacitorWarfareResistanceBonusPassive
Used by:
Implants named like: Halcyon Y Booster (5 of 5)
Implants named like: Tetrimon Anti Drain Booster (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.ship.boostItemAttr(
'energyWarfareResistance',
container.getModifiedItemAttr('energyWarfareResistanceBonus'), **kwargs)
class Effect8275(BaseEffect):
"""
minmatarIndustrialBonusGasHoldCapacity
Used by:
Ship: Hoarder
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr(
'specialGasHoldCapacity', ship.getModifiedItemAttr('minmatarIndustrialBonusGasHoldCapacity'),
skill='Minmatar Hauler', **kwargs)
class Effect8278(BaseEffect):
"""
industrialCommandBonusGeneralMiningHoldCapacity
Used by:
Ships from group: Industrial Command Ship (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr(
'generalMiningHoldCapacity', ship.getModifiedItemAttr('industrialCommandBonusGeneralMiningHoldCapacity'),
skill='Industrial Command Ships', **kwargs)
class Effect8279(BaseEffect):
"""
industrialCommandBonusShipHoldCapacity
Used by:
Ships from group: Industrial Command Ship (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr(
'capacity', ship.getModifiedItemAttr('industrialCommandBonusShipCargoCapacity'),
skill='Industrial Command Ships', **kwargs)
class Effect8291(BaseEffect):
"""
afterburnerSpeedBoostBonusPassive
Used by:
Implants named like: Wightstorm Cetana Booster (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, booster, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Afterburner'), 'speedFactor',
booster.getModifiedItemAttr('speedFBonus'), **kwargs)
class Effect8294(BaseEffect):
"""
industrialCommandBonusDroneOreMiningYield
Used by:
Ships from group: Industrial Command Ship (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Mining Drone Operation'), 'miningAmount',
ship.getModifiedItemAttr('industrialCommandBonusDroneOreMiningYield'),
skill='Industrial Command Ships', **kwargs)
class Effect8295(BaseEffect):
"""
industrialCommandBonusDroneIceHarvestingCycleTime
Used by:
Ships from group: Industrial Command Ship (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Ice Harvesting Drone Operation'), 'duration',
ship.getModifiedItemAttr('industrialCommandBonusDroneIceHarvestingCycleTime'),
skill='Industrial Command Ships', **kwargs)
class Effect8296(BaseEffect):
"""
capitalIndustrialShipBonusDroneOreMiningYield
Used by:
Ship: Rorqual
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Mining Drone Operation'), 'miningAmount',
ship.getModifiedItemAttr('capitalIndustrialShipBonusDroneOreMiningYield'),
skill='Capital Industrial Ships', **kwargs)
class Effect8297(BaseEffect):
"""
capitalIndustrialShipBonusDroneIceCycleTime
Used by:
Ship: Rorqual
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Ice Harvesting Drone Operation'), 'duration',
ship.getModifiedItemAttr('capitalIndustrialShipBonusDroneIceCycleTime'),
skill='Capital Industrial Ships', **kwargs)
class Effect8300(BaseEffect):
"""
shipRoleBonusGasHarvestingDuration
Used by:
Variations of ship: Covetor (2 of 2)
Variations of ship: Retriever (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Gas Cloud Harvesting'), 'duration',
ship.getModifiedItemAttr('shipRoleBonusGasHarvesterDuration'), **kwargs)
class Effect8301(BaseEffect):
"""
exhumersBonusGasHarvestingDuration
Used by:
Ships from group: Exhumer (3 of 3)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Gas Cloud Harvesting'), 'duration',
ship.getModifiedItemAttr('exhumersBonusGasHarvestingDuration'),
skill='Exhumers', **kwargs)
class Effect8303(BaseEffect):
"""
shipRoleBonusStripMinerActivationCost
Used by:
Variations of ship: Covetor (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Mining'), 'capacitorNeed',
ship.getModifiedItemAttr('shipRoleBonusStripMinerActivationCost'), **kwargs)
class Effect8304(BaseEffect):
"""
shipRoleBonusIceHarvestingActivationCost
Used by:
Variations of ship: Covetor (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'capacitorNeed',
ship.getModifiedItemAttr('shipRoleBonusIceHarvesterActivationCost'), **kwargs)
class Effect8305(BaseEffect):
"""
shipRoleBonusOreMiningDuration
Used by:
Variations of ship: Covetor (2 of 2)
Ship: Mackinaw
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Mining'), 'duration',
ship.getModifiedItemAttr('shipRoleBonusOreMiningDuration'), **kwargs)
class Effect8306(BaseEffect):
"""
industrialReconfigurationBonusConsumptionQuantity
Used by:
Skill: Industrial Reconfiguration
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
amount = -skill.getModifiedItemAttr('consumptionQuantityBonus')
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill(skill),
'consumptionQuantity', amount * skill.level, **kwargs)
class Effect8309(BaseEffect):
"""
capitalIndustrialShipBonusDroneHitPoints
Used by:
Ship: Rorqual
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for layer in ('shieldCapacity', 'armorHP', 'hp'):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Drones'), layer,
ship.getModifiedItemAttr('capitalIndustrialShipBonusDroneHitPoints'),
skill='Capital Industrial Ships', **kwargs)
class Effect8311(BaseEffect):
"""
industrialCommandBonusDroneHitPoints
Used by:
Ships from group: Industrial Command Ship (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for layer in ('shieldCapacity', 'armorHP', 'hp'):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Drones'), layer,
ship.getModifiedItemAttr('industrialCommandBonusDroneHitPoints'),
skill='Industrial Command Ships', **kwargs)
class Effect8313(BaseEffect):
"""
miningFrigateBonusGasCloudHarvestingDuration
Used by:
Variations of ship: Venture (3 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Gas Cloud Harvesting'), 'duration',
ship.getModifiedItemAttr('miningFrigateBonusGasCloudHarvestingDuration'),
skill='Mining Frigate', **kwargs)
class Effect8315(BaseEffect):
"""
shipRoleBonusGasHarvestingYield
Used by:
Variations of ship: Venture (3 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Gas Cloud Harvesting'), 'miningAmount',
ship.getModifiedItemAttr('shipRoleBonusGasHarvestingYield'), **kwargs)
class Effect8317(BaseEffect):
"""
miningFrigateBonusIceHarvestingDuration
Used by:
Ship: Endurance
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'duration',
ship.getModifiedItemAttr('miningFrigateBonusIceHarvestingDuration'),
skill='Mining Frigate', **kwargs)
class Effect8323(BaseEffect):
"""
gallenteIndustrialBonusMiningHoldCapacity
Used by:
Ship: Miasmos
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr(
'generalMiningHoldCapacity',
ship.getModifiedItemAttr('gallenteIndustrialBonusMiningHoldCapacity'),
skill='Gallente Hauler', **kwargs)
class Effect8360(BaseEffect):
"""
shipBonusMissileReloadTimeGC2
Used by:
Ship: Laelaps
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Missile Launcher Operation'),
'reloadTime', ship.getModifiedItemAttr('shipBonusGC2'),
skill='Gallente Cruiser', **kwargs)
class Effect8362(BaseEffect):
"""
shipBonusWarpDisruptionFieldGeneratorSignatureRadius
Used by:
Ship: Laelaps
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Warp Disrupt Field Generator',
'signatureRadiusBonus', ship.getModifiedItemAttr('eliteBonusHeavyInterdictors3'), **kwargs)
class Effect8364(BaseEffect):
"""
industrialItemCompression
Used by:
Modules from group: Compressors (12 of 12)
"""
type = 'active'
class Effect8372(BaseEffect):
"""
fleetCompressionLogisticsRangeBonus
Used by:
Skill: Fleet Compression Logistics
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shipboard Compression Technology')
or mod.item.requiresSkill('Capital Shipboard Compression Technology'),
'maxRange', skill.getModifiedItemAttr('fleetCompressionLogisticsRangeBonus') * skill.level, **kwargs)
class Effect8377(BaseEffect):
"""
BattleshipRoleBonusArmorPlate&ShieldExtenderHP
Used by:
Ships from group: Battleship (34 of 35)
Ships from group: Black Ops (6 of 6)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Shield Extender',
'capacityBonus', ship.getModifiedItemAttr('battleshipExtenderHPBonus'), **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Armor Plate',
'armorHPBonusAdd', ship.getModifiedItemAttr('battleshipPlateHPBonus'), **kwargs)
fit.modules.filteredItemIncrease(
lambda mod: mod.item.group.name == 'Reinforced Bulkhead',
'structureHPMultiplier', ship.getModifiedItemAttr('battleshipBulkheadHPModifierBonus'), **kwargs)
class Effect8467(BaseEffect):
"""
modifyJumpConduitPassengerRequired
Used by:
Module: Covert Jump Portal Generator I
Module: Industrial Jump Portal Generator I
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.forceItemAttr(
'jumpConduitPassengerRequiredAttributeID',
module.getModifiedChargeAttr('jumpConduitPassengerRequiredAttributeID'), **kwargs)
class Effect8468(BaseEffect):
"""
subsystemBonusBlackOpsJumpPassenger
Used by:
Subsystems named like: Defensive Covert Reconfiguration (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
module.forceItemAttr(
'isBlackOpsJumpPortalPassenger', module.getModifiedChargeAttr('isBlackOpsJumpPortalPassenger'), **kwargs)
module.forceItemAttr(
'isBlackOpsJumpConduitPassenger', module.getModifiedChargeAttr('isBlackOpsJumpConduitPassenger'), **kwargs)
class Effect8470(BaseEffect):
"""
capitalIndustrialCommandBonusDroneDamage
Used by:
Ship: Rorqual
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier',
container.getModifiedItemAttr('capitalIndustrialCommandBonusDroneDamage'),
skill='Capital Industrial Ships', **kwargs)
class Effect8474(BaseEffect):
"""
subsystemBonusMassAddition
Used by:
Subsystem: Proteus Defensive - Augmented Plating
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Armor Plate', 'massAddition',
ship.getModifiedItemAttr('subsystemBonusMassAddition'), **kwargs)
class Effect8477(BaseEffect):
"""
droneTrackingBonusPassive
Used by:
Implants named like: Halcyon R Booster (5 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Drones'), 'trackingSpeed',
container.getModifiedItemAttr('droneTrackingBonus'), **kwargs)
class Effect8478(BaseEffect):
"""
miningAndIceHarvestingCycleTimeBonusPassive
Used by:
Implants named like: Halcyon B Booster (5 of 5)
Implants named like: Halcyon G Booster (5 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Ice Harvesting') or mod.item.requiresSkill('Mining'),
'duration', skill.getModifiedItemAttr('iceHarvestCycleBonus'), **kwargs)
class Effect8479(BaseEffect):
"""
droneOptimalFalloffBonusPassive
Used by:
Implants named like: Halcyon Y Booster (5 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Drones'), 'maxRange',
container.getModifiedItemAttr('rangeSkillBonus'), **kwargs)
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Drones'), 'falloff',
container.getModifiedItemAttr('falloffBonus'), **kwargs)
class Effect11055(BaseEffect):
"""
shipBonusBattlecruiserHeavyMissileAoeVelocityMBC1
Used by:
Ship: Cyclone Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'aoeVelocity',
ship.getModifiedItemAttr('shipBonusMBC1'), skill='Minmatar Battlecruiser', **kwargs)
class Effect11056(BaseEffect):
"""
shipBonusBattlecruiserHeavyAssaultMissileAoeVelocityMBC1
Used by:
Ship: Cyclone Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'aoeVelocity',
ship.getModifiedItemAttr('shipBonusMBC1'), skill='Minmatar Battlecruiser', **kwargs)
class Effect11057(BaseEffect):
"""
shipBonusShieldBoostCapacitorCBC3
Used by:
Ship: Ferox Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Operation'), 'capacitorNeed',
ship.getModifiedItemAttr('shipBonusCBC3'), skill='Caldari Battlecruiser', **kwargs)
class Effect11059(BaseEffect):
"""
shipBonusMediumHybridTrackingCBC1
Used by:
Ship: Ferox Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'trackingSpeed',
src.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser', **kwargs)
class Effect11060(BaseEffect):
"""
shipBonusDroneWebStrengthAndHitpointsGBC3
Used by:
Ship: Myrmidon Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Drones'), 'speedFactor',
ship.getModifiedItemAttr('shipBonusGBC3'), skill='Gallente Battlecruiser', **kwargs)
for attr in ('shieldCapacity', 'armorHP', 'hp'):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Propulsion Jamming'), attr,
ship.getModifiedItemAttr('shipBonusGBC3'), skill='Gallente Battlecruiser', **kwargs)
class Effect11061(BaseEffect):
"""
roleBonusMHTRangeCBC2
Used by:
Ship: Myrmidon Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for attr in ('maxRange', 'falloff'):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), attr,
ship.getModifiedItemAttr('roleBonusCBC2'), **kwargs)
class Effect11063(BaseEffect):
"""
shipBonusMediumEnergyWeaponDamageABC3
Used by:
Ship: Prophecy Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'damageMultiplier',
ship.getModifiedItemAttr('shipBonusABC3'), skill='Amarr Battlecruiser', **kwargs)
class Effect11064(BaseEffect):
"""
shipBonusMediumEnergyWeaponRangeABC1
Used by:
Ship: Prophecy Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'maxRange',
ship.getModifiedItemAttr('shipBonusABC1'), skill='Amarr Battlecruiser', **kwargs)
class Effect11065(BaseEffect):
"""
shipBonusArmorHitpointsABC1
Used by:
Ship: Prophecy Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.ship.boostItemAttr(
'armorHP', implant.getModifiedItemAttr('shipBonusABC1'),
skill='Amarr Battlecruiser', **kwargs)
class Effect11067(BaseEffect):
"""
battlecruiserMETRange2
Used by:
Ship: Prophecy Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for attr in ('maxRange', 'falloff'):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Medium Energy Turret'), attr,
src.getModifiedItemAttr('roleBonusCBC2'), **kwargs)
class Effect11068(BaseEffect):
"""
shipMissileRoFMF
Used by:
Ship: Probe Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'speed',
ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs)
class Effect11069(BaseEffect):
"""
shipRoleBonusScanProbeLauncherCPU
Used by:
Ship: Heron Navy Issue
Ship: Imicus Navy Issue
Ship: Magnate Navy Issue
Ship: Probe Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Astrometrics'), 'cpu',
src.getModifiedItemAttr('shipRoleBonusScanProbeLauncherCPU'), **kwargs)
class Effect11070(BaseEffect):
"""
shipBonusMissileDamageCF
Used by:
Ship: Heron Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for dmgType in ('em', 'kinetic', 'explosive', 'thermal'):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), f'{dmgType}Damage',
ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs)
class Effect11072(BaseEffect):
"""
shipBonusSmallHybridDamageGF2
Used by:
Ship: Imicus Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusGF2'),
skill='Gallente Frigate', **kwargs)
class Effect11358(BaseEffect):
"""
shipBonusBattlecruiserSignatureRadiusMBC3
Used by:
Ship: Cyclone Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.ship.boostItemAttr(
'signatureRadius', implant.getModifiedItemAttr('shipBonusMBC3'),
skill='Minmatar Battlecruiser', **kwargs)
class Effect11359(BaseEffect):
"""
shipBonusShieldBoostFittingCBC4
Used by:
Ship: Ferox Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for attr in ('cpu', 'power'):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Operation'), attr,
ship.getModifiedItemAttr('shipBonusCBC4'), skill='Caldari Battlecruiser', **kwargs)
class Effect11373(BaseEffect):
"""
shipBonusDreadnoughtM1ArmorBoostAmount&ShieldBoostAmount
Used by:
Ship: Naglfar Fleet Issue
Ship: Valravn
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Capital Shield Operation'), 'shieldBonus',
src.getModifiedItemAttr('shipBonusDreadnoughtM1'), skill='Minmatar Dreadnought', **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Capital Repair Systems'), 'armorDamageAmount',
src.getModifiedItemAttr('shipBonusDreadnoughtM1'), skill='Minmatar Dreadnought', **kwargs)
class Effect11374(BaseEffect):
"""
shipBonusDreadnoughtA4EnergyWarfareRangeAmountBonus
Used by:
Ship: Revelation Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for attr in ('powerTransferAmount', 'maxRange'):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Energy Nosferatu', attr,
ship.getModifiedItemAttr('shipBonusDreadnoughtA4'), skill='Amarr Dreadnought', **kwargs)
class Effect11376(BaseEffect):
"""
shipBonusDreadnoughtG1OptimalRangeBonus
Used by:
Ship: Moros Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'maxRange',
src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs)
class Effect11380(BaseEffect):
"""
shipBonusDreadnoughtG1ArmorBoostAmount
Used by:
Ship: Moros Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Capital Repair Systems'), 'armorDamageAmount',
src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs)
class Effect11381(BaseEffect):
"""
shipBonusWarpScramblerRangeBonusG5
Used by:
Ship: Moros Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange',
ship.getModifiedItemAttr('shipBonusDreadnoughtG5'), skill='Gallente Dreadnought', **kwargs)
class Effect11382(BaseEffect):
"""
shipBonusDreadnoughtC1EwTargetPainter
Used by:
Ship: Phoenix Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Target Painter', 'signatureRadiusBonus',
src.getModifiedItemAttr('shipBonusDreadnoughtC1'), skill='Caldari Dreadnought', **kwargs)
class Effect11387(BaseEffect):
"""
shipHybridDamageBonusGalNavyDestroyer
Used by:
Ship: Catalyst Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier',
ship.getModifiedItemAttr('shipBonusNavyDestroyerGallente1'), skill='Gallente Destroyer', **kwargs)
class Effect11388(BaseEffect):
"""
shipBonusArmorRepairGalNavyDestroyer
Used by:
Ship: Catalyst Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount',
ship.getModifiedItemAttr('shipBonusNavyDestroyerGallente2'), skill='Gallente Destroyer', **kwargs)
class Effect11390(BaseEffect):
"""
armorUpgradesMassPenaltyReductionBonusGalNavyDestroyer
Used by:
Ship: Catalyst Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Armor Plate', 'massAddition',
ship.getModifiedItemAttr('shipBonusNavyDestroyerGallente3'), skill='Gallente Destroyer', **kwargs)
class Effect11391(BaseEffect):
"""
shipHybridDamageBonusCalNavyDestroyer
Used by:
Ship: Cormorant Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier',
ship.getModifiedItemAttr('shipBonusNavyDestroyerCaldari1'), skill='Caldari Destroyer', **kwargs)
class Effect11392(BaseEffect):
"""
shipHybridRangeBonusCalNavyDestroyer
Used by:
Ship: Cormorant Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange',
ship.getModifiedItemAttr('shipBonusNavyDestroyerCaldari2'), skill='Caldari Destroyer', **kwargs)
class Effect11393(BaseEffect):
"""
shipHybridRangeBonusGalNavyDestroyer
Used by:
Ship: Catalyst Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange',
ship.getModifiedItemAttr('shipBonusNavyDestroyerGallente4'), **kwargs)
class Effect11394(BaseEffect):
"""
shipHybridFallOffGalNavyDestroyer
Used by:
Ship: Catalyst Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'falloff',
ship.getModifiedItemAttr('shipBonusNavyDestroyerGallente5'), **kwargs)
class Effect11395(BaseEffect):
"""
shipBonusShieldBoosterCalNavyDestroyer
Used by:
Ship: Cormorant Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus',
src.getModifiedItemAttr('shipBonusNavyDestroyerCaldari3'), skill='Caldari Destroyer', **kwargs)
class Effect11396(BaseEffect):
"""
shipHybridRangeBonus2CalNavyDestroyer
Used by:
Ship: Cormorant Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange',
ship.getModifiedItemAttr('shipBonusNavyDestroyerCaldari4'), **kwargs)
class Effect11397(BaseEffect):
"""
shipHybridFallOffCalNavyDestroyer
Used by:
Ship: Cormorant Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'falloff',
ship.getModifiedItemAttr('shipBonusNavyDestroyerCaldari5'), **kwargs)
class Effect11398(BaseEffect):
"""
shipProjectileDamageMinNavyDestroyer
Used by:
Ship: Thrasher Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier',
ship.getModifiedItemAttr('shipBonusNavyDestroyerMinmatar1'), skill='Minmatar Destroyer', **kwargs)
class Effect11399(BaseEffect):
"""
shipProjectileRofMinNavyDestroyer
Used by:
Ship: Thrasher Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'speed',
ship.getModifiedItemAttr('shipBonusNavyDestroyerMinmatar2'), skill='Minmatar Destroyer', **kwargs)
class Effect11400(BaseEffect):
"""
shipBonusMWDSignatureRadiusMinNavyDestroyer
Used by:
Ship: Thrasher Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'signatureRadiusBonus',
ship.getModifiedItemAttr('shipBonusNavyDestroyerMinmatar3'), skill='Minmatar Destroyer', **kwargs)
class Effect11401(BaseEffect):
"""
shipProjectileRangeBonusMinNavyDestroyer
Used by:
Ship: Thrasher Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'maxRange',
ship.getModifiedItemAttr('shipBonusNavyDestroyerMinmatar4'), **kwargs)
class Effect11402(BaseEffect):
"""
shipProjectileFallOffMinNavyDestroyer
Used by:
Ship: Thrasher Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'falloff',
ship.getModifiedItemAttr('shipBonusNavyDestroyerMinmatar5'), **kwargs)
class Effect11404(BaseEffect):
"""
shipArmorHpAmaNavyDestroyer
Used by:
Ship: Coercer Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.ship.boostItemAttr(
'armorHP', implant.getModifiedItemAttr('shipBonusNavyDestroyerAmarr1'),
skill='Amarr Destroyer', **kwargs)
class Effect11405(BaseEffect):
"""
shipBonusSmallEnergyTurretDamageAmaNavyDestroyer
Used by:
Ship: Coercer Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier',
ship.getModifiedItemAttr('shipBonusNavyDestroyerAmarr2'), skill='Amarr Destroyer', **kwargs)
class Effect11406(BaseEffect):
"""
shipLaserCap1AmaNavyIssue
Used by:
Ship: Coercer Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'capacitorNeed',
ship.getModifiedItemAttr('shipBonusNavyDestroyerAmarr3'), skill='Amarr Destroyer', **kwargs)
class Effect11407(BaseEffect):
"""
shipNeutCap1AmaNavyDestroyer
Used by:
Ship: Coercer Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Energy Neutralizer', 'capacitorNeed',
ship.getModifiedItemAttr('shipBonusNavyDestroyerAmarr4'), skill='Amarr Destroyer', **kwargs)
class Effect11408(BaseEffect):
"""
shipEnergyNeutralizerTransferAmountBonusAmaNavyDestroyer
Used by:
Ship: Coercer Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount',
ship.getModifiedItemAttr('shipBonusNavyDestroyerAmarr5'), skill='Amarr Destroyer', **kwargs)
class Effect11410(BaseEffect):
"""
shipBonusSETFalloffAmaNavyDestroyer
Used by:
Ship: Coercer Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'falloff',
ship.getModifiedItemAttr('shipBonusNavyDestroyerAmarr7'), **kwargs)
class Effect11411(BaseEffect):
"""
shipMissileDmgMC2
Used by:
Ship: Bestla
Ship: Muninn
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for dmgType in ('em', 'kinetic', 'explosive', 'thermal'):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), f'{dmgType}Damage',
ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs)
class Effect11412(BaseEffect):
"""
shipBonusShieldArmorResonanceMC
Used by:
Ship: Muninn
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for dmgType in ('em', 'thermal', 'kinetic', 'explosive'):
fit.ship.boostItemAttr(
'armor{}DamageResonance'.format(dmgType.capitalize()),
ship.getModifiedItemAttr('shipBonusMC'),
skill='Minmatar Cruiser', **kwargs)
fit.ship.boostItemAttr(
'shield{}DamageResonance'.format(dmgType.capitalize()),
ship.getModifiedItemAttr('shipBonusMC'),
skill='Minmatar Cruiser', **kwargs)
class Effect11413(BaseEffect):
"""
eliteBonusHeavyGunshipMissileExplosionVelocity1
Used by:
Ship: Bestla
Ship: Muninn
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: (
mod.charge.requiresSkill('Heavy Assault Missiles')
or mod.charge.requiresSkill('Heavy Missiles')),
'aoeVelocity', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'),
skill='Heavy Assault Cruisers', **kwargs)
class Effect11414(BaseEffect):
"""
eliteBonusShieldBoosterAmount1
Used by:
Ship: Cerberus
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus',
src.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers', **kwargs)
class Effect11415(BaseEffect):
"""
eliteBonusHybridTracking1
Used by:
Ship: Eagle
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'trackingSpeed',
src.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers', **kwargs)
class Effect11416(BaseEffect):
"""
shipBonusHybridFalloffGC2
Used by:
Ship: Exequror Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'falloff',
src.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs)
class Effect11417(BaseEffect):
"""
shipBonusArmorPlateMassGC3
Used by:
Ship: Exequror Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Armor Plate', 'massAddition',
ship.getModifiedItemAttr('shipBonusGC3'), skill='Gallente Cruiser', **kwargs)
class Effect11419(BaseEffect):
"""
shipBonusDroneTrackingGB2
Used by:
Ship: Dominix Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Drones'), 'trackingSpeed',
container.getModifiedItemAttr('shipBonusGB2'), skill='Gallente Battleship', **kwargs)
class Effect11420(BaseEffect):
"""
shipBonusRepairAmountGB3
Used by:
Ship: Dominix Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount',
ship.getModifiedItemAttr('shipBonusGB3'), skill='Gallente Battleship', **kwargs)
class Effect11421(BaseEffect):
"""
shipBonusTorpedoDamageAB
Used by:
Ship: Armageddon Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for dmgType in ('em', 'kinetic', 'explosive', 'thermal'):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Torpedoes'), f'{dmgType}Damage',
ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs)
class Effect11422(BaseEffect):
"""
shipBonusCruiseMissileDamageAB
Used by:
Ship: Armageddon Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for dmgType in ('em', 'kinetic', 'explosive', 'thermal'):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Cruise Missiles'), f'{dmgType}Damage',
ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs)
class Effect11423(BaseEffect):
"""
shipBonusHeavyMissileDamageAB
Used by:
Ship: Armageddon Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for dmgType in ('em', 'kinetic', 'explosive', 'thermal'):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Heavy Missiles'), f'{dmgType}Damage',
ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs)
class Effect11424(BaseEffect):
"""
shipBonusLargeEnergyTurretDamageAB
Used by:
Ship: Apocalypse
Ship: Apocalypse Navy Issue
Ship: Armageddon Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'damageMultiplier',
ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs)
class Effect11425(BaseEffect):
"""
shipBonusDroneHitpointsAB
Used by:
Ship: Armageddon Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for layer in ('shieldCapacity', 'armorHP', 'hp'):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Drones'), layer,
ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs)
class Effect11426(BaseEffect):
"""
shipBonusDroneDamageAB
Used by:
Ship: Armageddon Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier',
container.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs)
class Effect11428(BaseEffect):
"""
shipBonusCruiseMissileExplosionVelocityMB
Used by:
Ship: Typhoon Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'aoeVelocity',
ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs)
class Effect11429(BaseEffect):
"""
shipBonusTorpedoMissileExplosionVelocityMB
Used by:
Ship: Typhoon Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Torpedoes'), 'aoeVelocity',
ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs)
class Effect11430(BaseEffect):
"""
shipBonusLargeProjectileTrackingMB
Used by:
Ship: Typhoon Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'trackingSpeed',
ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs)
class Effect11431(BaseEffect):
"""
shipBonusShieldHpCF2
Used by:
Ship: Crow
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldCapacity', ship.getModifiedItemAttr('shipBonusCF2'),
skill='Caldari Frigate', **kwargs)
class Effect11432(BaseEffect):
"""
shipBonusArmorRepairEliteGunship2
Used by:
Ship: Ishkur
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount',
ship.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates', **kwargs)
class Effect11445(BaseEffect):
"""
systemSensorStrengthBonus
Used by:
Celestial: Turnur Aftermath
"""
runTime = 'early'
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
for sensor_type in ('Gravimetric', 'Ladar', 'Magnetometric', 'Radar'):
fit.ship.boostItemAttr(f'scan{sensor_type}Strength', beacon.getModifiedItemAttr('sensorStrengthBonus'),
stackingPenalties=True, **kwargs)
class Effect11446(BaseEffect):
"""
shipBonusDreadnoughtG4DamageBonus
Used by:
Ship: Moros Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'damageMultiplier',
src.getModifiedItemAttr('shipBonusDreadnoughtG4'), skill='Gallente Dreadnought', **kwargs)
class Effect11450(BaseEffect):
"""
shipBonusSETOptimalAmarNavyDestroyer6
Used by:
Ship: Coercer Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'maxRange',
ship.getModifiedItemAttr('shipBonusNavyDestroyerAmarr6'), **kwargs)
class Effect11452(BaseEffect):
"""
shipBonusWarpScramblerStrengthG5
Used by:
Ship: Moros Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Warp Scrambler', 'warpScrambleStrength',
ship.getModifiedItemAttr('shipBonusDreadnoughtG5'), skill='Gallente Dreadnought', **kwargs)
class Effect11454(BaseEffect):
"""
shipBonusGrapplerFalloffM4
Used by:
Ship: Naglfar Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Stasis Grappler', 'falloffEffectiveness',
ship.getModifiedItemAttr('shipBonusDreadnoughtM4'), skill='Minmatar Dreadnought', **kwargs)
class Effect11512(BaseEffect):
"""
eliteBonusGunshipLightMissileAndRocketROF
Used by:
Ship: Geri
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name in ('Missile Launcher Light', 'Missile Launcher Rocket'),
'speed', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs)
class Effect11513(BaseEffect):
"""
shipBonusMissileDamageMF2
Used by:
Ship: Geri
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for dmgType in ('em', 'kinetic', 'explosive', 'thermal'):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), f'{dmgType}Damage',
ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs)
class Effect11514(BaseEffect):
"""
shipBonusArmorRepairAmountMF
Used by:
Ship: Geri
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount',
ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs)
class Effect11515(BaseEffect):
"""
shipBonusArmorRepairAmountMC
Used by:
Ship: Bestla
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount',
ship.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs)
class Effect11516(BaseEffect):
"""
shipBonusShieldBoostAmountMC
Used by:
Ship: Bestla
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus',
ship.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs)
class Effect11517(BaseEffect):
"""
shipBonusStasisWebDroneHitpointsAT
Used by:
Ship: Bestla
Ship: Geri
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for layer in ('shieldCapacity', 'armorHP', 'hp'):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Propulsion Jamming'),
layer, ship.getModifiedItemAttr('shipBonusAT'), **kwargs)
class Effect11518(BaseEffect):
"""
shipBonusStasisWebDroneVelocityAT2
Used by:
Ship: Bestla
Ship: Geri
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Propulsion Jamming'),
'maxVelocity', ship.getModifiedItemAttr('shipBonusAT2'), **kwargs)
class Effect11519(BaseEffect):
"""
shipBonusStasisWebDroneWebStrengthAT3
Used by:
Ship: Bestla
Ship: Geri
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Drones'),
'speedFactor', ship.getModifiedItemAttr('shipBonusAT3'), **kwargs)
class Effect11528(BaseEffect):
"""
covopsCloakCPURole1Bonus
Used by:
Ship: Metamorphosis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Cloaking'),
'cpu', ship.getModifiedItemAttr('shipBonusRole1'), **kwargs)
class Effect11529(BaseEffect):
"""
shipRole8BonusCoreProbeStrength
Used by:
Ship: Metamorphosis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Science'),
'baseSensorStrength', ship.getModifiedItemAttr('shipBonusRole8'), **kwargs)
class Effect11530(BaseEffect):
"""
shipRole6BonusCoreProbeDeviation
Used by:
Ship: Metamorphosis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Science'),
'baseMaxScanDeviation', ship.getModifiedItemAttr('shipBonusRole6'), **kwargs)
class Effect11531(BaseEffect):
"""
probeLauncherCPURole1Bonus
Used by:
Ship: Metamorphosis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Scan Probe Launcher', 'cpu',
ship.getModifiedItemAttr('shipBonusRole1'), **kwargs)
class Effect11532(BaseEffect):
"""
dataMinerCPURole1Bonus
Used by:
Ship: Metamorphosis
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Data Miners', 'cpu',
ship.getModifiedItemAttr('shipBonusRole1'), **kwargs)
class Effect11691(BaseEffect):
"""
debuffLance
Used by:
Modules named like: Disruptive Lance (4 of 4)
"""
dealsDamage = True
type = 'active'
@staticmethod
def handler(fit, mod, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs)
fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs)
class Effect11696(BaseEffect):
"""
shipBonusDreadnoughtC1HybridTracking
Used by:
Ship: Karura
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'trackingSpeed',
src.getModifiedItemAttr('shipBonusDreadnoughtC1'), skill='Caldari Dreadnought', **kwargs)
class Effect11697(BaseEffect):
"""
shipBonusDreadnoughtC2HybridOptimalRange
Used by:
Ship: Karura
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'maxRange',
src.getModifiedItemAttr('shipBonusDreadnoughtC2'), skill='Caldari Dreadnought', **kwargs)
class Effect11698(BaseEffect):
"""
shipBonusDisruptionLanceDamage
Used by:
Ships from group: Lancer Dreadnought (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for dmgType in ('em', 'kinetic', 'explosive', 'thermal'):
fit.modules.filteredItemBoost(
lambda module: module.item.requiresSkill('Disruptive Lance Operation'), f'{dmgType}Damage',
ship.getModifiedItemAttr('shipBonusAdvancedDreadnought1'), skill='Lancer Dreadnoughts', **kwargs)
class Effect11700(BaseEffect):
"""
skillDisruptionLanceCapacitorUseBonus
Used by:
Skill: Disruptive Lance Operation
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda module: module.item.requiresSkill('Disruptive Lance Operation'), 'capacitorNeed',
skill.getModifiedItemAttr('disruptionLanceSkillBoostCapacitorCost') * skill.level, **kwargs)
class Effect11701(BaseEffect):
"""
shipBonusDisruptionLanceRange
Used by:
Ships from group: Lancer Dreadnought (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda module: module.item.requiresSkill('Disruptive Lance Operation'), 'maxRange',
ship.getModifiedItemAttr('shipBonusAdvancedDreadnought2'), skill='Lancer Dreadnoughts', **kwargs)
class Effect11702(BaseEffect):
"""
eliteBonusMarauderArmourBonus2a
Used by:
Ship: Vargur
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount',
src.getModifiedItemAttr('eliteBonusViolators2'), skill='Marauders', **kwargs)
class Effect11704(BaseEffect):
"""
shipBonusDreadnoughtM2CapitalProjectileFalloff
Used by:
Ship: Valravn
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'falloff',
src.getModifiedItemAttr('shipBonusDreadnoughtM2'), skill='Minmatar Dreadnought', **kwargs)
class Effect11705(BaseEffect):
"""
shipBonusDreadnoughtA1MissileDamage
Used by:
Ship: Bane
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for dmgType in ('em', 'thermal', 'kinetic', 'explosive'):
fit.modules.filteredChargeBoost(
lambda mod: (
mod.charge.requiresSkill('XL Torpedoes')
or mod.charge.requiresSkill('XL Cruise Missiles')
or mod.charge.requiresSkill('Torpedoes')),
f'{dmgType}Damage',
src.getModifiedItemAttr('shipBonusDreadnoughtA1'),
skill='Amarr Dreadnought', **kwargs)
class Effect11706(BaseEffect):
"""
shipBonusDreadnoughtA2MissileExplosionRadius
Used by:
Ship: Bane
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: (
mod.charge.requiresSkill('XL Torpedoes')
or mod.charge.requiresSkill('XL Cruise Missiles')
or mod.charge.requiresSkill('Torpedoes')),
'aoeCloudSize', src.getModifiedItemAttr('shipBonusDreadnoughtA2'),
skill='Amarr Dreadnought', **kwargs)
class Effect11707(BaseEffect):
"""
shipBonusDreadnoughtG1HullResonance
Used by:
Ship: Hubris
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for dmgType in ('em', 'thermal', 'kinetic', 'explosive'):
fit.ship.boostItemAttr(
f'{dmgType}DamageResonance', src.getModifiedItemAttr('shipBonusDreadnoughtG1'),
skill='Gallente Dreadnought', **kwargs)
class Effect11714(BaseEffect):
"""
disruptionLanceDisallowCloaking
Used by:
Modules named like: Disruptive Lance (4 of 4)
"""
runTime = 'early'
type = 'offline'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.modules.filteredItemIncrease(
lambda mod: mod.item.requiresSkill('Cloaking'), 'activationBlocked',
module.getModifiedItemAttr('disruptionLanceDisallowCloaking'), **kwargs)
class Effect11743(BaseEffect):
"""
shipProjectileTrackingGD
Used by:
Ship: Mekubal
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'trackingSpeed',
ship.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer', **kwargs)
class Effect11745(BaseEffect):
"""
shipShieldEmResistanceGuristasAlligatorCBC
Used by:
Ship: Alligator
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldEmDamageResonance', ship.getModifiedItemAttr('shipBonusCBC1'),
skill='Caldari Battlecruiser', **kwargs)
class Effect11746(BaseEffect):
"""
shipShieldThermalResistanceGuristasAlligatorCBC
Used by:
Ship: Alligator
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldThermalDamageResonance', ship.getModifiedItemAttr('shipBonusCBC1'),
skill='Caldari Battlecruiser', **kwargs)
class Effect11747(BaseEffect):
"""
shipShieldKineticResistanceGuristasAlligatorCBC
Used by:
Ship: Alligator
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldKineticDamageResonance', ship.getModifiedItemAttr('shipBonusCBC1'),
skill='Caldari Battlecruiser', **kwargs)
class Effect11748(BaseEffect):
"""
shipShieldExplosiveResistanceGuristasAlligatorCBC
Used by:
Ship: Alligator
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('shieldExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusCBC1'),
skill='Caldari Battlecruiser', **kwargs)
class Effect11750(BaseEffect):
"""
shipBonusHeavyAssaultMissileKineticDamageGuristasAlligatorGBC
Used by:
Ship: Alligator
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'kineticDamage',
ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser', **kwargs)
class Effect11751(BaseEffect):
"""
shipBonusHeavyAssaultMissileThermalDamageGuristasAlligatorGBC
Used by:
Ship: Alligator
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'thermalDamage',
ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser', **kwargs)
class Effect11752(BaseEffect):
"""
shipBonusHeavyMissileKineticDamageGuristasAlligatorGBC
Used by:
Ship: Alligator
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage',
ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser', **kwargs)
class Effect11753(BaseEffect):
"""
shipBonusHeavyMissileThermalDamageGuristasAlligatorGBC
Used by:
Ship: Alligator
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'thermalDamage',
ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser', **kwargs)
class Effect11763(BaseEffect):
"""
shipBonusProjectileTurretFalloffBonusGBC
Used by:
Ship: Khizriel
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'falloff',
ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser', **kwargs)
class Effect11764(BaseEffect):
"""
shipRoleBonusProjectileRofPirateBattlecruiser
Used by:
Ship: Khizriel
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Medium Projectile Turret'),
'speed', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs)
class Effect11767(BaseEffect):
"""
shipBonusHybridTrackingATC3
Used by:
Ship: Cybele
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'trackingSpeed',
src.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers', **kwargs)
class Effect11919(BaseEffect):
"""
shipBonusDestroyerMD1Falloff
Used by:
Ship: Mekubal
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'falloff',
ship.getModifiedItemAttr('shipBonusMD1'), skill='Minmatar Destroyer', **kwargs)
class Effect11938(BaseEffect):
"""
shipShieldEMResistanceCD2
Used by:
Ship: Mamba
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr(
'shieldEmDamageResonance', src.getModifiedItemAttr('shipBonusCD2'),
skill='Caldari Destroyer', **kwargs)
class Effect11939(BaseEffect):
"""
shipShieldThermalResistanceCD2
Used by:
Ship: Mamba
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr(
'shieldThermalDamageResonance', src.getModifiedItemAttr('shipBonusCD2'),
skill='Caldari Destroyer', **kwargs)
class Effect11940(BaseEffect):
"""
shipShieldKineticResistanceCD2
Used by:
Ship: Mamba
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr(
'shieldKineticDamageResonance', src.getModifiedItemAttr('shipBonusCD2'),
skill='Caldari Destroyer', **kwargs)
class Effect11941(BaseEffect):
"""
shipShieldExplosiveResistanceCD2
Used by:
Ship: Mamba
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr(
'shieldExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusCD2'),
skill='Caldari Destroyer', **kwargs)
class Effect11942(BaseEffect):
"""
shipBonusKineticMissileDamageGD
Used by:
Ship: Mamba
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage',
ship.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer', **kwargs)
class Effect11943(BaseEffect):
"""
shipBonusThermalMissileDamageGD
Used by:
Ship: Mamba
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage',
ship.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer', **kwargs)
class Effect11944(BaseEffect):
"""
shipBonusTitanG2ProjectileFalloff
Used by:
Ship: Azariel
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'falloff',
src.getModifiedItemAttr('shipBonusTitanG2'), skill='Gallente Dreadnought', **kwargs)
class Effect11945(BaseEffect):
"""
shipBonusTitanG1ProjectileTracking
Used by:
Ship: Azariel
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'trackingSpeed',
src.getModifiedItemAttr('shipBonusTitanG1'), skill='Gallente Dreadnought', **kwargs)
class Effect11946(BaseEffect):
"""
systemSmallUpwellTurretDamage
Used by:
Celestials named like: Class Wolf Rayet Effects (6 of 6)
"""
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.requiresSkill('Small Vorton Projector'),
'damageMultiplier', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'),
stackingPenalties=True, **kwargs)
class Effect11947(BaseEffect):
"""
systemUpwellAoeCloudSize
Used by:
Celestials named like: Class Magnetar Effects (6 of 6)
"""
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.requiresSkill('Vorton Projector Operation'),
'aoeCloudSize', beacon.getModifiedItemAttr('aoeCloudSizeMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect11948(BaseEffect):
"""
systemUpwellDamageMultiplier
Used by:
Celestials named like: Class Magnetar Effects (6 of 6)
"""
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.requiresSkill('Vorton Projector Operation'),
'damageMultiplier', beacon.getModifiedItemAttr('damageMultiplierMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect11953(BaseEffect):
"""
systemUpwellAoeVelocity
Used by:
Celestials named like: Class Black Hole Effects (6 of 6)
"""
type = ('projected', 'passive')
@staticmethod
def handler(fit, beacon, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.requiresSkill('Vorton Projector Operation'),
'aoeVelocity', beacon.getModifiedItemAttr('aoeVelocityMultiplier'),
stackingPenalties=True, penaltyGroup='postMul', **kwargs)
class Effect11992(BaseEffect):
"""
shipBonusArmorPlateMassAT
Used by:
Ship: Cybele
Ship: Shapash
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Armor Plate', 'massAddition',
ship.getModifiedItemAttr('shipBonusATF3'), **kwargs)
class Effect11993(BaseEffect):
"""
shipBonusRepairSystemsBonusATC3
Used by:
Ship: Cybele
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount',
src.getModifiedItemAttr('shipBonusGC3'), skill='Gallente Cruiser', **kwargs)
class Effect11994(BaseEffect):
"""
shipBonusHybridFalloffATC3
Used by:
Ship: Cybele
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'falloff',
src.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers', **kwargs)
class Effect11995(BaseEffect):
"""
shipBonusHeatAfterburnerATGF
Used by:
Ship: Shapash
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Afterburner'), 'overloadSpeedFactorBonus',
src.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs)
class Effect11996(BaseEffect):
"""
shipBonusMWDHeatATGF
Used by:
Ship: Shapash
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'overloadSpeedFactorBonus',
src.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs)
class Effect11997(BaseEffect):
"""
shipBonusArmorRepATGF
Used by:
Ship: Shapash
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount',
src.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs)
class Effect11998(BaseEffect):
"""
shipBonusSmallHybridMaxRangeATF3
Used by:
Ship: Shapash
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange',
src.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates', **kwargs)
class Effect11999(BaseEffect):
"""
shipBonusSmallHybridTrackingSpeedATF3
Used by:
Ship: Shapash
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'trackingSpeed',
src.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates', **kwargs)
class Effect12003(BaseEffect):
"""
vortonTurretSpeeBonusPostPercentSpeedLocationShipModulesRequiringVortonProjectorOperation
Used by:
Implants named like: Halcyon R Booster (5 of 5)
"""
type = 'passive'
@staticmethod
def handler(fit, booster, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Vorton Projector Operation'), 'speed',
booster.getModifiedItemAttr('turretSpeeBonus'), **kwargs)
class Effect12038(BaseEffect):
"""
shipBonusSPTFalloffMF3
Used by:
Ship: Republic Fleet Firetail
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'falloff',
ship.getModifiedItemAttr('shipBonus3MF'), skill='Minmatar Frigate', **kwargs)
class Effect12050(BaseEffect):
"""
shipBonusColonyResourcesHoldCapacityUH1
Used by:
Variations of ship: Squall (3 of 3)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr(
'specialColonyResourcesHoldCapacity', src.getModifiedItemAttr('shipBonusUH1'),
skill='Upwell Hauler', **kwargs)
class Effect12051(BaseEffect):
"""
shipMissileEMDamageUH2
Used by:
Variations of ship: Squall (3 of 3)
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'emDamage', container.getModifiedItemAttr('shipBonusUH2'),
skill='Upwell Hauler', **kwargs)
class Effect12052(BaseEffect):
"""
shipMissileThermalDamageUH2
Used by:
Variations of ship: Squall (3 of 3)
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'thermalDamage', container.getModifiedItemAttr('shipBonusUH2'),
skill='Upwell Hauler', **kwargs)
class Effect12053(BaseEffect):
"""
shipMissileExplosiveDamageUH2
Used by:
Variations of ship: Squall (3 of 3)
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'explosiveDamage', container.getModifiedItemAttr('shipBonusUH2'),
skill='Upwell Hauler', **kwargs)
class Effect12054(BaseEffect):
"""
shipMissileKineticDamageUH2
Used by:
Variations of ship: Squall (3 of 3)
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'kineticDamage', container.getModifiedItemAttr('shipBonusUH2'),
skill='Upwell Hauler', **kwargs)
class Effect12057(BaseEffect):
"""
shipBonusColonyResourcesHoldCapacityUFreighter1
Used by:
Ship: Avalanche
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr(
'specialColonyResourcesHoldCapacity', src.getModifiedItemAttr('shipBonusUFreighter1'),
skill='Upwell Freighter', **kwargs)
class Effect12058(BaseEffect):
"""
shipMissileEMDamageUFreighter2
Used by:
Ship: Avalanche
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'emDamage', container.getModifiedItemAttr('shipBonusUFreighter2'),
skill='Upwell Freighter', **kwargs)
class Effect12060(BaseEffect):
"""
shipMissileThermalDamageUFreighter2
Used by:
Ship: Avalanche
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'thermalDamage', container.getModifiedItemAttr('shipBonusUFreighter2'),
skill='Upwell Freighter', **kwargs)
class Effect12061(BaseEffect):
"""
shipMissileExplosiveDamageUFreighter2
Used by:
Ship: Avalanche
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'explosiveDamage', container.getModifiedItemAttr('shipBonusUFreighter2'),
skill='Upwell Freighter', **kwargs)
class Effect12062(BaseEffect):
"""
shipMissileKineticDamageUFreighter2
Used by:
Ship: Avalanche
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'),
'kineticDamage', container.getModifiedItemAttr('shipBonusUFreighter2'),
skill='Upwell Freighter', **kwargs)
class Effect12063(BaseEffect):
"""
shipRoleBonusUpwellFreighterCloakCPUPenalty
Used by:
Ship: Avalanche
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemIncrease(
lambda mod: mod.item.group.name == 'Cloaking Device',
'cpu', ship.getModifiedItemAttr('upwellFreightercloakCPUPenalty'), **kwargs)
class Effect12069(BaseEffect):
"""
shipBonusAutoTargetingMissilesUFreighter3
Used by:
Ship: Avalanche
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
damageTypes = ('em', 'explosive', 'kinetic', 'thermal')
for dmgType in damageTypes:
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Auto-Targeting Missiles'),
f'{dmgType}Damage', container.getModifiedItemAttr('shipBonusUFreighter3'),
skill='Upwell Freighter', **kwargs)
class Effect12071(BaseEffect):
"""
shipRoleBonusUpwellFreighterCapitalFlexHardenerFittingCapBonus
Used by:
Ship: Avalanche
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.group.name == 'Flex Shield Hardener',
'power', ship.getModifiedItemAttr('upwellFreighterCapitalFlexHardenerFittingCapBonus'), **kwargs)
fit.modules.filteredItemMultiply(
lambda mod: mod.item.group.name == 'Flex Shield Hardener',
'capacitorNeed', ship.getModifiedItemAttr('upwellFreighterCapitalFlexHardenerFittingCapBonus'), **kwargs)
class Effect12072(BaseEffect):
"""
eliteIndustrialUpwellNeutNosHeatBonus
Used by:
Ship: Torrent
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name in ('Energy Neutralizer', 'Energy Nosferatu'),
'overloadSelfDurationBonus', ship.getModifiedItemAttr('roleBonusOverheatDST'), **kwargs)
class Effect12098(BaseEffect):
"""
jumpPortalPassengerBonusPercentSkill
Used by:
Ships from group: Carrier (4 of 4)
Ships from group: Supercarrier (6 of 6)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr(
'conduitJumpPassengerCount', src.getModifiedItemAttr('conduitPassengerBonusPercent'),
skill='Capital Jump Portal Generation', **kwargs)
class Effect12102(BaseEffect):
"""
capitalMJDSkillCapReductionBonus
Used by:
Skill: Capital Micro Jump Drive Operation
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Capital Micro Jump Drive Operation'), 'capacitorNeed',
skill.getModifiedItemAttr('capitalMJDCapReductionBonus') * skill.level, **kwargs)
class Effect12126(BaseEffect):
"""
microJumpPortalDriveCapital
Used by:
Module: Capital Micro Jump Field Generator
"""
type = 'active'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('signatureRadius', module.getModifiedItemAttr('signatureRadiusBonusPercent'),
stackingPenalties=True, **kwargs)
class Effect12127(BaseEffect):
"""
shipRoleBonusUpwellHaulersMediumMissileFittingBonus
Used by:
Variations of ship: Squall (3 of 3)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for attr in ('cpu', 'power'):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.group.name in (
'Missile Launcher Heavy Assault',
'Missile Launcher Heavy',
'Missile Launcher Rapid Light'),
attr, ship.getModifiedItemAttr('upwellHaulersMediumMissileFittingBonus'), **kwargs)
class Effect12165(BaseEffect):
"""
ATFrigDmgBonus
Used by:
Ship: Sidewinder
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
# Get pilot sec status bonus directly here, instead of going through the intermediary effects
try:
sec_status = ship.owner.getPilotSecurity(low_limit=-10, high_limit=0)
except (KeyboardInterrupt, SystemExit):
raise
except:
return
bonus = ship.getModifiedItemAttr('ATFrigDmgBonus') * sec_status
fit.modules.filteredItemBoost(
lambda mod: (mod.item.requiresSkill('Small Energy Turret')
or mod.item.requiresSkill('Small Hybrid Turret')
or mod.item.requiresSkill('Small Projectile Turret')),
'damageMultiplier', bonus, **kwargs)
for dmgType in ('em', 'kinetic', 'explosive', 'thermal'):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Rockets') or mod.charge.requiresSkill('Light Missiles'),
f'{dmgType}Damage', bonus, **kwargs)
class Effect12176(BaseEffect):
"""
shipBonusAllShieldresistATCC1
Used by:
Ship: Cobra
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for dmgType in ('em', 'thermal', 'kinetic', 'explosive'):
fit.ship.boostItemAttr(
'shield{}DamageResonance'.format(dmgType.capitalize()),
ship.getModifiedItemAttr('shipBonusCC3'),
skill='Caldari Cruiser', **kwargs)
class Effect12179(BaseEffect):
"""
ShipBonusAllShieldResistATCF1
Used by:
Ship: Sidewinder
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for dmgType in ('em', 'thermal', 'kinetic', 'explosive'):
fit.ship.boostItemAttr(
'shield{}DamageResonance'.format(dmgType.capitalize()),
ship.getModifiedItemAttr('shipBonus3CF'),
skill='Caldari Frigate', **kwargs)
class Effect12180(BaseEffect):
"""
roleBonusATCruiserMJDFittingReduction
Used by:
Ship: Cobra
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Micro Jump Drive',
'cpu', ship.getModifiedItemAttr('flagCruiserFittingBonusPropMods'), **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Micro Jump Drive',
'power', ship.getModifiedItemAttr('flagCruiserFittingBonusPropMods'), **kwargs)
class Effect12181(BaseEffect):
"""
ATcruiserTackleBonus1
Used by:
Ship: Cobra
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
# Get pilot sec status bonus directly here, instead of going through the intermediary effects
try:
sec_status = ship.owner.getPilotSecurity(low_limit=-10, high_limit=0)
except (KeyboardInterrupt, SystemExit):
raise
except:
return
bonus = ship.getModifiedItemAttr('ATcruiserStasisWebifierBonus') * sec_status
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', bonus, **kwargs)
class Effect12183(BaseEffect):
"""
shipBonusATpropDuration
Used by:
Ship: Python
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name in ('Propulsion Module', 'Microwarpdrive'),
'duration', ship.getModifiedItemAttr('shipBonusATprobDuration'), **kwargs)
class Effect12184(BaseEffect):
"""
shipBonusATAllShieldResistCB3
Used by:
Ship: Python
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for dmgType in ('em', 'thermal', 'kinetic', 'explosive'):
fit.ship.boostItemAttr(
'shield{}DamageResonance'.format(dmgType.capitalize()),
ship.getModifiedItemAttr('shipBonusCB3'),
skill='Caldari Battleship', **kwargs)
class Effect12185(BaseEffect):
"""
shipBonusBurstJammer ATB
Used by:
Ship: Python
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
# Get pilot sec status bonus directly here, instead of going through the intermediary effects
try:
sec_status = ship.owner.getPilotSecurity(low_limit=-10, high_limit=0)
except (KeyboardInterrupt, SystemExit):
raise
except:
return
bonus = ship.getModifiedItemAttr('ATBurstJammerStrengthBonus') * sec_status
for attr in ('ecmBurstRange', 'scanRadarStrengthBonus', 'scanGravimetricStrengthBonus', 'scanLadarStrengthBonus', 'scanMagnetometricStrengthBonus'):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Burst Jammer', attr, bonus, **kwargs)
class Effect12188(BaseEffect):
"""
shipRoleBonusSPTDamage
Used by:
Ship: Tholos
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier',
container.getModifiedItemAttr('shipBonusRole1'), **kwargs)
class Effect12189(BaseEffect):
"""
shipRoleBonusMPTDamage
Used by:
Ship: Cenotaph
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier',
container.getModifiedItemAttr('shipBonusRole1'), **kwargs)
class Effect12190(BaseEffect):
"""
shipRoleBonusRocketDamage
Used by:
Ship: Tholos
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for damageType in ('em', 'explosive', 'kinetic', 'thermal'):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Rockets'), f'{damageType}Damage',
ship.getModifiedItemAttr('shipBonusRole2'), **kwargs)
class Effect12191(BaseEffect):
"""
shipRoleBonusHAMDamage
Used by:
Ship: Cenotaph
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for damageType in ('em', 'explosive', 'kinetic', 'thermal'):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), f'{damageType}Damage',
ship.getModifiedItemAttr('shipBonusRole2'), **kwargs)
class Effect12192(BaseEffect):
"""
stasisWebifierResistanceBonusMD1
Used by:
Ship: Tholos
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr(
'stasisWebifierResistance', ship.getModifiedItemAttr('shipBonusMD1'),
skill='Minmatar Destroyer', **kwargs)
class Effect12193(BaseEffect):
"""
stasisWebifierResistanceBonusMBC1
Used by:
Ship: Cenotaph
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.ship.boostItemAttr(
'stasisWebifierResistance', ship.getModifiedItemAttr('shipBonusMBC1'),
skill='Minmatar Battlecruiser', **kwargs)
class Effect12194(BaseEffect):
"""
shipBonusShieldBoostCD1
Used by:
Ship: Tholos
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus',
src.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer', **kwargs)
class Effect12195(BaseEffect):
"""
shipBonusShieldBoostCBC1
Used by:
Ship: Cenotaph
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus',
src.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser', **kwargs)
class Effect12202(BaseEffect):
"""
ATcruiserTackleBonus2
Used by:
Ship: Cobra
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
# Get pilot sec status bonus directly here, instead of going through the intermediary effects
try:
sec_status = ship.owner.getPilotSecurity(low_limit=-10, high_limit=0)
except (KeyboardInterrupt, SystemExit):
raise
except:
return
bonus = ship.getModifiedItemAttr('ATcruiserScramblerDisruptorBonus') * sec_status
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', bonus, **kwargs)
class Effect12203(BaseEffect):
"""
ATfrigDroneBonus
Used by:
Ship: Sidewinder
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for attr in ('shieldCapacity', 'armorHP', 'hp', 'damageMultiplier'):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Light Drone Operation'),
attr, ship.getModifiedItemAttr('ATfrigDroneBonus'), **kwargs)
class Effect12213(BaseEffect):
"""
shipBonusMPTFalloffMC3
Used by:
Ship: Stabber Fleet Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'falloff',
ship.getModifiedItemAttr('ShipBonusMC3'), skill='Minmatar Cruiser', **kwargs)
class Effect12214(BaseEffect):
"""
AtcruiserDroneBonus
Used by:
Ship: Cobra
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for attr in ('shieldCapacity', 'armorHP', 'hp', 'damageMultiplier'):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Medium Drone Operation'),
attr, ship.getModifiedItemAttr('ATcruiserDroneBonus'), **kwargs)
class Effect12217(BaseEffect):
"""
skillDotMaxHPPercentagePerTickBonus
Used by:
Skill: Breacher Pod Launcher Operation
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Breacher Pod Launcher Operation'), 'dotMaxHPPercentagePerTick',
skill.getModifiedItemAttr('dotMaxHPPercentagePerTickBonus') * skill.level, **kwargs)
class Effect12218(BaseEffect):
"""
skillDotMaxDamagePerTickBonus
Used by:
Skill: Breacher Pod Clone Efficacity
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Breacher Pod Launcher Operation'), 'dotMaxDamagePerTick',
skill.getModifiedItemAttr('dotMaxDamagePerTickBonus') * skill.level, **kwargs)
class Effect12219(BaseEffect):
"""
skillDotPodVelocityBonus
Used by:
Skill: Breacher Pod Projection
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Breacher Pod Launcher Operation'), 'maxVelocity',
skill.getModifiedItemAttr('speedFactor') * skill.level, **kwargs)
class Effect12220(BaseEffect):
"""
skillDotLauncherRoFBonus
Used by:
Skill: Breacher Pod Rapid Firing
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Breacher Pod Launcher Operation'),
'speed', skill.getModifiedItemAttr('rofBonus') * skill.level, **kwargs)
class Effect12221(BaseEffect):
"""
skillDotDurationBonus
Used by:
Skill: Breacher Pod Clone Longevity
"""
type = 'passive'
@staticmethod
def handler(fit, skill, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Breacher Pod Launcher Operation'), 'dotDuration',
skill.getModifiedItemAttr('durationBonus') * skill.level, **kwargs)
class Effect12244(BaseEffect):
"""
shipBonusRole1CapitalProjectileDamageBonus
Used by:
Ship: Sarathiel
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Capital Projectile Turret'),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole1'), **kwargs)
class Effect12245(BaseEffect):
"""
shipBonusDreadnoughtG1FalloffBonus
Used by:
Ship: Sarathiel
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'falloff',
ship.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs)
class Effect12246(BaseEffect):
"""
shipBonusRoleAngelDreadMoveWhileSieged
Used by:
Ship: Sarathiel
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Siege Module', 'speedFactor',
ship.getModifiedItemAttr('shipBonusSiegeSpeedMultiplier'), **kwargs)
class Effect12249(BaseEffect):
"""
shipBonusDroneDamageHeavyMediumLightMultiplierGBC1
Used by:
Ship: Eos
Ship: Odysseus
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(
lambda drone: (
drone.item.requiresSkill('Light Drone Operation')
or drone.item.requiresSkill('Medium Drone Operation')
or drone.item.requiresSkill('Heavy Drone Operation')),
'damageMultiplier', ship.getModifiedItemAttr('shipBonusGBC1'),
skill='Gallente Battlecruiser', **kwargs)
class Effect12250(BaseEffect):
"""
shipBonusSentryDroneDamageAndSentryHPMultiplierGBC3
Used by:
Ship: Eos
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for attrName in ('damageMultiplier', 'shieldCapacity', 'armorHP', 'hp'):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), attrName,
ship.getModifiedItemAttr('shipBonusGBC3'), skill='Gallente Battlecruiser', **kwargs)
class Effect12251(BaseEffect):
"""
shipBonusDroneHPHeavyMediumLightGBC1
Used by:
Ship: Eos
Ship: Odysseus
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for attrName in ('shieldCapacity', 'armorHP', 'hp'):
fit.drones.filteredItemBoost(
lambda drone: (
drone.item.requiresSkill('Light Drone Operation')
or drone.item.requiresSkill('Medium Drone Operation')
or drone.item.requiresSkill('Heavy Drone Operation')),
attrName, ship.getModifiedItemAttr('shipBonusGBC1'),
skill='Gallente Battlecruiser', **kwargs)
class Effect12252(BaseEffect):
"""
eliteBonusCommandShipDroneTrackingHeavyMediumLightCS2
Used by:
Ship: Eos
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(
lambda drone: (
drone.item.requiresSkill('Light Drone Operation')
or drone.item.requiresSkill('Medium Drone Operation')
or drone.item.requiresSkill('Heavy Drone Operation')),
'trackingSpeed', ship.getModifiedItemAttr('eliteBonusCommandShips2'),
skill='Command Ships', **kwargs)
class Effect12253(BaseEffect):
"""
eliteBonusCommandShipDroneTrackingSentryCS4
Used by:
Ship: Eos
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'),
'trackingSpeed', ship.getModifiedItemAttr('eliteBonusCommandShips4'),
skill='Command Ships', **kwargs)
class Effect12267(BaseEffect):
"""
shipBloodRaiderCapitalNosNeutralizationSignatureResolutionReduction
Used by:
Ship: Chemosh
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Energy Nosferatu', 'energyNeutralizerSignatureResolution',
ship.getModifiedItemAttr('shipBloodRaiderCapitalNosSignatureReductionMultiplyer'), **kwargs)
class Effect12275(BaseEffect):
"""
shipBonusArmorPlateMassEliteBonusLogistics4
Used by:
Ship: Oneiros
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Armor Plate', 'massAddition',
ship.getModifiedItemAttr('eliteBonusLogistics4'), skill='Logistics Cruisers', **kwargs)
class Effect12276(BaseEffect):
"""
shipBonusShieldExtenderSigEliteBonusLogistics4
Used by:
Ship: Scimitar
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Shield Extender', 'signatureRadiusAdd',
ship.getModifiedItemAttr('eliteBonusLogistics4'), skill='Logistics Cruisers', **kwargs)
class Effect12278(BaseEffect):
"""
shipBonusArmorPlateHitpointAmountEliteBonusLogistics4
Used by:
Ships from group: Logistics (3 of 7)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Armor Plate', 'armorHPBonusAdd',
ship.getModifiedItemAttr('eliteBonusLogistics4'), skill='Logistics Cruisers', **kwargs)
class Effect12279(BaseEffect):
"""
shipBonusShieldExtenderCapacityBonusEliteBonusLogistics4
Used by:
Ship: Basilisk
Ship: Etana
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Shield Extender', 'capacityBonus',
ship.getModifiedItemAttr('eliteBonusLogistics4'), skill='Logistics Cruisers', **kwargs)
class Effect12283(BaseEffect):
"""
implantSetHackingVirusCoheranceEffect
Used by:
Implants named like: grade Wedge (12 of 12)
"""
runTime = 'early'
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.appliedImplants.filteredItemMultiply(
lambda imp: imp.item.requiresSkill('Cybernetics'), 'implantSetHackingVirusCoherenceModifier',
implant.getModifiedItemAttr('implantSetHackingVirusCoherenceOmegaSetBonus'), **kwargs)
class Effect12284(BaseEffect):
"""
implantSetHackingVirusCoheranceModifierEffect
Used by:
Implants named like: grade Wedge (12 of 12)
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Data Miners', 'virusCoherence',
implant.getModifiedItemAttr('implantSetHackingVirusCoherenceModifier'), **kwargs)
class Effect12286(BaseEffect):
"""
shipLPWRangeBonusPCBS1
Used by:
Ship: Babaroga
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Large Precursor Weapon'), 'maxRange',
ship.getModifiedItemAttr('shipBonusPBS1'), skill='Precursor Battleship', **kwargs)
class Effect12287(BaseEffect):
"""
shipLPWTrackingBonusPCBS1
Used by:
Ship: Babaroga
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Large Precursor Weapon'), 'trackingSpeed',
ship.getModifiedItemAttr('shipBonusPBS2'), skill='Precursor Battleship', **kwargs)
class Effect12288(BaseEffect):
"""
eliteBonusViolatorsLPWDmgMultiMax1
Used by:
Ship: Babaroga
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Large Precursor Weapon'), 'damageMultiplierBonusMax',
ship.getModifiedItemAttr('eliteBonusViolators1'), skill='Marauders', **kwargs)
class Effect12296(BaseEffect):
"""
shipLaserCapABC3
Used by:
Ship: Harbinger Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'capacitorNeed',
ship.getModifiedItemAttr('shipBonusABC3'), skill='Amarr Battlecruiser', **kwargs)
class Effect12329(BaseEffect):
"""
shipMiningYieldBonusOreDestroyer1
Used by:
Variations of ship: Pioneer (3 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Mining'), 'miningAmount',
src.getModifiedItemAttr('shipBonusOreDestroyer1'), skill='Mining Destroyer', **kwargs)
class Effect12330(BaseEffect):
"""
shipMiningRangeBonusOreDestroyer2
Used by:
Ships named like: Pioneer (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Mining'), 'maxRange',
src.getModifiedItemAttr('shipBonusOreDestroyer2'), skill='Mining Destroyer', **kwargs)
class Effect12331(BaseEffect):
"""
shipGasCloudDurationBonusOreDestroyer3
Used by:
Ships named like: Pioneer (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Gas Cloud Harvesting'), 'duration',
src.getModifiedItemAttr('shipBonusOreDestroyer3'), skill='Mining Destroyer', **kwargs)
class Effect12529(BaseEffect):
"""
shipBonusArmorResistsUniformSOEABC1
Used by:
Ship: Odysseus
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
damageTypes = ('Em', 'Explosive', 'Kinetic', 'Thermal')
for damageType in damageTypes:
fit.ship.boostItemAttr(
f'armor{damageType}DamageResonance', ship.getModifiedItemAttr('shipBonusABC1'),
skill='Amarr Battlecruiser', **kwargs)
class Effect12530(BaseEffect):
"""
expeditionCommandDurationBonus
Used by:
Skill: Expedition Command
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Expedition Command'), 'buffDuration',
src.getModifiedItemAttr('durationBonus') * lvl, **kwargs)
class Effect12531(BaseEffect):
"""
expeditionCommandStrengthBonus
Used by:
Skill: Expedition Command Specialist
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
lvl = src.level
for i in (1, 2, 3, 4):
fit.modules.filteredChargeBoost(
lambda mod: mod.item.requiresSkill('Expedition Command'), f'warfareBuff{i}Multiplier',
src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs)
class Effect12537(BaseEffect):
"""
shipBonusAnalyzerRangeECS1
Used by:
Ship: Odysseus
"""
type = 'passive'
@staticmethod
def handler(fit, implant, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Data Miners', 'maxRange',
implant.getModifiedItemAttr('shipBonusSoEECS1'), skill='Expedition Command Ships', **kwargs)
class Effect12538(BaseEffect):
"""
shipBonusGasCloudScoopDurationECS2
Used by:
Ship: Odysseus
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Gas Cloud Harvesting'), 'duration',
src.getModifiedItemAttr('shipBonusSoEECS2'), skill='Expedition Command Ships', **kwargs)
class Effect12539(BaseEffect):
"""
shipBonusExplorationCommandStrengthDurationECS3
Used by:
Ship: Odysseus
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Expedition Command'), attrName,
src.getModifiedItemAttr('shipBonusSoEECS3'), skill='Expedition Command Ships', **kwargs)
class Effect12540(BaseEffect):
"""
shipBonusArmorCommandStrengthDurationECS4
Used by:
Ship: Odysseus
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Armored Command'), attrName,
src.getModifiedItemAttr('shipBonusSoEECS4'), skill='Expedition Command Ships', **kwargs)
class Effect12541(BaseEffect):
"""
shipBonusGasCloudScoopCPUreductionSOEECSrole
Used by:
Ship: Odysseus
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Gas Cloud Harvesting'), 'cpu',
src.getModifiedItemAttr('shipBonusGasCloudScoopCPUreductionSOEECSrole'), **kwargs)
class Effect12542(BaseEffect):
"""
expeditionCommandMindlink
Used by:
Implants named like: Expedition Command Mindlink (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Expedition Command'), attrName,
src.getModifiedItemAttr('mindlinkBonus'), **kwargs)
class Effect12543(BaseEffect):
"""
shipBonusRole6ExpeditionBurstDurationSOEECS
Used by:
Ship: Odysseus
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Expedition Command'), 'buffDuration',
src.getModifiedItemAttr('shipBonusRole6'), **kwargs)
class Effect12554(BaseEffect):
"""
shipDroneHPandDamageOreDestroyer2
Used by:
Ship: Outrider
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for attr in ('shieldCapacity', 'armorHP', 'hp', 'damageMultiplier'):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Drones'), attr,
ship.getModifiedItemAttr('shipBonusOreDestroyer2'), skill='Mining Destroyer', **kwargs)
class Effect12555(BaseEffect):
"""
shipBonusShieldAllResistancesOreDestroyer3
Used by:
Ship: Outrider
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
for type in ('kinetic', 'thermal', 'explosive', 'em'):
fit.ship.boostItemAttr(
f'shield{type.capitalize()}DamageResonance', ship.getModifiedItemAttr('shipBonusOreDestroyer3'),
skill='Mining Destroyer', **kwargs)
class Effect12556(BaseEffect):
"""
eliteBonusCommandDestroyerMining1
Used by:
Ship: Outrider
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Mining Foreman'), attrName,
src.getModifiedItemAttr('eliteBonusCommandDestroyer1'), skill='Command Destroyers', **kwargs)
class Effect12557(BaseEffect):
"""
shipBonusGasCloudDurationRoleBonusOreMiningDestroyer
Used by:
Ships named like: Pioneer (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Gas Cloud Harvesting'), 'duration',
src.getModifiedItemAttr('shipBonusGasCloudDurationRoleBonusOreMiningDestroyer'), **kwargs)
class Effect12559(BaseEffect):
"""
shipShieldBoosterBonusOreExecutiveDestroyer4
Used by:
Ship: Pioneer Consortium Issue
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus',
src.getModifiedItemAttr('shipBonusOreDestroyer4'), skill='Mining Destroyer', **kwargs)
class Effect12560(BaseEffect):
"""
oreExecutiveRoleBonusSalvageDroneAdditionalAccessDifficultyRoleBonus
Used by:
Ships named like: Consortium Issue (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, container, context, projectionRange, **kwargs):
fit.drones.filteredItemIncrease(
lambda drone: drone.item.requiresSkill('Salvage Drone Operation'), 'accessDifficultyBonus',
container.getModifiedItemAttr('oreExecutiveRoleBonusSalvageDroneAdditionalAccessDifficulty'), **kwargs)
class Effect12563(BaseEffect):
"""
shipShieldBoosterBonusOreExecutiveFrigate
Used by:
Ship: Venture Consortium Issue
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus',
src.getModifiedItemAttr('OreMiningFrigateExecutiveShieldBoosterShipBonus'),
skill='Mining Frigate', **kwargs)
class Effect12565(BaseEffect):
"""
shipBonusDroneTrackingSpeedGBC1
Used by:
Ship: Myrmidon Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Drones'), 'trackingSpeed',
ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser', **kwargs)
class Effect12566(BaseEffect):
"""
shipBonusDroneMWDboostrole6
Used by:
Ship: Mamba
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.drones.filteredItemBoost(
lambda drone: drone.item.requiresSkill('Drones'), 'maxVelocity',
ship.getModifiedItemAttr('shipBonusRole6'), **kwargs)
class Effect12567(BaseEffect):
"""
shipBonusSmallProjectileFalloffRole6
Used by:
Ship: Mekubal
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'falloff',
ship.getModifiedItemAttr('shipBonusRole6'), **kwargs)
class Effect12568(BaseEffect):
"""
eliteBonusJustWarpScramblerRangeBonusBlops1
Used by:
Ship: Sin
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Navigation'), 'maxRange',
src.getModifiedItemAttr('eliteBonusBlackOps1'), skill='Black Ops', **kwargs)
class Effect12569(BaseEffect):
"""
eliteBonusJustWarpScramblerStrengthBonusBlops3
Used by:
Ship: Sin
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemIncrease(
lambda mod: mod.item.requiresSkill('Navigation'), 'warpScrambleStrength',
ship.getModifiedItemAttr('eliteBonusBlackOps3'), skill='Black Ops', **kwargs)
class Effect12573(BaseEffect):
"""
shipBonusLargeEnergyTurretCapReductionAB3
Used by:
Ship: Apocalypse
Ship: Apocalypse Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'capacitorNeed',
ship.getModifiedItemAttr('shipBonusAB3'), skill='Amarr Battleship', **kwargs)
class Effect12575(BaseEffect):
"""
modeRemoteArmorRepairCapacitorCostPostDiv
Used by:
Module: Confessor Defense Mode
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed',
1 / ship.getModifiedItemAttr('modeRemoteRepairCapacitorCostPostDiv'), **kwargs)
class Effect12576(BaseEffect):
"""
modeRemoteShieldRepairCapacitorCostPostDiv
Used by:
Module: Svipul Defense Mode
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed',
1 / ship.getModifiedItemAttr('modeRemoteRepairCapacitorCostPostDiv'), **kwargs)
class Effect12577(BaseEffect):
"""
modeRemoteRepairAmountArmorPostDiv
Used by:
Module: Confessor Defense Mode
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'armorDamageAmount',
1 / ship.getModifiedItemAttr('modeRemoteRepairBonusPostDiv'), **kwargs)
class Effect12578(BaseEffect):
"""
modeRemoteRepairAmountShieldPostDiv
Used by:
Module: Svipul Defense Mode
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'shieldBonus',
1 / ship.getModifiedItemAttr('modeRemoteRepairBonusPostDiv'), **kwargs)
class Effect12579(BaseEffect):
"""
shipBonusArmorPlateMassGB3
Used by:
Ship: Megathron Navy Issue
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Armor Plate', 'massAddition',
ship.getModifiedItemAttr('shipBonusGB3'), skill='Gallente Battleship', **kwargs)
class Effect12591(BaseEffect):
"""
miningSensorArrayScannerUpgrade
Used by:
Modules from group: Mining Survey Chipset (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, mod, context, projectionRange, **kwargs):
fit.ship.increaseItemAttr('miningScannerUpgrade', mod.getModifiedItemAttr('miningScannerUpgrade'), **kwargs)
class Effect12592(BaseEffect):
"""
shipBonusCarrierA5SupportFighterBonusEffect
Used by:
Ship: Archon
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.fighters.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterAbilityEnergyNeutralizerAmount',
src.getModifiedItemAttr('shipBonusCarrierA5'), skill='Amarr Carrier', **kwargs)
class Effect12593(BaseEffect):
"""
shipBonusCarrierC5SupportFighterBonusEffect
Used by:
Ship: Chimera
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
for sensorType in ('Radar', 'Magnetometric', 'Ladar', 'Gravimetric'):
fit.fighters.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Support Fighters'), f'fighterAbilityECMStrength{sensorType}',
src.getModifiedItemAttr('shipBonusCarrierC5'), skill='Caldari Carrier', **kwargs)
class Effect12594(BaseEffect):
"""
shipBonusCarrierG5SupportFighterBonusSpeed
Used by:
Ship: Thanatos
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.fighters.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterAbilityAfterburnerSpeedBonus',
src.getModifiedItemAttr('shipBonusCarrierG5'), skill='Gallente Carrier', **kwargs)
class Effect12595(BaseEffect):
"""
shipBonusCarrierM5SupportFighterBonusEffect
Used by:
Ship: Nidhoggur
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.fighters.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterAbilityStasisWebifierSpeedPenalty',
src.getModifiedItemAttr('shipBonusCarrierM5'), skill='Minmatar Carrier', **kwargs)
class Effect12596(BaseEffect):
"""
shipMiningBonusYieldOreDestroyerRoleBonus
Used by:
Ships named like: Pioneer (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Mining'), 'miningAmount',
src.getModifiedItemAttr('shipMiningBonusYieldOreDestroyerRoleBonus'), **kwargs)
class Effect12597(BaseEffect):
"""
moduleBonusIntegratedSensorArray
Used by:
Module: Integrated Sensor Array
"""
type = 'active'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.ship.boostItemAttr('scanResolution', src.getModifiedItemAttr('scanResolutionBonus'), stackingPenalties=True, **kwargs)
fit.ship.multiplyItemAttr('maxTargetRange', src.getModifiedItemAttr('maxTargetRangeMultiplier'), stackingPenalties=True, **kwargs)
fit.ship.forceItemAttr('maximumRangeCap', src.getModifiedItemAttr('maximumRangeCap'), **kwargs)
for scanType in ('Magnetometric', 'Ladar', 'Gravimetric', 'Radar'):
attr = 'scan{}Strength'.format(scanType)
bonus = src.getModifiedItemAttr('scan{}StrengthPercent'.format(scanType))
fit.ship.boostItemAttr(attr, bonus, stackingPenalties=True, **kwargs)
fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), attr, bonus,
stackingPenalties=True, **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Capital Shield Operation') or mod.item.requiresSkill('Capital Repair Systems'),
'duration', src.getModifiedItemAttr('siegeLocalLogisticsDurationBonus'), **kwargs)
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Capital Shield Operation') or mod.item.requiresSkill('Capital Repair Systems'),
'capacitorNeed', src.getModifiedItemAttr('siegeLocalLogisticsCapacitorNeedBonus'), **kwargs)
class Effect12739(BaseEffect):
"""
shipBonusEnergyNeutOptimalAC2
Used by:
Ship: Ashimmu
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Energy Neutralizer', 'maxRange',
src.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs)
class Effect12740(BaseEffect):
"""
shipBonusEnergyNosOptimalAC2
Used by:
Ship: Ashimmu
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange',
src.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs)
class Effect12753(BaseEffect):
"""
shipRoleBonusOREExecutiveIssueMiningCriticalHitChanceBonus
Used by:
Ships named like: Consortium Issue (2 of 2)
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Mining'), 'miningCritChance',
ship.getModifiedItemAttr('shipRoleBonusOREExecutiveIssueMiningCriticalHitChance'), **kwargs)
class Effect12755(BaseEffect):
"""
miningCritChanceSkillPostPercentLRSMBonus
Used by:
Skill: Mining Precision
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Mining') or mod.item.requiresSkill('Ice Harvesting'),
'miningCritChance', src.getModifiedItemAttr('miningCritChanceBonus') * src.level, **kwargs)
class Effect12757(BaseEffect):
"""
miningCritYieldSkillPostPercentLRSMBonus
Used by:
Skill: Mining Exploitation
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Mining') or mod.item.requiresSkill('Ice Harvesting'),
'miningCritBonusYield', src.getModifiedItemAttr('miningCritBonusYieldBonus') * src.level, **kwargs)
class Effect12758(BaseEffect):
"""
shipRoleBonusAnhingaLargeMissilePowerFittingBonus
Used by:
Ship: Anhinga
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.group.name in (
'Missile Launcher Rapid Heavy',
'Missile Launcher Cruise',
'Missile Launcher Torpedo'),
'power', ship.getModifiedItemAttr('AnhingaLargeMissilePowerFittingBonus'), **kwargs)
class Effect12759(BaseEffect):
"""
miningCritChanceBonusOreIceOnline
Used by:
Modules from group: Mining Survey Chipset (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Mining') or mod.item.requiresSkill('Ice Harvesting'),
'miningCritChance', src.getModifiedItemAttr('miningCritChanceBonus'), **kwargs)
class Effect12760(BaseEffect):
"""
miningCritBonusYieldBonusOreIceOnline
Used by:
Modules from group: Mining Survey Chipset (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Mining') or mod.item.requiresSkill('Ice Harvesting'),
'miningCritBonusYield', src.getModifiedItemAttr('miningCritBonusYieldBonus'), **kwargs)
class Effect12761(BaseEffect):
"""
miningWasteChanceBonusOreIceOnline
Used by:
Modules from group: Mining Survey Chipset (4 of 4)
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: (mod.item.requiresSkill('Mining')
or mod.item.requiresSkill('Ice Harvesting')
or mod.item.requiresSkill('Gas Cloud Harvesting')),
'miningWasteProbability', src.getModifiedItemAttr('miningWasteProbabilityBonus'),
stackingPenalties=True, **kwargs)
class Effect12764(BaseEffect):
"""
shipRoleBonusAnhingaLargeMissileCpuFittingBonus
Used by:
Ship: Anhinga
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.group.name in (
'Missile Launcher Rapid Heavy',
'Missile Launcher Cruise',
'Missile Launcher Torpedo'),
'cpu', ship.getModifiedItemAttr('AnhingaLargeMissileCpuFittingBonus'), **kwargs)
class Effect12766(BaseEffect):
"""
shipBonusTorpedoAndCruiseMissileExplosionRadiusCBC1
Used by:
Ship: Anhinga
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Torpedoes') or mod.charge.requiresSkill('Cruise Missiles'),
'aoeCloudSize', ship.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser', **kwargs)
class Effect12767(BaseEffect):
"""
tacticalBonusSkuaDefensiveShieldRechargeRate
Used by:
Module: Skua Defense Mode
"""
type = 'passive'
@staticmethod
def handler(fit, module, context, projectionRange, **kwargs):
fit.ship.multiplyItemAttr('shieldRechargeRate', 1 / module.getModifiedItemAttr('modeShieldRechargePostDiv'), **kwargs)
class Effect12771(BaseEffect):
"""
shipRoleBonusPerseveranceIceMiningCriticalHitChanceBonus
Used by:
Ship: Perseverance
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'miningCritChance',
ship.getModifiedItemAttr('shipRoleBonusPerseveranceIceMiningCriticalHitChance'), **kwargs)
class Effect12772(BaseEffect):
"""
shipIceMiningCriticalHitChanceBonusOreDestroyer1
Used by:
Ship: Perseverance
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'miningCritChance',
ship.getModifiedItemAttr('shipBonusOreDestroyer1'), skill='Mining Destroyer', **kwargs)
class Effect12773(BaseEffect):
"""
shipIceMiningCriticalHitYieldBonusOreDestroyer2
Used by:
Ship: Perseverance
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'miningCritBonusYield',
ship.getModifiedItemAttr('shipBonusOreDestroyer2'), skill='Mining Destroyer', **kwargs)
class Effect12774(BaseEffect):
"""
shipIceMiningRangeBonusOreDestroyer3
Used by:
Ship: Perseverance
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(
lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'maxRange',
ship.getModifiedItemAttr('shipBonusOreDestroyer3'), skill='Mining Destroyer', **kwargs)
class Effect12777(BaseEffect):
"""
roleBonusCDLinksPGCPUReductionSkua
Used by:
Ship: Skua
"""
type = 'passive'
@staticmethod
def handler(fit, src, context, projectionRange, **kwargs):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'cpu',
src.getModifiedItemAttr('roleBonusCD'), **kwargs)
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'power',
src.getModifiedItemAttr('roleBonusCD'), **kwargs)
class Effect12790(BaseEffect):
"""
shipBonusTorpedoAndCruiseMissileExplosionVelocityCBC2
Used by:
Ship: Anhinga
"""
type = 'passive'
@staticmethod
def handler(fit, ship, context, projectionRange, **kwargs):
fit.modules.filteredChargeBoost(
lambda mod: mod.charge.requiresSkill('Torpedoes') or mod.charge.requiresSkill('Cruise Missiles'),
'aoeVelocity', ship.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs)