diff --git a/config.py b/config.py index 0d051fc05..93ca58d52 100644 --- a/config.py +++ b/config.py @@ -19,8 +19,8 @@ debug = False saveInRoot = False # Version data -version = "1.33.0" -tag = "Stable" +version = "1.34.0" +tag = "git" expansionName = "Lifeblood" expansionVersion = "1.0" evemonMinVersion = "4081" diff --git a/eos/effects/missileskillwarheadupgradesemdamagebonus.py b/eos/effects/missileskillwarheadupgradesemdamagebonus.py index 854f4d906..360b4d070 100644 --- a/eos/effects/missileskillwarheadupgradesemdamagebonus.py +++ b/eos/effects/missileskillwarheadupgradesemdamagebonus.py @@ -6,6 +6,7 @@ type = "passive" -def handler(fit, skill, context): +def handler(fit, src, context): + mod = src.level if "skill" in context else 1 fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"), - "emDamage", skill.getModifiedItemAttr("damageMultiplierBonus") * skill.level) + "emDamage", src.getModifiedItemAttr("damageMultiplierBonus") * mod) diff --git a/eos/effects/missileskillwarheadupgradesexplosivedamagebonus.py b/eos/effects/missileskillwarheadupgradesexplosivedamagebonus.py index bf03efac6..213c334eb 100644 --- a/eos/effects/missileskillwarheadupgradesexplosivedamagebonus.py +++ b/eos/effects/missileskillwarheadupgradesexplosivedamagebonus.py @@ -6,6 +6,7 @@ type = "passive" -def handler(fit, skill, context): +def handler(fit, src, context): + mod = src.level if "skill" in context else 1 fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"), - "explosiveDamage", skill.getModifiedItemAttr("damageMultiplierBonus") * skill.level) + "explosiveDamage", src.getModifiedItemAttr("damageMultiplierBonus") * mod) diff --git a/eos/effects/missileskillwarheadupgradeskineticdamagebonus.py b/eos/effects/missileskillwarheadupgradeskineticdamagebonus.py index b3fd502e6..5496877de 100644 --- a/eos/effects/missileskillwarheadupgradeskineticdamagebonus.py +++ b/eos/effects/missileskillwarheadupgradeskineticdamagebonus.py @@ -6,6 +6,7 @@ type = "passive" -def handler(fit, skill, context): +def handler(fit, src, context): + mod = src.level if "skill" in context else 1 fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"), - "kineticDamage", skill.getModifiedItemAttr("damageMultiplierBonus") * skill.level) + "kineticDamage", src.getModifiedItemAttr("damageMultiplierBonus") * mod) diff --git a/eos/effects/missileskillwarheadupgradesthermaldamagebonus.py b/eos/effects/missileskillwarheadupgradesthermaldamagebonus.py index cc2e7f70e..c42b27a90 100644 --- a/eos/effects/missileskillwarheadupgradesthermaldamagebonus.py +++ b/eos/effects/missileskillwarheadupgradesthermaldamagebonus.py @@ -6,6 +6,7 @@ type = "passive" -def handler(fit, skill, context): +def handler(fit, src, context): + mod = src.level if "skill" in context else 1 fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"), - "thermalDamage", skill.getModifiedItemAttr("damageMultiplierBonus") * skill.level) + "thermalDamage", src.getModifiedItemAttr("damageMultiplierBonus") * mod) diff --git a/eos/effects/shipbonusdreadnoughtg1kinthermdamagebonus.py b/eos/effects/shipbonusdreadnoughtg1kinthermdamagebonus.py index 1aa835fdc..e79593c44 100644 --- a/eos/effects/shipbonusdreadnoughtg1kinthermdamagebonus.py +++ b/eos/effects/shipbonusdreadnoughtg1kinthermdamagebonus.py @@ -6,15 +6,15 @@ type = "passive" def handler(fit, src, context): - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Torpedoes"), "kineticDamage", + fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("Torpedoes"), "kineticDamage", src.getModifiedItemAttr("shipBonusDreadnoughtG1"), skill="Gallente Dreadnought") - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Torpedoes"), "thermalDamage", + fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("Torpedoes"), "thermalDamage", src.getModifiedItemAttr("shipBonusDreadnoughtG1"), skill="Gallente Dreadnought") - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("XL Torpedoes"), "kineticDamage", + fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Torpedoes"), "kineticDamage", src.getModifiedItemAttr("shipBonusDreadnoughtG1"), skill="Gallente Dreadnought") - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("XL Torpedoes"), "thermalDamage", + fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Torpedoes"), "thermalDamage", src.getModifiedItemAttr("shipBonusDreadnoughtG1"), skill="Gallente Dreadnought") - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("XL Cruise Missiles"), "thermalDamage", + fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Cruise Missiles"), "thermalDamage", src.getModifiedItemAttr("shipBonusDreadnoughtG1"), skill="Gallente Dreadnought") - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("XL Cruise Missiles"), "kineticDamage", + fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Cruise Missiles"), "kineticDamage", src.getModifiedItemAttr("shipBonusDreadnoughtG1"), skill="Gallente Dreadnought") diff --git a/eos/effects/shipbonusforceauxiliaryc1remoteboostandcapamount.py b/eos/effects/shipbonusforceauxiliaryc1remoteboostandcapamount.py index 144ef28dc..f4d1939eb 100644 --- a/eos/effects/shipbonusforceauxiliaryc1remoteboostandcapamount.py +++ b/eos/effects/shipbonusforceauxiliaryc1remoteboostandcapamount.py @@ -7,6 +7,9 @@ type = "passive" def handler(fit, src, context): + if src.getModifiedItemAttr("shipBonusForceAuxiliaryC1") is None: + return # See GH Issue 1321 + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capacitor Emission Systems") or mod.item.requiresSkill("Capital Capacitor Emission Systems"), "powerTransferAmount", src.getModifiedItemAttr("shipBonusForceAuxiliaryC1"), diff --git a/eos/effects/shipbonustitang1kinthermdamagebonus.py b/eos/effects/shipbonustitang1kinthermdamagebonus.py index e2cda411d..7e8745859 100644 --- a/eos/effects/shipbonustitang1kinthermdamagebonus.py +++ b/eos/effects/shipbonustitang1kinthermdamagebonus.py @@ -6,15 +6,15 @@ type = "passive" def handler(fit, src, context): - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Torpedoes"), "thermalDamage", + fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("Torpedoes"), "thermalDamage", src.getModifiedItemAttr("shipBonusTitanG1"), skill="Gallente Titan") - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Torpedoes"), "kineticDamage", + fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("Torpedoes"), "kineticDamage", src.getModifiedItemAttr("shipBonusTitanG1"), skill="Gallente Titan") - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("XL Torpedoes"), "thermalDamage", + fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Torpedoes"), "thermalDamage", src.getModifiedItemAttr("shipBonusTitanG1"), skill="Gallente Titan") - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("XL Torpedoes"), "kineticDamage", + fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Torpedoes"), "kineticDamage", src.getModifiedItemAttr("shipBonusTitanG1"), skill="Gallente Titan") - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("XL Cruise Missiles"), "thermalDamage", + fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Cruise Missiles"), "thermalDamage", src.getModifiedItemAttr("shipBonusTitanG1"), skill="Gallente Titan") - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("XL Cruise Missiles"), "kineticDamage", + fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Cruise Missiles"), "kineticDamage", src.getModifiedItemAttr("shipBonusTitanG1"), skill="Gallente Titan") diff --git a/eos/effects/shipbonustitang2alldamagebonus.py b/eos/effects/shipbonustitang2alldamagebonus.py index f8e475305..42525d080 100644 --- a/eos/effects/shipbonustitang2alldamagebonus.py +++ b/eos/effects/shipbonustitang2alldamagebonus.py @@ -6,21 +6,21 @@ type = "passive" def handler(fit, src, context): - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Torpedoes"), "thermalDamage", + fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("Torpedoes"), "thermalDamage", src.getModifiedItemAttr("shipBonusTitanG2"), skill="Gallente Titan") - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Torpedoes"), "explosiveDamage", + fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("Torpedoes"), "explosiveDamage", src.getModifiedItemAttr("shipBonusTitanG2"), skill="Gallente Titan") - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Torpedoes"), "emDamage", + fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("Torpedoes"), "emDamage", src.getModifiedItemAttr("shipBonusTitanG2"), skill="Gallente Titan") - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("XL Torpedoes"), "thermalDamage", + fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Torpedoes"), "thermalDamage", src.getModifiedItemAttr("shipBonusTitanG2"), skill="Gallente Titan") - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("XL Torpedoes"), "emDamage", + fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Torpedoes"), "emDamage", src.getModifiedItemAttr("shipBonusTitanG2"), skill="Gallente Titan") - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("XL Torpedoes"), "explosiveDamage", + fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Torpedoes"), "explosiveDamage", src.getModifiedItemAttr("shipBonusTitanG2"), skill="Gallente Titan") - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("XL Cruise Missiles"), "emDamage", + fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Cruise Missiles"), "emDamage", src.getModifiedItemAttr("shipBonusTitanG2"), skill="Gallente Titan") - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("XL Cruise Missiles"), "thermalDamage", + fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Cruise Missiles"), "thermalDamage", src.getModifiedItemAttr("shipBonusTitanG2"), skill="Gallente Titan") - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("XL Cruise Missiles"), "explosiveDamage", + fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("XL Cruise Missiles"), "explosiveDamage", src.getModifiedItemAttr("shipBonusTitanG2"), skill="Gallente Titan") diff --git a/eos/effects/shipmoduleremotecapacitortransmitter.py b/eos/effects/shipmoduleremotecapacitortransmitter.py index 5dd535ed2..9ea44beb6 100644 --- a/eos/effects/shipmoduleremotecapacitortransmitter.py +++ b/eos/effects/shipmoduleremotecapacitortransmitter.py @@ -2,11 +2,16 @@ # # Used by: # Modules from group: Remote Capacitor Transmitter (41 of 41) +from eos.modifiedAttributeDict import ModifiedAttributeDict type = "projected", "active" -def handler(fit, src, context): +def handler(fit, src, context, **kwargs): if "projected" in context: amount = src.getModifiedItemAttr("powerTransferAmount") duration = src.getModifiedItemAttr("duration") + + if 'effect' in kwargs: + amount *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) + fit.addDrain(src, duration, -amount, 0) diff --git a/eos/saveddata/fit.py b/eos/saveddata/fit.py index e5ab1970c..6397e4047 100644 --- a/eos/saveddata/fit.py +++ b/eos/saveddata/fit.py @@ -1193,8 +1193,7 @@ class Fit(object): if energyNeutralizerSignatureResolution: capNeed = capNeed * min(1, signatureRadius / energyNeutralizerSignatureResolution) - resistance = self.ship.getModifiedItemAttr("energyWarfareResistance") or 1 if capNeed > 0 else 1 - self.__extraDrains.append((cycleTime, capNeed * resistance, clipSize)) + self.__extraDrains.append((cycleTime, capNeed, clipSize)) def removeDrain(self, i): del self.__extraDrains[i] diff --git a/gui/builtinAdditionPanes/commandView.py b/gui/builtinAdditionPanes/commandView.py index f103ced05..e903f0ac3 100644 --- a/gui/builtinAdditionPanes/commandView.py +++ b/gui/builtinAdditionPanes/commandView.py @@ -168,6 +168,9 @@ class CommandView(d.Display): self.update(stuff) def get(self, row): + if row == -1: + return None + numFits = len(self.fits) if numFits == 0: @@ -193,23 +196,21 @@ class CommandView(d.Display): wx.CallAfter(self.spawnMenu) def spawnMenu(self): + fitID = self.mainFrame.getActiveFit() + if fitID is None: + return + sel = self.GetFirstSelected() - menu = None - if sel != -1: - item = self.get(sel) - if item is None: - return + context = () + item = self.get(sel) + + if item is not None: fitSrcContext = "commandFit" fitItemContext = item.name context = ((fitSrcContext, fitItemContext),) - context += ("commandView",), - menu = ContextMenu.getMenu((item,), *context) - elif sel == -1: - fitID = self.mainFrame.getActiveFit() - if fitID is None: - return - context = (("commandView",),) - menu = ContextMenu.getMenu([], *context) + + context += (("commandView",),) + menu = ContextMenu.getMenu((item,) if item is not None else [], *context) if menu is not None: self.PopupMenu(menu) diff --git a/gui/builtinAdditionPanes/projectedView.py b/gui/builtinAdditionPanes/projectedView.py index 15b661234..88de48411 100644 --- a/gui/builtinAdditionPanes/projectedView.py +++ b/gui/builtinAdditionPanes/projectedView.py @@ -223,6 +223,9 @@ class ProjectedView(d.Display): self.update(stuff) def get(self, row): + if row == -1: + return None + numMods = len(self.modules) numDrones = len(self.drones) numFighters = len(self.fighters) @@ -260,13 +263,17 @@ class ProjectedView(d.Display): wx.CallAfter(self.spawnMenu) def spawnMenu(self): + fitID = self.mainFrame.getActiveFit() + if fitID is None: + return + sel = self.GetFirstSelected() - menu = None - if sel != -1: - item = self.get(sel) - if item is None: - return + context = () + item = self.get(sel) + + if item is not None: sMkt = Market.getInstance() + if isinstance(item, es_Drone): srcContext = "projectedDrone" itemContext = sMkt.getCategoryByItem(item.item).name @@ -290,14 +297,10 @@ class ProjectedView(d.Display): fitSrcContext = "projectedFit" fitItemContext = item.name context = ((fitSrcContext, fitItemContext),) - context += ("projected",), - menu = ContextMenu.getMenu((item,), *context) - elif sel == -1: - fitID = self.mainFrame.getActiveFit() - if fitID is None: - return - context = (("projected",),) - menu = ContextMenu.getMenu([], *context) + + context += (("projected",),) + menu = ContextMenu.getMenu((item,) if item is not None else [], *context) + if menu is not None: self.PopupMenu(menu) diff --git a/gui/builtinViewColumns/misc.py b/gui/builtinViewColumns/misc.py index 88122903f..cb8f8480f 100644 --- a/gui/builtinViewColumns/misc.py +++ b/gui/builtinViewColumns/misc.py @@ -543,25 +543,7 @@ class Miscellanea(ViewColumn): return text, tooltip elif stuff.charge is not None: chargeGroup = stuff.charge.group.name - if chargeGroup in ( - "Rocket", - "Advanced Rocket", - "Light Missile", - "Advanced Light Missile", - "Auto-Targeting Light Missile", - "Heavy Assault Missile", - "Advanced Heavy Assault Missile", - "Heavy Missile", - "Advanced Heavy Missile", - "Auto-Targeting Heavy Missile", - "Torpedo", - "Advanced Torpedo", - "Cruise Missile", - "Advanced Cruise Missile", - "Auto-Targeting Cruise Missile", - "XL Torpedo", - "XL Cruise Missile" - ): + if chargeGroup.endswith("Rocket") or chargeGroup.endswith("Missile") or chargeGroup.endswith("Torpedo"): cloudSize = stuff.getModifiedChargeAttr("aoeCloudSize") aoeVelocity = stuff.getModifiedChargeAttr("aoeVelocity") if not cloudSize or not aoeVelocity: diff --git a/gui/shipBrowser.py b/gui/shipBrowser.py index 5eea8029b..935797718 100644 --- a/gui/shipBrowser.py +++ b/gui/shipBrowser.py @@ -378,6 +378,10 @@ class ShipBrowser(wx.Panel): for ID, name, shipID, shipName, booster, timestamp, notes in fitList: ship = sMkt.getItem(shipID) + + if not sMkt.getPublicityByItem(ship): + continue + shipTrait = ship.traits.traitText if (ship.traits is not None) else "" # empty string if no traits self.lpane.AddWidget(FitItem(self.lpane, ID, (shipName, shipTrait, name, booster, timestamp, notes), shipID)) diff --git a/service/market.py b/service/market.py index 0e8205b98..962094b4a 100644 --- a/service/market.py +++ b/service/market.py @@ -203,6 +203,8 @@ class Market(object): "Fiend" : self.les_grp, # AT13 prize "Caedes" : self.les_grp, # AT14 prize "Rabisu" : self.les_grp, # AT14 prize + "Victor" : self.les_grp, # AT prize + "Virtuoso" : self.les_grp, # AT prize } self.ITEMS_FORCEGROUP_R = self.__makeRevDict(self.ITEMS_FORCEGROUP) @@ -226,6 +228,8 @@ class Market(object): "Guristas Shuttle" : False, "Mobile Decoy Unit" : False, # Seems to be left over test mod for deployables "Tournament Micro Jump Unit" : False, # Normally seen only on tournament arenas + "Victor": False, # See GH Issue 1323 + "Virtuoso": False, # See GH Issue 1323 } # do not publish ships that we convert diff --git a/tests/test_smoketests/test_rifter.py b/tests/test_smoketests/test_rifter.py deleted file mode 100644 index b6bb63ca5..000000000 --- a/tests/test_smoketests/test_rifter.py +++ /dev/null @@ -1,235 +0,0 @@ -# Add root folder to python paths -# This must be done on every test in order to pass in Travis -import os -import sys -script_dir = os.path.dirname(os.path.abspath(__file__)) -sys.path.append(os.path.realpath(os.path.join(script_dir, '..', '..'))) - -# noinspection PyPackageRequirements -from _development.helpers import DBInMemory as DB, Gamedata, Saveddata -from _development.helpers_fits import RifterFit - - -# noinspection PyShadowingNames -def test_rifter_empty_char0(DB, Saveddata, RifterFit): - """ - We test an empty ship because if we use this as a base for testing our V skills, - and CCP ever fucks with the base states, all our derived stats will be wrong. - """ - char0 = Saveddata['Character'].getAll0() - - RifterFit.character = char0 - RifterFit.calculateModifiedAttributes() - - assert RifterFit.ship.getModifiedItemAttr("agility") == 3.2 - assert RifterFit.ship.getModifiedItemAttr("armorEmDamageResonance") == 0.4 - assert RifterFit.ship.getModifiedItemAttr("armorExplosiveDamageResonance") == 0.9 - assert RifterFit.ship.getModifiedItemAttr("armorHP") == 450.0 - assert RifterFit.ship.getModifiedItemAttr("armorKineticDamageResonance") == 0.75 - assert RifterFit.ship.getModifiedItemAttr("armorThermalDamageResonance") == 0.65 - assert RifterFit.ship.getModifiedItemAttr("armorUniformity") == 0.75 - assert RifterFit.ship.getModifiedItemAttr("baseWarpSpeed") == 1.0 - assert RifterFit.ship.getModifiedItemAttr("capacitorCapacity") == 250.0 - assert RifterFit.ship.getModifiedItemAttr("capacity") == 140.0 - assert RifterFit.ship.getModifiedItemAttr("cpuLoad") == 0.0 - assert RifterFit.ship.getModifiedItemAttr("cpuOutput") == 130.0 - assert RifterFit.ship.getModifiedItemAttr("damage") == 0.0 - assert RifterFit.ship.getModifiedItemAttr("droneBandwidth") == 0.0 - assert RifterFit.ship.getModifiedItemAttr("droneCapacity") == 0.0 - assert RifterFit.ship.getModifiedItemAttr("emDamageResonance") == 0.67 - assert RifterFit.ship.getModifiedItemAttr("explosiveDamageResonance") == 0.67 - assert RifterFit.ship.getModifiedItemAttr("fwLpKill") == 25.0 - assert RifterFit.ship.getModifiedItemAttr("gfxBoosterID") == 397.0 - assert RifterFit.ship.getModifiedItemAttr("heatAttenuationHi") == 0.63 - assert RifterFit.ship.getModifiedItemAttr("heatAttenuationLow") == 0.5 - assert RifterFit.ship.getModifiedItemAttr("heatAttenuationMed") == 0.5 - assert RifterFit.ship.getModifiedItemAttr("heatCapacityHi") == 100.0 - assert RifterFit.ship.getModifiedItemAttr("heatCapacityLow") == 100.0 - assert RifterFit.ship.getModifiedItemAttr("heatCapacityMed") == 100.0 - assert RifterFit.ship.getModifiedItemAttr("heatDissipationRateHi") == 0.01 - assert RifterFit.ship.getModifiedItemAttr("heatDissipationRateLow") == 0.01 - assert RifterFit.ship.getModifiedItemAttr("heatDissipationRateMed") == 0.01 - assert RifterFit.ship.getModifiedItemAttr("heatGenerationMultiplier") == 1.0 - assert RifterFit.ship.getModifiedItemAttr("hiSlots") == 4.0 - assert RifterFit.ship.getModifiedItemAttr("hp") == 350.0 - assert RifterFit.ship.getModifiedItemAttr("hullEmDamageResonance") == 1.0 - assert RifterFit.ship.getModifiedItemAttr("hullExplosiveDamageResonance") == 1.0 - assert RifterFit.ship.getModifiedItemAttr("hullKineticDamageResonance") == 1.0 - assert RifterFit.ship.getModifiedItemAttr("hullThermalDamageResonance") == 1.0 - assert RifterFit.ship.getModifiedItemAttr("kineticDamageResonance") == 0.67 - assert RifterFit.ship.getModifiedItemAttr("launcherSlotsLeft") == 2.0 - assert RifterFit.ship.getModifiedItemAttr("lowSlots") == 3.0 - assert RifterFit.ship.getModifiedItemAttr("mainColor") == 16777215.0 - assert RifterFit.ship.getModifiedItemAttr("mass") == 1067000.0 - assert RifterFit.ship.getModifiedItemAttr("maxDirectionalVelocity") == 3000.0 - assert RifterFit.ship.getModifiedItemAttr("maxLockedTargets") == 4.0 - assert RifterFit.ship.getModifiedItemAttr("maxPassengers") == 2.0 - assert RifterFit.ship.getModifiedItemAttr("maxTargetRange") == 22500.0 - assert RifterFit.ship.getModifiedItemAttr("maxVelocity") == 365.0 - assert RifterFit.ship.getModifiedItemAttr("medSlots") == 3.0 - assert RifterFit.ship.getModifiedItemAttr("metaLevel") == 0.0 - assert RifterFit.ship.getModifiedItemAttr("minTargetVelDmgMultiplier") == 0.05 - assert RifterFit.ship.getModifiedItemAttr("powerLoad") == 0.0 - assert RifterFit.ship.getModifiedItemAttr("powerOutput") == 41.0 - assert RifterFit.ship.getModifiedItemAttr("powerToSpeed") == 1.0 - assert RifterFit.ship.getModifiedItemAttr("propulsionGraphicID") == 397.0 - assert RifterFit.ship.getModifiedItemAttr("radius") == 31.0 - assert RifterFit.ship.getModifiedItemAttr("rechargeRate") == 125000.0 - assert RifterFit.ship.getModifiedItemAttr("requiredSkill1") == 3329.0 - assert RifterFit.ship.getModifiedItemAttr("requiredSkill1Level") == 1.0 - assert RifterFit.ship.getModifiedItemAttr("rigSize") == 1.0 - assert RifterFit.ship.getModifiedItemAttr("rigSlots") == 3.0 - assert RifterFit.ship.getModifiedItemAttr("scanGravimetricStrength") == 0.0 - assert RifterFit.ship.getModifiedItemAttr("scanLadarStrength") == 8.0 - assert RifterFit.ship.getModifiedItemAttr("scanMagnetometricStrength") == 0.0 - assert RifterFit.ship.getModifiedItemAttr("scanRadarStrength") == 0.0 - assert RifterFit.ship.getModifiedItemAttr("scanResolution") == 660.0 - assert RifterFit.ship.getModifiedItemAttr("scanSpeed") == 1500.0 - assert RifterFit.ship.getModifiedItemAttr("shieldCapacity") == 450.0 - assert RifterFit.ship.getModifiedItemAttr("shieldEmDamageResonance") == 1.0 - assert RifterFit.ship.getModifiedItemAttr("shieldExplosiveDamageResonance") == 0.5 - assert RifterFit.ship.getModifiedItemAttr("shieldKineticDamageResonance") == 0.6 - assert RifterFit.ship.getModifiedItemAttr("shieldRechargeRate") == 625000.0 - assert RifterFit.ship.getModifiedItemAttr("shieldThermalDamageResonance") == 0.8 - assert RifterFit.ship.getModifiedItemAttr("shieldUniformity") == 0.75 - assert RifterFit.ship.getModifiedItemAttr("shipBonusMF") == 5.0 - assert RifterFit.ship.getModifiedItemAttr("shipBonusMF2") == 10.0 - assert RifterFit.ship.getModifiedItemAttr("shipScanResistance") == 0.0 - assert RifterFit.ship.getModifiedItemAttr("signatureRadius") == 35.0 - assert RifterFit.ship.getModifiedItemAttr("structureUniformity") == 1.0 - assert RifterFit.ship.getModifiedItemAttr("techLevel") == 1.0 - assert RifterFit.ship.getModifiedItemAttr("thermalDamageResonance") == 0.67 - assert RifterFit.ship.getModifiedItemAttr("turretSlotsLeft") == 3.0 - assert RifterFit.ship.getModifiedItemAttr("typeColorScheme") == 11342.0 - assert RifterFit.ship.getModifiedItemAttr("uniformity") == 1.0 - assert RifterFit.ship.getModifiedItemAttr("upgradeCapacity") == 400.0 - assert RifterFit.ship.getModifiedItemAttr("upgradeSlotsLeft") == 3.0 - assert RifterFit.ship.getModifiedItemAttr("volume") == 27289.0 - assert RifterFit.ship.getModifiedItemAttr("warpCapacitorNeed") == 2.24e-06 - assert RifterFit.ship.getModifiedItemAttr("warpFactor") == 0.0 - assert RifterFit.ship.getModifiedItemAttr("warpSpeedMultiplier") == 5.0 - - -# noinspection PyShadowingNames -def test_rifter_empty_char5(DB, Saveddata, RifterFit): - """ - Test char skills applying to a ship - """ - char5 = Saveddata['Character'].getAll5() - - RifterFit.character = char5 - RifterFit.calculateModifiedAttributes() - - assert RifterFit.ship.getModifiedItemAttr("agility") == 2.16 - assert RifterFit.ship.getModifiedItemAttr("armorEmDamageResonance") == 0.4 - assert RifterFit.ship.getModifiedItemAttr("armorExplosiveDamageResonance") == 0.9 - assert RifterFit.ship.getModifiedItemAttr("armorHP") == 562.5 - assert RifterFit.ship.getModifiedItemAttr("armorKineticDamageResonance") == 0.75 - assert RifterFit.ship.getModifiedItemAttr("armorThermalDamageResonance") == 0.65 - assert RifterFit.ship.getModifiedItemAttr("armorUniformity") == 0.75 - assert RifterFit.ship.getModifiedItemAttr("baseWarpSpeed") == 1.0 - assert RifterFit.ship.getModifiedItemAttr("capacitorCapacity") == 312.5 - assert RifterFit.ship.getModifiedItemAttr("capacity") == 140.0 - assert RifterFit.ship.getModifiedItemAttr("cpuLoad") == 0.0 - assert RifterFit.ship.getModifiedItemAttr("cpuOutput") == 162.5 - assert RifterFit.ship.getModifiedItemAttr("damage") == 0.0 - assert RifterFit.ship.getModifiedItemAttr("droneBandwidth") == 0.0 - assert RifterFit.ship.getModifiedItemAttr("droneCapacity") == 0.0 - assert RifterFit.ship.getModifiedItemAttr("emDamageResonance") == 0.67 - assert RifterFit.ship.getModifiedItemAttr("explosiveDamageResonance") == 0.67 - assert RifterFit.ship.getModifiedItemAttr("fwLpKill") == 25.0 - assert RifterFit.ship.getModifiedItemAttr("gfxBoosterID") == 397.0 - assert RifterFit.ship.getModifiedItemAttr("heatAttenuationHi") == 0.63 - assert RifterFit.ship.getModifiedItemAttr("heatAttenuationLow") == 0.5 - assert RifterFit.ship.getModifiedItemAttr("heatAttenuationMed") == 0.5 - assert RifterFit.ship.getModifiedItemAttr("heatCapacityHi") == 100.0 - assert RifterFit.ship.getModifiedItemAttr("heatCapacityLow") == 100.0 - assert RifterFit.ship.getModifiedItemAttr("heatCapacityMed") == 100.0 - assert RifterFit.ship.getModifiedItemAttr("heatDissipationRateHi") == 0.01 - assert RifterFit.ship.getModifiedItemAttr("heatDissipationRateLow") == 0.01 - assert RifterFit.ship.getModifiedItemAttr("heatDissipationRateMed") == 0.01 - assert RifterFit.ship.getModifiedItemAttr("heatGenerationMultiplier") == 1.0 - assert RifterFit.ship.getModifiedItemAttr("hiSlots") == 4.0 - assert RifterFit.ship.getModifiedItemAttr("hp") == 437.5 - assert RifterFit.ship.getModifiedItemAttr("hullEmDamageResonance") == 1.0 - assert RifterFit.ship.getModifiedItemAttr("hullExplosiveDamageResonance") == 1.0 - assert RifterFit.ship.getModifiedItemAttr("hullKineticDamageResonance") == 1.0 - assert RifterFit.ship.getModifiedItemAttr("hullThermalDamageResonance") == 1.0 - assert RifterFit.ship.getModifiedItemAttr("kineticDamageResonance") == 0.67 - assert RifterFit.ship.getModifiedItemAttr("launcherSlotsLeft") == 2.0 - assert RifterFit.ship.getModifiedItemAttr("lowSlots") == 3.0 - assert RifterFit.ship.getModifiedItemAttr("mainColor") == 16777215.0 - assert RifterFit.ship.getModifiedItemAttr("mass") == 1067000.0 - assert RifterFit.ship.getModifiedItemAttr("maxDirectionalVelocity") == 3000.0 - assert RifterFit.ship.getModifiedItemAttr("maxLockedTargets") == 4.0 - assert RifterFit.ship.getModifiedItemAttr("maxPassengers") == 2.0 - assert RifterFit.ship.getModifiedItemAttr("maxTargetRange") == 28125.0 - assert RifterFit.ship.getModifiedItemAttr("maxVelocity") == 456.25 - assert RifterFit.ship.getModifiedItemAttr("medSlots") == 3.0 - assert RifterFit.ship.getModifiedItemAttr("metaLevel") == 0.0 - assert RifterFit.ship.getModifiedItemAttr("minTargetVelDmgMultiplier") == 0.05 - assert RifterFit.ship.getModifiedItemAttr("powerLoad") == 0.0 - assert RifterFit.ship.getModifiedItemAttr("powerOutput") == 51.25 - assert RifterFit.ship.getModifiedItemAttr("powerToSpeed") == 1.0 - assert RifterFit.ship.getModifiedItemAttr("propulsionGraphicID") == 397.0 - assert RifterFit.ship.getModifiedItemAttr("radius") == 31.0 - assert RifterFit.ship.getModifiedItemAttr("rechargeRate") == 93750.0 - assert RifterFit.ship.getModifiedItemAttr("requiredSkill1") == 3329.0 - assert RifterFit.ship.getModifiedItemAttr("requiredSkill1Level") == 1.0 - assert RifterFit.ship.getModifiedItemAttr("rigSize") == 1.0 - assert RifterFit.ship.getModifiedItemAttr("rigSlots") == 3.0 - assert RifterFit.ship.getModifiedItemAttr("scanGravimetricStrength") == 0.0 - assert RifterFit.ship.getModifiedItemAttr("scanLadarStrength") == 9.6 - assert RifterFit.ship.getModifiedItemAttr("scanMagnetometricStrength") == 0.0 - assert RifterFit.ship.getModifiedItemAttr("scanRadarStrength") == 0.0 - assert RifterFit.ship.getModifiedItemAttr("scanResolution") == 825.0 - assert RifterFit.ship.getModifiedItemAttr("scanSpeed") == 1500.0 - assert RifterFit.ship.getModifiedItemAttr("shieldCapacity") == 562.5 - assert RifterFit.ship.getModifiedItemAttr("shieldEmDamageResonance") == 1.0 - assert RifterFit.ship.getModifiedItemAttr("shieldExplosiveDamageResonance") == 0.5 - assert RifterFit.ship.getModifiedItemAttr("shieldKineticDamageResonance") == 0.6 - assert RifterFit.ship.getModifiedItemAttr("shieldRechargeRate") == 468750.0 - assert RifterFit.ship.getModifiedItemAttr("shieldThermalDamageResonance") == 0.8 - assert RifterFit.ship.getModifiedItemAttr("shieldUniformity") == 1 - assert RifterFit.ship.getModifiedItemAttr("shipBonusMF") == 5.0 - assert RifterFit.ship.getModifiedItemAttr("shipBonusMF2") == 10.0 - assert RifterFit.ship.getModifiedItemAttr("shipScanResistance") == 0.0 - assert RifterFit.ship.getModifiedItemAttr("signatureRadius") == 35.0 - assert RifterFit.ship.getModifiedItemAttr("structureUniformity") == 1.0 - assert RifterFit.ship.getModifiedItemAttr("techLevel") == 1.0 - assert RifterFit.ship.getModifiedItemAttr("thermalDamageResonance") == 0.67 - assert RifterFit.ship.getModifiedItemAttr("turretSlotsLeft") == 3.0 - assert RifterFit.ship.getModifiedItemAttr("typeColorScheme") == 11342.0 - assert RifterFit.ship.getModifiedItemAttr("uniformity") == 1.0 - assert RifterFit.ship.getModifiedItemAttr("upgradeCapacity") == 400.0 - assert RifterFit.ship.getModifiedItemAttr("upgradeSlotsLeft") == 3.0 - assert RifterFit.ship.getModifiedItemAttr("volume") == 27289.0 - assert RifterFit.ship.getModifiedItemAttr("warpCapacitorNeed") == 1.12e-06 - assert RifterFit.ship.getModifiedItemAttr("warpFactor") == 0.0 - assert RifterFit.ship.getModifiedItemAttr("warpSpeedMultiplier") == 5.0 - - -# noinspection PyShadowingNames -def test_rifter_coprocessor(DB, Saveddata, RifterFit): - char5 = Saveddata['Character'].getAll5() - char0 = Saveddata['Character'].getAll0() - - RifterFit.character = char0 - mod = Saveddata['Module'](DB['db'].getItem("Co-Processor II")) - mod.state = Saveddata['State'].OFFLINE - RifterFit.modules.append(mod) - - assert RifterFit.ship.getModifiedItemAttr("cpuOutput") == 130 - - RifterFit.calculateModifiedAttributes() - assert RifterFit.ship.getModifiedItemAttr("cpuOutput") == 130 - - mod.state = Saveddata['State'].ONLINE - RifterFit.clear() - RifterFit.calculateModifiedAttributes() - assert RifterFit.ship.getModifiedItemAttr("cpuOutput") == 143 - - RifterFit.character = char5 - RifterFit.clear() - RifterFit.calculateModifiedAttributes() - assert RifterFit.ship.getModifiedItemAttr("cpuOutput") == 178.75