From 8ab6e26defc6d14369d8583e5c47aee164b795e7 Mon Sep 17 00:00:00 2001 From: blitzman Date: Tue, 13 Dec 2016 23:55:56 -0500 Subject: [PATCH 1/2] Start refactoring the command burst effects in a way that's not complete and total shit (only slightly shit) --- eos/effects/chargebonuswarfarecharge.py | 109 +---------------- eos/effects/modulebonuswarfarelinkarmor.py | 30 +++-- eos/effects/modulebonuswarfarelinkinfo.py | 19 +-- eos/effects/modulebonuswarfarelinkmining.py | 19 +-- eos/effects/modulebonuswarfarelinkshield.py | 19 +-- eos/effects/modulebonuswarfarelinkskirmish.py | 19 +-- eos/saveddata/fit.py | 112 +++++++++++++++++- 7 files changed, 174 insertions(+), 153 deletions(-) diff --git a/eos/effects/chargebonuswarfarecharge.py b/eos/effects/chargebonuswarfarecharge.py index 83865a009..d0d79199e 100644 --- a/eos/effects/chargebonuswarfarecharge.py +++ b/eos/effects/chargebonuswarfarecharge.py @@ -1,106 +1,7 @@ -# chargeBonusWarfareCharge -# -# Used by: -# Items from market group: Ammunition & Charges > Command Burst Charges (15 of 15) - - -''' -Some documentation: -When the fit is calculated, we gather up all the gang effects and stick them onto the fit. We don't run the actual -effect yet, only give the fit details so that it can run the effect at a later time. We need to do this so that we can -only run the strongest effect. When we are done, one of the last things that we do with the fit is to loop through those -bonuses and actually run the effect. To do this, we have a special argument passed into the effect handler that tells it -which warfareBuffID to run (shouldn't need this right now, but better safe than sorry) -''' - -type = "active", "gang" -def handler(fit, module, context, **kwargs): - def runEffect(id, value): - if id == 10: # Shield Burst: Shield Harmonizing: Shield Resistance - for damageType in ("Em", "Explosive", "Thermal", "Kinetic"): - fit.ship.boostItemAttr("shield%sDamageResonance" % damageType, value) - - if id == 11: # Shield Burst: Active Shielding: Repair Duration/Capacitor - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Shield Operation") or mod.item.requiresSkill("Shield Emission Systems"), "capacitorNeed", value) - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Shield Operation") or mod.item.requiresSkill("Shield Emission Systems"), "duration", value) - - if id == 12: # Shield Burst: Shield Extension: Shield HP - fit.ship.boostItemAttr("shieldCapacity", value, stackingPenalties=True) - - if id == 13: # Armor Burst: Armor Energizing: Armor Resistance - for damageType in ("Em", "Thermal", "Explosive", "Kinetic"): - fit.ship.boostItemAttr("armor%sDamageResonance" % damageType, value) - - if id == 14: # Armor Burst: Rapid Repair: Repair Duration/Capacitor - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Remote Armor Repair Systems") or mod.item.requiresSkill("Repair Systems"), "capacitorNeed", value) - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Remote Armor Repair Systems") or mod.item.requiresSkill("Repair Systems"), "duration", value) - - if id == 15: # Armor Burst: Armor Reinforcement: Armor HP - fit.ship.boostItemAttr("armorHP", value, stackingPenalties=True) - - if id == 16: # Information Burst: Sensor Optimization: Scan Resolution - fit.ship.boostItemAttr("scanResolution", value, stackingPenalties=True) - - if id == 17: # Information Burst: Electronic Superiority: EWAR Range and Strength - groups = ("ECM", "Sensor Dampener", "Weapon Disruptor", "Target Painter") - fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, "maxRange", value, stackingPenalties=True) - fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, "falloffEffectiveness", value, stackingPenalties=True) - - for scanType in ("Magnetometric", "Radar", "Ladar", "Gravimetric"): - fit.modules.filteredItemBoost(lambda mod: mod.item.group.nam == "ECM", "scan%sStrengthBonus" % scanType, value, stackingPenalties=True) - - for attr in ("missileVelocityBonus", "explosionDelayBonus", "aoeVelocityBonus", "falloffBonus", - "maxRangeBonus", "aoeCloudSizeBonus", "trackingSpeedBonus"): - fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Weapon Disruptor", attr, value) - - for attr in ("maxTargetRangeBonus", "scanResolutionBonus"): - fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Sensor Dampener", attr, value) - - fit.modules.filteredItemBoost(lambda mod: mod.item.gorup.name == "Target Painter", "signatureRadiusBonus", value, stackingPenalties=True) - - if id == 18: # Information Burst: Electronic Hardening: Scan Strength - for scanType in ("Gravimetric", "Radar", "Ladar", "Magnetometric"): - fit.ship.boostItemAttr("scan%sStrength" % scanType, value, stackingPenalties=True) - - if id == 19: # Information Burst: Electronic Hardening: RSD/RWD Resistance - fit.ship.boostItemAttr("sensorDampenerResistance", value) - fit.ship.boostItemAttr("weaponDisruptionResistance", value) - - if id == 26: # Information Burst: Sensor Optimization: Targeting Range - fit.ship.boostItemAttr("maxTargetRange", value) - - if id == 20: # Skirmish Burst: Evasive Maneuvers: Signature Radius - fit.ship.boostItemAttr("signatureRadius", value, stackingPenalties=True) - - if id == 21: # Skirmish Burst: Interdiction Maneuvers: Tackle Range - groups = ("Stasis Web", "Warp Scrambler") - fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, "maxRange", value, stackingPenalties=True) - - if id == 22: # Skirmish Burst: Rapid Deployment: AB/MWD Speed Increase - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Afterburner") or mod.item.requiresSkill("High Speed Maneuvering"), "speedFactor", value, stackingPenalties=True) - - if id == 23: # Mining Burst: Mining Laser Field Enhancement: Mining/Survey Range - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining") or mod.item.requiresSkill("Ice Harvesting") or mod.item.requiresSkill("Gas Cloud Harvesting"), "maxRange", value, stackingPenalties=True) - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("CPU Management"), "surveyScanRange", value, stackingPenalties=True) - - if id == 24: # Mining Burst: Mining Laser Optimization: Mining Capacitor/Duration - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining") or mod.item.requiresSkill("Ice Harvesting") or mod.item.requiresSkill("Gas Cloud Harvesting"), "capacitorNeed", value, stackingPenalties=True) - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining") or mod.item.requiresSkill("Ice Harvesting") or mod.item.requiresSkill("Gas Cloud Harvesting"), "duration", value, stackingPenalties = True) - - if id == 25: # Mining Burst: Mining Equipment Preservation: Crystal Volatility - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining"), "crystalVolatilityChance", value, stackingPenalties=True) - - if id == 60: # Skirmish Burst: Evasive Maneuvers: Agility - fit.ship.boostItemAttr("agility", value, stackingPenalties=True) +type = "active" +def handler(fit, module, context): + print "Applying charge bonus/info" for x in xrange(1, 4): - if module.getModifiedChargeAttr("warfareBuff{}ID".format(x)): - value = module.getModifiedChargeAttr("warfareBuff{}Multiplier".format(x)) - id = module.getModifiedChargeAttr("warfareBuff{}ID".format(x)) - - if id: - if 'commandRun' not in context: - fit.addCommandBonus(id, value, module, kwargs['effect']) - elif kwargs['warfareBuffID'] is not None and kwargs['warfareBuffID'] == id: - runEffect(kwargs['warfareBuffID'], value) - + value = module.getModifiedChargeAttr("warfareBuff{}Multiplier".format(x)) + module.multiplyItemAttr("warfareBuff{}Value".format(x), value) \ No newline at end of file diff --git a/eos/effects/modulebonuswarfarelinkarmor.py b/eos/effects/modulebonuswarfarelinkarmor.py index 87bde1d62..0b1b354cc 100644 --- a/eos/effects/modulebonuswarfarelinkarmor.py +++ b/eos/effects/modulebonuswarfarelinkarmor.py @@ -1,11 +1,23 @@ -# moduleBonusWarfareLinkArmor -# -# Used by: -# Variations of module: Armor Command Burst I (2 of 2) -type = "active" -runTime = "early" -def handler(fit, module, context): +''' +Some documentation: +When the fit is calculated, we gather up all the gang effects and stick them onto the fit. We don't run the actual +effect yet, only give the fit details so that it can run the effect at a later time. We need to do this so that we can +only run the strongest effect. When we are done, one of the last things that we do with the fit is to loop through those +bonuses and actually run the effect. To do this, we have a special argument passed into the effect handler that tells it +which warfareBuffID to run (shouldn't need this right now, but better safe than sorry) +''' + +type = "active", "gang" +def handler(fit, module, context, **kwargs): + print "submitting command bonuses to registrar" + for x in xrange(1, 4): - value = module.getModifiedItemAttr("warfareBuff{}Value".format(x)) - module.multiplyChargeAttr("warfareBuff{}Multiplier".format(x), value) + 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']) + + diff --git a/eos/effects/modulebonuswarfarelinkinfo.py b/eos/effects/modulebonuswarfarelinkinfo.py index 9bfa9a6ca..e0f52df39 100644 --- a/eos/effects/modulebonuswarfarelinkinfo.py +++ b/eos/effects/modulebonuswarfarelinkinfo.py @@ -1,11 +1,12 @@ -# moduleBonusWarfareLinkInfo -# -# Used by: -# Variations of module: Information Command Burst I (2 of 2) -type = "active" -runTime = "early" -def handler(fit, module, context): +type = "active", "gang" +def handler(fit, module, context, **kwargs): + print "submitting command bonuses to registrar" + for x in xrange(1, 4): - value = module.getModifiedItemAttr("warfareBuff{}Value".format(x)) - module.multiplyChargeAttr("warfareBuff{}Multiplier".format(x), value) + 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']) \ No newline at end of file diff --git a/eos/effects/modulebonuswarfarelinkmining.py b/eos/effects/modulebonuswarfarelinkmining.py index 9b58290d2..e0f52df39 100644 --- a/eos/effects/modulebonuswarfarelinkmining.py +++ b/eos/effects/modulebonuswarfarelinkmining.py @@ -1,11 +1,12 @@ -# moduleBonusWarfareLinkMining -# -# Used by: -# Variations of module: Mining Foreman Burst I (2 of 2) -type = "active" -runTime = "late" -def handler(fit, module, context): +type = "active", "gang" +def handler(fit, module, context, **kwargs): + print "submitting command bonuses to registrar" + for x in xrange(1, 4): - value = module.getModifiedItemAttr("warfareBuff{}Value".format(x)) - module.multiplyChargeAttr("warfareBuff{}Multiplier".format(x), value) + 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']) \ No newline at end of file diff --git a/eos/effects/modulebonuswarfarelinkshield.py b/eos/effects/modulebonuswarfarelinkshield.py index 7bf5e5894..e0f52df39 100644 --- a/eos/effects/modulebonuswarfarelinkshield.py +++ b/eos/effects/modulebonuswarfarelinkshield.py @@ -1,11 +1,12 @@ -# moduleBonusWarfareLinkShield -# -# Used by: -# Variations of module: Shield Command Burst I (2 of 2) -type = "active" -runTime = "early" -def handler(fit, module, context): +type = "active", "gang" +def handler(fit, module, context, **kwargs): + print "submitting command bonuses to registrar" + for x in xrange(1, 4): - value = module.getModifiedItemAttr("warfareBuff{}Value".format(x)) - module.multiplyChargeAttr("warfareBuff{}Multiplier".format(x), value) + 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']) \ No newline at end of file diff --git a/eos/effects/modulebonuswarfarelinkskirmish.py b/eos/effects/modulebonuswarfarelinkskirmish.py index ca339df02..e0f52df39 100644 --- a/eos/effects/modulebonuswarfarelinkskirmish.py +++ b/eos/effects/modulebonuswarfarelinkskirmish.py @@ -1,11 +1,12 @@ -# moduleBonusWarfareLinkSkirmish -# -# Used by: -# Variations of module: Skirmish Command Burst I (2 of 2) -type = "active" -runTime = "early" -def handler(fit, module, context): +type = "active", "gang" +def handler(fit, module, context, **kwargs): + print "submitting command bonuses to registrar" + for x in xrange(1, 4): - value = module.getModifiedItemAttr("warfareBuff{}Value".format(x)) - module.multiplyChargeAttr("warfareBuff{}Multiplier".format(x), value) + 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']) \ No newline at end of file diff --git a/eos/saveddata/fit.py b/eos/saveddata/fit.py index 27cbece91..d143d4e59 100644 --- a/eos/saveddata/fit.py +++ b/eos/saveddata/fit.py @@ -466,12 +466,116 @@ class Fit(object): # This should always be a gang effect, otherwise it wouldn't be added to commandBonuses # @todo: Check this if effect.isType("gang"): - # todo: ensure that these are run with the module is active only - context += ("commandRun",) self.register(thing) - effect.handler(self, thing, context, warfareBuffID = warfareBuffID) - # if effect.isType("offline") or (effect.isType("passive") and thing.state >= State.ONLINE) or \ + if warfareBuffID == 10: # Shield Burst: Shield Harmonizing: Shield Resistance + for damageType in ("Em", "Explosive", "Thermal", "Kinetic"): + self.ship.boostItemAttr("shield%sDamageResonance" % damageType, value) + + if warfareBuffID == 11: # Shield Burst: Active Shielding: Repair Duration/Capacitor + self.modules.filteredItemBoost( + lambda mod: mod.item.requiresSkill("Shield Operation") or mod.item.requiresSkill( + "Shield Emission Systems"), "capacitorNeed", value) + self.modules.filteredItemBoost( + lambda mod: mod.item.requiresSkill("Shield Operation") or mod.item.requiresSkill( + "Shield Emission Systems"), "duration", value) + + if warfareBuffID == 12: # Shield Burst: Shield Extension: Shield HP + self.ship.boostItemAttr("shieldCapacity", value, stackingPenalties=True) + + if warfareBuffID == 13: # Armor Burst: Armor Energizing: Armor Resistance + for damageType in ("Em", "Thermal", "Explosive", "Kinetic"): + self.ship.boostItemAttr("armor%sDamageResonance" % damageType, value) + + if warfareBuffID == 14: # Armor Burst: Rapid Repair: Repair Duration/Capacitor + self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill( + "Remote Armor Repair Systems") or mod.item.requiresSkill("Repair Systems"), + "capacitorNeed", value) + self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill( + "Remote Armor Repair Systems") or mod.item.requiresSkill("Repair Systems"), "duration", + value) + + if warfareBuffID == 15: # Armor Burst: Armor Reinforcement: Armor HP + self.ship.boostItemAttr("armorHP", value, stackingPenalties=True) + + if warfareBuffID == 16: # Information Burst: Sensor Optimization: Scan Resolution + self.ship.boostItemAttr("scanResolution", value, stackingPenalties=True) + + if warfareBuffID == 17: # Information Burst: Electronic Superiority: EWAR Range and Strength + groups = ("ECM", "Sensor Dampener", "Weapon Disruptor", "Target Painter") + self.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, "maxRange", value, + stackingPenalties=True) + self.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, + "falloffEffectiveness", value, stackingPenalties=True) + + for scanType in ("Magnetometric", "Radar", "Ladar", "Gravimetric"): + self.modules.filteredItemBoost(lambda mod: mod.item.group.nam == "ECM", + "scan%sStrengthBonus" % scanType, value, + stackingPenalties=True) + + for attr in ( + "missileVelocityBonus", "explosionDelayBonus", "aoeVelocityBonus", "falloffBonus", + "maxRangeBonus", "aoeCloudSizeBonus", "trackingSpeedBonus"): + self.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Weapon Disruptor", + attr, value) + + for attr in ("maxTargetRangeBonus", "scanResolutionBonus"): + self.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Sensor Dampener", + attr, value) + + self.modules.filteredItemBoost(lambda mod: mod.item.gorup.name == "Target Painter", + "signatureRadiusBonus", value, stackingPenalties=True) + + if warfareBuffID == 18: # Information Burst: Electronic Hardening: Scan Strength + for scanType in ("Gravimetric", "Radar", "Ladar", "Magnetometric"): + self.ship.boostItemAttr("scan%sStrength" % scanType, value, stackingPenalties=True) + + if warfareBuffID == 19: # Information Burst: Electronic Hardening: RSD/RWD Resistance + self.ship.boostItemAttr("sensorDampenerResistance", value) + self.ship.boostItemAttr("weaponDisruptionResistance", value) + + if warfareBuffID == 26: # Information Burst: Sensor Optimization: Targeting Range + self.ship.boostItemAttr("maxTargetRange", value) + + if warfareBuffID == 20: # Skirmish Burst: Evasive Maneuvers: Signature Radius + self.ship.boostItemAttr("signatureRadius", value, stackingPenalties=True) + + if warfareBuffID == 21: # Skirmish Burst: Interdiction Maneuvers: Tackle Range + groups = ("Stasis Web", "Warp Scrambler") + self.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, "maxRange", value, + stackingPenalties=True) + + if warfareBuffID == 22: # Skirmish Burst: Rapid Deployment: AB/MWD Speed Increase + self.modules.filteredItemBoost( + lambda mod: mod.item.requiresSkill("Afterburner") or mod.item.requiresSkill( + "High Speed Maneuvering"), "speedFactor", value, stackingPenalties=True) + + if warfareBuffID == 23: # Mining Burst: Mining Laser Field Enhancement: Mining/Survey Range + self.modules.filteredItemBoost( + lambda mod: mod.item.requiresSkill("Mining") or mod.item.requiresSkill( + "Ice Harvesting") or mod.item.requiresSkill("Gas Cloud Harvesting"), "maxRange", + value, stackingPenalties=True) + self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("CPU Management"), + "surveyScanRange", value, stackingPenalties=True) + + if warfareBuffID == 24: # Mining Burst: Mining Laser Optimization: Mining Capacitor/Duration + self.modules.filteredItemBoost( + lambda mod: mod.item.requiresSkill("Mining") or mod.item.requiresSkill( + "Ice Harvesting") or mod.item.requiresSkill("Gas Cloud Harvesting"), + "capacitorNeed", value, stackingPenalties=True) + self.modules.filteredItemBoost( + lambda mod: mod.item.requiresSkill("Mining") or mod.item.requiresSkill( + "Ice Harvesting") or mod.item.requiresSkill("Gas Cloud Harvesting"), "duration", + value, stackingPenalties=True) + + if warfareBuffID == 25: # Mining Burst: Mining Equipment Preservation: Crystal Volatility + self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining"), + "crystalVolatilityChance", value, stackingPenalties=True) + + if warfareBuffID == 60: # Skirmish Burst: Evasive Maneuvers: Agility + self.ship.boostItemAttr("agility", value, stackingPenalties=True) + + # if effect.isType("offline") or (effect.isType("passive") and thing.state >= State.ONLINE) or \ # (effect.isType("active") and thing.state >= State.ACTIVE): # # Run effect, and get proper bonuses applied # try: From 3ac2fd870f6d5c9fa815c1d1e7d7f1b5b0e2feb7 Mon Sep 17 00:00:00 2001 From: blitzman Date: Fri, 16 Dec 2016 19:20:30 -0500 Subject: [PATCH 2/2] clean up --- eos/effects/modulebonuswarfarelinkmining.py | 2 - eos/saveddata/fit.py | 194 ++++++++++---------- 2 files changed, 96 insertions(+), 100 deletions(-) diff --git a/eos/effects/modulebonuswarfarelinkmining.py b/eos/effects/modulebonuswarfarelinkmining.py index e0f52df39..bf9790611 100644 --- a/eos/effects/modulebonuswarfarelinkmining.py +++ b/eos/effects/modulebonuswarfarelinkmining.py @@ -1,8 +1,6 @@ type = "active", "gang" def handler(fit, module, context, **kwargs): - print "submitting command bonuses to registrar" - for x in xrange(1, 4): if module.getModifiedChargeAttr("warfareBuff{}ID".format(x)): value = module.getModifiedItemAttr("warfareBuff{}Value".format(x)) diff --git a/eos/saveddata/fit.py b/eos/saveddata/fit.py index d143d4e59..272d1207a 100644 --- a/eos/saveddata/fit.py +++ b/eos/saveddata/fit.py @@ -461,119 +461,117 @@ class Fit(object): if runTime != effect_runTime: continue - context = ("commandRun", thing.__class__.__name__.lower()) - if isinstance(thing, Module): - # This should always be a gang effect, otherwise it wouldn't be added to commandBonuses - # @todo: Check this - if effect.isType("gang"): - self.register(thing) + # This should always be a gang effect, otherwise it wouldn't be added to commandBonuses + # @todo: Check this + if effect.isType("gang"): + self.register(thing) - if warfareBuffID == 10: # Shield Burst: Shield Harmonizing: Shield Resistance - for damageType in ("Em", "Explosive", "Thermal", "Kinetic"): - self.ship.boostItemAttr("shield%sDamageResonance" % damageType, value) + if warfareBuffID == 10: # Shield Burst: Shield Harmonizing: Shield Resistance + for damageType in ("Em", "Explosive", "Thermal", "Kinetic"): + self.ship.boostItemAttr("shield%sDamageResonance" % damageType, value) - if warfareBuffID == 11: # Shield Burst: Active Shielding: Repair Duration/Capacitor - self.modules.filteredItemBoost( - lambda mod: mod.item.requiresSkill("Shield Operation") or mod.item.requiresSkill( - "Shield Emission Systems"), "capacitorNeed", value) - self.modules.filteredItemBoost( - lambda mod: mod.item.requiresSkill("Shield Operation") or mod.item.requiresSkill( - "Shield Emission Systems"), "duration", value) + if warfareBuffID == 11: # Shield Burst: Active Shielding: Repair Duration/Capacitor + self.modules.filteredItemBoost( + lambda mod: mod.item.requiresSkill("Shield Operation") or mod.item.requiresSkill( + "Shield Emission Systems"), "capacitorNeed", value) + self.modules.filteredItemBoost( + lambda mod: mod.item.requiresSkill("Shield Operation") or mod.item.requiresSkill( + "Shield Emission Systems"), "duration", value) - if warfareBuffID == 12: # Shield Burst: Shield Extension: Shield HP - self.ship.boostItemAttr("shieldCapacity", value, stackingPenalties=True) + if warfareBuffID == 12: # Shield Burst: Shield Extension: Shield HP + self.ship.boostItemAttr("shieldCapacity", value, stackingPenalties=True) - if warfareBuffID == 13: # Armor Burst: Armor Energizing: Armor Resistance - for damageType in ("Em", "Thermal", "Explosive", "Kinetic"): - self.ship.boostItemAttr("armor%sDamageResonance" % damageType, value) + if warfareBuffID == 13: # Armor Burst: Armor Energizing: Armor Resistance + for damageType in ("Em", "Thermal", "Explosive", "Kinetic"): + self.ship.boostItemAttr("armor%sDamageResonance" % damageType, value) - if warfareBuffID == 14: # Armor Burst: Rapid Repair: Repair Duration/Capacitor - self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill( - "Remote Armor Repair Systems") or mod.item.requiresSkill("Repair Systems"), - "capacitorNeed", value) - self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill( - "Remote Armor Repair Systems") or mod.item.requiresSkill("Repair Systems"), "duration", - value) + if warfareBuffID == 14: # Armor Burst: Rapid Repair: Repair Duration/Capacitor + self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill( + "Remote Armor Repair Systems") or mod.item.requiresSkill("Repair Systems"), + "capacitorNeed", value) + self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill( + "Remote Armor Repair Systems") or mod.item.requiresSkill("Repair Systems"), "duration", + value) - if warfareBuffID == 15: # Armor Burst: Armor Reinforcement: Armor HP - self.ship.boostItemAttr("armorHP", value, stackingPenalties=True) + if warfareBuffID == 15: # Armor Burst: Armor Reinforcement: Armor HP + self.ship.boostItemAttr("armorHP", value, stackingPenalties=True) - if warfareBuffID == 16: # Information Burst: Sensor Optimization: Scan Resolution - self.ship.boostItemAttr("scanResolution", value, stackingPenalties=True) + if warfareBuffID == 16: # Information Burst: Sensor Optimization: Scan Resolution + self.ship.boostItemAttr("scanResolution", value, stackingPenalties=True) - if warfareBuffID == 17: # Information Burst: Electronic Superiority: EWAR Range and Strength - groups = ("ECM", "Sensor Dampener", "Weapon Disruptor", "Target Painter") - self.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, "maxRange", value, - stackingPenalties=True) - self.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, - "falloffEffectiveness", value, stackingPenalties=True) + if warfareBuffID == 17: # Information Burst: Electronic Superiority: EWAR Range and Strength + groups = ("ECM", "Sensor Dampener", "Weapon Disruptor", "Target Painter") + self.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, "maxRange", value, + stackingPenalties=True) + self.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, + "falloffEffectiveness", value, stackingPenalties=True) - for scanType in ("Magnetometric", "Radar", "Ladar", "Gravimetric"): - self.modules.filteredItemBoost(lambda mod: mod.item.group.nam == "ECM", - "scan%sStrengthBonus" % scanType, value, - stackingPenalties=True) - - for attr in ( - "missileVelocityBonus", "explosionDelayBonus", "aoeVelocityBonus", "falloffBonus", - "maxRangeBonus", "aoeCloudSizeBonus", "trackingSpeedBonus"): - self.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Weapon Disruptor", - attr, value) - - for attr in ("maxTargetRangeBonus", "scanResolutionBonus"): - self.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Sensor Dampener", - attr, value) - - self.modules.filteredItemBoost(lambda mod: mod.item.gorup.name == "Target Painter", - "signatureRadiusBonus", value, stackingPenalties=True) - - if warfareBuffID == 18: # Information Burst: Electronic Hardening: Scan Strength - for scanType in ("Gravimetric", "Radar", "Ladar", "Magnetometric"): - self.ship.boostItemAttr("scan%sStrength" % scanType, value, stackingPenalties=True) - - if warfareBuffID == 19: # Information Burst: Electronic Hardening: RSD/RWD Resistance - self.ship.boostItemAttr("sensorDampenerResistance", value) - self.ship.boostItemAttr("weaponDisruptionResistance", value) - - if warfareBuffID == 26: # Information Burst: Sensor Optimization: Targeting Range - self.ship.boostItemAttr("maxTargetRange", value) - - if warfareBuffID == 20: # Skirmish Burst: Evasive Maneuvers: Signature Radius - self.ship.boostItemAttr("signatureRadius", value, stackingPenalties=True) - - if warfareBuffID == 21: # Skirmish Burst: Interdiction Maneuvers: Tackle Range - groups = ("Stasis Web", "Warp Scrambler") - self.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, "maxRange", value, + for scanType in ("Magnetometric", "Radar", "Ladar", "Gravimetric"): + self.modules.filteredItemBoost(lambda mod: mod.item.group.nam == "ECM", + "scan%sStrengthBonus" % scanType, value, stackingPenalties=True) - if warfareBuffID == 22: # Skirmish Burst: Rapid Deployment: AB/MWD Speed Increase - self.modules.filteredItemBoost( - lambda mod: mod.item.requiresSkill("Afterburner") or mod.item.requiresSkill( - "High Speed Maneuvering"), "speedFactor", value, stackingPenalties=True) + for attr in ( + "missileVelocityBonus", "explosionDelayBonus", "aoeVelocityBonus", "falloffBonus", + "maxRangeBonus", "aoeCloudSizeBonus", "trackingSpeedBonus"): + self.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Weapon Disruptor", + attr, value) - if warfareBuffID == 23: # Mining Burst: Mining Laser Field Enhancement: Mining/Survey Range - self.modules.filteredItemBoost( - lambda mod: mod.item.requiresSkill("Mining") or mod.item.requiresSkill( - "Ice Harvesting") or mod.item.requiresSkill("Gas Cloud Harvesting"), "maxRange", - value, stackingPenalties=True) - self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("CPU Management"), - "surveyScanRange", value, stackingPenalties=True) + for attr in ("maxTargetRangeBonus", "scanResolutionBonus"): + self.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Sensor Dampener", + attr, value) - if warfareBuffID == 24: # Mining Burst: Mining Laser Optimization: Mining Capacitor/Duration - self.modules.filteredItemBoost( - lambda mod: mod.item.requiresSkill("Mining") or mod.item.requiresSkill( - "Ice Harvesting") or mod.item.requiresSkill("Gas Cloud Harvesting"), - "capacitorNeed", value, stackingPenalties=True) - self.modules.filteredItemBoost( - lambda mod: mod.item.requiresSkill("Mining") or mod.item.requiresSkill( - "Ice Harvesting") or mod.item.requiresSkill("Gas Cloud Harvesting"), "duration", - value, stackingPenalties=True) + self.modules.filteredItemBoost(lambda mod: mod.item.gorup.name == "Target Painter", + "signatureRadiusBonus", value, stackingPenalties=True) - if warfareBuffID == 25: # Mining Burst: Mining Equipment Preservation: Crystal Volatility - self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining"), - "crystalVolatilityChance", value, stackingPenalties=True) + if warfareBuffID == 18: # Information Burst: Electronic Hardening: Scan Strength + for scanType in ("Gravimetric", "Radar", "Ladar", "Magnetometric"): + self.ship.boostItemAttr("scan%sStrength" % scanType, value, stackingPenalties=True) - if warfareBuffID == 60: # Skirmish Burst: Evasive Maneuvers: Agility - self.ship.boostItemAttr("agility", value, stackingPenalties=True) + if warfareBuffID == 19: # Information Burst: Electronic Hardening: RSD/RWD Resistance + self.ship.boostItemAttr("sensorDampenerResistance", value) + self.ship.boostItemAttr("weaponDisruptionResistance", value) + + if warfareBuffID == 26: # Information Burst: Sensor Optimization: Targeting Range + self.ship.boostItemAttr("maxTargetRange", value) + + if warfareBuffID == 20: # Skirmish Burst: Evasive Maneuvers: Signature Radius + self.ship.boostItemAttr("signatureRadius", value, stackingPenalties=True) + + if warfareBuffID == 21: # Skirmish Burst: Interdiction Maneuvers: Tackle Range + groups = ("Stasis Web", "Warp Scrambler") + self.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, "maxRange", value, + stackingPenalties=True) + + if warfareBuffID == 22: # Skirmish Burst: Rapid Deployment: AB/MWD Speed Increase + self.modules.filteredItemBoost( + lambda mod: mod.item.requiresSkill("Afterburner") or mod.item.requiresSkill( + "High Speed Maneuvering"), "speedFactor", value, stackingPenalties=True) + + if warfareBuffID == 23: # Mining Burst: Mining Laser Field Enhancement: Mining/Survey Range + self.modules.filteredItemBoost( + lambda mod: mod.item.requiresSkill("Mining") or mod.item.requiresSkill( + "Ice Harvesting") or mod.item.requiresSkill("Gas Cloud Harvesting"), "maxRange", + value, stackingPenalties=True) + self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("CPU Management"), + "surveyScanRange", value, stackingPenalties=True) + + if warfareBuffID == 24: # Mining Burst: Mining Laser Optimization: Mining Capacitor/Duration + self.modules.filteredItemBoost( + lambda mod: mod.item.requiresSkill("Mining") or mod.item.requiresSkill( + "Ice Harvesting") or mod.item.requiresSkill("Gas Cloud Harvesting"), + "capacitorNeed", value, stackingPenalties=True) + self.modules.filteredItemBoost( + lambda mod: mod.item.requiresSkill("Mining") or mod.item.requiresSkill( + "Ice Harvesting") or mod.item.requiresSkill("Gas Cloud Harvesting"), "duration", + value, stackingPenalties=True) + + if warfareBuffID == 25: # Mining Burst: Mining Equipment Preservation: Crystal Volatility + self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining"), + "crystalVolatilityChance", value, stackingPenalties=True) + + if warfareBuffID == 60: # Skirmish Burst: Evasive Maneuvers: Agility + self.ship.boostItemAttr("agility", value, stackingPenalties=True) # if effect.isType("offline") or (effect.isType("passive") and thing.state >= State.ONLINE) or \ # (effect.isType("active") and thing.state >= State.ACTIVE):