From 4a95156e353d5983d1f49bc55b3dedae7dfe550a Mon Sep 17 00:00:00 2001 From: blitzman Date: Sun, 4 Dec 2016 23:10:09 -0500 Subject: [PATCH] Revert "Remove effect files that are not used by any item" This reverts commit b29fa2467a4ac0079d12a00429537c6655859b44. --- eos/effects/armorwarfarearmorhpreplacer.py | 10 ++++ eos/effects/decreasetargetspeed.py | 9 ++++ eos/effects/dronedamagebonusrequringdrones.py | 7 +++ .../elitebonuscommanddestroyerinfohidden1.py | 6 +++ ...elitebonuscommanddestroyermwdsigradius3.py | 7 +++ ...itebonuscommandshipinformationhiddencs3.py | 5 ++ eos/effects/energydestabilizationnew.py | 13 +++++ eos/effects/energytransfer.py | 9 ++++ eos/effects/ewtargetpaint.py | 8 +++ eos/effects/fighterabilityattackm.py | 16 ++++++ eos/effects/fighterabilityecm.py | 21 ++++++++ .../fighterabilityenergyneutralizer.py | 17 ++++++ eos/effects/fighterabilityevasivemaneuvers.py | 37 +++++++++++++ eos/effects/fighterabilitylaunchbomb.py | 19 +++++++ eos/effects/fighterabilitymicrowarpdrive.py | 20 +++++++ eos/effects/fighterabilitymissiles.py | 19 +++++++ eos/effects/fighterabilitystasiswebifier.py | 18 +++++++ eos/effects/fighterabilitywarpdisruption.py | 16 ++++++ eos/effects/flagshipmultirelayeffect.py | 11 ++++ .../iceharvestercapacitorneedmultiplier.py | 7 +++ .../informationwarfaremaxtargetrangebonus.py | 8 +++ .../informationwarfaremindlinkhidden.py | 8 +++ eos/effects/lightningweapon.py | 6 +++ eos/effects/maraudermodeeffect26.py | 52 +++++++++++++++++++ ...iningdirectorbonuscommandbonuseffective.py | 7 +++ .../orecapitalshipshieldtransferfalloff.py | 8 +++ .../orecapitalshipshieldtransferrange.py | 8 +++ eos/effects/pointdefense.py | 6 +++ eos/effects/remotehullrepair.py | 10 ++++ eos/effects/rigdrawbackbonuseffect.py | 7 +++ eos/effects/setbonusasklepian.py | 2 +- eos/effects/shipbonusenergyvampirerangead2.py | 7 +++ ...apshipdronearmorhpandshieldhpandhpbonus.py | 9 ++++ .../shipbonusorecapshipdronedmgbonus.py | 8 +++ ...mandbonuseffectivemultiplierorecapital2.py | 8 +++ eos/effects/shipmodescanrespostdiv.py | 11 ++++ eos/effects/shipxlprojectiledamagerole.py | 7 +++ ...siegewarfareshieldcapacitybonusreplacer.py | 8 +++ .../skirmishwarfareagilitybonusreplacer.py | 8 +++ .../structureballisticcontrolsystem.py | 17 ++++++ .../structureenergyneutralizerfalloff.py | 13 +++++ eos/effects/structuremoduleeffectecm.py | 10 ++++ ...ructuremoduleeffectremotesensordampener.py | 14 +++++ .../structuremoduleeffectstasiswebifier.py | 8 +++ .../structuremoduleeffecttargetpainter.py | 8 +++ .../structuremoduleeffectweapondisruption.py | 26 ++++++++++ ...rigaoevelocitybonussingletargetmissiles.py | 10 ++++ eos/effects/structurerigdoomsdaydamageloss.py | 8 +++ .../structurerigdoomsdaytargetamountbonus.py | 8 +++ eos/effects/structurerigewcapacitorneed.py | 9 ++++ eos/effects/structurerigewmaxrangefalloff.py | 18 +++++++ ...cturerigexplosionradiusbonusaoemissiles.py | 8 +++ eos/effects/structurerigmaxtargets.py | 6 +++ .../structurerigneutralizercapacitorneed.py | 8 +++ ...neutralizermaxrangefalloffeffectiveness.py | 12 +++++ eos/effects/structurerigpdbcapacitorneed.py | 8 +++ eos/effects/structurerigpdbmaxrange.py | 8 +++ eos/effects/structurerigsensorresolution.py | 7 +++ .../structurerigvelocitybonusaoemissiles.py | 8 +++ ...urerigvelocitybonussingletargetmissiles.py | 9 ++++ ...ucturewarpscrambleblockmwdwithnpceffect.py | 15 ++++++ ...samarrdefensiveinformationwarfarehidden.py | 5 ++ ...aldaridefensiveinformationwarfarehidden.py | 5 ++ ...llentedefensiveinformationwarfarehidden.py | 5 ++ eos/effects/techtwocommandburstbonus.py | 7 +++ eos/effects/titanturretdamagescaling.py | 7 +++ ...llofftrackingspeedmultiplytargethostile.py | 15 ++++++ 67 files changed, 744 insertions(+), 1 deletion(-) create mode 100644 eos/effects/armorwarfarearmorhpreplacer.py create mode 100644 eos/effects/decreasetargetspeed.py create mode 100644 eos/effects/dronedamagebonusrequringdrones.py create mode 100644 eos/effects/elitebonuscommanddestroyerinfohidden1.py create mode 100644 eos/effects/elitebonuscommanddestroyermwdsigradius3.py create mode 100644 eos/effects/elitebonuscommandshipinformationhiddencs3.py create mode 100644 eos/effects/energydestabilizationnew.py create mode 100644 eos/effects/energytransfer.py create mode 100644 eos/effects/ewtargetpaint.py create mode 100644 eos/effects/fighterabilityattackm.py create mode 100644 eos/effects/fighterabilityecm.py create mode 100644 eos/effects/fighterabilityenergyneutralizer.py create mode 100644 eos/effects/fighterabilityevasivemaneuvers.py create mode 100644 eos/effects/fighterabilitylaunchbomb.py create mode 100644 eos/effects/fighterabilitymicrowarpdrive.py create mode 100644 eos/effects/fighterabilitymissiles.py create mode 100644 eos/effects/fighterabilitystasiswebifier.py create mode 100644 eos/effects/fighterabilitywarpdisruption.py create mode 100644 eos/effects/flagshipmultirelayeffect.py create mode 100644 eos/effects/iceharvestercapacitorneedmultiplier.py create mode 100644 eos/effects/informationwarfaremaxtargetrangebonus.py create mode 100644 eos/effects/informationwarfaremindlinkhidden.py create mode 100644 eos/effects/lightningweapon.py create mode 100644 eos/effects/maraudermodeeffect26.py create mode 100644 eos/effects/miningdirectorbonuscommandbonuseffective.py create mode 100644 eos/effects/orecapitalshipshieldtransferfalloff.py create mode 100644 eos/effects/orecapitalshipshieldtransferrange.py create mode 100644 eos/effects/pointdefense.py create mode 100644 eos/effects/remotehullrepair.py create mode 100644 eos/effects/rigdrawbackbonuseffect.py create mode 100644 eos/effects/shipbonusenergyvampirerangead2.py create mode 100644 eos/effects/shipbonusorecapshipdronearmorhpandshieldhpandhpbonus.py create mode 100644 eos/effects/shipbonusorecapshipdronedmgbonus.py create mode 100644 eos/effects/shipcommandbonuseffectivemultiplierorecapital2.py create mode 100644 eos/effects/shipmodescanrespostdiv.py create mode 100644 eos/effects/shipxlprojectiledamagerole.py create mode 100644 eos/effects/siegewarfareshieldcapacitybonusreplacer.py create mode 100644 eos/effects/skirmishwarfareagilitybonusreplacer.py create mode 100644 eos/effects/structureballisticcontrolsystem.py create mode 100644 eos/effects/structureenergyneutralizerfalloff.py create mode 100644 eos/effects/structuremoduleeffectecm.py create mode 100644 eos/effects/structuremoduleeffectremotesensordampener.py create mode 100644 eos/effects/structuremoduleeffectstasiswebifier.py create mode 100644 eos/effects/structuremoduleeffecttargetpainter.py create mode 100644 eos/effects/structuremoduleeffectweapondisruption.py create mode 100644 eos/effects/structurerigaoevelocitybonussingletargetmissiles.py create mode 100644 eos/effects/structurerigdoomsdaydamageloss.py create mode 100644 eos/effects/structurerigdoomsdaytargetamountbonus.py create mode 100644 eos/effects/structurerigewcapacitorneed.py create mode 100644 eos/effects/structurerigewmaxrangefalloff.py create mode 100644 eos/effects/structurerigexplosionradiusbonusaoemissiles.py create mode 100644 eos/effects/structurerigmaxtargets.py create mode 100644 eos/effects/structurerigneutralizercapacitorneed.py create mode 100644 eos/effects/structurerigneutralizermaxrangefalloffeffectiveness.py create mode 100644 eos/effects/structurerigpdbcapacitorneed.py create mode 100644 eos/effects/structurerigpdbmaxrange.py create mode 100644 eos/effects/structurerigsensorresolution.py create mode 100644 eos/effects/structurerigvelocitybonusaoemissiles.py create mode 100644 eos/effects/structurerigvelocitybonussingletargetmissiles.py create mode 100644 eos/effects/structurewarpscrambleblockmwdwithnpceffect.py create mode 100644 eos/effects/subsystembonusamarrdefensiveinformationwarfarehidden.py create mode 100644 eos/effects/subsystembonuscaldaridefensiveinformationwarfarehidden.py create mode 100644 eos/effects/subsystembonusgallentedefensiveinformationwarfarehidden.py create mode 100644 eos/effects/techtwocommandburstbonus.py create mode 100644 eos/effects/titanturretdamagescaling.py create mode 100644 eos/effects/turretweaponrangefallofftrackingspeedmultiplytargethostile.py diff --git a/eos/effects/armorwarfarearmorhpreplacer.py b/eos/effects/armorwarfarearmorhpreplacer.py new file mode 100644 index 000000000..4cbe460c0 --- /dev/null +++ b/eos/effects/armorwarfarearmorhpreplacer.py @@ -0,0 +1,10 @@ +# Not used by any item +type = "gang", "active" +gangBonus = "armorHpBonus2" +gangBoost = "armorHP" + + +def handler(fit, module, context): + if "gang" not in context: + return + fit.ship.boostItemAttr("armorHP", module.getModifiedItemAttr("armorHpBonus2")) diff --git a/eos/effects/decreasetargetspeed.py b/eos/effects/decreasetargetspeed.py new file mode 100644 index 000000000..dd482175d --- /dev/null +++ b/eos/effects/decreasetargetspeed.py @@ -0,0 +1,9 @@ +# Not used by any item +type = "active", "projected" + + +def handler(fit, module, context): + if "projected" not in context: + return + fit.ship.boostItemAttr("maxVelocity", module.getModifiedItemAttr("speedFactor"), + stackingPenalties=True) diff --git a/eos/effects/dronedamagebonusrequringdrones.py b/eos/effects/dronedamagebonusrequringdrones.py new file mode 100644 index 000000000..5f3e13ea1 --- /dev/null +++ b/eos/effects/dronedamagebonusrequringdrones.py @@ -0,0 +1,7 @@ +# Not used by any item +type = "passive" + + +def handler(fit, skill, context): + fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill("Drones"), + "damageMultiplier", skill.getModifiedItemAttr("damageMultiplierBonus") * skill.level) diff --git a/eos/effects/elitebonuscommanddestroyerinfohidden1.py b/eos/effects/elitebonuscommanddestroyerinfohidden1.py new file mode 100644 index 000000000..4ffc352e0 --- /dev/null +++ b/eos/effects/elitebonuscommanddestroyerinfohidden1.py @@ -0,0 +1,6 @@ +# Not used by any item +type = "passive" + + +def handler(fit, src, context): + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Information Command Specialist"), "commandBonusHidden", src.getModifiedItemAttr("eliteBonusCommandDestroyer1"), skill="Command Destroyers") diff --git a/eos/effects/elitebonuscommanddestroyermwdsigradius3.py b/eos/effects/elitebonuscommanddestroyermwdsigradius3.py new file mode 100644 index 000000000..f9c1fded2 --- /dev/null +++ b/eos/effects/elitebonuscommanddestroyermwdsigradius3.py @@ -0,0 +1,7 @@ +# Not used by any item +type = "passive" + + +def handler(fit, src, context): + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("High Speed Maneuvering"), "signatureRadiusBonus", + src.getModifiedItemAttr("eliteBonusCommandDestroyer3"), skill="Command Destroyers") diff --git a/eos/effects/elitebonuscommandshipinformationhiddencs3.py b/eos/effects/elitebonuscommandshipinformationhiddencs3.py new file mode 100644 index 000000000..27148ebec --- /dev/null +++ b/eos/effects/elitebonuscommandshipinformationhiddencs3.py @@ -0,0 +1,5 @@ +# Not used by any item +type = "passive" +def handler(fit, module, context): + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Information Command Specialist"), + "commandBonusHidden", module.getModifiedItemAttr("eliteBonusCommandShips3"), skill="Command Ships") diff --git a/eos/effects/energydestabilizationnew.py b/eos/effects/energydestabilizationnew.py new file mode 100644 index 000000000..6cf82afa5 --- /dev/null +++ b/eos/effects/energydestabilizationnew.py @@ -0,0 +1,13 @@ +# Not used by any item +from eos.types import State + +type = "active", "projected" + + +def handler(fit, src, context): + if "projected" in context and ( + (hasattr(src, "state") and src.state >= State.ACTIVE) or hasattr(src, "amountActive")): + multiplier = src.amountActive if hasattr(src, "amountActive") else 1 + amount = src.getModifiedItemAttr("energyNeutralizerAmount") + time = src.getModifiedItemAttr("duration") + fit.addDrain(src, time, amount * multiplier, 0) diff --git a/eos/effects/energytransfer.py b/eos/effects/energytransfer.py new file mode 100644 index 000000000..4a5ef6530 --- /dev/null +++ b/eos/effects/energytransfer.py @@ -0,0 +1,9 @@ +# Not used by any item +type = "projected", "active" + + +def handler(fit, src, context): + if "projected" in context: + amount = src.getModifiedItemAttr("powerTransferAmount") + duration = src.getModifiedItemAttr("duration") + fit.addDrain(src, duration, -amount, 0) diff --git a/eos/effects/ewtargetpaint.py b/eos/effects/ewtargetpaint.py new file mode 100644 index 000000000..c61adeb8b --- /dev/null +++ b/eos/effects/ewtargetpaint.py @@ -0,0 +1,8 @@ +# Not used by any item +type = "projected", "active" + + +def handler(fit, container, context): + if "projected" in context: + fit.ship.boostItemAttr("signatureRadius", container.getModifiedItemAttr("signatureRadiusBonus"), + stackingPenalties=True) diff --git a/eos/effects/fighterabilityattackm.py b/eos/effects/fighterabilityattackm.py new file mode 100644 index 000000000..2ea002819 --- /dev/null +++ b/eos/effects/fighterabilityattackm.py @@ -0,0 +1,16 @@ +# Not used by any item +""" +Since fighter abilities do not have any sort of item entity in the EVE database, we must derive the abilities from the +effects, and thus this effect file contains some custom information useful only to fighters. +""" +# User-friendly name for the ability +displayName = "Turret Attack" + +# Attribute prefix that this ability targets +prefix = "fighterAbilityAttackMissile" + +type = "active" + + +def handler(fit, src, context): + pass diff --git a/eos/effects/fighterabilityecm.py b/eos/effects/fighterabilityecm.py new file mode 100644 index 000000000..743df38ed --- /dev/null +++ b/eos/effects/fighterabilityecm.py @@ -0,0 +1,21 @@ +# Not used by any item +""" +Since fighter abilities do not have any sort of item entity in the EVE database, we must derive the abilities from the +effects, and thus this effect file contains some custom information useful only to fighters. +""" + +# User-friendly name for the ability +displayName = "ECM" + +prefix = "fighterAbilityECM" + +type = "projected", "active" + + +def handler(fit, module, context): + if "projected" not in context: + return + # jam formula: 1 - (1- (jammer str/ship str))^(# of jam mods with same str)) + strModifier = 1 - module.getModifiedItemAttr("{}Strength{}".format(prefix, fit.scanType)) / fit.scanStrength + + fit.ecmProjectedStr *= strModifier diff --git a/eos/effects/fighterabilityenergyneutralizer.py b/eos/effects/fighterabilityenergyneutralizer.py new file mode 100644 index 000000000..dd771b750 --- /dev/null +++ b/eos/effects/fighterabilityenergyneutralizer.py @@ -0,0 +1,17 @@ +# Not used by any item +""" +Since fighter abilities do not have any sort of item entity in the EVE database, we must derive the abilities from the +effects, and thus this effect file contains some custom information useful only to fighters. +""" +# User-friendly name for the ability +displayName = "Energy Neutralizer" +prefix = "fighterAbilityEnergyNeutralizer" +type = "active", "projected" + + +def handler(fit, src, context): + if "projected" in context: + amount = src.getModifiedItemAttr("{}Amount".format(prefix)) + time = src.getModifiedItemAttr("{}Duration".format(prefix)) + + fit.addDrain(src, time, amount, 0) diff --git a/eos/effects/fighterabilityevasivemaneuvers.py b/eos/effects/fighterabilityevasivemaneuvers.py new file mode 100644 index 000000000..bf17edc92 --- /dev/null +++ b/eos/effects/fighterabilityevasivemaneuvers.py @@ -0,0 +1,37 @@ +# Not used by any item +""" +Since fighter abilities do not have any sort of item entity in the EVE database, we must derive the abilities from the +effects, and thus this effect file contains some custom information useful only to fighters. +""" +# User-friendly name for the ability +displayName = "Evasive Maneuvers" + +prefix = "fighterAbilityEvasiveManeuvers" + +# Is ability applied to the fighter squad as a whole, or per fighter? +grouped = True + +type = "active" +runTime = "late" + + +def handler(fit, container, context): + container.boostItemAttr("maxVelocity", + container.getModifiedItemAttr("fighterAbilityEvasiveManeuversSpeedBonus")) + container.boostItemAttr("signatureRadius", + container.getModifiedItemAttr("fighterAbilityEvasiveManeuversSignatureRadiusBonus"), + stackingPenalties=True) + + # These may not have stacking penalties, but there's nothing else that affects the attributes yet to check. + container.multiplyItemAttr("shieldEmDamageResonance", + container.getModifiedItemAttr("fighterAbilityEvasiveManeuversEmResonance"), + stackingPenalties=True) + container.multiplyItemAttr("shieldThermalDamageResonance", + container.getModifiedItemAttr("fighterAbilityEvasiveManeuversThermResonance"), + stackingPenalties=True) + container.multiplyItemAttr("shieldKineticDamageResonance", + container.getModifiedItemAttr("fighterAbilityEvasiveManeuversKinResonance"), + stackingPenalties=True) + container.multiplyItemAttr("shieldExplosiveDamageResonance", + container.getModifiedItemAttr("fighterAbilityEvasiveManeuversExpResonance"), + stackingPenalties=True) diff --git a/eos/effects/fighterabilitylaunchbomb.py b/eos/effects/fighterabilitylaunchbomb.py new file mode 100644 index 000000000..bd46513bf --- /dev/null +++ b/eos/effects/fighterabilitylaunchbomb.py @@ -0,0 +1,19 @@ +# Not used by any item +""" +Since fighter abilities do not have any sort of item entity in the EVE database, we must derive the abilities from the +effects, and thus this effect file contains some custom information useful only to fighters. +""" +# User-friendly name for the ability +displayName = "Bomb" + +# Attribute prefix that this ability targets +prefix = "fighterAbilityLaunchBomb" + +type = "active" + +# This flag is required for effects that use charges in order to properly calculate reload time +hasCharges = True + + +def handler(fit, src, context): + pass diff --git a/eos/effects/fighterabilitymicrowarpdrive.py b/eos/effects/fighterabilitymicrowarpdrive.py new file mode 100644 index 000000000..01bea209a --- /dev/null +++ b/eos/effects/fighterabilitymicrowarpdrive.py @@ -0,0 +1,20 @@ +# Not used by any item +""" +Since fighter abilities do not have any sort of item entity in the EVE database, we must derive the abilities from the +effects, and thus this effect file contains some custom information useful only to fighters. +""" +# User-friendly name for the ability +displayName = "Microwarpdrive" + +# Is ability applied to the fighter squad as a whole, or per fighter? +grouped = True + +type = "active" +runTime = "late" + + +def handler(fit, module, context): + module.boostItemAttr("maxVelocity", module.getModifiedItemAttr("fighterAbilityMicroWarpDriveSpeedBonus")) + module.boostItemAttr("signatureRadius", + module.getModifiedItemAttr("fighterAbilityMicroWarpDriveSignatureRadiusBonus"), + stackingPenalties=True) diff --git a/eos/effects/fighterabilitymissiles.py b/eos/effects/fighterabilitymissiles.py new file mode 100644 index 000000000..8dc752ee2 --- /dev/null +++ b/eos/effects/fighterabilitymissiles.py @@ -0,0 +1,19 @@ +# Not used by any item +""" +Since fighter abilities do not have any sort of item entity in the EVE database, we must derive the abilities from the +effects, and thus this effect file contains some custom information useful only to fighters. +""" +# User-friendly name for the ability +displayName = "Missile Attack" + +# Attribute prefix that this ability targets +prefix = "fighterAbilityMissiles" + +type = "active" + +# This flag is required for effects that use charges in order to properly calculate reload time +hasCharges = True + + +def handler(fit, src, context): + pass diff --git a/eos/effects/fighterabilitystasiswebifier.py b/eos/effects/fighterabilitystasiswebifier.py new file mode 100644 index 000000000..cf5143f98 --- /dev/null +++ b/eos/effects/fighterabilitystasiswebifier.py @@ -0,0 +1,18 @@ +# Not used by any item +""" +Since fighter abilities do not have any sort of item entity in the EVE database, we must derive the abilities from the +effects, and thus this effect file contains some custom information useful only to fighters. +""" + +# User-friendly name for the ability +displayName = "Stasis Webifier" + +prefix = "fighterAbilityStasisWebifier" + +type = "active", "projected" + + +def handler(fit, src, context): + if "projected" not in context: + return + fit.ship.boostItemAttr("maxVelocity", src.getModifiedItemAttr("{}SpeedPenalty".format(prefix))) diff --git a/eos/effects/fighterabilitywarpdisruption.py b/eos/effects/fighterabilitywarpdisruption.py new file mode 100644 index 000000000..0d7013434 --- /dev/null +++ b/eos/effects/fighterabilitywarpdisruption.py @@ -0,0 +1,16 @@ +# Not used by any item +""" +Since fighter abilities do not have any sort of item entity in the EVE database, we must derive the abilities from the +effects, and thus this effect file contains some custom information useful only to fighters. +""" + +# User-friendly name for the ability +displayName = "Warp Disruption" +prefix = "fighterAbilityWarpDisruption" +type = "active", "projected" + + +def handler(fit, src, context): + if "projected" not in context: + return + fit.ship.increaseItemAttr("warpScrambleStatus", src.getModifiedItemAttr("{}PointStrength".format(prefix))) diff --git a/eos/effects/flagshipmultirelayeffect.py b/eos/effects/flagshipmultirelayeffect.py new file mode 100644 index 000000000..20bf757c2 --- /dev/null +++ b/eos/effects/flagshipmultirelayeffect.py @@ -0,0 +1,11 @@ +# Not used by any item +type = "passive" + + +def handler(fit, module, context): + # Note: we increase maxGroupActive by two. + # If we only increased it by one, we'd get the number to stay equal + # As Comman Processors use one themselves too + fit.modules.filteredItemIncrease(lambda mod: mod.item.group.name == "Gang Coordinator" and + "maxGroupActive" in mod.itemModifiedAttributes, + "maxGroupActive", 1) diff --git a/eos/effects/iceharvestercapacitorneedmultiplier.py b/eos/effects/iceharvestercapacitorneedmultiplier.py new file mode 100644 index 000000000..93338c76f --- /dev/null +++ b/eos/effects/iceharvestercapacitorneedmultiplier.py @@ -0,0 +1,7 @@ +# Not used by any item +type = "passive" + + +def handler(fit, ship, context): + fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill("Ice Harvesting"), + "capacitorNeed", ship.getModifiedItemAttr("iceHarvestCycleBonus")) diff --git a/eos/effects/informationwarfaremaxtargetrangebonus.py b/eos/effects/informationwarfaremaxtargetrangebonus.py new file mode 100644 index 000000000..dfb0a01fc --- /dev/null +++ b/eos/effects/informationwarfaremaxtargetrangebonus.py @@ -0,0 +1,8 @@ +# Not used by any item +type = "gang" +gangBoost = "maxTargetRange" +gangBonus = "maxTargetRangeBonus" + + +def handler(fit, container, context): + fit.ship.boostItemAttr(gangBoost, container.getModifiedItemAttr(gangBonus)) diff --git a/eos/effects/informationwarfaremindlinkhidden.py b/eos/effects/informationwarfaremindlinkhidden.py new file mode 100644 index 000000000..014ad1d31 --- /dev/null +++ b/eos/effects/informationwarfaremindlinkhidden.py @@ -0,0 +1,8 @@ +# Not used by any item +type = "passive" + + +def handler(fit, implant, context): + fit.character.getSkill("Information Command").suppress() + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Information Command Specialist"), + "commandBonusHidden", implant.getModifiedItemAttr("mindlinkBonus")) diff --git a/eos/effects/lightningweapon.py b/eos/effects/lightningweapon.py new file mode 100644 index 000000000..4f2324035 --- /dev/null +++ b/eos/effects/lightningweapon.py @@ -0,0 +1,6 @@ +# Not used by any item +type = 'active' + + +def handler(fit, module, context): + pass diff --git a/eos/effects/maraudermodeeffect26.py b/eos/effects/maraudermodeeffect26.py new file mode 100644 index 000000000..f892a5a52 --- /dev/null +++ b/eos/effects/maraudermodeeffect26.py @@ -0,0 +1,52 @@ +# Not used by any item +type = "active" +runTime = "early" + + +def handler(fit, module, context): + # Resistances + for layer, attrPrefix in (('shield', 'shield'), ('armor', 'armor'), ('hull', '')): + for damageType in ('Kinetic', 'Thermal', 'Explosive', 'Em'): + bonus = "%s%sDamageResonance" % (attrPrefix, damageType) + bonus = "%s%s" % (bonus[0].lower(), bonus[1:]) + booster = "%s%sDamageResonance" % (layer, damageType) + penalize = False if layer == 'hull' else True + fit.ship.multiplyItemAttr(bonus, module.getModifiedItemAttr(booster), + stackingPenalties=penalize, penaltyGroup="preMul") + + # Turrets + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Large Energy Turret") or + mod.item.requiresSkill("Large Hybrid Turret") or + mod.item.requiresSkill("Large Projectile Turret"), + "maxRange", module.getModifiedItemAttr("maxRangeBonus"), + stackingPenalties=True) + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Large Energy Turret") or + mod.item.requiresSkill("Large Hybrid Turret") or + mod.item.requiresSkill("Large Projectile Turret"), + "falloff", module.getModifiedItemAttr("falloffBonus"), + stackingPenalties=True) + + # Missiles + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Torpedoes") or + mod.charge.requiresSkill("Cruise Missiles") or + mod.charge.requiresSkill("Heavy Missiles"), + "maxVelocity", module.getModifiedItemAttr("missileVelocityBonus")) + + # Tanking + fit.modules.filteredItemBoost( + lambda mod: mod.item.requiresSkill("Capital Repair Systems") or mod.item.requiresSkill("Repair Systems"), + "armorDamageAmount", module.getModifiedItemAttr("armorDamageAmountBonus"), + stackingPenalties=True) + fit.modules.filteredItemBoost( + lambda mod: mod.item.requiresSkill("Capital Shield Operation") or mod.item.requiresSkill("Shield Operation"), + "shieldBonus", module.getModifiedItemAttr("shieldBoostMultiplier"), + stackingPenalties=True) + + # Speed penalty + fit.ship.boostItemAttr("maxVelocity", module.getModifiedItemAttr("speedFactor")) + + # Max locked targets + fit.ship.forceItemAttr("maxLockedTargets", module.getModifiedItemAttr("maxLockedTargets")) + + # Block Hostile ewar + fit.ship.forceItemAttr("disallowOffensiveModifiers", module.getModifiedItemAttr("disallowOffensiveModifiers")) diff --git a/eos/effects/miningdirectorbonuscommandbonuseffective.py b/eos/effects/miningdirectorbonuscommandbonuseffective.py new file mode 100644 index 000000000..43f712ff5 --- /dev/null +++ b/eos/effects/miningdirectorbonuscommandbonuseffective.py @@ -0,0 +1,7 @@ +# Not used by any item +type = "passive" + + +def handler(fit, ship, context): + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining Director"), + "commandBonus", ship.getModifiedItemAttr("commandBonusEffective")) diff --git a/eos/effects/orecapitalshipshieldtransferfalloff.py b/eos/effects/orecapitalshipshieldtransferfalloff.py new file mode 100644 index 000000000..6ec5e26c5 --- /dev/null +++ b/eos/effects/orecapitalshipshieldtransferfalloff.py @@ -0,0 +1,8 @@ +# Not used by any item +type = "passive" + + +def handler(fit, src, context): + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capital Shield Emission Systems"), + "falloffEffectiveness", src.getModifiedItemAttr("shipBonusORECapital3"), + skill="Capital Industrial Ships") diff --git a/eos/effects/orecapitalshipshieldtransferrange.py b/eos/effects/orecapitalshipshieldtransferrange.py new file mode 100644 index 000000000..2e7f24d88 --- /dev/null +++ b/eos/effects/orecapitalshipshieldtransferrange.py @@ -0,0 +1,8 @@ +# Not used by any item +type = "passive" + + +def handler(fit, ship, context): + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capital Shield Emission Systems"), + "maxRange", ship.getModifiedItemAttr("shipBonusORECapital3"), + skill="Capital Industrial Ships") diff --git a/eos/effects/pointdefense.py b/eos/effects/pointdefense.py new file mode 100644 index 000000000..4f2324035 --- /dev/null +++ b/eos/effects/pointdefense.py @@ -0,0 +1,6 @@ +# Not used by any item +type = 'active' + + +def handler(fit, module, context): + pass diff --git a/eos/effects/remotehullrepair.py b/eos/effects/remotehullrepair.py new file mode 100644 index 000000000..099e0c2ac --- /dev/null +++ b/eos/effects/remotehullrepair.py @@ -0,0 +1,10 @@ +# Not used by any item +type = "projected", "active" +runTime = "late" + + +def handler(fit, module, context): + if "projected" not in context: return + bonus = module.getModifiedItemAttr("structureDamageAmount") + duration = module.getModifiedItemAttr("duration") / 1000.0 + fit.extraAttributes.increase("hullRepair", bonus / duration) diff --git a/eos/effects/rigdrawbackbonuseffect.py b/eos/effects/rigdrawbackbonuseffect.py new file mode 100644 index 000000000..58f066b1d --- /dev/null +++ b/eos/effects/rigdrawbackbonuseffect.py @@ -0,0 +1,7 @@ +# Not used by any item +type = "passive" + + +def handler(fit, skill, context): + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), + "drawback", skill.getModifiedItemAttr("rigDrawbackBonus") * skill.level) diff --git a/eos/effects/setbonusasklepian.py b/eos/effects/setbonusasklepian.py index 4bd989f13..5d063f470 100644 --- a/eos/effects/setbonusasklepian.py +++ b/eos/effects/setbonusasklepian.py @@ -1,8 +1,8 @@ # setBonusAsklepian # # Used by: -# Implants named like: Asklepian Omega (3 of 3) # Implants named like: Grade Asklepian (16 of 16) +# Implants named like: grade Asklepian Omega (2 of 2) runTime = "early" type = "passive" diff --git a/eos/effects/shipbonusenergyvampirerangead2.py b/eos/effects/shipbonusenergyvampirerangead2.py new file mode 100644 index 000000000..28f9f7c8c --- /dev/null +++ b/eos/effects/shipbonusenergyvampirerangead2.py @@ -0,0 +1,7 @@ +# Not used by any item +type = "passive" + + +def handler(fit, ship, context): + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Energy Nosferatu", + "maxRange", ship.getModifiedItemAttr("shipBonusAD2"), skill="Amarr Destroyer") diff --git a/eos/effects/shipbonusorecapshipdronearmorhpandshieldhpandhpbonus.py b/eos/effects/shipbonusorecapshipdronearmorhpandshieldhpandhpbonus.py new file mode 100644 index 000000000..e8860ee63 --- /dev/null +++ b/eos/effects/shipbonusorecapshipdronearmorhpandshieldhpandhpbonus.py @@ -0,0 +1,9 @@ +# Not used by any item +type = "passive" + + +def handler(fit, ship, context): + for type in ("shieldCapacity", "armorHP", "hp"): + fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill("Drones"), + type, ship.getModifiedItemAttr("shipBonusORECapital4"), + skill="Capital Industrial Ships") diff --git a/eos/effects/shipbonusorecapshipdronedmgbonus.py b/eos/effects/shipbonusorecapshipdronedmgbonus.py new file mode 100644 index 000000000..eaa95fe6d --- /dev/null +++ b/eos/effects/shipbonusorecapshipdronedmgbonus.py @@ -0,0 +1,8 @@ +# Not used by any item +type = "passive" + + +def handler(fit, ship, context): + fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill("Drones"), + "damageMultiplier", ship.getModifiedItemAttr("shipBonusORECapital4"), + skill="Capital Industrial Ships") diff --git a/eos/effects/shipcommandbonuseffectivemultiplierorecapital2.py b/eos/effects/shipcommandbonuseffectivemultiplierorecapital2.py new file mode 100644 index 000000000..76673f21f --- /dev/null +++ b/eos/effects/shipcommandbonuseffectivemultiplierorecapital2.py @@ -0,0 +1,8 @@ +# Not used by any item +type = "passive" + + +def handler(fit, ship, context): + if fit.extraAttributes["siege"]: + fit.ship.increaseItemAttr("commandBonusEffective", ship.getModifiedItemAttr("shipBonusORECapital2"), + skill="Capital Industrial Ships") diff --git a/eos/effects/shipmodescanrespostdiv.py b/eos/effects/shipmodescanrespostdiv.py new file mode 100644 index 000000000..2ad04ec22 --- /dev/null +++ b/eos/effects/shipmodescanrespostdiv.py @@ -0,0 +1,11 @@ +# Not used by any item +type = "passive" + + +def handler(fit, module, context): + fit.ship.multiplyItemAttr( + "scanResolution", + 1 / module.getModifiedItemAttr("modeScanResPostDiv"), + stackingPenalties=True, + penaltyGroup="postDiv" + ) diff --git a/eos/effects/shipxlprojectiledamagerole.py b/eos/effects/shipxlprojectiledamagerole.py new file mode 100644 index 000000000..62f670f18 --- /dev/null +++ b/eos/effects/shipxlprojectiledamagerole.py @@ -0,0 +1,7 @@ +# Not used by any item +type = "passive" + + +def handler(fit, ship, context): + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capital Projectile Turret"), + "damageMultiplier", ship.getModifiedItemAttr("shipBonusPirateFaction")) diff --git a/eos/effects/siegewarfareshieldcapacitybonusreplacer.py b/eos/effects/siegewarfareshieldcapacitybonusreplacer.py new file mode 100644 index 000000000..4ec89d183 --- /dev/null +++ b/eos/effects/siegewarfareshieldcapacitybonusreplacer.py @@ -0,0 +1,8 @@ +# Not used by any item +type = "gang" +gangBoost = "shieldCapacity" +gangBonus = "shieldCapacityBonus" + + +def handler(fit, container, context): + fit.ship.boostItemAttr(gangBoost, container.getModifiedItemAttr(gangBonus)) diff --git a/eos/effects/skirmishwarfareagilitybonusreplacer.py b/eos/effects/skirmishwarfareagilitybonusreplacer.py new file mode 100644 index 000000000..75aff212a --- /dev/null +++ b/eos/effects/skirmishwarfareagilitybonusreplacer.py @@ -0,0 +1,8 @@ +# Not used by any item +type = "gang" +gangBoost = "agility" +gangBonus = "agilityBonus" + + +def handler(fit, container, context): + fit.ship.boostItemAttr(gangBoost, container.getModifiedItemAttr(gangBonus)) diff --git a/eos/effects/structureballisticcontrolsystem.py b/eos/effects/structureballisticcontrolsystem.py new file mode 100644 index 000000000..e075af277 --- /dev/null +++ b/eos/effects/structureballisticcontrolsystem.py @@ -0,0 +1,17 @@ +# Not used by any item +type = "passive" + + +def handler(fit, module, context): + missileGroups = ("Structure Anti-Capital Missile", "Structure Anti-Subcapital Missile") + + for dmgType in ("em", "kinetic", "explosive", "thermal"): + fit.modules.filteredChargeMultiply(lambda mod: mod.charge.group.name in missileGroups, + "%sDamage" % dmgType, + module.getModifiedItemAttr("missileDamageMultiplierBonus"), + stackingPenalties=True) + + launcherGroups = ("Structure AXL Missile Launcher", "Structure ASML Missile Launcher") + fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name in launcherGroups, + "speed", module.getModifiedItemAttr("speedMultiplier"), + stackingPenalties=True) diff --git a/eos/effects/structureenergyneutralizerfalloff.py b/eos/effects/structureenergyneutralizerfalloff.py new file mode 100644 index 000000000..8b6bf5846 --- /dev/null +++ b/eos/effects/structureenergyneutralizerfalloff.py @@ -0,0 +1,13 @@ +# Not used by any item +from eos.types import State + +type = "active", "projected" + + +def handler(fit, container, context): + amount = 0 + if "projected" in context and ((hasattr(container, "state") + and container.state >= State.ACTIVE) or hasattr(container, "amountActive")): + amount = container.getModifiedItemAttr("energyNeutralizerAmount") + time = container.getModifiedItemAttr("duration") + fit.addDrain(time, amount, 0) diff --git a/eos/effects/structuremoduleeffectecm.py b/eos/effects/structuremoduleeffectecm.py new file mode 100644 index 000000000..9a39b452a --- /dev/null +++ b/eos/effects/structuremoduleeffectecm.py @@ -0,0 +1,10 @@ +# Not used by any item +type = "projected", "active" + + +def handler(fit, module, context): + if "projected" in context: + # jam formula: 1 - (1- (jammer str/ship str))^(# of jam mods with same str)) + strModifier = 1 - module.getModifiedItemAttr("scan{0}StrengthBonus".format(fit.scanType)) / fit.scanStrength + + fit.ecmProjectedStr *= strModifier diff --git a/eos/effects/structuremoduleeffectremotesensordampener.py b/eos/effects/structuremoduleeffectremotesensordampener.py new file mode 100644 index 000000000..7260ef623 --- /dev/null +++ b/eos/effects/structuremoduleeffectremotesensordampener.py @@ -0,0 +1,14 @@ +# Not used by any item + +type = "projected", "active" + + +def handler(fit, module, context): + if "projected" not in context: + return + + fit.ship.boostItemAttr("maxTargetRange", module.getModifiedItemAttr("maxTargetRangeBonus"), + stackingPenalties=True, remoteResists=True) + + fit.ship.boostItemAttr("scanResolution", module.getModifiedItemAttr("scanResolutionBonus"), + stackingPenalties=True, remoteResists=True) diff --git a/eos/effects/structuremoduleeffectstasiswebifier.py b/eos/effects/structuremoduleeffectstasiswebifier.py new file mode 100644 index 000000000..dc4b6f046 --- /dev/null +++ b/eos/effects/structuremoduleeffectstasiswebifier.py @@ -0,0 +1,8 @@ +# Not used by any item +type = "active", "projected" + + +def handler(fit, module, context): + if "projected" not in context: return + fit.ship.boostItemAttr("maxVelocity", module.getModifiedItemAttr("speedFactor"), + stackingPenalties=True, remoteResists=True) diff --git a/eos/effects/structuremoduleeffecttargetpainter.py b/eos/effects/structuremoduleeffecttargetpainter.py new file mode 100644 index 000000000..aac9005ba --- /dev/null +++ b/eos/effects/structuremoduleeffecttargetpainter.py @@ -0,0 +1,8 @@ +# Not used by any item +type = "projected", "active" + + +def handler(fit, container, context): + if "projected" in context: + fit.ship.boostItemAttr("signatureRadius", container.getModifiedItemAttr("signatureRadiusBonus"), + stackingPenalties=True, remoteResists=True) diff --git a/eos/effects/structuremoduleeffectweapondisruption.py b/eos/effects/structuremoduleeffectweapondisruption.py new file mode 100644 index 000000000..82e67797e --- /dev/null +++ b/eos/effects/structuremoduleeffectweapondisruption.py @@ -0,0 +1,26 @@ +# Not used by any item + +type = "active", "projected" + + +def handler(fit, module, context): + if "projected" in context: + for srcAttr, tgtAttr in ( + ("aoeCloudSizeBonus", "aoeCloudSize"), + ("aoeVelocityBonus", "aoeVelocity"), + ("missileVelocityBonus", "maxVelocity"), + ("explosionDelayBonus", "explosionDelay"), + ): + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"), + tgtAttr, module.getModifiedItemAttr(srcAttr), + stackingPenalties=True, remoteResists=True) + + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Gunnery"), + "trackingSpeed", module.getModifiedItemAttr("trackingSpeedBonus"), + stackingPenalties=True, remoteResists=True) + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Gunnery"), + "maxRange", module.getModifiedItemAttr("maxRangeBonus"), + stackingPenalties=True, remoteResists=True) + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Gunnery"), + "falloff", module.getModifiedItemAttr("falloffBonus"), + stackingPenalties=True, remoteResists=True) diff --git a/eos/effects/structurerigaoevelocitybonussingletargetmissiles.py b/eos/effects/structurerigaoevelocitybonussingletargetmissiles.py new file mode 100644 index 000000000..6d4503ec7 --- /dev/null +++ b/eos/effects/structurerigaoevelocitybonussingletargetmissiles.py @@ -0,0 +1,10 @@ +# Not used by any item +type = "passive" + + +def handler(fit, src, context): + groups = ("Structure Anti-Subcapital Missile", "Structure Anti-Capital Missile") + + fit.modules.filteredItemBoost(lambda mod: mod.charge.group.name in groups, + "aoeVelocity", src.getModifiedItemAttr("structureRigMissileExploVeloBonus"), + stackingPenalties=True) diff --git a/eos/effects/structurerigdoomsdaydamageloss.py b/eos/effects/structurerigdoomsdaydamageloss.py new file mode 100644 index 000000000..e2c6c613b --- /dev/null +++ b/eos/effects/structurerigdoomsdaydamageloss.py @@ -0,0 +1,8 @@ +# Not used by any item +type = "passive" + + +def handler(fit, src, context): + fit.modules.filteredItemIncrease(lambda mod: mod.item.group.name == "Structure Doomsday Weapon", + "lightningWeaponDamageLossTarget", + src.getModifiedItemAttr("structureRigDoomsdayDamageLossTargetBonus")) diff --git a/eos/effects/structurerigdoomsdaytargetamountbonus.py b/eos/effects/structurerigdoomsdaytargetamountbonus.py new file mode 100644 index 000000000..a68ca1054 --- /dev/null +++ b/eos/effects/structurerigdoomsdaytargetamountbonus.py @@ -0,0 +1,8 @@ +# Not used by any item +type = "passive" + + +def handler(fit, src, context): + fit.modules.filteredItemIncrease(lambda mod: mod.item.group.name == "Structure Doomsday Weapon", + "lightningWeaponTargetAmount", + src.getModifiedItemAttr("structureRigDoomsdayTargetAmountBonus")) diff --git a/eos/effects/structurerigewcapacitorneed.py b/eos/effects/structurerigewcapacitorneed.py new file mode 100644 index 000000000..dfeae5753 --- /dev/null +++ b/eos/effects/structurerigewcapacitorneed.py @@ -0,0 +1,9 @@ +# Not used by any item +type = "passive" + + +def handler(fit, src, context): + groups = ("Structure ECM Battery", "Structure Disruption Battery") + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, + "capacitorNeed", src.getModifiedItemAttr("structureRigEwarCapUseBonus"), + stackingPenalties=True) diff --git a/eos/effects/structurerigewmaxrangefalloff.py b/eos/effects/structurerigewmaxrangefalloff.py new file mode 100644 index 000000000..fa6ed13c9 --- /dev/null +++ b/eos/effects/structurerigewmaxrangefalloff.py @@ -0,0 +1,18 @@ +# Not used by any item +type = "passive" + + +def handler(fit, src, context): + groups = ("Structure ECM Battery", "Structure Disruption Battery") + + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, + "falloff", src.getModifiedItemAttr("structureRigEwarFalloffBonus"), + stackingPenalties=True) + + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, + "maxRange", src.getModifiedItemAttr("structureRigEwarOptimalBonus"), + stackingPenalties=True) + + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, + "falloffEffectiveness", src.getModifiedItemAttr("structureRigEwarFalloffBonus"), + stackingPenalties=True) diff --git a/eos/effects/structurerigexplosionradiusbonusaoemissiles.py b/eos/effects/structurerigexplosionradiusbonusaoemissiles.py new file mode 100644 index 000000000..34e840638 --- /dev/null +++ b/eos/effects/structurerigexplosionradiusbonusaoemissiles.py @@ -0,0 +1,8 @@ +# Not used by any item +type = "passive" + + +def handler(fit, src, context): + fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == "Structure Guided Bomb", + "aoeCloudSize", src.getModifiedItemAttr("structureRigMissileExplosionRadiusBonus"), + stackingPenalties=True) diff --git a/eos/effects/structurerigmaxtargets.py b/eos/effects/structurerigmaxtargets.py new file mode 100644 index 000000000..d7b5ecfe5 --- /dev/null +++ b/eos/effects/structurerigmaxtargets.py @@ -0,0 +1,6 @@ +# Not used by any item +type = "passive" + + +def handler(fit, src, context): + fit.ship.increaseItemAttr("maxLockedTargets", src.getModifiedItemAttr("structureRigMaxTargetBonus")) diff --git a/eos/effects/structurerigneutralizercapacitorneed.py b/eos/effects/structurerigneutralizercapacitorneed.py new file mode 100644 index 000000000..c570161fa --- /dev/null +++ b/eos/effects/structurerigneutralizercapacitorneed.py @@ -0,0 +1,8 @@ +# Not used by any item +type = "passive" + + +def handler(fit, src, context): + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Structure Energy Neutralizer", + "capacitorNeed", src.getModifiedItemAttr("structureRigEwarCapUseBonus"), + stackingPenalties=True) diff --git a/eos/effects/structurerigneutralizermaxrangefalloffeffectiveness.py b/eos/effects/structurerigneutralizermaxrangefalloffeffectiveness.py new file mode 100644 index 000000000..d123e0278 --- /dev/null +++ b/eos/effects/structurerigneutralizermaxrangefalloffeffectiveness.py @@ -0,0 +1,12 @@ +# Not used by any item +type = "passive" + + +def handler(fit, src, context): + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Structure Energy Neutralizer", + "maxRange", src.getModifiedItemAttr("structureRigEwarOptimalBonus"), + stackingPenalties=True) + + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Structure Energy Neutralizer", + "falloffEffectiveness", src.getModifiedItemAttr("structureRigEwarFalloffBonus"), + stackingPenalties=True) diff --git a/eos/effects/structurerigpdbcapacitorneed.py b/eos/effects/structurerigpdbcapacitorneed.py new file mode 100644 index 000000000..a32e63ecc --- /dev/null +++ b/eos/effects/structurerigpdbcapacitorneed.py @@ -0,0 +1,8 @@ +# Not used by any item +type = "passive" + + +def handler(fit, src, context): + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Structure Area Denial Module", + "capacitorNeed", src.getModifiedItemAttr("structureRigPDCapUseBonus"), + stackingPenalties=True) diff --git a/eos/effects/structurerigpdbmaxrange.py b/eos/effects/structurerigpdbmaxrange.py new file mode 100644 index 000000000..64994bf26 --- /dev/null +++ b/eos/effects/structurerigpdbmaxrange.py @@ -0,0 +1,8 @@ +# Not used by any item +type = "passive" + + +def handler(fit, src, context): + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Structure Area Denial Module", + "empFieldRange", src.getModifiedItemAttr("structureRigPDRangeBonus"), + stackingPenalties=True) diff --git a/eos/effects/structurerigsensorresolution.py b/eos/effects/structurerigsensorresolution.py new file mode 100644 index 000000000..8d68050e6 --- /dev/null +++ b/eos/effects/structurerigsensorresolution.py @@ -0,0 +1,7 @@ +# Not used by any item +type = "passive" + + +def handler(fit, src, context): + fit.ship.boostItemAttr("scanResolution", src.getModifiedItemAttr("structureRigScanResBonus"), + stackingPenalties=True) diff --git a/eos/effects/structurerigvelocitybonusaoemissiles.py b/eos/effects/structurerigvelocitybonusaoemissiles.py new file mode 100644 index 000000000..636134b1f --- /dev/null +++ b/eos/effects/structurerigvelocitybonusaoemissiles.py @@ -0,0 +1,8 @@ +# Not used by any item +type = "passive" + + +def handler(fit, src, context): + fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == "Structure Guided Bomb", + "maxVelocity", src.getModifiedItemAttr("structureRigMissileVelocityBonus"), + stackingPenalties=True) diff --git a/eos/effects/structurerigvelocitybonussingletargetmissiles.py b/eos/effects/structurerigvelocitybonussingletargetmissiles.py new file mode 100644 index 000000000..1af82afd0 --- /dev/null +++ b/eos/effects/structurerigvelocitybonussingletargetmissiles.py @@ -0,0 +1,9 @@ +# Not used by any item +type = "passive" + + +def handler(fit, src, context): + groups = ("Structure Anti-Subcapital Missile", "Structure Anti-Capital Missile") + fit.modules.filteredItemBoost(lambda mod: mod.charge.group.name in groups, + "maxVelocity", src.getModifiedItemAttr("structureRigMissileVelocityBonus"), + stackingPenalties=True) diff --git a/eos/effects/structurewarpscrambleblockmwdwithnpceffect.py b/eos/effects/structurewarpscrambleblockmwdwithnpceffect.py new file mode 100644 index 000000000..4bf33ce41 --- /dev/null +++ b/eos/effects/structurewarpscrambleblockmwdwithnpceffect.py @@ -0,0 +1,15 @@ +# Not used by any item +from eos.types import State + +# Not used by any item +runTime = "early" +type = "projected", "active" + + +def handler(fit, module, context): + if "projected" not in context: + return + # this is such a dirty hack + for mod in fit.modules: + if not mod.isEmpty and mod.item.requiresSkill("High Speed Maneuvering") and mod.state > State.ONLINE: + mod.state = State.ONLINE diff --git a/eos/effects/subsystembonusamarrdefensiveinformationwarfarehidden.py b/eos/effects/subsystembonusamarrdefensiveinformationwarfarehidden.py new file mode 100644 index 000000000..9dfb9ad19 --- /dev/null +++ b/eos/effects/subsystembonusamarrdefensiveinformationwarfarehidden.py @@ -0,0 +1,5 @@ +# Not used by any item +type = "passive" +def handler(fit, module, context): + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Information Command Specialist"), + "commandBonusHidden", module.getModifiedItemAttr("subsystemBonusAmarrDefensive"), skill="Amarr Defensive Systems") diff --git a/eos/effects/subsystembonuscaldaridefensiveinformationwarfarehidden.py b/eos/effects/subsystembonuscaldaridefensiveinformationwarfarehidden.py new file mode 100644 index 000000000..f01b7efb7 --- /dev/null +++ b/eos/effects/subsystembonuscaldaridefensiveinformationwarfarehidden.py @@ -0,0 +1,5 @@ +# Not used by any item +type = "passive" +def handler(fit, module, context): + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Information Command Specialist"), + "commandBonusHidden", module.getModifiedItemAttr("subsystemBonusCaldariDefensive"), skill="Caldari Defensive Systems") diff --git a/eos/effects/subsystembonusgallentedefensiveinformationwarfarehidden.py b/eos/effects/subsystembonusgallentedefensiveinformationwarfarehidden.py new file mode 100644 index 000000000..7a3f8205f --- /dev/null +++ b/eos/effects/subsystembonusgallentedefensiveinformationwarfarehidden.py @@ -0,0 +1,5 @@ +# Not used by any item +type = "passive" +def handler(fit, module, context): + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Information Command Specialist"), + "commandBonusHidden", module.getModifiedItemAttr("subsystemBonusGallenteDefensive"), skill="Gallente Defensive Systems") diff --git a/eos/effects/techtwocommandburstbonus.py b/eos/effects/techtwocommandburstbonus.py new file mode 100644 index 000000000..a85f78ab9 --- /dev/null +++ b/eos/effects/techtwocommandburstbonus.py @@ -0,0 +1,7 @@ +# Not used by any item +type = "passive" +runTime = "late" + +def handler(fit, module, context): + for x in xrange(1, 4): + module.boostChargeAttr("warfareBuff{}Multiplier".format(x), module.getModifiedItemAttr("commandBurstStrengthBonus")) diff --git a/eos/effects/titanturretdamagescaling.py b/eos/effects/titanturretdamagescaling.py new file mode 100644 index 000000000..a8f00c006 --- /dev/null +++ b/eos/effects/titanturretdamagescaling.py @@ -0,0 +1,7 @@ +# Not used by any item +type = "passive" + + +def handler(fit, ship, context): + fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill("Gunnery"), + "turretDamageScalingRadius", ship.getModifiedItemAttr("titanBonusScalingRadius")) diff --git a/eos/effects/turretweaponrangefallofftrackingspeedmultiplytargethostile.py b/eos/effects/turretweaponrangefallofftrackingspeedmultiplytargethostile.py new file mode 100644 index 000000000..12d535bb2 --- /dev/null +++ b/eos/effects/turretweaponrangefallofftrackingspeedmultiplytargethostile.py @@ -0,0 +1,15 @@ +# Not used by any item +type = "projected", "active" + + +def handler(fit, container, context): + if "projected" in context: + fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill("Gunnery"), + "trackingSpeed", container.getModifiedItemAttr("trackingSpeedMultiplier"), + stackingPenalties=True, penaltyGroup="postMul") + fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill("Gunnery"), + "maxRange", container.getModifiedItemAttr("maxRangeMultiplier"), + stackingPenalties=True, penaltyGroup="postMul") + fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill("Gunnery"), + "falloff", container.getModifiedItemAttr("fallofMultiplier"), + stackingPenalties=True, penaltyGroup="postMul")