MCPcopy
hub / github.com/pyfa-org/Pyfa / getT2MwdSpeed

Method getT2MwdSpeed

service/port/efs.py:39–83  ·  view source on GitHub ↗
(fit, sFit)

Source from the content-addressed store, hash-verified

37
38 @staticmethod
39 def getT2MwdSpeed(fit, sFit):
40 fitID = fit.ID
41 propID = None
42 shipHasMedSlots = fit.ship.getModifiedItemAttr("medSlots") > 0
43 shipPower = fit.ship.getModifiedItemAttr("powerOutput")
44 # Monitors have a 99% reduction to prop mod power requirements
45 if fit.ship.typeName == "Monitor":
46 shipPower *= 100
47 rigSize = fit.ship.getModifiedItemAttr("rigSize")
48 if not shipHasMedSlots:
49 return None
50
51 filterVal = Item.groupID == getGroup("Propulsion Module").ID
52 propMods = gamedata_session.query(Item).options().filter(filterVal).all()
53 mapPropData = lambda propName: \
54 next(map(lambda propMod: {"id": propMod.typeID, "powerReq": propMod.attributes["power"].value},
55 (filter(lambda mod: mod.typeName == propName, propMods))))
56 mwd5mn = mapPropData("5MN Microwarpdrive II")
57 mwd50mn = mapPropData("50MN Microwarpdrive II")
58 mwd500mn = mapPropData("500MN Microwarpdrive II")
59 mwd50000mn = mapPropData("50000MN Microwarpdrive II")
60 if rigSize == PortEftRigSize.SMALL or rigSize is None:
61 propID = mwd5mn["id"] if shipPower > mwd5mn["powerReq"] else None
62 elif rigSize == PortEftRigSize.MEDIUM:
63 propID = mwd50mn["id"] if shipPower > mwd50mn["powerReq"] else mwd5mn["id"]
64 elif rigSize == PortEftRigSize.LARGE:
65 propID = mwd500mn["id"] if shipPower > mwd500mn["powerReq"] else mwd50mn["id"]
66 elif rigSize == PortEftRigSize.CAPITAL:
67 propID = mwd50000mn["id"] if shipPower > mwd50000mn["powerReq"] else mwd500mn["id"]
68
69 if propID is None:
70 return None
71 cmd = CalcAddLocalModuleCommand(fitID, ModuleInfo(itemID=propID))
72 cmd.Do()
73 if cmd.needsGuiRecalc:
74 sFit.recalc(fit)
75 fit = eos.db.getFit(fitID)
76 mwdPropSpeed = fit.maxSpeed
77 mwdPosition = list(filter(lambda mod: mod.item and mod.item.ID == propID, fit.modules))[0].position
78 cmd = CalcRemoveLocalModulesCommand(fitID, [mwdPosition])
79 cmd.Do()
80 if cmd.needsGuiRecalc:
81 sFit.recalc(fit)
82 fit = eos.db.getFit(fitID)
83 return mwdPropSpeed
84
85 @staticmethod
86 def getPropData(fit, sFit):

Callers 1

exportEfsMethod · 0.80

Calls 8

DoMethod · 0.95
getGroupFunction · 0.90
ModuleInfoClass · 0.90
recalcMethod · 0.80
getFitMethod · 0.80
getModifiedItemAttrMethod · 0.45

Tested by

no test coverage detected