From 5467a58b04664f9c0b2be4b0b2373ad87701eea6 Mon Sep 17 00:00:00 2001 From: "Mr. Nukealizer" Date: Fri, 30 Sep 2016 20:08:46 -0700 Subject: [PATCH] Fixed a few fighter/carrier bugs: * Omnidirectional Tracking Link overheat applies to explosion radius/velocity bonuses. * Networked Sensor Array affects fighters' sensor strengths. * Long range heavy fighters no longer appear to require Bomb Deployment. * Carriers and supercarriers are no longer capped at 300km lock range. --- eos/effects/modulebonusnetworkedsensorarray.py | 7 ++++++- .../modulebonusomnidirectionaltrackinglinkoverload.py | 9 ++++++--- eos/saveddata/ship.py | 5 ++++- service/character.py | 2 ++ 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/eos/effects/modulebonusnetworkedsensorarray.py b/eos/effects/modulebonusnetworkedsensorarray.py index 53502bed7..2728a7856 100644 --- a/eos/effects/modulebonusnetworkedsensorarray.py +++ b/eos/effects/modulebonusnetworkedsensorarray.py @@ -4,13 +4,18 @@ # Module: Networked Sensor Array type = "active" def handler(fit, src, context): - fit.ship.multiplyItemAttr("maxTargetRange", src.getModifiedItemAttr("maxTargetRangeMultiplier"), stackingPenalties=True, penaltyGroup="postMul") fit.ship.boostItemAttr("scanResolution", src.getModifiedItemAttr("scanResolutionBonus"), stackingPenalties=True) for scanType in ('Magnetometric', 'Ladar', 'Gravimetric', 'Radar'): fit.ship.boostItemAttr("scan{}Strength".format(scanType), src.getModifiedItemAttr("scan{}StrengthPercent".format(scanType)), stackingPenalties=True) + + for fighter in fit.fighters: + for scanType in ('Magnetometric', 'Ladar', 'Gravimetric', 'Radar'): + fighter.boostItemAttr("scan{}Strength".format(scanType), + src.getModifiedItemAttr("scan{}StrengthPercent".format(scanType)), + stackingPenalties=True) # EW cap need increase groups = [ diff --git a/eos/effects/modulebonusomnidirectionaltrackinglinkoverload.py b/eos/effects/modulebonusomnidirectionaltrackinglinkoverload.py index 40cef1df4..4605d70c2 100644 --- a/eos/effects/modulebonusomnidirectionaltrackinglinkoverload.py +++ b/eos/effects/modulebonusomnidirectionaltrackinglinkoverload.py @@ -4,6 +4,9 @@ # Modules from group: Drone Tracking Modules (10 of 10) type = "overheat" def handler(fit, module, context): - module.boostItemAttr("maxRangeBonus", module.getModifiedItemAttr("overloadTrackingModuleStrengthBonus")) - module.boostItemAttr("falloffBonus", module.getModifiedItemAttr("overloadTrackingModuleStrengthBonus")) - module.boostItemAttr("trackingSpeedBonus", module.getModifiedItemAttr("overloadTrackingModuleStrengthBonus")) + overloadBonus = module.getModifiedItemAttr("overloadTrackingModuleStrengthBonus") + module.boostItemAttr("maxRangeBonus", overloadBonus) + module.boostItemAttr("falloffBonus", overloadBonus) + module.boostItemAttr("trackingSpeedBonus", overloadBonus) + module.boostItemAttr("aoeCloudSizeBonus", overloadBonus) + module.boostItemAttr("aoeVelocityBonus", overloadBonus) \ No newline at end of file diff --git a/eos/saveddata/ship.py b/eos/saveddata/ship.py index 3a78fd122..2b04a1cff 100644 --- a/eos/saveddata/ship.py +++ b/eos/saveddata/ship.py @@ -17,7 +17,7 @@ # along with eos. If not, see . #=============================================================================== -from eos.modifiedAttributeDict import ModifiedAttributeDict, ItemAttrShortcut +from eos.modifiedAttributeDict import ModifiedAttributeDict, ItemAttrShortcut, cappingAttrKeyCache from eos.effectHandlerHelpers import HandledItem from eos.saveddata.mode import Mode import eos.db @@ -52,6 +52,9 @@ class Ship(ItemAttrShortcut, HandledItem): self.__itemModifiedAttributes.original = dict(self.item.attributes) self.__itemModifiedAttributes.original.update(self.EXTRA_ATTRIBUTES) self.__itemModifiedAttributes.overrides = self.item.overrides + + if "maximumRangeCap" in self.__itemModifiedAttributes.original: + cappingAttrKeyCache["maxTargetRange"] = "maximumRangeCap" # there are occasions when we need to get to the parent fit of the ship, such as when we need the character # skills for ship-role gang boosts (Titans) diff --git a/service/character.py b/service/character.py index 92e2c2e57..375118ba5 100644 --- a/service/character.py +++ b/service/character.py @@ -369,6 +369,8 @@ class Character(object): subThing = getattr(thing, attr, None) subReqs = {} if subThing is not None: + if isinstance(thing, eos.types.Fighter) and attr == "charge": + continue self._checkRequirements(fit, fit.character, subThing, subReqs) if subReqs: reqs[subThing] = subReqs