Merge pull request #1 from pyfa-org/master

Updating fork with bugfixes from master
This commit is contained in:
Alex
2017-10-29 20:21:34 +00:00
committed by GitHub
17 changed files with 84 additions and 314 deletions

View File

@@ -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"

View File

@@ -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)

View File

@@ -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)

View File

@@ -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)

View File

@@ -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)

View File

@@ -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")

View File

@@ -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"),

View File

@@ -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")

View File

@@ -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")

View File

@@ -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)

View File

@@ -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]

View File

@@ -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)

View File

@@ -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)

View File

@@ -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:

View File

@@ -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))

View File

@@ -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

View File

@@ -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