42735 lines
1.3 MiB
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)
|